summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--contrib/texinfo/AUTHORS13
-rw-r--r--contrib/texinfo/ChangeLog14593
-rw-r--r--contrib/texinfo/ChangeLog.4612516
-rw-r--r--contrib/texinfo/INSTALL26
-rw-r--r--contrib/texinfo/INTRODUCTION2
-rw-r--r--contrib/texinfo/NEWS108
-rw-r--r--contrib/texinfo/README7
-rw-r--r--contrib/texinfo/README.dev44
-rw-r--r--contrib/texinfo/TODO135
-rw-r--r--contrib/texinfo/config.h.in92
-rw-r--r--contrib/texinfo/doc/README2
-rw-r--r--contrib/texinfo/doc/info-stnd.texi81
-rw-r--r--contrib/texinfo/doc/info.128
-rw-r--r--contrib/texinfo/doc/info.52
-rw-r--r--contrib/texinfo/doc/info.texi369
-rw-r--r--contrib/texinfo/doc/infokey.141
-rw-r--r--contrib/texinfo/doc/install-info.120
-rw-r--r--contrib/texinfo/doc/makeinfo.135
-rw-r--r--contrib/texinfo/doc/texindex.110
-rw-r--r--contrib/texinfo/doc/texinfo.52
-rw-r--r--contrib/texinfo/doc/texinfo.txi5783
-rw-r--r--contrib/texinfo/doc/version-stnd.texi8
-rw-r--r--contrib/texinfo/doc/version.texi8
-rw-r--r--contrib/texinfo/info/README2
-rw-r--r--contrib/texinfo/info/dir.c28
-rw-r--r--contrib/texinfo/info/display.c115
-rw-r--r--contrib/texinfo/info/display.h19
-rw-r--r--contrib/texinfo/info/doc.c224
-rw-r--r--contrib/texinfo/info/doc.h32
-rw-r--r--contrib/texinfo/info/dribble.c11
-rw-r--r--contrib/texinfo/info/dribble.h8
-rw-r--r--contrib/texinfo/info/echo-area.c155
-rw-r--r--contrib/texinfo/info/echo-area.h53
-rw-r--r--contrib/texinfo/info/filesys.c85
-rw-r--r--contrib/texinfo/info/filesys.h28
-rw-r--r--contrib/texinfo/info/footnotes.c25
-rw-r--r--contrib/texinfo/info/footnotes.h6
-rw-r--r--contrib/texinfo/info/funs.h224
-rw-r--r--contrib/texinfo/info/gc.c13
-rw-r--r--contrib/texinfo/info/gc.h8
-rw-r--r--contrib/texinfo/info/indices.c83
-rw-r--r--contrib/texinfo/info/indices.h19
-rw-r--r--contrib/texinfo/info/info-utils.c197
-rw-r--r--contrib/texinfo/info/info-utils.h41
-rw-r--r--contrib/texinfo/info/info.c100
-rw-r--r--contrib/texinfo/info/info.h20
-rw-r--r--contrib/texinfo/info/infodoc.c161
-rw-r--r--contrib/texinfo/info/infokey.c160
-rw-r--r--contrib/texinfo/info/infokey.h2
-rw-r--r--contrib/texinfo/info/infomap.c154
-rw-r--r--contrib/texinfo/info/infomap.h13
-rw-r--r--contrib/texinfo/info/key.c4
-rw-r--r--contrib/texinfo/info/m-x.c21
-rw-r--r--contrib/texinfo/info/man.c83
-rw-r--r--contrib/texinfo/info/man.h18
-rw-r--r--contrib/texinfo/info/nodemenu.c38
-rw-r--r--contrib/texinfo/info/nodes.c155
-rw-r--r--contrib/texinfo/info/nodes.h17
-rw-r--r--contrib/texinfo/info/search.c108
-rw-r--r--contrib/texinfo/info/search.h30
-rw-r--r--contrib/texinfo/info/session.c649
-rw-r--r--contrib/texinfo/info/session.h193
-rw-r--r--contrib/texinfo/info/signals.c62
-rw-r--r--contrib/texinfo/info/signals.h11
-rw-r--r--contrib/texinfo/info/termdep.h2
-rw-r--r--contrib/texinfo/info/terminal.c67
-rw-r--r--contrib/texinfo/info/terminal.h40
-rw-r--r--contrib/texinfo/info/tilde.c26
-rw-r--r--contrib/texinfo/info/tilde.h12
-rw-r--r--contrib/texinfo/info/variables.c20
-rw-r--r--contrib/texinfo/info/variables.h11
-rw-r--r--contrib/texinfo/info/window.c132
-rw-r--r--contrib/texinfo/info/window.h82
-rw-r--r--contrib/texinfo/lib/README2
-rw-r--r--contrib/texinfo/lib/gettext.h17
-rw-r--r--contrib/texinfo/lib/substring.c10
-rw-r--r--contrib/texinfo/lib/system.h93
-rw-r--r--contrib/texinfo/lib/xalloc.h103
-rw-r--r--contrib/texinfo/lib/xexit.c7
-rw-r--r--contrib/texinfo/lib/xmalloc.c41
-rw-r--r--contrib/texinfo/lib/xstrdup.c13
-rw-r--r--contrib/texinfo/makeinfo/README2
-rw-r--r--contrib/texinfo/makeinfo/cmds.c1012
-rw-r--r--contrib/texinfo/makeinfo/cmds.h168
-rw-r--r--contrib/texinfo/makeinfo/defun.c396
-rw-r--r--contrib/texinfo/makeinfo/defun.h6
-rw-r--r--contrib/texinfo/makeinfo/files.c407
-rw-r--r--contrib/texinfo/makeinfo/files.h45
-rw-r--r--contrib/texinfo/makeinfo/float.c430
-rw-r--r--contrib/texinfo/makeinfo/float.h56
-rw-r--r--contrib/texinfo/makeinfo/footnote.c58
-rw-r--r--contrib/texinfo/makeinfo/footnote.h13
-rw-r--r--contrib/texinfo/makeinfo/html.c591
-rw-r--r--contrib/texinfo/makeinfo/html.h32
-rw-r--r--contrib/texinfo/makeinfo/index.c432
-rw-r--r--contrib/texinfo/makeinfo/index.h65
-rw-r--r--contrib/texinfo/makeinfo/insertion.c1076
-rw-r--r--contrib/texinfo/makeinfo/insertion.h46
-rw-r--r--contrib/texinfo/makeinfo/lang.c393
-rw-r--r--contrib/texinfo/makeinfo/lang.h66
-rw-r--r--contrib/texinfo/makeinfo/macro.c146
-rw-r--r--contrib/texinfo/makeinfo/macro.h38
-rw-r--r--contrib/texinfo/makeinfo/makeinfo.c1705
-rw-r--r--contrib/texinfo/makeinfo/makeinfo.h116
-rw-r--r--contrib/texinfo/makeinfo/multi.c513
-rw-r--r--contrib/texinfo/makeinfo/multi.h28
-rw-r--r--contrib/texinfo/makeinfo/node.c334
-rw-r--r--contrib/texinfo/makeinfo/node.h28
-rw-r--r--contrib/texinfo/makeinfo/sectioning.c406
-rw-r--r--contrib/texinfo/makeinfo/sectioning.h61
-rw-r--r--contrib/texinfo/makeinfo/toc.c286
-rw-r--r--contrib/texinfo/makeinfo/toc.h17
-rw-r--r--contrib/texinfo/makeinfo/xml.c1915
-rw-r--r--contrib/texinfo/makeinfo/xml.h113
-rw-r--r--contrib/texinfo/makeinfo/xref.c620
-rw-r--r--contrib/texinfo/makeinfo/xref.h30
-rw-r--r--contrib/texinfo/util/README2
-rw-r--r--contrib/texinfo/util/install-info.c295
-rw-r--r--contrib/texinfo/util/texindex.c241
119 files changed, 30428 insertions, 19738 deletions
diff --git a/contrib/texinfo/AUTHORS b/contrib/texinfo/AUTHORS
index 1c5bfad..ce8ee85 100644
--- a/contrib/texinfo/AUTHORS
+++ b/contrib/texinfo/AUTHORS
@@ -1,26 +1,31 @@
-$Id: AUTHORS,v 1.5 2003/05/08 00:51:55 karl Exp $
+$Id: AUTHORS,v 1.10 2004/04/11 17:56:45 karl Exp $
Texinfo authors.
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
Akim Demaille texi2dvi.
+Alper Ersoy makeinfo: enhancements in all files, especially
+ html-, xml-, and docbook-related.
Andreas Schwab texinfo.tex, configure.ac, most makeinfo files.
Bob Chassell texinfo.tex, original texinfo.txi.
Brian Fox all makeinfo/* and info/* files, info-stnd.texi.
Dave Love original makeinfo/html.[ch].
Eli Zaretskii all files.
Karl Berry all files.
+Karl Heinz Marbaise original makeinfo language support, most files.
Noah Friedman original texi2dvi.
Paul Rubin original makeinfo/multi.c.
Philippe Martin original makeinfo xml/docbook output.
Richard Stallman original texinfo.tex, install-info.c,
texindex.c, texinfo.txi.
-Zack Weinberg texinfo.tex (@macro implementation).
+Zack Weinberg texinfo.tex: @macro implementation.
See http://www.iro.umontreal.ca/contrib/po/HTML/team-LL.html for the
translation teams for a given language LL.
-Many files included in Texinfo distribution are copied from other
-locations. See util/srclist*.
+Many files included in the Texinfo distribution are copied from other
+locations, no author information is given for those. See util/srclist*.
diff --git a/contrib/texinfo/ChangeLog b/contrib/texinfo/ChangeLog
index fbbaff6..7c53a09 100644
--- a/contrib/texinfo/ChangeLog
+++ b/contrib/texinfo/ChangeLog
@@ -1,12504 +1,4999 @@
-2003-06-10 <karl@gnu.org>
-
- * version 4.6.
-
-2003-06-04 <karl@gnu.org>
-
- * config.sub: update from gnulib.
-
-2003-06-03 <karl@gnu.org>
-
- * mkinstalldirs: update from gnulib.
-
-2003-06-02 Akim Demaille <akim@epita.fr>
-
- * util/texi2dvi (tex_envvars): New.
- Use it to forward -I directories to BIBINPUTS and BSTINPUTS, in
- addition of INDEXSTYLE and TEXINPUTS.
-
-2003-06-02 <karl@gnu.org>
+2004-12-31 Karl Berry <karl@gnu.org>
- * makeinfo/html.c (html_output_head): don't output the <link>, to
- avoid having mozilla put up a document navigation bar when
- we don't have anything else to support it yet. Report from:
- Per Bothner.
- * makeinfo/makeinfo.c: no need to declare add_link or
- add_escaped_anchor_name, since they are not used.
+ * Version 4.8.
- * doc/texinfo.txi (Contents): recommend @contents at the beginning
- more strongly. Suggestions from Kevin Ryde.
+2004-12-21 Karl Berry <karl@gnu.org>
-2003-06-01 <karl@gnu.org>
+ * pretest version 4.7.94.
- * makeinfo/macro.c (apply): make \\ expand to \ even if the macro
- has no arguments. Report from: Jesper Harder <harder@ifa.au.dk>,
- 31 May 2003 02:56:20 +0200.
+ * makeinfo/xref.c: doc fix.
-2003-05-31 <karl@gnu.org>
+2004-12-20 Karl Berry <karl@gnu.org>
- * util/dir-example (C++ libraries): new category, suggested by Bruno.
+ * makeinfo/html.c (cm_node) <html>: need old-style names in the normal
+ (not no_headers) html case, too, of course.
+ (add_html_names): canon_white the new name, too.
-2003-05-29 <karl@gnu.org>
+2004-12-19 Karl Berry <karl@gnu.org>
- * configure.ac: pretest version 4.5.93.
+ * pretest version 4.7.93.
-2003-05-29 gettextize <bug-gnu-gettext@gnu.org>
+ * automake 1.9.4.
- * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.12.1.
+ * makeinfo/xml.c (try_docbook_image): new fn.
+ (xml_insert_docbook_image): call it, trying additional formats
+ pdf, svg, etc.
+ * makeinfo/makeinfo.c (cm_image): check for gif too.
+ http://www.gnu.org/philosophy/gif.html says:
+ "we can and will include support for displaying GIF files in GNU
+ software." Leaving it undocumented, though.
+ Based on patch from Jens Elkner, 18 Dec 2004 01:56:28 +0100.
-2003-05-26 <karl@gnu.org>
+2004-12-19 Torsten Bronger <bronger@physik.rwth-aachen.de>
- * util/texi2dvi: spurious \ in tex_args assignment.
+ * util/texinfo.dtd: define most entities, add <neos>.
- * doc/texinfo.txi (Contents): trim excess words.
+2004-12-17 Juan M. Guerrero <st001906@hrz1.hrz.tu-darmstadt.de>
-2003-05-25 <karl@gnu.org>
+ * djgpp/config.bat: remove files like coXXXXXX.tmp created
+ in the top_srcdir by the gl_FUNC_MKSTEMP test.
- * util/texi2dvi: extra quotes for the tex_args assignment in
- --batch mode.
+2004-12-15 Karl Berry <karl@gnu.org>
-2003-05-19 <karl@gnu.org>
+ * pretest version 4.7.92.
- * lib/xexit.c: translate fflush error messages, add newlines
- (report from Jim Meyering).
- * util/{texindex.c,install-info.c},
- * makeinfo/makeinfo.c,
- * info/info.c: use xexit again, with redundant return to avoid
- warnings.
+ * util/texinfo.dtd: merge with makeinfo/texinfo.dtd.
+ * makeinfo/texinfo.dtd, makeinfo/texinfo.xsl: remove.
-2003-05-18 <karl@gnu.org>
+2004-12-15 Stepan Kasal <kasal@ucw.cz>
- * lib/xexit.c (xexit): fputs not fprintf, so we get newline;
- translate the messages, too. Report from Jim Meyering.
+ * Makefile.am (EXTRA_DIST): Removed po/Makevars.template, sorry.
- * util/dir-example: move gcc/automake entries.
+2004-12-15 Juan M. Guerrero <st001906@hrz1.hrz.tu-darmstadt.de>
- * pretest version 4.5.92.
+ * djgpp/config.sed: adjust for new autoconf.
+ * makeinfo/node.c (enumerate_filename): make dos_file_names const
+ instead of static, since it may involve a fn call to pathconf.
- * update to automake 1.7.5.
+2004-12-15 Karl Berry <karl@gnu.org>
- * makeinfo/html.c (append_char): forgot to increment length, duh.
- Report from: "Torsten Bronger" <bronger@physik.rwth-aachen.de>,
- 18 May 2003 14:36:23 +0200.
+ * Makefile.am (EXTRA_DIST): include ChangeLog.46, README.dev,
+ and po/Makevars.template. From Stepan.
-2003-05-17 <karl@gnu.org>
+2004-12-14 Karl Berry <karl@gnu.org>
- * makeinfo/makeinfo.c (defining_copying): new fn.
- (add_char): call it, when testing if we should
- call html_output_head.
- Report from: Torsten Bronger <bronger@physik.rwth-aachen.de>,
- 17 May 2003 22:10:42 +0200.
+ * doc/texinfo.txi (inforef): try to explain possible uses more
+ thoroughly.
+ From: Luc Teirlinck, 13 Dec 2004 21:45:58 -0600.
- * configure.ac: pretest version 4.5.91.
+ * doc/texinfo.txi (pxref): more explanation.
+ * doc/info-stnd.texi (Basic Windows): put pxref in parens.
+ help-texinfo mail from adl, 13 Dec 2004 17:07:50 +0100.
-2003-05-16 <karl@gnu.org>
+2004-12-13 Andreas Schwab <schwab@suse.de>
- * makeinfo/index.c (sort_index): don't deref NULL. Report from Jan.
+ * info/echo-area.c (DECLARE_INFO_COMMAND): Add intermediate cast
+ to avoid warning.
+ * info/infokey.c (compile): Likewise.
+ * info/session.c (forward_move_node_structure): Likewise.
+ (DECLARE_INFO_COMMAND): Likewise.
-2003-05-13 <karl@gnu.org>
+ * makeinfo/makeinfo.c (init_paragraph): Don't use free_and_clear
+ to avoid strict aliasing issue.
- * makeinfo/html.c (append_char): appease sgi compiler.
- * makeinfo/html.c (insert_html_tag): remove spurious arg to pop_tag,
- From: ezra peisach <epeisach@med-xtal.bu.edu>, 13
- May 2003 12:13:40 -0400.
+ * makeinfo/cmds.c (cm_center): Avoid strict aliasing issue.
- Fix a few GCC warnings, reported by Jim Meyering:
+2004-12-13 Karl Berry <karl@gnu.org>
- * info/nodes.c: parenthesize assignment used as truth value.
- * info/nodemenu.c (format_node_info): strcpy instead of sprintf,
- since there's no format.
- * makeinfo/makeinfo.c (isolate_nodename): remove spurious decl.
- * makeinfo/xml.c (xml_insert_indexterm): declare as void.
- * info/key.c: initialize with 0,0 at end.
- * info/infokey.c (main): return instead of xexit, and remove
- unused variable.
- * makeinfo/html.c (init_buffer): forgot to return buf.
- * info/info.c (remember_info_program_name): remove spurious
- declaration.
-
- * makeinfo/sectioning.c,
- * info/infomap.c: remove unused variables.
-
- * makeinfo/makeinfo.c (insert_toplevel_subdirectory),
- * info/man.c,
- * info/infodoc.c (info_find_or_create_help_window): parenthesize
- && within ||.
- * info/display.c (display_update_one_window): initialize rep to
- NULL, parenthesize && within ||.
+ * doc/texinfo.txi (HTML Cross-reference Command Expansion): add
+ @euro{} -> U+20AC. texinfo-pretest mail from Patrice,
+ 12 Dec 2004 23:49:50 +0100.
- * util/install-info.c,
- * info/info.c (main),
- * info/makedoc.c (main): return instead of xexit.
+2004-12-12 Karl Berry <karl@gnu.org>
-2003-05-13 Akim Demaille <akim@epita.fr>
+ * doc/texinfo.txi (makeinfo options): don't be so suggestive about
+ skipping xref validation.
+ emacs-devel mail from: Luc Teirlinck, 12 Dec 2004 13:02:11 -0600.
- * util/texi2dvi (get_xref_files): Pass --file-line-error-style
- to TeX when supported.
+2004-12-08 Karl Berry <karl@gnu.org>
-2003-05-12 <karl@gnu.org>
+ * pretest version 4.7.91.
- * configure.ac: pretest version 4.5.90.
+ * info/echo-area.c, info/infokey.c, info/session.c: omit useless
+ casts to intptr_t, since we're just casting to (void *) next.
+ intptr_t is not defined with gcc 3.04 on Tru64 Unix V5.1
+ (This whole vararg stuff needs to be redone correctly.)
+ Report from: Svend Tollak Munkejord (via te)
+ 8 Dec 2004 17:15:17 +0100.
- * Makefile.am (EXTRA_DIST): add onceonly.m4.
+ * doc/texinfo.txi (ref): rewrite last two redundant paragraphs.
- * makeinfo/tests/accentenc: must discard stderr since we expect
- two errors in this case.
+2004-12-07 Karl Berry <karl@gnu.org>
- * makeinfo/makeinfo.c (main): new option --css-include.
- (usage): add to --help message.
- * makeinfo/makeinfo.h (css_include): new global.
- * makeinfo/html.c (append_char, process_css_file): new fns
- implementing it.
- (html_output_head): call it.
- * doc/texinfo.txi (HTML CSS): new node describing it.
- Also split up the Generating HTML node into subnodes.
+ * doc/texinfo.txi (Macro Details): document @c kludge in macro
+ definitions to work around some newline problems. (From Werner.)
- * config.{guess,sub}: update from gnulib.
+2004-12-05 Karl Berry <karl@gnu.org>
-2003-05-10 <karl@gnu.org>
+ * makeinfo/html.c (add_escaped_anchor_name): prefix g_t if the
+ nodename begins with a nonletter. Ugh.
+ * doc/texinfo.txi (HTML Xref Node Name Expansion): document this.
+ http://ff0.org/pipermail/texinfo-pretest/2004-December/000210.html
+
+ * doc/texinfo.txi (HTML Xref 8-bit Character Expansion): define
+ behavior for Unicode code points above 0xfff.
- * makeinfo/index.c (sort_index): allocate the sorted index in new
- memory, and set the original index to that, to avoid problems with
- @printindex being called twice on the same index.
- (cm_printindex): do not free the returned index.
- Report from: Dumas Patrice <dumas@centre-cired.fr>, 9 May 2003
- 15:12:21 +0200.
+ * makeinfo/makeinfo.c (reader_loop): <wbr> didn't make it into
+ HTML 4, remove it. Sigh.
+ texinfo-pretest mail from wl, 05 Dec 2004 23:39:05 +0100.
-2003-05-09 <karl@gnu.org>
+2004-12-02 Karl Berry <karl@gnu.org>
- * makeinfo/defun.c (cm_defun): issue error message without extra
- x's. Report from: Dumas Patrice <dumas@centre-cired.fr>, 9 May
- 2003 17:24:25 +0200.
+ * configure.ac (install-warnings): simplify default case. From te.
-2003-05-07 Akim Demaille <akim@epita.fr>
+2004-12-01 Karl Berry <karl@gnu.org>
- * util/texi2dvi (textra_cmd): New.
- (textra): Escape escapes from sed's evaluation.
- Use them to support additional TeX/LaTeX commands.
- Support --command as a synonym for --texinfo.
+ * pretest version 4.7.90.
-2003-05-06 <karl@gnu.org>
+ * util/texi2dvi (recode): new option, off by default.
+ Unconditionally calling recode seems problematic, when there
+ hasn't been a release for years and its Texinfo support is less than
+ perfect.
- * util/dir-example: finish getting rid of GNU packages.
+2004-11-30 Karl Berry <karl@gnu.org>
-2003-05-04 <karl@gnu.org>
+ * doc/texinfo.txi (Quotations and Examples): @quotation does not
+ reduce interparagraph spacing.
+
+ * makeinfo/node.c (cm_node) <html>: do not bother calling
+ add_html_nodes in the split case, the filename is wrong.
- * doc/texinfo.tex (\itemizey): if no arg to @itemize, default to
- @bullet. Fix from: Stepan Kasal <kasal@math.cas.cz> 2 May 2003
- 09:32:11 +0200, report from: Jesper Harder <harder@ifa.au.dk>.
+2004-11-29 Karl Berry <karl@gnu.org>
-2003-04-30 <karl@gnu.org>
+ Support for writing <a name="..."> using the old-style node name
+ to HTML name conversion, to keep the gcc folks happy.
+ * makeinfo/node.c (add_html_names): new routine, factoring out
+ common code (plus new code) from cm_node.
+ (cm_node) <html>: call it.
+ * makeinfo/makeinfo.h (OLD_HTML_SAFE, OLD_URL_SAFE_CHAR):
+ (re)define these.
+ * makeinfo/html.c (add_escaped_anchor_name): take new argument to
+ optionally output the old-style conversion.
+ (add_anchor_name): change call.
+ * index.c: change calls.
+ * makeinfo/html.h (add_escaped_anchor_name): change decl.
- * makeinfo/.gdbinit: no colon on local variables.
+2004-11-26 Karl Berry <karl@gnu.org>
- * doc/texinfo.txi (documentencoding): Document new Info output feature.
- makeinfo/lang.h (encoding_type): rename `ecname' member to `encname'.
- makeinfo/html.c, lang.c: change usage.
- makeinfo/lang.c (cm_documentencoding): fix typo in warning.
- makeinfo/makeinfo.h (SPLIT_SIZE_THRESHOLD): remove.
- (info_trailer): declare.
- makeinfo/makeinfo.c (info_trailer): new fn to generate Local
- Variables: section if --enable-encoding and
- @documentencoding are given.
- (convert_from_loaded_file): call it.
- * makeinfo/node.c (split_file): write trailer into each split
- file. Also, simply split files if file size is less than
- --split-size, removing SPLIT_SIZE_THRESHOLD.
+ * makeinfo/makeinfo.c (reader_loop): allow <wbr> after &mdash;
- * doc/texinfo.tex: remove trailing whitespace.
+2004-11-25 Karl Berry <karl@gnu.org>
-2003-04-29 <karl@gnu.org>
-
- * makeinfo/node.c (cm_anchor): normalize_node_name so that an
- anchor named "TOP" or "top" or whatever is not allowed. Report
- from: Dumas Patrice <dumas@centre-cired.fr>, 29 Apr 2003 18:56:51
- +0200.
+ * doc/texinfo.txi (Fonts): document new command @sansserif.
+ * doc/texinfo.tex (\sansserif): new command.
+ * makeinfo/cmds.h (cm_sansserif): new cmd.
+ * makeinfo/cmds.c (cm_sansserif): new cmd.
+ (command_table): add it.
+ * makeinfo/texinfo.dtd (Inline.fonts): add it; also slanted.
+ * makeinfo/xml.h (SANSSERIF, SLANTED): define these new elements.
+ * makeinfo/xml.c (texinfoml_element_list): add them.
+ From: Frank Küster, 21 Oct 2004 23:27:33 +0200, Debian bug#277754.
-2003-04-28 <karl@gnu.org>
+ * doc/texinfo.txi (Quotations and Examples, end titlepage): state
+ that there must be only one space between the @end and its
+ argument. Report from: christoph.sobotka, 26 Oct 2004 22:04:03 +0200.
- * makeinfo/makeinfo.c: whitespace cleanup.
+2004-11-22 Karl Berry <karl@gnu.org>
- * doc/texinfo.tex (\doprintindex): don't \kern-\parindent, it makes
- the first index entry stick out to the left.
- Report from: Jesper Harder <harder@ifa.au.dk>,
- 28 Apr 2003 03:10:36 +0200.
+ * doc/texinfo.txi (euro): new node, documenting new command,
+ @euro{}, for the Euro currency symbol.
+ * doc/texinfo.tex (\euro): new command, along with \eurofont to
+ support it. The following extra font support is also related to
+ supporting @euro{}:
+ (\bfstylename): define this.
+ (\textnominalsize .. \ssecnominalsize): new macros.
+ (\textfonts .. \ssecfonts): define \curfontsize.
+ * makeinfo/cmds.c (command_table): add euro.
+ * makeinfo/lang.c (cm_special_char): handle euro.
+ (iso8859_15_map): new global.
- From Akim Demaille <akim@epita.fr>:
- * makeinfo/makeinfo.c (cm_value): Warn for undefined flags.
+2004-11-18 Stepan Kasal <kasal@ucw.cz>
-2003-04-27 <karl@gnu.org>
+ * doc/texinfo.tex (\ptexnewwrite): Save \newwrite.
+ (\newwrite): Call it.
- * doc/texinfo.tex (\footnote, \smartitalicx): use \ptexslash
- for italic correction instead of \/, since we've redefined \/ now.
- Report from: Jesper Harder <harder@ifa.au.dk>, 27 Apr 2003
- 23:30:29 +0200.
+2004-11-17 Karl Berry <karl@gnu.org>
- * util/dir-example (mailutils): more from Wojciech Polak.
- (autoconf): align/edit/sort entries.
+ * configure.ac (install-warnings): new --enable option, requested
+ by te.
-2003-04-26 <karl@gnu.org>
+2004-11-11 Karl Berry <karl@gnu.org>
- * doc/texinfo.txi (Image Syntax): second and following @image args
- optional. Report from: Max Techter <mtechter@gmx.de>, 26 Apr 2003
- 15:50:02 +0200.
+ * texinfo.dtd (metainformation): add documentdescription.
+ (documentdescription): define.
+ * xml.h (DOCUMENTDESCRIPTION): new value for xml_element.
+ * xml.c (texinfoml_element_list): define documentdescription.
+ (docbook_element_list): likewise, but don't know how to handle it.
+ * cmds.c (cm_documentdescription): insert opening xml tag.
+ * insertion.c (end_insertion): insert closing xml tag.
- * util/dir-example (anubis): request from Wojciech Polak.
+ * makeinfo/makeinfo.c (insert_string): declare const char * arg.
+ * makeinfo/makeinfo.h: likewise.
+ Report from: Vincent Lefevre, 20 Oct 2004 15:40:39 +0200,
+ noting a spurious </para> after </dircategory>.
-2003-04-25 <karl@gnu.org>
+2004-11-08 Karl Berry <karl@gnu.org>
- * makeinfo/defun.c (defun_internal): whitespace needed in docbook
- output for deftype*. From: José Fonseca
- <j_r_fonseca@yahoo.co.uk>, 25 Apr 2003 13:07:13 +0100.
+ * doc/texinfo.tex (\pdfmakeoutlines): in the first run through the
+ toc, define \thischapnum...\thissubsecnum as 0, rather than \empty.
+ This is so \expnumber doesn't end up trying to expand
+ \csname sec\empty\endcsname, i.e., \sec, which is the secant function.
+ Report from: Oliver Beck, help-texinfo, 8 Nov 2004 08:05:55 +0100.
-2003-04-21 <karl@gnu.org>
+2004-11-07 Karl Berry <karl@gnu.org>
- * doc/texinfo.tex (\dofirstparagraphindent): forgot to rename the
- \...word's.
- (\suppressfirstparagraphindent): forgot to rename
- to \dosuppress... Reported by Simon.
+ * makeinfo/makeinfo.c (main) [LC_MESSAGES]: #ifdef the setlocale
+ using LC_MESSAGES. From te, 6 Nov 2004 23:36:10 +0100.
-2003-04-20 <karl@gnu.org>
+2004-11-06 Karl Berry <karl@gnu.org>
- * Installed changes from Simon for suppressing indentation on the
- first paragraph after section headings, and for new @indent command:
+ * lib/Makefile.am (libtxi_a_SOURCES): add strdup.h.
+ Report from: Thomas Esser <te@dbs.uni-hannover.de>,
+ 6 Nov 2004 18:11:51 +0100.
- 2003-04-12 Simon Law <sfllaw@engmail.uwaterloo.ca>
- * doc/texinfo.tex (\firstparagraphindent): implement suppression
- of the indentation of the first paragraph.
- (\dofirstparagraphindent): for parsing arguments.
- (\suppressfirstparagraphindent): suppress, or don't suppress.
- (\dosuppressfirstparagraphindent): the actual gobbling of indentation.
- (\footnote): Compensate for the hanging-indent side-effect.
- (\numhead, \apphead, \unnmhead): call \dosuppress...
- * makeinfo/cmds.c (command_table): add "firstparagraphindent"
- (as cm_firstparagraphindent)
- (set_firstparagraphindent, cm_firstparagraphindent): implement
- @firstparagraphindent parsing of options.
- * makeinfo/makeinfo.h: declare "do_first_par_indent".
- * makeinfo/sectioning.c (sectioning_underscore): suppress
- indentation if requested.
- * doc/texinfo.txi: document it.
+2004-11-01 Karl Berry <karl@gnu.org>
- * doc/texinfo.tex (\indent): override \indent primitive to
- clear \everypar.
- (\ptexindent): for saving/restoring \indent in @tex.
- (\footnote): Neutralise the effect of @indent
- within a footnote.
- * makeinfo/cmds.c (command_table): add "indent" (as cm_indent).
- (cm_indent): un-inhibit_paragraph_indentation.
- * doc/texinfo.txi: document it.
+ * makeinfo/xref.c (cm_xref): don't include the external file name
+ in the HTML output, since it's pretty traditional not to
+ distinguish internal and external links in HTML, and it disturbs
+ the flow of reading.
+ From: Han-Wen Nienhuys <hanwen@xs4all.nl>, 31 Oct 2004 00:13:36 +0200.
+ (For lilypond.)
- * doc/texinfo.txi (Conventions): remove spurious extra vertical space
- from bulleted itemize which starts with a quote.
+2004-10-31 Karl Berry <karl@gnu.org>
- * makeinfo/cmds.c (command_table): fix @novalidate definition.
+ * doc/texinfo.tex (\setmultitablespacing): just let \multistrut be
+ the same as \strut. Its previous computation was wrong.
+ See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
+2004-10-22 Stepan Kasal <kasal@ucw.cz>
- * Installed changes from Jan for @image support in Info format:
+ * info/Makefile.am (generated_sources): Add dependencies defining
+ a total order on the files, to prevent race conditions with
+ parallel make.
+ Move the code about generated sources to the end of the file.
- 2003-04-14 Jan Nieuwenhuizen <janneke@gnu.org>
- * info/display.c (display_update_one_window): Skip new style
- image tag/cookie.
+2004-10-20 Stepan Kasal <kasal@ucw.cz>
- 2003-04-09 Jan Nieuwenhuizen <janneke@gnu.org>
- * makeinfo/makeinfo.c (cm_image): Write ^@^H[image ...^@^H] tag.
+ * info/Makefile.am (doc.c, key.c, funs.h): Don't distribute them.
+ of these three files.
+ (ginfo_SOURCES, nodist_ginfo_SOURCES): Move files.
+ (infokey_SOURCES, nodist_infokey_SOURCES): Likewise.
+ (DISTCLEANFILES): Include generated_sources.
+2004-10-20 Stepan Kasal <kasal@ucw.cz>
- * makeinfo/html.c (html_output_head): use <style> to get the
- regular roman font instead of typewriter for @format and @display;
- likewise to reduce the font size for @small*. Suggestion from:
- "Torsten Bronger" <bronger@physik.rwth-aachen.de>, 20 Apr 2003
- 11:03:59 +0200.
+ BUILT_SOURCES is a special variable for a hack to supplement
+ the automatic dependency tracking; we need it for funs.h only.
+ See the explanation in the automake manual.
-2003-04-18 <karl@gnu.org>
+ * info/Makefile.am (BUILT_SOURCES): All occurences replaced by ...
+ (generated_sources): ... this new variable.
+ (BUILT_SOURCES): set to ``funs.h''.
- * configure.ac (ncurses/termcap.h): move test to after termlib's
- definition, of course. Reported by Norton Allen
- <allen@huarp.harvard.edu>, 18 Apr 2003 13:31:35 -0400.
+2004-10-20 Stepan Kasal <kasal@ucw.cz>
- * configure.ac: remove comma from comment in AC_TRY_LINK program,
- to avoid spurious misinterpretation as an argument delimiter.
+ * info/Makefile.am (ginfo_SOURCES): replace $(BUILT_SOURCES)
+ with ``doc.c funs.h''; this reflects the true situation.
+ (infokey_SOURCES): Add funs.h.
-2003-04-08 <karl@gnu.org>
+2004-10-20 Stepan Kasal <kasal@ucw.cz>
- * makeinfo/makeinfo.c (usage): avoid double blank line.
+ * info/Makefile.am (EXTRA_DIST): No need to mention the generated
+ sources here, they are in ginfo_SOURCES or infokey_SOURCES.
-2003-04-05 <karl@gnu.org>
+2004-10-19 Stepan Kasal <kasal@ucw.cz>
- * Makefile.am (all of them): use $(VAR) instead of @VAR@, since
- automake now emits definitions for all substituted variables.
+ * configure.ac: When cross compiling, we have to remove
+ ./config.status, not "$native_tools"/config.status.
+ Replace ``echo'' with AC_MSG_NOTICE. Quote the variable
+ values passed to ``env.''
- * makeinfo/makeinfo.h (DEFAULT_SPLIT_SIZE): increase to 300,000.
- (SPLIT_SIZE_THRESHOLD): increase to 500,000.
- Implicit suggestion via Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>.
+2004-10-17 Karl Berry <karl@gnu.org>
-2003-04-04 <karl@gnu.org>
+ * makeinfo/node.c (cm_node): don't output <br> after the
+ navigation line, it's apparently just extra space.
- * util/texi2dvi (replace_empty): new variable to do the empty path
- element detection; don't hardwire path separator as :.
+ * configure.ac: Clean environment for native configure.
+ From: Mark Fortescue <mark@mtfhpc.demon.co.uk>,
+ 17 Oct 2004 19:09:53 +0100.
-2003-04-02 <karl@gnu.org>
+2004-10-11 Stepan Kasal <kasal@ucw.cz>
- * doc/txi-pl.tex: new file, from polak@gnu.org.
- * doc/Makefile.am (TXI_XLATE): add it.
+ * configure.ac: Add a short explanation about cross compile.
-2003-04-01 <karl@gnu.org>
+2004-10-08 Karl Berry <karl@gnu.org>
- * makeinfo/makeinfo.c (main): correct wording of html/no-headers/split
- error message, and don't complain if output is to stdout.
+ * info/Makefile.am (generated_sources): remove. Found by Stepan.
- * makeinfo/insertion.c (end_insertion): for @end menu html output,
- don't output </ul> if no_headers. Report from: Jesper
- Harder <harder@ifa.au.dk>, 01 Apr 2003 00:00:37 +0200.
+2004-10-08 Stepan Kasal <kasal@ucw.cz>
- * info/infomap.c (fetch_user_maps): don't complain if .info
- doesn't exist.
+ Support cross compiling. Based on research by Mark Fortescue.
+ Maciej W. Rozycki pointed out this issue previously.
-2003-03-31 <karl@gnu.org>
+ * configure.ac: If cross compiling, run second configure script
+ in a subdirectory ${native_tools}. New automake conditional
+ TOOLS_ONLY is set inside that subdirectory.
+ * Makefile.am (SUBDIRS): Add $(native_tools); restrict the
+ SUBDIRS to minimum, if we are inside the $(native_toos) dir.
+ (distclean-local): Remove directory $(native_tools).
+ * doc/Makefile.am: If necessary, use makeinfo and install-info
+ from $(native_tools).
+ * info/Makefile.am: Similarily with the ``makedoc'' program.
- * makeinfo/lang.c (iso8859_2_map): new encoding map.
- (encoding_table): enable it.
+2004-10-07 Stepan Kasal <kasal@ucw.cz>
- * info/pcterm.c (pc_up_line): use MAX instead of max (no longer
- defined). Reported by Richard Dawes.
+ @table command doesn't work inside environment @display.
+ There is no point in trying to fix it: just give up with a cry.
- * doc/texinfo.txi (documentencoding): mention that all processors
- recognize the command.
+ * doc/texinfo.tex (\table, \ftable, \vtable): Instead of calling
+ \tablex directly, call ...
+ (\tablecheck): ... this new macro which checks for active newline;
+ if it's found, it reports an error and uses \doignore to recover.
+ * doc/texinfo.txi (display): mention this.
-2003-03-30 <karl@gnu.org>
+2004-10-06 Karl Berry <karl@gnu.org>
- * makeinfo/lang.c (cm_special_character): incorrectly added html
- sequences for @oe and @OE even in info output.
+ * doc/*.texi: more consistent use of dashes.
+ From Stepan and Benno Schulenberg <benno@nietvergeten.nl>.
+
+2004-10-04 Karl Berry <karl@gnu.org>
-2003-03-25 <karl@gnu.org>
+ * makeinfo/makeinfo.c (cm_value): increment and restore
+ input_text_offset before execute_string on the value,
+ so cm_xref doesn't complain about missing punctuation.
+ From: Sergey Poznyakoff <gray@Mirddin.farlep.net>,
+ 04 Oct 2004 15:04:33 +0300.
- * util/srclist.txt (COPYING): get from gnulib/doc, not gnulib.
+2004-10-01 Karl Berry <karl@gnu.org>
-2003-03-24 <karl@gnu.org>
+ * lib/Makefile.am (libtxi_a_SOURCES): add getopt_.h.
- * TODO: need to write real definition of Info format.
+ * configure.ac: bump version to 4.7.90, although we're not really
+ pretesting yet. (I need a distribution to check an
+ automake issue.)
- * makeinfo/node.c (cm_node): use &nbsp; instead of ` ', to avoid
- line breaks.
+2004-09-14 Karl Berry <karl@gnu.org>
-2003-03-22 <karl@gnu.org>
+ * util/srclist.txt (getopt.h): renamed to getopt_.h.
+ * lib/getopt_.h: new file.
+ * lib/getopt.h: just include getopt.h.
- * makeinfo/node.c (cm_node): output a space after the Node: and
- similar headers, since Bob wants one.
+2004-09-09 Karl Berry <karl@gnu.org>
- * info/pcterm.c (MIN,MAX): moved to system.h.
- * info/session.c (MIN): moved to system.h.
- * makeinfo/sectioning.c (MIN): move to system.h.
- * lib/system.h (MIN,MAX): define here.
+ * doc/texinfo.txi (Image Syntax): mention @noindent, @center.
- * makeinfo/sectioning.c (sectioning_html): don't go smaller than <h3>.
- Reported by Bob.
- (MIN): new macro.
+2004-09-06 Stepan Kasal <kasal@ucw.cz>
- * info/session.c (MIN) [MIN]: #undef first if already #define'd.
+ * doc/texinfo.tex (\Efloat): Take care to run \scantokens on
+ \thisshortcaption before writing the lof line to auxfile.
+ Otherwise, when a newline appears in the argument to
+ @shortcaption, a literal ^^M is written to the aux file.
+ Report from Patrice, 1 Aug 2004 15:54:44 +0200.
- * doc/texinfo.tex (\nodexxx): use a control sequence instead of
- brackets to parse the parts of @node. Otherwise node names with
- brackets cause spurious output. Reported by Bob.
- (\xrefprintnodename): separate this out from
- \xrefX, for easier redefining by Bob.
+2004-09-01 Karl Berry <karl@gnu.org>
-2003-03-18 <karl@gnu.org>
+ * util/gendocs.sh: show commands, allow / in description.
- * makeinfo/insertion.c (cm_item): ensure we don't go off the end
- of the string when using strncmp. From: Peter N Lewis
- <peter@stairways.com.au>, 13 Mar 2003 16:08:27 +0800.
+2004-08-30 Karl Berry <karl@gnu.org>
- * doc/texinfo.txi (Raw Formatter Commands): mention using \gdef
- within @tex, not \def.
+ * makeinfo/makeinfo.c (maybe_escaped_expansion): new routine, like
+ expansion but does HTML escapes.
+ * makeinfo/makeinfo.h (maybe_escaped_expansion): declare.
+ * makeinfo/index.c (cm_printindex): call it.
+ This is @cindex Kahrs, J@"urgen does not get
+ gawk.texi:23425: Unknown command `&quot;urgen'.
+ (in gawk 3.1.4).
+ Report from: Stepan Kasal <kasal@ucw.cz>, 24 Aug 2004 12:36:34 +0200.
-2003-03-12 <karl@gnu.org>
+2004-08-29 Karl Berry <karl@gnu.org>
- * doc/texinfo.txi (Preparing for TeX): mention extra colons.
+ * makeinfo/node.c (split_file): do not search for output file
+ along the path when calling find_and_load (can cause seg
+ fault when cross-compiling).
+ From: Martin Husemann <martin@duskware.de>, 29 Aug 2004 08:40:33 +0200.
+ http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=26791
-2003-03-07 <karl@gnu.org>
+2004-08-27 Karl Berry <karl@gnu.org>
- * doc/texinfo.tex (\/): new command to allow a line break.
- (\ptexslash): for saving/restoring primitive \/ in @tex.
- * makeinfo/cmds.c (command_table): add "/" (as cm_no_op).
- * makeinfo/makeinfo.c (self_delimiting): add /.
- * doc/texinfo.txi (Line Breaks, Command Summary): document it.
- Suggestion from wl.
+ * doc/texinfo.txi (Macro details): more warnings about macro usage.
+ Report from: Stepan Kasal <kasal@ucw.cz>, 24 Aug 2004 09:29:35 +0200.
- * doc/texinfo.tex (\hyphenation): time-stamp.
+ * doc/texinfo.tex (\Efloat): \vskip\parskip after printing the
+ caption; previous \printedsomething code to do this had become
+ obsolete. Reported by Stepan.
-2003-03-06 <karl@gnu.org>
+ * doc/texinfo.txi (caption shortcaption): show an example for
+ @shortcaption, and remark that weird commands like @c and @verb
+ are not allowed. Suggested by Stepan.
- * info/session.c (nearest_xref): new fn.
- (info_menu_or_ref_item): call it when we are
- searching for xrefs, instead of just looking on
- the current line.
- * info/info-utils.c (info_copy_reference): new fn.
- * info/info-utils.h (info_copy_reference): declare.
- Bug report from: rich@phekda.freeserve.co.uk,
- 04 Mar 2003 17:51:47 +0000.
+2004-08-27 Stepan Kasal <kasal@ucw.cz>
- * */.gdbinit: set env MALLOC_CHECK_.
+ * doc/texinfo.tex (\initial): when breaking the column before the
+ initial, allow for some space at the bottom of the column, so
+ the baselineskip is preserved (more or less).
+ Don't give negative penalty, it encouradges creating of underfull
+ columns with stretched baselineskip.
+ At the end, the \nobreak should be before \vskip, not after it.
- 2003-03-06 Ralph Schleicher <rs@nunatak.allgaeu.org>
- * makeinfo/files.h (get_file_info_in_path): Declare function.
- * makeinfo/files.c (get_file_info_in_path): Remove static keyword.
- * makeinfo/makeinfo.c (cm_image): Lookup image file name in the
- search path for include files.
+2004-08-26 Stepan Kasal <kasal@ucw.cz>
-2003-03-05 <karl@gnu.org>
+ * util/texi2dvi: fix the sed script searching for @documentencoding;
+ Double-quote some instances of "$filename_???"
- * makeinfo/makeinfo.c (insert_toplevel_subdirectory): always make
- subdirectory for html. Before, if the current directory happened
- to be named `foo' and the @setfilename was foo.info, we would
- write the split html files into the current directory. Reported
- by rich@phekda.freeserve.co.uk, 01 Mar 2003 12:03:13 +0000.
+2004-08-26 Akim Demaille <akim@epita.fr>
- * makeinfo/files.c (filename_part): simplify assignment.
+ Let DVI and PDF files honor the document encoding in TeX.
-2003-02-24 <karl@gnu.org>
+ * util/texi2dvi ($language): Be sure to set its value.
+ (get_xref_files): Turn this external shell script into a function.
+ (filename_rcd, $tmpdir_rcd): New.
+ If the file is in Texinfo, and has @documentencoding, and recode
+ is available, then run it.
- * makeinfo/insertion.c (get_item_function): check for @item in
- argument to @itemize. Report from: Dumas Patrice
- <dumas@centre-cired.fr>, 24 Feb 2003 13:13:52 +0100.
+2004-08-25 Akim Demaille <akim@epita.fr>
- * makeinfo/makeinfo.c (remember_brace): say `braces' instead of
- `{...}', since often we don't actually expect text inside the
- braces.
+ * util/Makefile.am (texinfo.cat): Fix for srcdir != builddir.
-2003-02-21 <karl@gnu.org>
+2004-08-25 Karl Berry <karl@gnu.org>
- * aclocal.m4: automake 1.7.3.
+ * util/texi2dvi: @ is also ok for the first character of xref_files.
-2003-02-19 <karl@gnu.org>
+2004-08-20 Karl Berry <karl@gnu.org>
- * doc/info-stnd.texi: omit all node pointers.
+ * doc/texinfo.tex (\tablez): accidentally removed assignments
+ enabling @item and @itemx within @table.
-2003-02-18 <karl@gnu.org>
+2004-08-19 Karl Berry <karl@gnu.org>
- * util/texindex.c (maketempname): use already-set `tempdir' instead
- of half-redoing the logic.
- (concat): only need two args, not three; change callers.
- (perror_with_name): really call perror, putting
- the name first a la gcc.
- (pfatal_with_name): call perror_with_name.
+ * doc/texinfo.tex (\multitable): \def\item to \crcr, instead of
+ \let, to avoid errors with a nested @itemize inside
+ @multitable.
+ Report from: Pierre-Luc Veilleux <plv@centretiv.com>,
+ 18 Aug 2004 13:26:00 -0400.
- * util/texi2dvi (get_xref_files): a file whose first line is
- \input texinfo is not an index file. Report from: Anton Ertl
- <anton@a0.complang.tuwien.ac.at>, 18 Feb 2003 14:41:47 +0100.
+2004-08-19 Stepan Kasal <kasal@ucw.cz>
-2003-02-16 <karl@gnu.org>
+ * doc/texinfo.tex (\scanmacro): Make backslash active, not other,
+ as this is the default when processing texinfo files.
+ Otherwise, a \ inside @copying will eventually print as ``.
- * makeinfo/index.c (init_indices): don't try to free indexes that
- undefindex already freed. Report from: Arkadiusz
- Miskiewicz <misiek@pld.ORG.PL>,
- 15 Feb 2003 13:22:49 +0100.
+2004-08-18 Stepan Kasal <kasal@ucw.cz>
- * configure.ac (curses): forgot to quote arg to AC_TRY_LINK.
- From vojta and te, 16 Feb 2003 01:37:09 +0100.
+ * doc/texinfo.tex (\scantxt): " is another active char to be
+ sanitized.
-2003-02-13 <karl@gnu.org>
+2004-08-18 Karl Berry <karl@gnu.org>
- * makeinfo/insertion.c (begin_insertion): for html cartouche
- output, add class="cartouche". Suggestion from Stephen.
+ * doc/texinfo.txi (exampleindent): document that the default is
+ different in TeX.
+ From: Simon Josefsson <jas@extundo.com>, 18 Aug 2004 13:44:32 +0200.
-2003-02-11 <karl@gnu.org>
+2004-08-14 Karl Berry <karl@gnu.org>
- * Installed patch:
- 2003-02-10 Peter Breitenlohner <peb@mppmu.mpg.de>
- * info/indices.c, info/info.c, info/info.h, info/nodemenu.c,
- info/session.c, info/window.c, makeinfo/defun.c, makeinfo/html.c,
- makeinfo/index.c, makeinfo/insertion.c, makeinfo/makeinfo.c,
- makeinfo/makeinfo.h, makeinfo/node.c: declare all constant
- strings as such in order to avoid lots of gcc warnings (for
- --disable-nls and maybe without that as well).
+ * doc/texinfo.tex (\cslet): equivalent-or-better, and shorter,
+ version from dak, 12 Aug 2004 19:17:27 +0200.
- * doc/texinfo.tex (\registeredsymbol): new command for Arnold.
+ * doc/texinfo.txi (makeinfo options): use --no-number-sections
+ with non-hierarchical manuals.
- * util/dir-example: dc to basics.
+2004-08-13 Karl Berry <karl@gnu.org>
- * doc/texinfo.txi (Defining Macros): document new requirements on
- macro names. Report from: Alper Ersoy
- <dirt@gtk.org>, 11 Feb 2003 05:11:35 +0200.
+ * util/texi2dvi: check for -file-line-error, since -style is no
+ longer part of the name.
-2003-02-07 <karl@gnu.org>
+2004-08-07 Karl Berry <karl@gnu.org>
- * makeinfo/insertion.c (begin_insertion): output a table with a border
- for @cartouche.
- (end_insertion): end the table.
- From: Joshua N Pritikin <vishnu@pobox.com>,
- 7 Feb 2003 21:59:49 +0530.
+ * info/echo-area.c (inform_in_echo_area): avoid buffer overrun.
+ Report from: Roman Werpachowski <rwerp@gazeta.pl>,
+ 7 Aug 2004 01:18:32 +0200.
+
+ * info/echo-area.h (inform_in_echo_area): declare arg as const,
+ while we're at it.
-2003-02-05 <karl@gnu.org>
+2004-08-02 Karl Berry <karl@gnu.org>
- * info/info.c (short_options): add h.
- (main): treat -h same as --help.
- From: rwhron@earthlink.net, 31 Aug 2002 19:56:57 -0400.
+ * makeinfo/cmds.c (cm_acronym_or_abbr): use strchr, not index.
+ Report from: Prof Brian Ripley <ripley@stats.ox.ac.uk>,
+ 2 Aug 2004 12:47:36 +0100 (BST)
- * info/session.c (show_isearch_prompt): compute length of
- translated "Failing ", don't assume 20 is enough.
- (It's 21 bytes in UTF-8 Russian.)
- Report from: varg@thsun1.jinr.ru,
- 25 Jul 2002 15:26:42 +0400.
+2004-07-31 Karl Berry <karl@gnu.org>
- * info/display.c (display_update_one_window): don't derefence null
- `entry' (if the screen is very small).
- From: Danny Yoo <dyoo@hkn.eecs.berkeley.edu>,
- 8 Jul 2002 15:21:14 -0700.
+ * doc/texinfo.txi,
+ * doc/texinfo.tex,
+ * makeinfo/cmds.c, cmds.h, xml.c, xml.h,
+ * util/texinfo.dtd: new command @abbr, suggested by Paul Eggert,
+ who also sent the original documentation.
- * doc/.cvsignore: ignore *.info and texput.log.
+2004-07-30 Karl Berry <karl@gnu.org>
-2003-02-04 <karl@gnu.org>
+ * info/infomap.c (initialize_vi_like_keymaps): bind j to
+ info_next_line and k to info_prev_line. From Eli.
- * Version 4.5 (that info bug was a killer).
+2004-07-30 Maciej W. Rozycki <macro@linux-mips.org>
- * configure.ac (AC_CHECK_HEADERS): test for sys/stream.h.
- (sys/ptem.h): write separate test since it needs
- sys/stream.h on Solaris. From: Lars Hecking
- <lhecking@nmrc.ucc.ie>, 4 Feb 2003 19:47:54 +0000.
+ * info/filesys.c (extract_colon_unit): Clean up handling of the
+ end of string.
- * doc/texinfo.txi: comment about using @example instead of
- @verbatim due to automake doesn't apply any more.
+2004-07-27 Karl Berry <karl@gnu.org>
-2003-02-03 <karl@gnu.org>
+ * doc/texinfo.txi (verb): explicitly warn that @verb cannot be
+ used in xref contexts.
- * doc/texinfo.tex (\verbatiminclude): use \other instead of 12.
+2004-07-27 Stepan Kasal <kasal@ucw.cz>
-2003-02-02 <karl@gnu.org>
+ * doc/texinfo.tex (\float): The parameters for @float are
+ separated by commas; allow a space after each of the commas.
- * doc/texinfo.tex (\cartouche): explicit \par, as @cartouche does
- not work inside a paragraph.
- Bug report from: Stephen Gildea <gildea@intouchsys.com>,
- 15 Oct 1999 09:25:31 EDT.
+ The TeX code for @caption, @shortcaption and @copying now uses
+ a similar mechanism to macro definitions. In detail:
-2003-02-01 <karl@gnu.org>
+ * doc/texinfo.tex (\macrobodyctxt, \macroargctxt): Generalize, ...
+ (\scanctxt, \scanargctxt): ... and introduce new variants.
+ (\scanexp): New macro--expand the parameter and call \scantokens.
+ (\copying, \docopying, \insertcopying): Use \scanargctxt and
+ \scanexp--this simplifies things a lot.
+ (\caption, \shortcaption): Redefine, using \scanargctxt via ...
+ (\docaption, \defcaption): ... these new macros.
+ (\appendtomacro): Simplify code, using \expandafter.
- * util/fix-info-dir, util/gen-dir-node, util/install-info-html,
- util/tex3patch, util/txitextest: test && test instead of test -a, etc.
- From: Paul Eggert <eggert@twinsun.com>,
- 31 Jan 2003 22:59:35 -0800.
+2004-07-26 Karl Berry <karl@gnu.org>
-2003-01-31 <karl@gnu.org>
+ Avoid using the path for output files, since this led to problems
+ when incompatible files created by previous versions were found.
+ * makeinfo/files.c (find_and_load): introduce second parameter
+ use_path, set to 0 from the call in handle_delayed_writes,
+ 1 in all cases.
+ * makeinfo/files.h: change decl.
+ * makeinfo/cmds.c, makeinfo.c, node.c: change calls.
+ From: Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>,
+ 14 Jul 2004 00:31:54 +0200.
- * doc/texinfo.tex (\groupbox): \newbox.
- (\vfilllimit): new \def.
- (\group): insert an explicit \page if the group is
- big, and doesn't fit on the current page.
- Otherwise, the previous page gets stretched unreasonably.
- From: Werner LEMBERG <wl@gnu.org>,
- 31 Jan 2003 19:19:33 +0100.
+2004-07-25 Werner Lemberg <wl@gnu.org>
- * doc/texinfo.tex (\defargscommonending): insert \penalty10002.
- (\parsebodycommon): check for \penalty10002 to
- allow a breakpoint between @def's, not 10000.
+ Rename @s to @slanted.
- * doc/texinfo.tex (\defargscommonending): new macro.
- (\defunargs, etc.): call it, instead of repeating code.
- (No functional change.)
+ * doc/texinfo.tex (\s): Replace with...
+ (\slanted): This.
+ * doc/texinfo.txi: Updated.
- * info/filesys.c (extract_colon_unit): return last colon unit
- before claiming we're done. Report from: Alexandre Duret-Lutz
- <duret_g@lrde.epita.fr>, 31 Jan 2003 18:18:22 +0100.
+ * makeinfo/cmds.c (command_table): Add @slanted, not @s.
+ (cm_s): Replace with...
+ (cm_slanted): This.
+ * makeinfo/cmds.h: Add cm_slanted, not cm_s..
- * Version 4.4.
+ * NEWS: Updated.
-2003-01-30 <karl@gnu.org>
+2004-07-24 Karl Berry <karl@gnu.org>
- * doc/texinfo.tex (\dosubind): need full expansion of the index
- sort string.
+ * info/echo-area.c (ea_possible_completions),
+ * info/session.c (forward_move_node_structure),
+ * info/infokey.c (compile): cast to intptr_t to avoid cast to
+ pointer from integer of different size.
+ From Havard Eidnes <he@netbsd.org>, 14 Jul 2004 20:38:59 +0200.
- * doc/texinfo.tex (\startcontents,\contents,\shortcontents):
- assignments to \pageno must be \global; otherwise
- if it's run inside a group, as in
- @ifnothtml
- @contents
- @end ifnothtml
- the rest of the pages in the document get roman numerals.
- Reported by rlp.
+2004-07-19 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.tex (\dosubind): need space between entry and
- subentry in printed output. Bug report from: Robin Lee Powell
- <rlpowell@digitalkingdom.org>, 30 Jan 2003 15:13:48 -0800.
- (\defophead, \defcvarhead, \defivarheader): show
- method name in \code.
+ * makeinfo/makeinfo.c (main): with XML, instead of directly calling
+ handle_variable_internal for -D and -U command line flags, hold the
+ variable declarations until output document is started.
+ (convert_from_loaded_file): handle variables provided with -D and -U
+ flags here, just before entering the reader_loop.
+ (Otherwise, -D/-U with --xml cause a segfault.)
- * doc/texinfo.tex (\dosubind): need to \vskip-\skip0, not
- -\lastskip, since \lastskip gets cleared by the \nobreak. Bug
- report from: Werner LEMBERG <wl@gnu.org>, 29 Jan 2003 09:18:16
- +0100.
+2004-07-15 Werner Lemberg <wl@gnu.org>
-2003-01-29 <karl@gnu.org>
+ * doc/texinfo.tex (\s): New command to typeset text with a slanted
+ font.
+ * doc/texinfo.txi: Document @s.
- * info/signals.c (initialize_info_signal_handler): initialize the
- sigaction struct here, not statically, since we can't rely on the
- ordering of the elements; it's different on IRIX and FreeBSD, at
- least. Patch from: ezra peisach <epeisach@med-xtal.bu.edu>, 28
- Jan 2003 13:09:18 -0500 (EST).
+ * makeinfo/cmds.c (command_table): Add @s.
+ (cm_s): New function. Currently the same as cm_i -- it probably
+ has to be adapted to Docbook and XML.
+ * makeinfo/cmds.h: Add prototype for cm_s.
-2003-01-28 <karl@gnu.org>
+ * NEWS: Document new command @s.
- * util/dir-example: bring emacs section up to date.
+2004-07-15 Werner Lemberg <wl@gnu.org>
-2003-01-27 <karl@gnu.org>
+ * doc/texinfo.tex (\TeX): Adjust \spacefactor to make it act like a
+ lowercase letter, not like a period.
- * configure.ac: pretest version 4.3d.
+2004-07-12 Karl Berry <karl@gnu.org>
- More changes to use @ fully in the .aux file, otherwise something
- as simple as:
- @node foo
- @section @code{foo}
- was broken.
- * doc/texinfo.tex (\setref): call \atdummies.
- (\atdummies): new macro, based on \indexdummies.
- (\commondummies): separate out common redefinitions.
- (\lbraceatcmd,\rbraceatcmd): @{ and @}, as strings.
-
- * configure.ac (AC_CHECK_FUNCS): add sigaction.
- * info/signals.c (set_termsig) [HAVE_SIGACTION]: second arg to
- sigaction is a pointer, not a struct.
+ * texinfo/texinfo.txi (Useful Highlighting): Include
+ cross-references to each of the commands. Suggestion from
+ Wolfgang Pausch, 12 Jul 2004 08:26:28 +0200.
- From: AIDA Shinra <aida-s@jcom.home.ne.jp>, 25 Jan 2003 18:53:19 +0900:
- * info/signals.c (mask_termsig,set_termsig,restore_termsig): new fns.
- (initialize_info_signal_handler): use sigaction if we have it.
- (info_signal_proc): reread window size in case it has changed
- while we were suspended.
-
- Mon Jan 27 08:09:07 CET 2003 Stepan Kasal <kasal@math.cas.cz>
- * doc/texinfo.tex (\acuteaccent): the workaround is no longer needed.
- (\xrefX): \normalturnoffactive changed to \turnoffactive, since
- we \otherbackslash right afterwards anyway.
-
-2003-01-24 <karl@gnu.org>
-
- * doc/texinfo.tex: These changes allow ' in node and anchor names:
- (\internalsetq): use @ instead of ' as the escape
- character for .aux files.
- (\xrdef): don't need to play games with \ now.
- (\readauxfile): don't set catcode' to 0, and do
- set catcode@ to 0.
-
- These changes allow \ in node and anchor names
- (this worked once, but we broke it somewhere along the line):
- (\setref, \xrefX, \dosetq, \refx): call \otherbackslash.
- (\otherbackslash): new macro to make an active
- backslash expand to a literal `\' character with
- catcode other.
-
-
- * configure.ac: pretest version 4.3c.
-
- * doc/texinfo.tex (\smallenvironments): remove, and change callers.
- (\small...x): rename to just \small...
- (\smallexamplefonts): set to \smallfonts, not
- \smallerfonts, at least until people complain again.
-
- The effect of these changes is to make the
- @small... commands print in a smaller font (9pt)
- for all formats, not just @smallbook and @afivepaper.
-
-
- * info/filesys.c (extract_colon_unit): rewrite so that an empty
- unit does not stop us from processing the rest. Report from:
- Werner LEMBERG <wl@gnu.org>, 24 Jan 2003 07:01:09 +0100.
-
-
- Date: Mon, 02 Dec 2002 01:06:37 +0900
- From: AIDA Shinra <aida-s@jcom.home.ne.jp>
-
- * "info infokey" says key bindings in .info take precedence over
- the default mapping, but this is not true. Only bindings to
- undefined keys take effects.
- * Binding to "invalid" action results crash.
- * No code to disable prefix keys. Some users might want to bind
- escape or C-x to a non-prefix key, but this does not allowed.
- ... It always allows '^h' in incremental
- search. Some terminals map 'backspace' to '^h' by default.
-
- These are the changes:
- * info/session.c (incremental_search): check for Control('h') as
- well as DEL.
- * info/infomap.c (find_function_keyseq, add_function_keyseq,
- remove_function_keyseq): new fns.
- (keymap_copy_keymap, keymap_discard_keymap): take
- rootmap arg.
+ * texinfo/texinfo.txi (Invoking makeinfo),
+ * makeinfo/makeinfo.c: mention that --if-noFORMAT also processes
+ @ifnotFORMAT blocks.
+ Suggestion from Stepan.
-Wed Jan 22 14:25:39 CET 2003 Stepan Kasal <kasal@math.cas.cz>
-
- * doc/texinfo.tex (\footnotezzz): the very beginning was moved
- to \startfootins;
- (\startfootins): new macro;
- (\multitable, \dotable): redefine \startfootins to get footnotes
- saved, use \crcrwithfootnotes;
- (\crcrwithfootnotes): check for postponed footnotes each time a row
- of a multitable is finished;
- (\tab): no longer defined globally, just \let to & inside
- @multitable.
+2004-07-11 Karl Berry <karl@gnu.org>
-2003-01-22 <karl@gnu.org>
+ * makeinfo/makeinfo.c (discard_until): leave input_text_offset at
+ the end of input_text if not found, not at one past the
+ end of input_text. (Had erroneously put that in the block
+ only if an error was given.) The result was a null byte
+ after macro expansions. Report from Werner,
+ 10 Jul 2004 15:36:40 +0200.
- * doc/texinfo.tex: doc fix.
- * doc/texinfo.tex (\dofootnote): rename from \footnotezzz.
+ * makeinfo/node.c (split_file): fwrite Local Variables trailer so
+ it actually gets into the output of the top-level info
+ file; don't just insert_string.
+ Report from: Werner LEMBERG, 11 Jul 2004 08:58:13 +0200.
- Wed Jan 22 14:23:51 CET 2003 Stepan Kasal <kasal@math.cas.cz>
- * doc/texinfo.tex (\cartouche, \footnotezzz): removed \long, it
- has no effect for macros without a parameter;
- (\fo@t, \f@@t, \f@t, \@foot): removed, local \def has no effect.
+2004-07-10 Karl Berry <karl@gnu.org>
-2003-01-21 <karl@gnu.org>
-
- * doc/texinfo.txi (Output Formats): new section.
+ * util/texi2pdf: new script.
+ * util/Makefile.am: install it.
+ * doc/texinfo.txi: document it.
-2003-01-19 <karl@gnu.org>
+2004-07-05 Karl Berry <karl@gnu.org>
- * configure.ac: pretest version 4.3b.
+ * makeinfo/xref.c (cm_email, cm_uref, et al.):
+ * makeinfo/xml.c (xml_insert_indexentry, xml_insert_indexterm):
+ * makeinfo/sectioning.c (sectioning_underscore):
+ * makeinfo/makeinfo.c (cm_listoffloats): use %s, don't pass string to
+ execute_string. Report from Christian Schenk.
- * makeinfo/tests/include-value: need -I $srcdir.
+2004-07-02 Karl Berry <karl@gnu.org>
- * util/texindex.c:
- * util/install-info.c:
- * info/infokey.c:
- * info/info.c:
- * makeinfo/makeinfo.c:
- * util/texi2dvi: 2003.
+ * makeinfo/makinfo.c (execute_string): don't worry about
+ mismatched multiline commands if executing_macro.
-2003-01-18 <karl@gnu.org>
+2004-06-27 Karl Berry <karl@gnu.org>
- * makeinfo/node.c: add `(perhaps incorrect sectioning?)' to some of
- the error messages. Unfortunately we can't easily
- determine when the error stems from actual
- mistyped node pointers, and when from incorrect
- menus causing the implicit pointer creation to fail.
+ * doc/texinfo.tex: Various doc fixes.
+ (\dosubindsanitize): propagate the same penalty
+ >10000, don't just use \nobreak.
+ (\sectionheading): insert a final penalty of
+ 10001, not 10000. This causes \aboveenvbreak to
+ insert \parskip glue, cancelling the
+ \vskip-\parskip done here. Otherwise, when (e.g.)
+ @section is followed immediately by @example, the
+ example can be shrunk up above the section title.
-2003-01-17 <karl@gnu.org>
+2004-06-14 Karl Berry <karl@gnu.org>
- Thu Jan 16 10:28:32 CET 2003 Stepan Kasal <kasal@math.cas.cz>
- * doc/texinfo.tex (\refx): Set locally \indexdummies before expanding
- the \csname, in case there are macros; foreign accents, for example.
- Bug report from Dumas Patrice <dumas@centre-cired.fr>.
+ * doc/texinfo.tex (\commondummies, \indexnofonts): dummy-up @comma.
+ Report from Arnold.
- * makeinfo/makeinfo.c (COMMAND_CHAR): new macro, and exclude ^ and
- _ from command names.
- (read_token): call it.
+2004-06-06 Karl Berry <karl@gnu.org>
- * makeinfo/makeinfo.h (command_char): move to makeinfo.c, since
- it's only used in one place.
+ * makeinfo/index.c (index_add_arg): ensure all elements are always
+ initialized, including output_file, section, and section_name.
+ (cm_printindex): don't pass index->output_file to
+ add_html_block_elt_args if it is null. Also do
+ not pass spurious extra index_name argument.
-2003-01-16 <karl@gnu.org>
+ * makeinfo/makeinfo.c (add_char): don't call html_output_head if
+ only_macro_expansion (e.g., a macro call in the
+ Top menu). From: Yuri D'Elia <wavexx@yuv.info>,
+ 05 Jun 2004 21:11:00 +0200.
- * TODO: @else
+2004-06-03 Karl Berry <karl@gnu.org>
-2003-01-12 <karl@gnu.org>
+ * info/session.c (info_menu_digit): use menu, rather than entry, to
+ avoid seg fault on "0" (the last item),
+ since menu has already been checked.
+ From: Malcolm Rowe <malcolm-gnu@farside.org.uk>,
+ 02 Jun 2004 21:32:37 +0100.
- * doc/texinfo.tex (\dounmacro): simplify method for removing from
- macro list. From Stepan. (Also rename from \unmacroxxx.)
- (\unmacrodo): new macro, called with new method.
+2004-05-17 Karl Berry <karl@gnu.org>
- * doc/texinfo.tex (\dotChar, questChar, exclamChar, colonChar,
- semiChar, commaChar, underChar): names for catcode chars, defined using
- \chardef. From Stepan.
+ * util/gendocs.sh, gendocs_template: use package.format.tar.gz
+ consistently. Before, -, _, and . were all used.
- * doc/texinfo.tex (\conditionalsucceed): back to the easy
- definition, since @set is global now. From Stepan.
+2004-05-16 Karl Berry <karl@gnu.org>
- * doc/texinfo.tex (\doifclear,\doifset): use \let\next instead of
- \expandafter, so that we'll succeed on no
- conditional text. From Stepan.
- Also rename from \ifclearxxx and \ifsetxxx.
+ * lib/Makefile.am (libtxi_a_SOURCES): include strcase.h.
+ From: "Gerrit P. Haase" <gp@familiehaase.de>,
+ 15 May 2004 21:50:52 +0200.
- * doc/texinfo.tex (\expandablevalue): give a \message if the
- variable is not set. Based on patch from Stepan.
+ * util/gendocs.sh: force HTML output name, otherwise Emacs fails
+ with its "@setfilename ../...".
- * doc/texinfo.tex (\setuptable): insert an actual \space after
- \unskip. From Stepan.
+2004-05-04 Karl Berry <karl@gnu.org>
- * doc/texinfo.tex (\kbdinputstyle): give error if unknown argument,
- and call the macro to set the default. From Stepan.
+ * util/texi2dvi (TEX): don't use the value when it ends in
+ "latex"; TEX is also used by mpost. Report from
+ Yvon.Henel@wanadoo.fr.
- * doc/texinfo.tex: typo from Stepan.
+2004-04-29 Karl Berry <karl@gnu.org>
- * doc/texinfo.tex (\docenter): rename from \centerzzz and do \hfil
- instead of using plain's \centerline and \hss. Also force line
- breaks before and after in horizontal mode.
- Based on patch from Stepan, 11 Apr 2000 19:44:31 +0200.
+ * doc.texinfo.txi (Invoking makeinfo): mention --plaintext.
+ From Akim.
- * doc/texinfo.tex: use \other and \active consistently.
- From: Stepan Kasal <kasal@suse.cz>, 11 Apr 2000 19:44:31 +0200.
+ * doc/texinfo.tex (\emptyusermacros): can use \asis.
+ (\identity): remove.
- * makeinfo/cmds.c (handle_include): call text_expansion on the
- filename, so @value constructs are expanded.
+2004-04-29 Stepan Kasal <kasal@ucw.cz>
- * doc/texinfo.txi (verbatiminclude, Using Include Files): mention
- @value expansion.
- Also, update samples to be copyright 2003.
+ * doc/texinfo.tex (\commondummiesnofonts, \indexnofonts): In order
+ to correctly transform words like `Dvo\v{r}\'{a}k' to `Dvorak'
+ for index sorting, one has to define all accent control sequences
+ as @asis. (Current code would produce `Dvor{a}k'.)
- * doc/texinfo.tex (\doverbatiminclude, \verbatimzzz): expand
- @value(but nothing else).
- Bug from: Alper Ersoy <aersoy@tfz.net>,
- 6 Jan 2003 13:14:28 +0200.
+2004-04-29 Jan Nieuwenhuizen <janneke@gnu.org>
-2003-01-11 <karl@gnu.org>
+ * makeinfo/makeinfo.c (remember_error): Try cm_bye not more than
+ twice. Fixes `Too many errors! Gave up.' looping.
- * doc/texinfo.tex (\definedummyword): new macro.
- (\indexdummies): call it, instead of defining each
- command separately; many trailing spaces had been omitted.
- Alternate implementation of a patch from: Stepan
- Kasal <kasal@math.cas.cz>, 10 Jan 2003 22:42:05 +0100.
+2004-04-26 Karl Berry <karl@gnu.org>
- * doc/texinfo.tex (\acuteaccent): new defn.
- (\indexdummies): use it instead of \' in the aux file.
- Variation of a patch from: Stepan Kasal <kasal@math.cas.cz>,
- 10 Jan 2003 21:28:40 +0100.
+ * lib/system.h (STRCASEEQ, STRNCASEEQ): new #defines for
+ convenience.
+ * makeinfo/cmds.c (cm_strong): actually change the output to avoid a
+ spurious xref. Suggestion from Jan Nieuwenhuizen
+ <janneke@gnu.org>, 26 Apr 2004 00:04:04 +0200, emacs-devel.
- * doc/texinfo.tex: doc fix.
+ * automake 1.8.4.
-2003-01-10 <karl@gnu.org>
+2004-04-24 Karl Berry <karl@gnu.org>
- * doc/texinfo.tex (\indexnofonts, \indexdummies): handle more
- accent commands.
- (\indexdummyfont): not needed, use \asis instead.
+ * doc/texinfo.tex (\emptyusermacros, \identity): new macros.
+ (\indexdummiesnofonts): call it.
+ This is to semi-support macro calls in the arg to @deffn.
+ Report from: Akim Demaille <akim@epita.fr>, 20 Apr 2004 17:48:28 +0200.
- * doc/texinfo.tex (\indexdummies,\indexnofonts): indent, no other
- changes.
+2004-04-21 Karl Berry <karl@gnu.org>
- * doc/texinfo.tex (\chapter .. \subsubsection): indent the
- definitions; no other change.
+ * configure.ac (gl_FUNC_MKSTEMP): rename from UTILS_FUNC_MKSTEMP,
+ per new gnulib code.
- * doc/texinfo.txi (Macro details): no multiple-line args is
- another limitation.
+2004-04-20 Karl Berry <karl@gnu.org>
- Fri Jan 10 07:12:23 CET 2003 Stepan Kasal <kasal@math.cas.cz>
- * texinfo.tex (\writetocentry): The
- common work on building the line for \write\tocfile was
- moved into the macro itself and thus all callers has been changed.
+ * makeinfo/tests/copying: force POSIX language setting.
-2003-01-09 <karl@gnu.org>
+2004-04-19 Karl Berry <karl@gnu.org>
- * info/session.c (incremental_search): don't interpret the
- `function' element as an InfoCommand when it's really a Keymap.
- This caused arrow keys to be inserted literally under Solaris, but
- not GNU/Linux. Bug report from: Jeremy Lin
- <jjlin@OCF.Berkeley.EDU>, 5 Jan 2003 01:59:29 -0800.
+ * makeinfo/cmds.c (cm_code): use <samp> for commands other than
+ @code, so we get typewriter output; and add `...'
+ for @samp.
+ Report from: John Blevin <blevin@lucent.com>,
+ 16 Apr 2004 11:40:01 -0400.
- * info/infomap.c: add comment about strange pointer cast.
+ * makeinfo/html.c (html_output_head) [CSS_FONT_ROMAN,
+ CSS_FONT_SMALL_CAPS]: prettify.
-2003-01-08 <karl@gnu.org>
+2004-04-18 Karl Berry <karl@gnu.org>
- * doc/texinfo.tex (\ignoremorecommands): define \Edef... and
- \def...x for all @def... commands, and use \empty
- instead of \relax. Bug report from Paul Eggert
- <eggert@twinsun.com>, 7 Jan 2003 22:29:07 -0800.
+ * doc/texinfo.tex (\Orb): define if undefined.
+ Report from Laurent Siebenmann.
-2003-01-06 <karl@gnu.org>
+ * util/dir-example: diff updates.
- * doc/texinfo.txi (table): mention @option as a useful indicating
- command, and need for blank lines before and
- after. Suggestion from: Kevin Ryde
- <user42@zip.com.au>, 03 Jan 2003 10:02:55 +1000.
+2004-04-13 Karl Berry <karl@gnu.org>
-2003-01-05 <karl@gnu.org>
+ * doc/texinfo.tex: remove trailing blanks. suggestion from Jim.
- * util/texi2dvi: make egrep a variable (EGREP). Suggestion from:
- Kurt Hornik <hornik@ci.tuwien.ac.at>.
- Also, replace fgrep with grep.
+2004-04-12 Paul Eggert <eggert@twinsun.com>
- * doc/Makefile.am (TXI_XLATE): include txi-tr.tex from Alper Ersoy
- <dirt@gtk.org>.
+ * doc/Makefile.am (info.1, infokey.1, install-info.1,
+ makeinfo.1, texi2dvi.1, texindex.1): Don't use $< in ordinary
+ rules; it's not portable.
+ * util/Makefile.am (texinfo.cat): Likewise.
-2003-01-02 <karl@gnu.org>
+2004-04-12 Karl Berry <karl@gnu.org>
- * makeinfo/insertion.c (end_insertion): in table case, call
- close_insertion_paragraph. Bug report from: Kevin
- Ryde <user42@zip.com.au>, 03 Jan 2003 08:09:54 +1000.
+ * bootstrap: update from berlios.
- * doc/texinfo.tex: remove spurious CTRL-G.
+2004-04-11 Karl Berry <karl@gnu.org>
- * util/srclist.txt: more m4 files from gnulib now.
+ * Version 4.7.
-2003-01-01 <karl@gnu.org>
+2004-04-09 Karl Berry <karl@gnu.org>
- * doc/texinfo.tex (\_): more space afterwards, so __ comes out
- better. Noticed in the gcc manual.
+ * makeinfo/makeinfo.c (execute_string): do not free the temporary copy
+ of input_filename until we're definitely done with
+ it. It is used in line_error, etc.
-2002-12-31 <karl@gnu.org>
+ * INSTALL: mention texinfo.tex install step.
- * makeinfo/makeinfo.c (usage): omit all the help message when something
- goes wrong in argument parsing, as intended.
+ * util/Makefile.am (texinfo.cat): new name instead of just
+ `catalog'. rename files.
+ * util/Makefile.am (EXTRA_DIST): texinfo-cat.in now, not
+ catalog.in.
-2002-12-26 <karl@gnu.org>
+2004-04-09 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.tex (\insertcopying): ignore @c, @comment, and
- @ignore...@end ignore as best we can. Report from
- "Joseph S. Myers" <jsm28@cam.ac.uk>, 24 Dec 2002
- 18:08:10 +0000 (GMT), for the gcc manual, which
- uses these constructs for automatic man page generation.
+ * makeinfo/insertion.c (begin_insertion): after @copying, do not
+ discard until a newline if we are looking at one.
+ (end_insertion): decrement input line number after @end copying.
-2002-12-23 <karl@gnu.org>
+2004-04-08 Karl Berry <karl@gnu.org>
- * doc/texinfo.txi (example): note that Texinfo commands are
- expanded, plus other changes. Suggestion from Nelson Beebe.
+ * util/Makefile.am: doc fix, as automake.diff is no longer needed.
-2002-12-20 <karl@gnu.org>
+2004-04-07 Karl Berry <karl@gnu.org>
- * config.guess: update from prep.
+ * pretest version 4.6.95.
+
+ * doc/texinfo.tex (\dodonode): new macro to remove trailing comma.
+ (\donode): call it, after removing space-comma.
+
+ * doc/texinfo.txi (indicateurl): new name for url.
+ (uref): url is now a synonym for uref.
+ * doc/texinfo.tex (\url, \indicateurl): implement.
+ * makeinfo/cmds.c (cm_indicate_url): rename from cm_url.
+ (command_table): make "url" a synonym for "uref".
+ * makeinfo/cmds.h (cm_indicate_url): declare it.
-2002-12-17 <karl@gnu.org>
+2004-04-06 Karl Berry <karl@gnu.org>
- * makeinfo/texinfo.dtd (indexterm): index not INDEX.
- (node): only any block, not just para|menu.
- * makeinfo/xml.c (texinfoml_element_list): format and like can
- contain para.
- From: Alper Ersoy <aersoy@tfz.net>.
+ * makeinfo/sectioning.c (insert_and_underscore): use `...' quote
+ instead of "..." in error message.
+ * info/*.c: likewise.
-2002-12-14 <karl@gnu.org>
+2004-04-07 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.txi (makeinfo in Emacs): does not prompt for
- filename.
- From: Kevin Ryde <user42@zip.com.au>.
+ * makeinfo/cmds.c (cm_colon): check if the character we are erasing
+ from the output belongs to an XML tag.
-2002-12-13 <karl@gnu.org>
+2004-04-07 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.txi: short sample needs @top (from jas), gnu sample
- can use @verbatim (automake fix).
+ * makeinfo/insertion.c (cm_author): use author element in XML output
+ for attribution.
-2002-12-11 <karl@gnu.org>
+2004-04-06 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.txi: typos.
+ * makeinfo/makeinfo.c (convert_from_loaded_file): do not call
+ write_tag_table if the output filename is "-".
-2002-12-07 <karl@gnu.org>
+2004-04-06 Alper Ersoy <dirt@gtk.org>
- * makeinfo/xml.c: use lowercase, allow more chars in id's. From:
- Jaime Davila <jdavila@engr.uconn.edu>, 6 Dec 2002 11:00:25 -0500.
+ * makeinfo/insertion.c (end_insertion): <pre> blocks implicitly ends
+ the previous paragraph, so avoid </p> after the end tag.
-2002-12-05 <karl@gnu.org>
+ * makeinfo/footnote.c (output_pending_notes): made Footnotes anchor
+ non translatable, and changed it to "texinfo-footnotes-in-document" to
+ lessen the chance of getting in the way of another Footnotes anchor.
- * util/dir-example: alphabetize make.
+2004-04-04 Jim Meyering <jim@meyering.net>
- * NEWS: change texinfo.tex url.
+ * info/nodes.c (info_load_file_internal): Don't free lowered_name
+ until *after* using fullpath, since they may be one and the same.
- * doc/texinfo.tex (\obstexwarn): fix url's to TeX.README and
- texinfo.tex.
+2004-04-03 Karl Berry <karl@gnu.org>
-2002-12-02 <karl@gnu.org>
+ * doc/texinfo.txi (Image Syntax): had missing @'s in cookies.
- * doc/texinfo.txi (Line Breaks): fixes.
+ * makeinfo/cmds.c (cm_w): insert a comment at the end of @w, so that
+ @w{$}Log$ doesn't end up as <dollar>Log<dollar>.
+ Report from rms.
+ * doc/texinfo.txi (GNU Sample Texts, w): mention this.
-2002-12-01 <karl@gnu.org>
+2004-04-02 Karl Berry <karl@gnu.org>
- * configure.ac: pretest version 4.3a.
+ * configure.ac: pretest version 4.6.94.
-2002-11-30 <karl@gnu.org>
+ * doc/texinfo.txi (Node Line Requirements): discuss whitespace.
- * doc/Makefile.am (texinfo): restore rule since this won't quite
- be fixed until automake 1.7.2 or later.
+ * doc/texinfo.tex (\node, \donode): remove trailing
+ spaces (before the first comma) in the @node line.
-2002-11-29 19:19 feloy
+2004-03-29 Karl Berry <karl@gnu.org>
- * makeinfo/xml.c: Fix the <para>&lt; bug in XML, reported by K.
- Ryde
+ * util/install-info.c (menu_line_lessp, menu_line_equal): move to
+ before all uses.
-2002-11-29 <karl@gnu.org>
+2004-03-27 Karl Berry <karl@gnu.org>
- * lib/strdup.c: gnulib update.
+ * info/signals.c (initialize_info_signal_handler) [SA_NOCLDSTOP]:
+ use instead of HAVE_SIGACTION, since Solaris 2.7+
+ with Sun CC don't have sa_handler, sa_flags, sa_mask.
-2002-11-29 Alexandre Duret-Lutz <adl@gnu.org>
+ * info/session.c (search_string_index): remove unused variable.
+ * info/terminal.c (term_mo): remove unused variable.
+ * info/display.c (display_clear_display): remove unused variable
+ display_line.
+ * util/install-info.c (infilelen_sans_info): remove unused
+ variable.
- * doc/Makefile.am (.texi.info, texinfo): Remove. Automake 1.7+
- no longer output info files in the source tree.
+ * doc/texinfo.txi: mistakenly had * name: node: in menu items instead
+ of * name: node.
-2002-11-26 <karl@gnu.org>
+ * util/install-info.c (menu_item_equal): must declare ret at beginning
+ of function. From Werner.
- * makeinfo/insertion.c (cm_insertion_copying): flush_output, so that
- output_position gets updated, which in turn makes
- the tag table positions reflect the copying text.
- Report from: "W. L. Estes" <wlestes@uncg.edu>, 15
- Nov 2002 15:57:04 -0500.
+2004-03-27 Jim Meyering <jim@meyering.net>
- * makeinfo/index.c (init_indices): undefindex after we know
- name_index_alist[i] is not null.
- From: "Ronald F. Guilmette" <rfg@monkeys.com>, 26 Nov 2002
- 01:08:04 -0800.
+ * info/info-utils.c (info_parse_node): Don't read beyond end
+ of buffer when looking for ``(line ...)'' in a menu item.
- * doc/Makefile.am (texinfo): depend on version
- files. Report from: Kevin Ryde
- <user42@zip.com.au>, 27 Nov 2002 07:52:57 +1000.
+2004-03-27 Andreas Schwab <schwab@suse.de>
-2002-11-25 <karl@gnu.org>
+ * util/install-info.c (menu_item_equal): Don't scan past
+ term_char.
- * makeinfo/cmds.c (cm_verb): use <tt> not <pre>, as this is an
- inline construct. Also, decrement
- in_fixed_width_font, else the next paragraph does
- not get a <p>.
- Report from: Torsten Bronger <bronger@physik.rwth-aachen.de>
- 26 Nov 2002 00:37:35 +0100.
+2004-03-26 Karl Berry <karl@gnu.org>
- * doc/texinfo.tex (\dospecials): must include all other characters
- that we set active, namely <>|_", or they got
- mysteriously lost as the first character on a
- verbatim line.
- Report from: Torsten Bronger <bronger@physik.rwth-aachen.de>
- 25 Nov 2002 18:26:12 +0100.
+ * pretest version 4.6.93.
- (\doverbatim): ignore everything up to the first
- ^^M, to avoid an extra blank line in the output.
+ * util/install-info.c (menu_item_equal): compare basenames,
+ so lilypond/ subdir will match. Bug report from Werner,
+ 21 Mar 2004 08:31:10 +0100.
- * lib/getopt*, strdup.c, tempname.c: update from gnulib (bruno
- changes + gpl).
+ * configure.ac (AC_CHECK_DECLS): skip strncasecmp again.
+ * lib/system.h (strcase.h): change conditional to
+ !HAVE_STRNCASECMP || !HAVE_STRCASECMP. Extra
+ !HAVE_DECL seems superfluous.
-2002-11-24 <karl@gnu.org>
+ * lib/system.h: include <unistd.h> last, following Autoconf's
+ ac_includes_default.
- * doc/texinfo.txi (Multiple Spaces): xref tie rather w for
- unbreakable spaces.
+2004-03-25 Karl Berry <karl@gnu.org>
-2002-11-22 <karl@gnu.org>
+ All these changes are because strncasecmp is only declared in
+ <strings.h> on IBM AIX 4.2. (Report from Nelson Beebe.)
+
+ * configure.ac (AC_CHECK_DECLS): add memchr; no need to check for
+ strcasecmp.(gl_STRCASE): call this ...
+ (AC_REPLACE_FUNCS): ... replacing checks for
+ strcasecmp and strncasecmp here.
+ * lib/system.h (memchr) [!HAVE_DECL_MEMCHR]: add conditional
+ declaration.
+ (strcase.h) [!HAVE_DECL_STRNCASE]: add conditional include.
+ (strings.h) [HAVE_STRINGS_H]: include if
+ available, even if <string.h> is also available.
+ * info/session.c (strncasecmp) [M_XENIX]: remove this conditional
+ declaration, since we haven't been testing for M_XENIX in many
+ years.
+ * m4/Makefile.am (EXTRA_DIST): add strcase.m4.
+ * util/srclist.txt (lib/strcase.h, m4/strcase.m4): add, updating
+ from gnulib.
- * doc/texinfo.txi: editorial changes from Max's editor.
+2004-03-24 Karl Berry <karl@gnu.org>
-2002-11-21 <karl@gnu.org>
+ * makeinfo/index.c:
+ * makeinfo/float.c: avoid use of snprintf, which is not available on
+ all platforms. Bug report by Nelson and Vin Shelton (22mar03).
- * doc/texinfo.txi (Conventions): add item for blank lines as
- paragraph separator. Report from: Maxim Masiutin
- <max@ritlabs.com>, 21 Nov 2002 00:03:07 +0200.
+ * automake 1.8.3.
-2002-11-19 <karl@gnu.org>
+2004-03-23 Karl Berry <karl@gnu.org>
- * util/install-info.c (ensure_dirfile_exists): don't translate the `*
- Menu' keyword. Report from: Ingo Krabbe
- <i.krabbe@dokom.net>, 19 Nov 2002 09:24:45 +0100.
+ * doc/info-stnd.texi (Searching Commands): typo from jesper.
-2002-11-18 <karl@gnu.org>
+2004-03-21 Karl Berry <karl@gnu.org>
- * po/.cvsignore: exclude *.gmo instead of listing each individually.
- From: Frédéric L. W. Meunier <0@pervalidus.net>,
- 15 Nov 2002 20:16:09 -0200 (BRST).
+ * doc/texinfo.tex (\indexnofonts): \definedummyletter needs to
+ define the control letters to be empty, without
+ taking any argument; most control letters, such as
+ @:, don't take arguments, and it won't hurt to
+ just always ignore them for index sorting.
+ Report from Arnold.
- * configure.ac (--enable-multiplatform): new option for teTeX and
- TeX Live. From te.
+ * info/doc.h (InfoFunction): cast NULL to VFunction *, to
+ prevent pgcc from complaining. From Nelson.
-2002-11-14 <karl@gnu.org>
+2004-03-20 Karl Berry <karl@gnu.org>
- * configure.ac, util/texi2dvi, NEWS: release version 4.3.
+ * doc/texinfo.txi (Structuring Command Types): be even more explicit
+ about @unnumbered vs. @heading.
- * util/texi2dvi, mkinstalldirs: use `for var<newline>do"' instead
- of `for var; do', for Solaris.
+ * makeinfo/html.c (insert_html_tag_with_attributes): use the same
+ parameter names (start_or_end and tag) in both stdc and !stdc
+ cases. Report from Nelson.
- * doc/texinfo.txi (math): emphasize that makeinfo does not interpret
- the arg.
+ * info/m-x.c (info_execute_command): don't dereference
+ InfoFunction(command) as a function call if it's NULL. Report
+ from Nelson, pgcc-5.1-3 complains.
- * config.{guess,sub}: update from prep.
+2004-03-19 Karl Berry <karl@gnu.org>
-2002-11-13 <karl@gnu.org>
+ * info/signals.h [!SA_NOCLDSTOP]: borrow test from coreutils'
+ sort.c, to avoid using sigset_t when it's not
+ defined (apparently).
- * configure.ac: pretest version 4.2f.
+ * makeinfo/html.c (escape_string): escape ", too, for @image's
+ alttext among others.
+ * makeinfo/html.h: doc fix.
+ * doc/texinfo.txi (Image Syntax): making empty alt text, do
+ escaping.
- * makeinfo/xml.c (INDEX_SEP): define as a string that will never
- appear, so that we don't try to break index terms
- at commas. Idea from: Stepan Kasal
- <kasal@math.cas.cz>, problem reported by José
- Fonseca <j_r_fonseca@yahoo.co.uk>.
+ * util/dir-example: reorder.
-2002-11-12 <karl@gnu.org>
+ * doc/texinfo.txi (title subtitle author): using them outside
+ @titlepage is an error, they're not actually "ignored".
+ * makeinfo/insertion.c (cm_author): one mdash suffices.
- * makeinfo/makeinfo.c: make sure command is non-null, for sake of bogus
- input (\def\x{}). Report from
- Neil.Turton@broadcom.com, debian bug#168689.
+2004-03-19 Jim Meyering <jim@meyering.net>
- * makeinfo/Makefile.am (makeinfo_SOURCES): remove docbook.[ch],
- per feloy the docbook stuff is in xml.[ch] now.
+ * makeinfo/makeinfo.c (add_char): Use memmove, rather than strncpy,
+ since source and destination strings overlap.
-2002-11-12 19:48 feloy
+ * makeinfo/float.c (add_new_float): Avoid buffer overrun when
+ appending `.' to a chapter number.
- * makeinfo/: lang.c, makeinfo.c: (docbook) Entities for accented
- characters are written correctly
+2004-03-18 Karl Berry <karl@gnu.org>
-2002-11-12 19:34 feloy
+ * pretest version 4.6.92.
- * makeinfo/xml.c: (docbook) Do not expand @set contents
+2004-03-18 Andreas Schwab <schwab@suse.de>
-2002-11-11 18:14 feloy
+ * lib/xmalloc.c: Include "system.h" instead of declaring malloc
+ and realloc ourselves.
+ (xmalloc): Change type of size parameter to size_t.
+ (xrealloc): Likewise.
- * makeinfo/xml.c: Better <bookinfo> support
+ * lib/system.h (xmalloc, xrealloc): Change type of size parameter
+ to size_t.
-2002-11-11 13:37 feloy
+2004-03-18 Karl Berry <karl@gnu.org>
- * makeinfo/: cmds.c, insertion.c, xml.c, xml.h: Better use of
- <bookinfo> and <abstract> with docbook output
+ * makeinfo/xref.c (cm_xref): ignore any directory part or extension
+ in html case, warn if nothing left.
+ * doc/texinfo.txi (HTML Xref Link Basics): ignore directory part in
+ @xref cmd.
-2002-11-11 01:57 feloy
+ * lib/getopt.h (__GNUC_PREREQ) [! __GNUC_PREREQ]: change
+ conditional to the actual symbol, instead of just
+ __GNUC, else --disable-nls compilation fails under
+ SunOS 5.8 with gcc 3.2.3 (at least).
+ Report from Vin Shelton, 15 Mar 2004 08:51:14 -0500.
- * makeinfo/: defun.c, xml.c, xml.h: Removed all references to
- docbook.[ch] which was the old sources for docbook output, replaced
- by xml.[ch]
+ * util/texindex.c: add some const declarations.
+ * util/install-info.c: add some const declarations.
+ (by no means all)
-2002-11-10 23:31 feloy
+ * doc/texinfo.txi (HTML Xref *): new nodes.
- * makeinfo/: insertion.c, xml.c, xml.h: Some bugfixes in docbook
- output
+2004-03-15 Karl Berry <karl@gnu.org>
-2002-11-09 18:47 feloy
+ * makeinfo/xref.c (cm_xref): need ../ in reference to foreign html
+ manual, if splitting.
- * makeinfo/insertion.c: In Docbook, Copying paragraph is not
- inserted at @copying/@end copying point.
+2004-03-14 Jim Meyering <jim@meyering.net>
-2002-11-08 21:01 feloy
+ * makeinfo/index.c (insert_index_output_line_no): Ensure that `i'
+ is larger than zero before (not after) using `i-1' as an array index.
- * makeinfo/xml.c: take care of indexterm at beginning of table
+ * makeinfo/cmds.c (cm_acronym): Don't write description[-1]
+ when description is the empty string.
-2002-11-08 20:52 feloy
+ * makeinfo/makeinfo.c (insert): Avoid buffer under-run when
+ output_paragraph_offset is zero.
+ (canon_white): Rewrite not to use strcpy (was used with
+ overlapping source and destination)
- * makeinfo/xml.c: Text before first @item in @table is inserted as
- the <title> of <variablelist>
+2004-03-14 Andreas Schwab <schwab@suse.de>
-2002-11-08 20:24 feloy
+ * info/session.c: Fix buffer overflows.
- * makeinfo/xml.c: subsubheading is simplesect and not sect3
+2004-03-14 Alper Ersoy <dirt@gtk.org>
-2002-11-08 19:13 feloy
+ * makeinfo/xref.c (cm_xref): print the fifth arg (or fourth if it's
+ not available), in parens for the visible text of the HTML link.
- * makeinfo/: makeinfo.c, xml.c, xml.h: makeinfo/xml.c (xml_id):
- Added more forbidden characters makeinfo/{xml.c,xml.h,makeinfo.c}:
- Defined xml_in_xref_token variable
+2004-03-14 Alper Ersoy <dirt@gtk.org>
-2002-11-07 <karl@gnu.org>
+ * makeinfo/tests/node-expand.txi:
+ * makeinfo/tests/node-whitespace.txi: added titles to @top.
- * makeinfo/sectioning.c: doc.
- * makeinfo/sectioning.c: revert last change, it breaks gcc.
+2004-03-14 Alper Ersoy <dirt@gtk.org>
- * makeinfo/xml.c (xml-add_char): don't insert BOOKINFO and ABSTRACT
- if executing_string. From Jos? Fonseca.
+ * makeinfo/sectioning.c (sectioning_underscore): check if title is
+ pointing to NULL before calling strlen (happens when there is no
+ @settitle before @top.)
- * configure.ac: pretest version 4.2e.
+2004-03-14 Alper Ersoy <dirt@gtk.org>
- From: José Fonseca <j_r_fonseca@yahoo.co.uk>,
- 7 Nov 2002 00:31:28 +0000.
- * makeinfo/index.c (cm_printindex): in docbook case, pass the
- unexpanded index term.
- * makeinfo/xml.c (xml_insert_indexterm): execute_string instead of
- insert_string.
- (Otherwise, <>& are not escaped in the docbook index output.)
+ * makeinfo/sectioning.c (sectioning_underscore): warn if both @top and
+ @settitle are empty.
+ (sectioning_html, insert_and_underscore): use @settitle argument if
+ @top is empty.
+ (insert_and_underscore): removed with_char argument from function
+ declaration.
- * util/dir-example: sed.
+ * makeinfo/sectioning.h: insert_and_underscore proto update.
+
+2004-03-13 Karl Berry <karl@gnu.org>
+
+ * pretest version 4.6.91.
+
+ * info/*.[ch]: copyright dates, and final ugly casts.
+
+ * doc/texinfo.txi (Generating HTML): make its own chapter, since we
+ have lots to say about xrefs now.
+
+ * doc/texinfo.txi (Refilling Paragraphs): @ignore this, just
+ describe @refill better in the summary.
+ (Obtaining TeX): make a section of Hardcopy,
+ instead of its own appendix.
+ (Command Syntax): subnode of @@-Command List.
+ This reduction in the number of appendices will hopefully make the
+ manual less overwhelming.
+
+2004-03-13 Alper Ersoy <dirt@gtk.org>
+
+ * info/dir.c:
+ * info/display.c:
+ * info/display.h:
+ * info/doc.h:
+ * info/dribble.c:
+ * info/dribble.h:
+ * info/echo-area.c:
+ * info/echo-area.h:
+ * info/filesys.c:
+ * info/filesys.h:
+ * info/footnotes.c:
+ * info/footnotes.h:
+ * info/gc.c:
+ * info/gc.h:
+ * info/indices.c:
+ * info/indices.h:
+ * info/info-utils.c:
+ * info/info-utils.h:
+ * info/info.c:
+ * info/info.h:
+ * info/infodoc.c:
+ * info/infokey.c:
+ * info/infomap.c:
+ * info/infomap.h:
+ * info/m-x.c:
+ * info/makedoc.c:
+ * info/man.c:
+ * info/man.h:
+ * info/nodemenu.c:
+ * info/nodes.c:
+ * info/nodes.h:
+ * info/search.c:
+ * info/search.h:
+ * info/session.c:
+ * info/session.h:
+ * info/signals.c:
+ * info/terminal.c:
+ * info/terminal.h:
+ * info/tilde.c:
+ * info/tilde.h:
+ * info/variables.c:
+ * info/variables.h:
+ * info/window.c:
+ * info/window.h:
+ * lib/system.h: protoized.
- * makeinfo/lang.c: copyright.
- * makeinfo/lang.h: copyright.
+2004-03-12 Karl Berry <karl@gnu.org>
-2002-11-07 Stephen Gildea
+ * makeinfo/sectioning.c (sectioning_underscore): don't segfault when
+ generating xml if @top arg was empty. Report from Pat.
- * makeinfo/sectioning.c (sectioning_html): have A tag enclose
- section name rather than preceding it.
+2004-03-11 Karl Berry <karl@gnu.org>
- * makeinfo/toc.c (contents_update_html): put name attribute into
- existing A tag rather than making a separate tag for it.
+ * doc/texinfo.tex (\pdfoutput): check also for \relax and 0, not
+ just \undefined, in case pdftex is being run in dvi mode.
+ Reported by Thomas Esser.
-2002-11-07 Stephen Gildea
+ * lib/Makefile.am (libtxi_a_SOURCES): add getopt_int.h.
- * makeinfo/lang.c: support @documentencoding US-ASCII:
- Put NULL at end of map tables so they can be of varying lengths.
- (us_ascii_map): new iso_map_type table.
- (encoding_table): add US_ASCII.
- (cm_search_iso_map): don't assume all maps are the same length.
- (cm_documentencoding): don't assume ISO_8859_1 is first table entry.
- * makeinfo/lang.h (encoding_code_type): add US_ASCII.
+2004-03-11 Alper Ersoy <dirt@gtk.org>
-2002-11-05 <karl@gnu.org>
+ * makeinfo/html.c (add_escaped_anchor_name): removed unnecessary
+ ampersand check.
+ (fix_filename): removed size calculation and memory reallocation for
+ filename as it is already PATH_MAX bytes. Added a check so we don't
+ cross PATH_MAX boundary while expanding not-isalnum to hex values.
- * doc/info-stnd.texi: untabify.
- * doc/info-stnd.texi: document that.
- * info/footnotes.c (auto_footnotes_p): turn off by default.
+ * makeinfo/toc.c (toc_add_entry): generate links following html cross
+ refs proposal from Patrice Dumas.
- * info/infodoc.c (info_internal_help_text): had
- scroll-{forward,backward} twice instead of {next,prev}-line.
- * info/infodoc.c: untabify.
+2004-03-11 Alper Ersoy <dirt@gtk.org>
- * util/texi2dvi: untabify.
- * doc/texinfo.tex: untabify.
- * util/texindex.c: untabify.
- * util/install-info.c: untabify.
- * makeinfo/makeinfo.c: indentation fix.
- * makeinfo/cmds.c: doc fix.
+ * makeinfo/makeinfo.h: changed URL_SAFE_CHAR to isalnum.
-2002-11-04 <karl@gnu.org>
+ * makeinfo/html.c (add_escaped_anchor_name, add_anchor_name)
+ (fix_filename): generate links following html cross refs proposal
+ from Patrice Dumas.
- * configure.ac: pretest version 4.2d.
- * doc/fdl.texi: better line break to avoid overfull hbox.
+ * makeinfo/xref.c (cm_xref): tweaked references to external manuals,
+ to better follow html cross refs proposal.
-2002-11-04 Stephen Gildea
+2004-03-08 Karl Berry <karl@gnu.org>
- * makeinfo/{footnote.c,cmds.c,html.c,index.c,insertion.c,
- makeinfo.c,node.c,toc.c,sectioning.c}: add a class attribute
- to tags generated in special circumstances that wouldn't be
- obvious to a user agent.
+ * pretest version 4.6.90.
- Quote all attribute values (for XHTML).
+ * makeinfo/Makefile.am (makeinfo_SOURCES): include multi.h.
+ * makeinfo/cmds.c (cm_verb): avoid spurious warning.
-2002-11-04 <karl@gnu.org>
+2004-03-06 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.txi (File End): grammar.
+ * makeinfo/lang.c (cm_special_char): call add_encoded_char for Info
+ output too.
- These changes from gildea:
- * makeinfo/cmds.c (cm_titlepage): new fn, and use it for @titlepage.
+2004-03-01 Alper Ersoy <dirt@gtk.org>
- * makeinfo/cmds.h (titlepage_cmd_present): new global.
- * makeinfo/html.c (html_output_head): check titlepage_cmd_present
- before outputting the <h1>.
+ * makeinfo/cmds.c (cm_minus): use minus entity for HTML too.
- * makeinfo/html.c (html_output_head): put a class on the <h1> from
- settitle.
+2004-03-01 Alper Ersoy <dirt@gtk.org>
- * makeinfo/cmds.c (cm_titlefont): put the class directly on the h1
- rather than a separate <span> element.
+ * makeinfo/makeinfo.c (reader_loop): disable multiple dashes and
+ quotes entity substitution for HTML and XML, if escape_html is not
+ true.
-2002-10-31 <karl@gnu.org>
+2004-03-01 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.tex (\mathactive): new fn.
- (\math): call it, to change definitions of active characters.
- (\ptex{gtr,hat,less,plus}): save original characters.
- Report from wl.
+ * util/texinfo.dtd: added math element and updated footnote.
- * doc/texinfo.tex (\itemzzz): \penalty10001 instead of 10000
- before the putative \parskip.
- (\aboveenvbreak): insert \parskip if penalty!=10000,
- rather than <10000. Otherwise, @item some long item label /
- @example has too little spacing.
- Report from: Werner LEMBERG <wl@gnu.org>,
- 26 Apr 2002 08:37:41 +0200 (CEST).
+2004-03-01 Alper Ersoy <dirt@gtk.org>
- * makeinfo/makeinfo.c (executing_macro): new static.
- (read_command): set it, if we execute a macro.
- (add_char): if it is set, call html_output_head.
- This is so if a macro expansion is first in the document body, the
- html head gets written before the macro body.
- Report from: Stephen Gildea <gildea@stop.mail-abuse.org>,
- 10 Jul 2002 13:35:13 -0400.
+ * makeinfo/xml.c (xml_insert_footnote): start <para> if not already
+ started.
- * makeinfo/html.c (html_title_written),
- * makeinfo/html.h (html_title_written): make available.
- * makeinfo/cmds.c (cm_titlefont): set html_title_written for html
- output.
+2004-03-01 Alper Ersoy <dirt@gtk.org>
- * util/texindex.c: texindex.c (need_initials, first_initial): New
- globals.
- (main): Clear them for each index.
- (parsefile): Set need_initials when there is more than one
- initial in this index.
- (indexify): Do not emit \initial commands unless need_initials
- is set. Use toupper.
+ * makeinfo/index.c (index_add_arg): make entry node name 'Footnotes'
+ if the output format is non-split HTML, and we are handling footnotes.
- From: Zack Weinberg <zack@codesourcery.com>
- Date: Tue, 26 Mar 2002 17:20:06 -0800
+ * makeinfo/footnote.c (output_pending_notes): added anchor at the
+ start of footnotes block for the non-split HTML output, so @printindex
+ can refer to that point as the nodename.
- * lib/system.h: doc fix from gildea.
+2004-03-01 Alper Ersoy <dirt@gtk.org>
-2002-10-30 <karl@gnu.org>
+ * makeinfo/defun.c (defun_internal): use var element for HTML, instead
+ of i.
- (Following reported by Bob Wilson.)
+2004-03-01 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.tex (\sectionheading): add either
- \normalbaselineskip or \parskip after the heading, whichever is
- larger, instead of hardwiring 10pt.
+ * makeinfo/makeinfo.c (cm_image): reset filling_enable to its previous
+ state after getting the cookie done.
- * doc/texinfo.tex (\defxbodycommon): new defn, including a
- potential breakpoint if we have multiple consecutive @def...x commands.
- (\def*parsebody): use it.
+2004-03-01 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.tex (\singlespace): remove, since we fixed the
- regular line spacing a long time ago to not be double-spaced.
- In @smallbook mode, it ironically caused excessive line spacing.
- (\nonfillstart, \quotation): don't call it.
+ * makeinfo/makeinfo.c (cm_image): insert magic cookie only if there's
+ a bitmap file (if all we have is a text file, skip the cookie.)
- * doc/texinfo.tex (\smartslanted, \smartitalic): use \ttsl if in
- typewriter.
- From: Bob Wilson <bwilson@tensilica.com>.
+2004-02-29 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.tex (\defmethparsebody): pass \empty to \smallsplit
- to keep a brace-delimited argument to @deffn from having the braces
- stripped.
- (Report from: Han-Wen Nienhuys <hanwen@cs.uu.nl>.)
+ * makeinfo/node.c (cm_node): moved node order handling to ...
+ (remember_node): here.
-2002-10-28 <karl@gnu.org>
+2004-02-29 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.tex (\loggingall): rewrite to minimize log file
- output (ideas from Frank Mittelbach's trace.sty) and explicitly
- show the etex changes.
+ * makeinfo/multi.c (draw_horizontal_separator): insert a space before
+ the newline so it looks different than @subsection's.
- * configure.ac: pretest version 4.2c.
+2004-02-29 Alper Ersoy <dirt@gtk.org>
- * NEWS: mention Werner's fixes.
+ * makeinfo/makeinfo.c (insert): do not strip trailing whitespace in
+ multitables.
-2002-10-27 Werner Lemberg <wl@gnu.org>
+2004-02-29 Alper Ersoy <dirt@gtk.org>
- * makeinfo/html.c (insert_html_tag): Fix handling of nested,
- identical tags.
+ * makeinfo/makeinfo.c (execute_string): removed XML tag balance
+ checks.
-2002-10-27 <karl@gnu.org>
+2004-02-28 Alper Ersoy <dirt@gtk.org>
- * configure.ac (AM_INIT_AUTOMAKE): add dist-bzip2 option.
+ * makeinfo/insertion.c (begin_insertion, end_insertion): for rawxml,
+ rawhtml and rawdocbook blocks, change the state of escaping depending
+ on raw_output_block in order to avoid problems when these blocks are
+ used within a @rmacro.
-2002-10-26 <karl@gnu.org>
+2004-02-28 Alper Ersoy <dirt@gtk.org>
- * 2002-10-24 Werner Lemberg <wl@gnu.org>
- Fix html font tags, i.e., make the output similar to
- texinfo.tex. The main idea is to avoid nested font tags.
+ * makeinfo/insertion.c (end_insertion): for quotation use
+ default_indentation_increment.
- * makeinfo/html.c (push_tag, pop_tag): New functions.
- (insert_html_tag): Use them.
- Don't emit more than a single font attribute.
+2004-02-28 Alper Ersoy <dirt@gtk.org>
- * makeinfo/html.h (HSTACK): New structure.
+ * makeinfo/makeinfo.c (info_trailer): call current_document_encoding
+ here too.
- * makeinfo/defun.c: Include cmds.h and html.h.
- (process_defun_args): Don't apply <i>...</i> to parentheses
- and brackets.
- (defun_internal): Use insert_html_tag for emitting font tags.
+2004-02-28 Alper Ersoy <dirt@gtk.org>
- * makeinfo/cmds.c (cm_url): Use insert_html_tag for emitting
- font tag.
- (cm_r): Simplify.
+ * makeinfo/lang.h: new variable unknown_encoding.
-2002-10-25 Alexandre Duret-Lutz <adl@gnu.org>
+ * makeinfo/lang.c (cm_documentencoding): save and use the encoding
+ argument even if it's unknown.
- * util/texi2dvi: Preserve empty components when expansing
- TEXINPUTS and INDEXSTYLE.
+ * makeingo/html.c (html_output_head): call current_document_encoding
+ instead of checking document_encoding_code.
-2002-10-24 <karl@gnu.org>
+2004-02-28 Alper Ersoy <dirt@gtk.org>
- * doc/info-stnd.texi: missing period.
+ * makeinfo/float.c (cm_listoffloats): simplified entry generation.
- * m4/{check-decl.m4,mkstemp.m4,prereq.m4}: new files from gnulib.
- * lib/mkstemp.c, lib/tempname.c: likewise.
- * aclocal.m4, configure.ac: support for mkstemp instead of mktemp.
- * util/texindex.c: use mkstemp instead of mktemp.
+2004-02-28 Alper Ersoy <dirt@gtk.org>
- 2002-10-24 Alexandre Duret-Lutz <adl@gnu.org>
- * util/texi2dvi: Turn relative entries $TEXINPUTS and $INDEXSTYLE
- into absolute paths. (Allows --clean to work with relative dirs
- in TEXINPUTS, etc.)
+ * makeinfo/files.h: new members node_order and index_order in
+ DELAYED_WRITE struct.
- * doc/texinfo.tex: update \texinfoversion timestamp.
+ * makeinfo/files.c (register_delayed_write): save current node and
+ index order.
+ (handle_delayed_writes): update tag_table positions and index line
+ numbers by comparing orders, not line numbers they are defined.
-2002-10-22 <karl@gnu.org>
+ * makeinfo/index.c: made index_counter not static and ...
+ * makeinfo/index.h: extern.
- 2002-10-16 Werner Lemberg <wl@gnu.org>
+ * makeinfo/node.h: new member order in TAG_ENTRY struct.
- * texinfo.tex (\appendixbox): New macro to compute a
- fixed-width box for the appendix entry in the TOC.
- (\appendixzzz, \appendixentry): Use it.
+ * makeinfo/node.c (cm_node): keep the order of the node entry.
- (\shortconttt): New font.
- (\summarycontents): Use it to set the font size of the \tt
- font properly.
+2004-02-27 Karl Berry <karl@gnu.org>
- (\authortt): New macro.
- (\authorfont): Use it to provide a proper font size for
- @email used within @author.
+ * util/gendocs.sh: generate ASCII in static file, not stdout, so
+ toc/index can get written.
-2002-10-21 <karl@gnu.org>
+ * util/gendocs_template: XHTML version from
+ http://www.gnu.org/boilerplate.html, via John Darrington
+ <john@cellform.com.au>, 9 Jan 2004 07:24:27 +0800.
- * automake 1.7.1.
+2004-02-27 Jan Nieuwenhuizen <janneke@gnu.org>
-2002-10-18 <karl@gnu.org>
+ * doc/texinfo.txi (Image Syntax): Update.
- * doc/texinfo.tex (\defname): get rid of the unused
- \deftypemargin; typeset the function type word flush right, in
- brackets. Partially suggested by bob.
+ * makeinfo/makeinfo.c (cm_image): Only insert a period between the
+ image's NAME and EXTENSION as a second guess, to retain backward
+ compatibility.
-2002-10-16 <karl@gnu.org>
+2004-02-27 Alper Ersoy <dirt@gtk.org>
- * makeinfo/html.c: Just > after all on <meta> and <link> to
- appease HTML 4.01 (and break XHTML). From Janis.
+ * makeinfo/xml.c (xml_insert_element_with_attribute): if we are
+ closing either TABLEITEM, ITEM or DEFINITIONITEM during string
+ execution, update relevant state.
-2002-10-15 <karl@gnu.org>
+2004-02-27 Alper Ersoy <dirt@gtk.org>
- * configure.ac: pretest version 4.2b.
+ * makeinfo/makeinfo.c (execute_string): moved state updates below
+ insertion and element stack checks, so any code executed in those
+ checks will be aware of executing_string.
- * makeinfo/cmds.c (cm_dots, cm_enddots): don't use small if
- in_fixed_width_fonts; this violates the html specs, which don't
- want you to change fonts within <pre>. (Argh.)
- Report from: Janis Johnson <janis187@us.ibm.com>,
- 14 Oct 2002 15:59:16 -0700.
+2004-02-27 Alper Ersoy <dirt@gtk.org>
-2002-10-14 Alexandre Duret-Lutz <adl@gnu.org>
- * util/texi2dvi (common, txincludes): Fix definitions so that
- an empty $txincludes doesn't result in a empty path element
- in TEXINPUTS.
+ * makeinfo/xml.c (xml_insert_docbook_image): for Docbook, if paragraph
+ is open, use inlinemediaobject instead of mediaobject in an
+ informalfigure.
+ (xml_insert_element_with_attribute): indent after informalfigure.
-2002-10-14 <karl@gnu.org>
+2004-02-27 Alper Ersoy <dirt@gtk.org>
- * info/infokey.c: copyright 2002 not 02.
- * makeinfo/lang.c: copyright 2001 not 01.
+ * makeinfo/xml.c:
+ * makeinfo/xml.h: new element INLINEIMAGE.
- * makeinfo/insertion.c (begin_insertion): for enumerate, set
- in_paragraph=0 as we do for itemize.
- Otherwise a </p> gets inserted at the next @item, which is wrong.
+ * makeinfo/makeinfo.c (cm_image): for XML, use INLINEIMAGE or IMAGE
+ depending on paragraph state.
- Report from: Janis Johnson <janis187@us.ibm.com>, 14 Oct 2002
- 12:35:30 -0700.
+2004-02-27 Alper Ersoy <dirt@gtk.org>
-2002-10-13 <karl@gnu.org>
+ * makeinfo/makeinfo.c (cm_image): for Info, enclose text image in
+ brackets if @image is used inline (ie. paragraph is open).
- * util/install-info.c (longopts): make --infodir a synonym for
- --info-dir, for some compatibility with the Debian install-info.
- Reported by Bob Chassell, Yves Codet <ycodet@club-internet.fr>,
- and many others.
+2004-02-27 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.txi (makeinfo advantages): document various options
- that have crept in to the source. (Werner Lemberg noted that
- --iftex and companions were missing.)
+ * makeinfo/cmds.c (cm_noindent_cmd, cm_indent): start paragraph for
+ Info too.
-2002-10-10 <karl@gnu.org>
+2004-02-27 Alper Ersoy <dirt@gtk.org>
- * makeinfo/cmds.c (cm_tie): new fn for new cmd @tie{}.
- * doc/texinfo.txi: document it.
+ * makeinfo/makeinfo.c (cm_image): for HTML, if paragraph is not open,
+ enclose image in a <div> block.
-2002-10-09 <karl@gnu.org>
+2004-02-27 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.txi: recommend free software directory categories
- (suggestion from rms),
- more info about @noindent (fut_nis@d3.dion.ne.jp and ryk@dspwiz.com),
- version specification (spectorhome@rcn.com).
+ * makeinfo/cmds.c (cm_noindent_cmd, cm_indent): insert <p> for HTML.
- * makeinfo/{cmds,footnote,html,insertion,makeinfo,multi,node}.c:
- use <br /> instead of plain <br>, for the sake of XHTML. Likewise
- with <hr /> and <meta />, and quote all <meta> values.
- Suggestion (and assurance of compatibility) from
- Janis Johnson <janis187@us.ibm.com>
- and Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
- (the gcc web page maintainers).
+2004-02-26 Alper Ersoy <dirt@gtk.org>
- * util/infosrch: new contrib script.
- * util/Makefile.am (EXTRA_DIST): add infosrch.
+ * util/texinfo.dtd: moved verbatim to &block;.
-2002-10-04 <karl@gnu.org>
+2004-02-25 Stepan Kasal <kasal@ucw.cz>
- * configure.ac: pretest version 4.2a.
+ A first step towards general cleanup of sectioning macros:
+ * doc/texinfo.tex (\genhead): A generalized version of ...
+ (\numhead, \apphead, unnmhead): ... these, which uses ...
+ (\chapheadtype, \unmlevel, \maxseclevel): ... these "variables".
- * TODO: more info on dir categories.
+2004-02-25 Karl Berry <karl@gnu.org>
-2002-10-02 <karl@gnu.org>
+ * makeinfo/index.c (cm_printindex): insert cookie in Info output
+ for benefit of Info readers.
- * doc/.cvsignore: ignore tex output files.
+2004-02-26 Alper Ersoy <dirt@gtk.org>
- * util/dir-example: remove unused categories, etc.
+ * makeinfo/insertion.c (end_insertion): removed obsolete Docbook
+ indentation work-around.
-2002-10-01 <karl@gnu.org>
+2004-02-25 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.tex (\xml,\ifxml): more \doignore's.
- (\copying,\insertcopying): new implementation to save the uninterpreted
- tokens instead of typesetting a box, so that the page size, fonts,
- etc., don't have to be defined before @copying is run.
+ * makeinfo/insertion.c (cm_author): new function.
+ (cm_titlepage_cmds): removed @author parts.
- These changes from Werner Lemberg <wl@gnu.org>:
- (\internalpagesizes): take two new arguments for the physical paper
- height and width.
- (\smallbook,\afourpaper,\afivepaper,\letterpaper,\afourwide,
- \pagesizes): pass them.
+ * makeinfo/cmds.c: made @author call cm_author.
-2002-09-30 <karl@gnu.org>
+2004-02-24 Karl Berry <karl@gnu.org>
- * util/texi2dvi: doc fixes.
+ * doc/texinfo.txi: avoid duplicate index entries within the same
+ node (from Alper): syncodeindex, lines 9627 and 9633 TEXINPUTS,
+ lines 14157 and 14202 texinfo-format-buffer 15131 and 15159
+ texinfo-format-region 15130 and 15149
- * README: mention autoreconf.
+2004-02-24 Alper Ersoy <dirt@gtk.org>
-2002-09-29 <karl@gnu.org>
+ * makeinfo/makeinfo.h: new variable example_indentation_increment.
- * doc/texinfo.tex (\pdfmakeoutlines): call \turnoffactive to handle all special characters
- except \{}.
- (\normalturnoffactive): call \turnoffactive instead of repeating all the
- redefinitions.
+ * makeinfo/cmds.c (set_default_indentation_increment): renamed to
+ set_example_indentation_increment.
+ (cm_exampleindent): call set_example_indentation_increment.
- * doc/texinfo.tex (\afourpaper, \afourlatex, \afourwide): new
- formatting values.
- From: Eric.Belpaire@equant.com, 30 Aug 2002 19:03:30 +0200.
+ * makeinfo/insertion.c (begin_insertion, end_insertion): @example,
+ @display and the like now rely on example_indentation_increment.
- * aclocal.m4: $Id now omitted.
+2004-02-24 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.txi: document @xml and @ifxml.
+ * makeinfo/insertion.c (begin_insertion, end_insertion): @float should
+ not play with indentation.
- * makeinfo/makeinfo.c (usage): mention the new options.
- * info/Makefile.am (BUILT_SOURCES): define this unconditionally,
- no more TEXINFO_MAINT. We handle it in the top-level
- Makefile.am by defining distcleancheck_listfiles.
+2004-02-24 Alper Ersoy <dirt@gtk.org>
- * acinclude.m4: can't have $Id, then it gets propagated to
- aclocal.m4.
+ * makeinfo/float.c (cm_listoffloats): check if we are crossing the
+ caption boundaries looking for a space to break at.
- From: Philippe Martin <feloy@free.fr>, 11 Aug 2002 20:17:44 +0200.
- * makeinfo/cmds.c: new commands @ifnotxml, @ifxml, @xml.
- * insertion.c: likewise.
- (cm_ifxml, cm_ifnotxml): new functions.
- * insertion.h: likewise.
- * makeinfo.c: new options --ifxml, --no-ifxml.
- (cm_image): better xml output.
- * makeinfo.h (process_xml): new global.
- * xml.c: call xml_close_sections.
+2004-02-24 Karl Berry <karl@gnu.org>
-2002-09-28 <karl@gnu.org>
+ * makeinfo/makeinfo.c: TEXINFO_OUTPUT -> TEXINFO_OUTPUT_FORMAT,
+ after discussion with tar maintainer.
- * makeinfo/insertion.c (begin_insertion): only do <pre>, not
- <br><pre>; suggestion from Werner.
+2004-02-20 Stepan Kasal <kasal@ucw.cz>
- * info/infodoc.c: document the bug regarding where_is_rep_index,
- but don't fix it since it's in the [!INFOKEY] code.
+ * doc/texinfo.tex (\infochapter, \infosection, etc.): these stubs
+ of sectioning commands nuked.
- 2002-05-18 Eli Zaretskii <eliz@is.elta.co.il>
- These changes make @example be indented in HTML output, and make
- @exdent work inside an @example in HTML.
+2004-02-24 Stepan Kasal <kasal@ucw.cz>
- * makeinfo/insertion.c (begin_insertion) <example>: Insert spaces
- after <pre> to produce indentation of the first line in HTML mode.
+ * doc/texinfo.tex (\centerchap): Fixed to work again,
+ don't open group.
+ (\centerparameters): New macro.
+ (\centerchfplain): Nuked.
- * makeinfo/makeinfo.c (indent): Do indent even in HTML mode.
+ The following continues with prosecution of @setchapterstyle{open}:
+ * doc/texinfo.tex (\chfplain): renamed to \chapmacro.
+ (\CHAPFplain): Nuked.
+ (\setchapterstyle): Moved next to its deprecated friends.
- These patches from: Thierry Vignaud <tvignaud@mandrakesoft.com>,
- 24 Apr 2002 20:52:37 +0200.
+2004-02-24 Karl Berry <karl@gnu.org>
- * makeinfo/insertion.c: doc fix.
+ * doc/texinfo.tex (\dofloat): start a paragraph.
- * info/infomap.c: had h and l functions reversed in vi mode.
+2004-02-24 Alper Ersoy <dirt@gtk.org>
- * util/install-info.c: bzip2 support.
+ * makeinfo/insertion.c (cm_caption): check if the innermost
+ environment is @float.
- * util/texi2dvi: don't allow whitespace as one of the ?'s around
- the o in foo.?o?, that could lead to misparsing.
+2004-02-24 Alper Ersoy <dirt@gtk.org>
-2002-09-27 <karl@gnu.org>
+ * info/session.c (info_menu_digit): if the menu entry has a line
+ number, go to that line.
- * doc/Makefile.am (*.1): call the binary, not the source file.
+2004-02-24 Alper Ersoy <dirt@gtk.org>
- * util/texindex.c (sort_in_core): int not off_t.
- (main): cast argument to sort_in_core to int.
- (sort_offline): nfiles parameter is not actually passed (or used);
- need to pass &tempfiles[i] to sort_in_core.
- From: Christopher League <league@contrapunctus.net>,
- 26 Apr 2002 22:45:45 -0400.
+ * info/info.c (main): make sure dir file is not listed for option
+ --where.
- * doc/texinfo.tex (\unnumb...entry): make analogous to \...entry
- (except when actually outputting the text, of course), so pdf
- bookmarks can go to the right level.
- From: Christopher League <league@contrapunctus.net>,
- 25 Apr 2002 15:29:24 -0400.
+2004-02-24 Alper Ersoy <dirt@gtk.org>
- * install-sh: update from gnulib.
+ * makeinfo/xml.c (xml_insert_element_with_attribute, xml_add_char)
+ (xml_begin_table, xml_end_table, xml_begin_table_item)
+ (xml_continue_table_item): separated ITEM and TABLEITEM states to
+ handle @table environments better.
- * makeinfo/insertion.c (handle_verbatim_environment): need to
- quote & and <.
- From: Philippe Martin <feloy@free.fr>, 18 Aug 2002 15:39:10 +0200.
+2004-02-24 Alper Ersoy <dirt@gtk.org>
- 2002-06-04 Eli Zaretskii <eliz@is.elta.co.il>
- * makeinfo/cmds.c (cm_exdent): Call start_paragraph to restore
- previous indentation of text. (exponent.tex test.)
+ * util/texinfo.dtd: added float and friends, updated tableitem and
+ Inline.reference.
- 2002-05-11 Eli Zaretskii <eliz@is.elta.co.il>
- * makeinfo/node.c (remember_node): If the argument FNAME is NULL,
- as it happens for "Top", use the basename of current_output_filename.
+2004-02-23 Karl Berry <karl@gnu.org>
-2002-09-26 <karl@gnu.org>
+ * doc/texinfo.txi (Structuring Command Types): slightly more info
+ about headings. Fix other references, too.
- * lib/system.h [MIKTEX]: include gnu-miktex.h, define S_ISDIR.
- [! MIKTEX]: declare substring.
- From: Stephen Gildea <gildea@stop.mail-abuse.org>,
- 08 May 2002 18:12:58 -0400.
+ * Makefile.am (EXTRA_DIST): explicitly list every file in djgpp,
+ so that the CVS directory is not included in the dist.tar.gz.
- * doc/texinfo.tex: spurious \let when setting \mainmagstep.
- From: Stephen Gildea <gildea@stop.mail-abuse.org>,
- 08 May 2002 08:38:39 -0400.
+2004-02-23 Arnold D. Robbins <arnold@skeeve.com>
- * doc/texinfo.txi: copyright symbol: use @code{@copyright@{@}},
- with the braces in the @code.
- From: Paul Eggert <eggert@twinsun.com>, 1 Apr 2002 11:37:52 -0800.
+ * makeinfo/cmds.c (cm_code): For @samp, using single quotes instead of
+ double quotes, to match TeX output more closely.
- * info/infodoc.c (replace_in_documentation): always allocate at
- least one byte for replen, otherwise things crash when MALLOC_CHECK_=2.
- From: "Andreas Herrmann" <AHERRMAN@de.ibm.com>.
+2004-02-23 Alper Ersoy <dirt@gtk.org>
- * lib/Makefile.am (libtxi_a_SOURCES): include xalloc.h.
+ * makeinfo/index.h: new output_file and entry_number members in
+ index_elt struct.
- * doc/Makefile.am (EXTRA_DIST): skip macro.texi and userdoc.texi now.
- (common_mandeps): new var.
- (*.1): use that, and depend on the source files with the version strings
- instead of the binaries. Suggestion from Alexandre.
+ * makeinfo/index.c (index_add_arg, cm_printindex): rewrote hyperlink
+ generation for HTML to avoid duplicate anchors, and to work with
+ splitting enabled.
- * util/Makefile.am (bin_PROGRAMS, ginstall_info_SOURCES,
- transform): build as ginstall-info, to avoid clashing with the
- install-info target inserted by Automake. (Suggestion from Akim.)
+2004-02-20 Alper Ersoy <dirt@gtk.org>
- * Makefile.am (distcleancheck_listfiles): new definition so
- distcheck doesn't complain about our generated files in info/,
- which are conditionalized on TEXINFO_MAINT.
+ * makeinfo/float.c (cm_listoffloats): create HTML hyperlinks with
+ add_word instead of using @ref to avoid problems with commas in
+ captions.
- * lib/gettext.h: update from gettext 0.11.5.
+2004-02-20 Alper Ersoy <dirt@gtk.org>
-2002-09-24 <karl@gnu.org>
+ * makeinfo/node.c (cm_node): remove whitespace before the node
+ separator sequence.
- * util/srclist.txt: m4 files from aclocal rather than gnulib.
+2004-02-20 Alper Ersoy <dirt@gtk.org>
- * Makefile.am, util/Makefile.am, dir-example: move dir-example to util.
+ * makeinfo/sectioning.c (handle_enum_increment): do not increment
+ counters for ENUM_SECT_NO heading commands (ie. @unnumbered,
+ @majorheading, etc.)
-2002-09-23 <karl@gnu.org>
+2004-02-20 Alper Ersoy <dirt@gtk.org>
- * INSTALL.generic: update from autoconf 2.54.
+ * makeinfo/multi.c (multitable_item): unset hsep if item command is
+ not @headitem.
-2002-09-20 gettextize <bug-gnu-gettext@gnu.org>
+2004-02-19 Karl Berry <karl@gnu.org>
- * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.11.5.
+ * doc/texinfo.tex: More hyphenation exceptions.
+ (\author, \quotation): implement @author inside
+ @quotation, for attribution purposes.
-2002-09-12 <karl@gnu.org>
+2004-02-19 Alper Ersoy <dirt@gtk.org>
- * util/srclist.txt: INSTALL to INSTALL.generic.
+ * makeinfo/cmds.c (cm_exampleindent): fixed paragraph handling after
+ @exampleindent lines.
-2002-08-04 <karl@gnu.org>
+2004-02-19 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.5:
- * lib/system.h:
- * doc/texinfo.tex:
- * doc/info-fr.texi:
- * configure.ac: non-copyright notice.
- * doc/info-fr.texi:
- * doc/info-stnd.texi:
- * doc/texinfo.txi: copyright years should be written out in full.
+ * makeinfo/index.c (index_add_arg): create an anchor where @index is
+ used in HTML documents.
+ (cm_printindex): make index text an hyperlink to the created anchor.
-2002-07-23 <karl@gnu.org>
+2004-02-19 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.txi: verbatim license sample per rms and chassell.
+ * makeinfo/insertion.c (begin_insertion): skip empty lines following
+ @table, @ftable, @vtable and @itemize lines.
-2002-07-19 <karl@gnu.org>
+2004-02-18 Karl Berry <karl@gnu.org>
- * doc/texinfo.txi:
+ * lib/substring.c,
+ * lib/xexit.c,
+ * lib/xmalloc.c,
+ * lib/system.h: ANSI-fy. (Other lib files come from gnulib.)
-2002-06-05 <karl@gnu.org>
+ * doc/texinfo.txi (Definition Commands): describe the argument/@var
+ situation more accurately.
- * doc/Makefile.am (TXI_XLATE): txi-it.tex from Paolo Bonzini
- <bonzini@gnu.org>.
+ * doc/texinfo.txi (Definition Commands): explicitly document the
+ implicit index entry creation in all cases.
-2002-06-04 <karl@gnu.org>
+ * doc/texinfo.txi (Printing Indices & Menus, Indices, Predefined
+ Indices): remove redundancies, make different
+ purposes clear, etc.
- * doc/texinfo.tex (\defparsebodycommon): do \penalty0 if the last
- item was a \nobreak, since that means we have two function headers
- in a row. Report from: Brian Gough <bjg@network-theory.co.uk>.
+2004-02-18 Alper Ersoy <dirt@gtk.org>
- (\defparsebody,...): use \defparsebodycommon instead of repeating code.
+ * makeinfo/xml.h:
+ * makeinfo/xml.c (xml_get_assoc_for_id, xml_associate_title_with_id):
+ removed these functions.
+
+ * makeinfo/xref.c (cm_xref): do not call xml_get_assoc_for_id.
-2002-05-09 <karl@gnu.org>
+ * makeinfo/sectioning.c (sectioning_underscore): added xreflabel
+ attribute to @unnumbered for Docbook.
- * doc/texinfo.5: lowercase NAME to `texinfo' for Solaris man.
- From gildea.
+2004-02-18 Alper Ersoy <dirt@gtk.org>
-2002-04-29 <karl@gnu.org>
+ * makeinfo/xref.c (cm_xref): for Docbook, use lowercase ``see'' when
+ printing index.
- * doc/texinfo.txi: mention it.
- * util/texi2dvi: allow -E as well as -e.
+2004-02-18 Alper Ersoy <dirt@gtk.org>
-2002-04-10 <karl@gnu.org>
+ * makeinfo/xml.c (xml_insert_indexentry): removed ``see'' from index
+ entries as cm_xref takes care of it.
- * doc/texinfo.txi:
+2004-02-17 Karl Berry <karl@gnu.org>
-2002-04-01 <karl@gnu.org>
+ * doc/info.texi (Help-Int): mention the new line number feature.
+ * doc/texinfo.txi (Indices): plural correction.
+ * doc/info-stnd.texi (Invoking Info): matche typo.
+ (Searching Commands): grammar.
+ * info/session.c (info_menu_or_ref_item): need to subtract 1 from
+ the actual line number to get to the right place,
+ don't really know why.
- * configure.ac: version 4.2.
- * util/texi2dvi: 4.2
+ * makeinfo/makeinfo.c, info/info.c, util/texindex.c,
+ utils/install-info.c, util/texi2dvi: update copyright year to
+ 2004, and do not mark copyright line for translation, since
+ international law says to always use the English word "copyright".
- * makeinfo/toc.c: doc fix.
- * util/install-info-html:
- * makeinfo/texinfo.xsl: Fixes From: Ville Skyttä
- <ville.skytta@iki.fi>.
+2004-02-17 Alper Ersoy <dirt@gtk.org>
- * makeinfo/insertion.c (begin_insertion): (copying case) omit
- cm_insert_copying if no_headers.
- Bug report from Stephen Gildea.
+ * makeinfo/insertion.c (end_insertion): use add_html_block_elt instead
+ of add_word for </pre> ending @example and the like.
+ * makeinfo/float.c (cm_listoffloats): use add_html_block_elt for <li>.
-2002-03-28 <karl@gnu.org>
+2004-02-17 Alper Ersoy <dirt@gtk.org>
- * configure.ac: pretest 4.1d.
+ * makeinfo/insertion.c (begin_insertion): do not expand @copying for
+ HTML and Info too.
+ (cm_insert_copying): expand copying_text for all formats here.
- * doc/texinfo.txi:
- * makeinfo/cmds.c: ignore headings commands. From Stephen Gildea.
+ * makeinfo/html.c (html_output_head): use text_expansion for copying
+ text.
- * doc/texinfo.txi: @ifplaintext
+2004-02-17 Karl Berry <karl@gnu.org>
-2002-03-26 <karl@gnu.org>
+ * doc/texinfo.txi (float): mention @multitable and @image
+ as typical contents. From Arnold.
- * doc/texinfo.tex (\ifplaintext,\ifnotplaintext): new output
- format conditional.
+2004-02-17 Alper Ersoy <dirt@gtk.org>
- * makeinfo/cmds.c (cm_settitle):
- * makeinfo/node.c (cm_node): need to pass output filename arg to
- * xml_begin_document.
+ * makeinfo/xml.c (xml_insert_element_with_attribute): removed check
+ to see if current element contains para before calling xml_start_para,
+ as that check is performed in xml_start_para too.
- * makeinfo/cmds.c (cm_sp): need close_single_paragraph instead of
- close_paragraph to avoid an extra blank line. Bug report from Stephen Gildea.
+2004-02-17 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.tex (\doignore): can't do c kludge for
- documentdescription. Bug report from Stephen Gildea.
+ * makeinfo/insertion.c (end_insertion): indent float caption.
- * doc/texinfo.txi: missing t in documentdescription example, from
- Stephen Gildea.
+2004-02-17 Alper Ersoy <dirt@gtk.org>
-2002-03-24 <karl@gnu.org>
+ * makeinfo/insertion.c (begin_insertion): for XML and Docbook, do not
+ expand @copying text. Instead of calling @anchor, use <float
+ name="floatlabel"> for XML.
+ (cm_copying): removed ugly copying_text manipulation for Docbook.
+ Warn if there is no @copying before @insertcopying.
- * doc/texinfo.txi: invar sec
+ * makeinfo/xml.c: made floats contain para.
+ (xml_start_para): check if current element can contain para.
+ (xml_add_char): removed @copying checks.
-2002-03-23 <karl@gnu.org>
+2004-02-17 Alper Ersoy <dirt@gtk.org>
- * configure.ac: pretest 4.1c.
+ * makeinfo/insertion.c (end_insertion): if the output format is XML,
+ do not call close_insertion_paragraph after @end menu.
-2002-03-23 Eli Zaretskii <eliz@is.elta.co.il>
+2004-02-17 Alper Ersoy <dirt@gtk.org>
- * info/search.c (skip_non_whitespace): Don't go beyond the
- terminating null character.
+ * makeinfo/xml.c (xml_insert_element_with_attribute): indentation
+ fixes for @multitable.
- * info/filesys.c (filesys_read_info_file)
- (filesys_read_compressed): Null-terminate the contents of the file
- we've read, so it could be used as a C string.
+2004-02-17 Alper Ersoy <dirt@gtk.org>
-2002-03-23 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/multi.c (do_multitable): remove trailing newline when the
+ output format is Docbook or XML, as output_paragraph becomes unusable
+ later for xml_indent during select_output_environment.
- * makeinfo/makeinfo.c (insert_toplevel_subdirectory): Fix
- computation of output_filename's length, to avoid overrunning
- malloc'ed buffer. If mkdir returns with EEXIST, assume we can use
- an existing directory only if the existing file is indeed a
- directory. On MS-DOS, allow for EACCES in addition to EEXIST.
- <max_name_len>: Remove this variable.
+2004-02-16 Alper Ersoy <dirt@gtk.org>
- * makeinfo/makeinfo.c (expansion): Protect execute_string from too
- long strings.
- (EXECUTE_STRING_MAX): New macro.
- (execute_string): Use EXECUTE_STRING_MAX, not 4000.
+ * makeinfo/cmds.c (cm_bye): do not call flush_output as text appended
+ by convert_from_loaded_file may need to play with output_paragraph.
-2002-03-23 <karl@gnu.org>
+2004-02-16 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.txi:
- * makeinfo/insertion.h:
- * makeinfo/texinfo.dtd:
- * makeinfo/xml.h:
- * makeinfo/xml.c:
- * makeinfo/makeinfo.h:
- * makeinfo/insertion.c:
- * makeinfo/html.c:
- * makeinfo/cmds.c:
- * doc/info-stnd.texi: @permissions -> @copying.
- * doc/texinfo.tex: permissions -> copying.
+ * makeinfo/xml.c (xml_end_document): insert newline after </texinfo>
+ only if indentation is disabled (otherwise xml_indent takes care of
+ the newline.)
+ (xml_insert_indexentry): disable warnings when executing implicit
+ @xref commands for Docbook, otherwise makeinfo will warn about
+ missing punctuation.
-2002-03-22 <karl@gnu.org>
+2004-02-16 Alper Ersoy <dirt@gtk.org>
- * configure.ac: pretest 4.1b.
+ * makeinfo/insertion.c (begin_insertion): eat one newline after
+ @xml/@docbook blocks for proper indentation.
- * info/Makefile.am (BUILT_SOURCES): conditionalize on
- TEXINFO_MAINT, to appease distcheck.
+2004-02-16 Alper Ersoy <dirt@gtk.org>
- * From: Matthew Woodcraft <mattheww@chiark.greenend.org.uk>:
- * makeinfo/makeinfo.h (next_menu_item_number): New global.
- * makeinfo/insertion.c (begin_insertion): Initialise it.
- * makeinfo/makeinfo.c (handle_menu_entry): Emit accesskey attribute
- in html output, according to next_menu_item_number.
- * makeinfo/node.c (cm_node): Emit accesskey attributes in html output.
+ * makeinfo/cmds.c (cm_center): fixed line wrapping after the @center
+ command.
- * doc/texinfo.txi: GNU texts.
+2004-02-15 Alper Ersoy <dirt@gtk.org>
- * doc/info-stnd.texi: @syncodeindex, not @synindex.
+ * makeinfo/xml.c (xml_begin_document): disabled warnings around the
+ implicit register_delayed_write("@documentencoding") call.
-2002-03-21 <karl@gnu.org>
+2004-02-15 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.txi: @permissions.
+ * makeinfo/insertion.c (begin_insertion, end_insertion): when handling
+ @xml, @html and @docbook blocks, do not touch para elements, and keep
+ whitespace as-is.
-2002-03-20 <karl@gnu.org>
+2004-02-15 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.txi: document --no-headers a bit better.
- * makeinfo/makeinfo.c: better description of --no-headers,
- suggested by Stephen Gildea.
+ * makeinfo/xml.h: made xml_keep_space extern.
- * makeinfo/makeinfo.c (insert_toplevel_subdirectory): use
- command-line specified output name unchanged.
+2004-02-15 Alper Ersoy <dirt@gtk.org>
- * makeinfo/makeinfo.c (full_expansion): new routine, separated
- from expansion, that does not tamper with the formatting parameters.
- * makeinfo/insertion.c: copying -> permissions.
- (cm_insert_permissions): insert rather than add.
- * makeinfo/texinfo.dtd:
- * makeinfo/xml.h:
- * makeinfo/xml.c:
- * makeinfo/cmds.c: copying -> permissions.
- * makeinfo/makeinfo.h: copying -> permissions.
- (full_expansion): declare.
+ * makeinfo/cmds.c (cm_noindent_cmd, cm_indent): implicitly start
+ para element for Docbook and XML.
- * doc/texinfo.txi: @copying -> @permissions, @include fdl.texi.
- * doc/info-stnd.texi: @copying -> @permissions, always include the FDL.
+2004-02-15 Karl Berry <karl@gnu.org>
- * makeinfo/html.c (html_output_head): copying -> permissions, use
- insert_string.
- * makeinfo/insertion.h: copying -> permissions.
- * doc/texinfo.tex: \copying -> \permissions.
+ * doc/texinfo.tex (\hyphenation): add more hyphenation exceptions,
+ gleaned from the log in TUGboat.
+ * doc/info-stnd.texi: document new option --where.
+ * info/info.c (main): in print_where_p case, ensure we don't try
+ to print NULL.
- * doc/Makefile.am (EXTRA_DIST): include fdl.texi.
+2004-02-14 Karl Berry <karl@gnu.org>
-2002-03-19 <karl@gnu.org>
+ * doc/texinfo.tex (\addtokens): had two identical definitions,
+ remove one.
+ (\maketoks): no space token after |ENDTOKS|,
+ although I guess it hasn't mattered.
+ (\entry): make clear what is the argument to
+ \pdfgettoks and what is output.
+ (\appendtomacro): use our own token registers,
+ for safety.
+ (\listoffloatsdoentry): fully expand the page
+ number, and don't expand the lof text.
- * makeinfo/insertion.c (cm_insert_copying): use insert_string in
- the xml case, sigh.
+2004-02-14 Alper Ersoy <dirt@gtk.org>
- * doc/info-stnd.texi: copying
+ * makeinfo/cmds.c (cm_strong):
+ * makeinfo/xml.c (xml_begin_index): cast output_paragraph to char, to
+ avoid warnings with -pedantic.
- * dir-example: info standalone.
+2004-02-13 Alper Ersoy <dirt@gtk.org>
- * makeinfo/html.c: copyright_text -> copying_text.
- * makeinfo/texinfo.dtd:
+ * makeinfo/cmds.c:
+ * makeinfo/cmds.h:
+ * makeinfo/defun.c:
+ * makeinfo/defun.h:
+ * makeinfo/files.c:
+ * makeinfo/files.h:
+ * makeinfo/float.c:
+ * makeinfo/float.h:
+ * makeinfo/footnote.c:
+ * makeinfo/footnote.h:
+ * makeinfo/html.c:
+ * makeinfo/html.h:
+ * makeinfo/index.c:
+ * makeinfo/index.h:
* makeinfo/insertion.c:
* makeinfo/insertion.h:
+ * makeinfo/lang.c:
+ * makeinfo/lang.h:
+ * makeinfo/macro.c:
+ * makeinfo/macro.h:
+ * makeinfo/makeinfo.c:
* makeinfo/makeinfo.h:
+ * makeinfo/multi.c:
+ * makeinfo/node.c:
+ * makeinfo/node.h:
+ * makeinfo/sectioning.c:
+ * makeinfo/sectioning.h:
+ * makeinfo/toc.c:
+ * makeinfo/toc.h:
* makeinfo/xml.c:
* makeinfo/xml.h:
- * makeinfo/cmds.c: copyrighttext -> copying.
- * doc/info-stnd.texi: copyrighttext -> copying.
- * doc/texinfo.tex (\copying, \insertcopying): rename from
- copyrighttext per rms.
-
- * makeinfo/index.c (index_add_arg): don't emit warning for index
- entries containing : after all.
+ * makeinfo/xref.c:
+ * makeinfo/xref.h: protoized functions.
- * info/infokey.c: remove non-ansi trailing commas from last items
- of enums. From: Albert Chin-A-Young <china@thewrittenword.com>.
+2004-02-13 Alper Ersoy <dirt@gtk.org>
-2002-03-18 <karl@gnu.org>
+ * makeinfo/multi.h: new file.
- * doc/info-stnd.texi: @include after @setfilename.
- * doc/texinfo.txi: @insertcopyrighttext, @settitle GNU ...
+2004-02-13 Karl Berry <karl@gnu.org>
- * doc/texinfo.txi: mention @setfilename and source filename
- exceptions at the top.
+ * doc/texinfo.tex (\caption): make \long.
+ * doc/texinfo.txi (Nodes): mention that changing node names is bad.
+ (caption shortcaption, listoffloats): write these, finishing the
+ first cut at @float documentation.
- * makeinfo/defun.c (scan_group_in_string): handle escaped @{ and @}.
- Bug report from Werner Lemberg.
+2004-02-12 Alper Ersoy <dirt@gtk.org>
- * doc/info-stnd.texi: add version number to title a la Texinfo.
- * doc/info-stnd.texi: file -> manual.
- * doc/info-stnd.texi: use @copyrighttext.
+ * makeinfo/cmds.c (cm_verb): end @verb only if delimiter is followed
+ by a closing brace.
- * makeinfo/insertion.c (begin_insertion, end_insertion):
- copyrighttext case.
- * makeinfo/makeinfo.h (copyright_text): declare/define.
- * makeinfo/html.c (html_output_head): output copyrighttext.
- * makeinfo/texinfo.dtd: Add copyrighttext.
- * makeinfo/xml.h (xml_element): add COPYRIGHTTEXT.
- * makeinfo/xml.c (texinfoml_element_list, docbook_element_list):
- copyrighttext case.
-
-2002-03-17 <karl@gnu.org>
-
- * makeinfo/insertion.h (insertion_type): include copyrighttext.
- * makeinfo/cmds.c (command_table): new command copyrighttext.
-
- * doc/texinfo.tex (\copyrighttext, \insertcopyrighttext): new
- Texinfo commands to handle the copyright and permission text cleanly.
- (\dblarrowbox,\longdblarrowbox,\pushcharbox,\equivbox,\bullbox):
- remove these definitions that have not been used for ages.
-
- * configure.ac: call AC_CANONICAL_BUILD before the termcap
- checking. Bug report from Eli.
+2004-02-12 Alper Ersoy <dirt@gtk.org>
-2002-03-16 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/lang.c (cm_accent_generic): warn if accented character is
+ whitespace.
- * makeinfo/node.c (cm_anchor): When recording the anchor position,
- account for output_paragraph_offset, since the current paragraph
- might not be closed yet (happens inside a menu, for example).
+2004-02-12 Alper Ersoy <dirt@gtk.org>
- * djgpp/config.sed: Tweak to adapt to the new Automake/Autoconf.
+ * makeinfo/insertionc. (end_insertion): decrement current_indent
+ only if the output format is Info.
- * djgpp/README: Update.
+2004-02-12 Alper Ersoy <dirt@gtk.org>
-2002-03-15 <karl@gnu.org>
+ * makeinfo/insertion.c (end_insertion): adjusted caption styles for
+ label and type conditions.
+ (begin_insertion, end_insertion): indent first paragraphs inside
+ @float, even if first paragraph in a chapter. Increment/decrement
+ current_indent.
- * dir-example: GNU organization.
+2004-02-12 Alper Ersoy <dirt@gtk.org>
-2002-03-14 <karl@gnu.org>
+ * makeinfo/tests/defxcond: look for `--' instead of `-'.
- * makeinfo/cmds.c (cm_titlepage): do not declare nonexistent
- function.
+2004-02-12 Karl Berry <karl@gnu.org>
-2002-03-14 <karl@gnu.org>
+ * makeinfo/float.c (cm_listoffloats): change warning wording.
- * doc/texinfo.txi: don't say specifically html 3.2, since <html
- lang=...> is not 3.2.
- Bug reprt from: Matthew Woodcraft <mattheww@chiark.greenend.org.uk>.
+2004-02-11 Karl Berry <karl@gnu.org>
-2002-03-13 <karl@gnu.org>
+ * doc/texinfo.tex (\dofloat): initialize caption macros here, not
+ globally.
+ (\Efloat): rewrite for more consistent caption
+ line, matching documentation.
+ (\appendtomacro): new macro.
+ (\currentparindent): this \newdimen was not used; removed.
+ * doc/texinfo.txi (float): continue documenting.
- * doc/texinfo.tex (\writetocentry): set \pdfmakepagedesttrue here.
- (\Etitlepage): instead of here. In case the document has no
- @titlepage. Bug report from Stephen Gildea.
+ * makeinfo/files.c (register_delayed_write): change wording of msgs.
- * util/texi2dvi: be verbose after the definition of cmd, not
- before. From Andreas Schwab.
+2004-02-10 Karl Berry <karl@gnu.org>
-2002-03-12 <karl@gnu.org>
-
- * pretest 4.1a.
- * doc/info-stnd.texi: update to FDL.
-
-2002-03-11 <karl@gnu.org>
-
- * util/texi2dvi:
- * util/texindex.c:
- * util/install-info.c:
- * makeinfo/makeinfo.c:
- * info/infokey.c:
- * info/info.c: home page and help message.
-
- * doc/texinfo.txi (math): document @\ (aka \\) for literal \.
- regularize index entries.
- * makeinfo/cmds.c (command_table): \\ -> insert_self.
-
- * doc/texinfo.tex (\mathbackslash): new definition.
- (\math): handle \\ too.
- (\codeunder): handle @code{\} in mmode.
-
- * makeinfo/html.c: make home page be gnu's.
-
- * doc/texinfo.txi (Conventions): rewrite description of quotes so
- as to work in all formats; there was no output for HTML.
- Report from: David Merrill <david@lupercalia.net>.
-
-2002-03-10 <karl@gnu.org>
-
- * doc/texinfo.txi (Texinfo Copying Conditions): mention this
- manual's license specifically.
-
-2002-03-09 Eli Zaretskii <eliz@is.elta.co.il>
-
- * info/indices.c (add_index_to_index_nodenames): Fix an off-by-one
- error when computing the number of the last index entry.
-
-2002-03-08 <karl@gnu.org>
-
- * doc/texinfo.tex: Rewrite unnumbered toc handling to keep track
- of their sequence, so they can be handled correctly in
- the PDF toc (= bookmarks).
- From: Werner LEMBERG <wl@gnu.org>.
-
- * configure.ac: AC_MSG_WARN if can't find a term library. From:
- Marc.Herbert@ens-lyon.fr.
-
- * info/info.c: alphabetize.
- * info/info.c: include short option names.
-
-2002-03-08 Eli Zaretskii <eliz@is.elta.co.il>
-
- * info/display.c (display_update_one_window): Dynamically reallocate
- printed_line[] as needed. When under -R, ignore ANSI escapes for
- the purposes of line wrap display. Clear the line to EOL if it
- used escape sequences. Reallocate entry->text if the new
- printed_line is longer than screenwidth.
-
- * info/window.c (string_width): Don't count ANSI escape sequences
- in string width, when under -R..
- (calculate_line_starts): Don't count ANSI escape sequences in line
- width, when under -R.
- (window_get_cursor_column, window_chars_to_goal): When under -R,
- ANSI escapes don't affect the horizontal position.
-
- * info/info-utils.c (printed_representation): If -R is in effect,
- treat ESC as a normal character.
-
-2002-03-08 <karl@gnu.org>
-
- * util/Makefile.am:
- * info/Makefile.am:
- * makeinfo/Makefile.am:
- * lib/Makefile.am: doc fix.
+ * makeinfo/defun.c: --- (which gets reduced to --)
+ instead of -- (which gets reduced to -).
+ Report from Akim Demaille <akim@epita.fr>, 09 Feb 2004 18:06:29 +0100.
- * doc/Makefile.am (install-tex): prefix the install directories
- with $(DESTDIR), because that is what automake does for all
- generated install rules. The file pdfcolor.tex should be
- installed as such (and not as epsf.tex).
- From: Peter Breitenlohner <peb@mppmu.mpg.de>.
+2004-02-09 Karl Berry <karl@gnu.org>
- * configure.ac (AC_INIT): now pass [GNU Texinfo].
- (AM_INIT_AUTOMAKE): now no args, for automake 1.6.
+ * doc/texinfo.tex (\pickupwholefraction): allow the fraction to be
+ an integer without a decimal point, like `1'. Report from: Dumas
+ Patrice <dumas@centre-cired.fr>, 9 Feb 2004 16:46:30 +0100.
+ * makeinfo/multi.c (setup_multitable_parameters): compute width
+ and pass it, for clarity.
-2002-03-05 <karl@gnu.org>
+2004-02-07 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.txi: history
+ * makeinfo/insertion.c (cm_insert_copying): insert double newlines
+ instead of one in non XML outputs.
-2002-03-04 <karl@gnu.org>
+2004-02-07 Alper Ersoy <dirt@gtk.org>
- * configure.ac: version 4.1.
- * util/texi2dvi: version.
+ * makeinfo/cmds.c (cm_code): do not decrement in_fixed_width_font as
+ it gets decremented elsewhere.
- * doc/texinfo.txi: @settitle is used in html output (from Eli),
- various underfull hbox fixes.
+2004-02-07 Alper Ersoy <dirt@gtk.org>
-2002-03-02 <karl@gnu.org>
+ * makeinfo/makeinfo.c (next_nonwhitespace_character): also check
+ global input_text since filestack does not contain it.
- * configure.ac: pretest 4.0k
+2004-02-07 Alper Ersoy <dirt@gtk.org>
- * info/info.c: declare add_file_to_directory to avoid warning.
+ * makeinfo/makeinfo.c (next_nonwhitespace_character): go through the
+ whole filestack looking for the next character.
- * doc/info-stnd.texi: info standalone so as not to collide with
- `standards' in dir.
+2004-02-06 Karl Berry <karl@gnu.org>
-2002-03-01 Eli Zaretskii <eliz@is.elta.co.il>
+ * doc/texinfo.tex (\indexnofonts): define \bullet .. \result, so
+ they can be used in @?index commands.
+ Report from: Akim Demaille <akim@epita.fr>, 06 Feb 2004 13:34:15 +0100.
- * makeinfo/insertion.c (end_insertion): Insert the /td and /tr
- directives in lower case. From Per Bothner <per@bothner.com>.
+2004-02-05 Karl Berry <karl@gnu.org>
- * makeinfo/macro.c (cm_alias): Ignore whitespace around the alias
- name, like the manual promises.
+ * makeinfo/xref.c (add_xref_punctuation): if we insert anything,
+ make it a period.
+ (cm_xref): include command name in error message.
+ * doc/texinfo.txi (ref): mention generating a period, if needed.
+ Too many complaints when we made a warning for @ref not followed
+ by period or comma.
- * doc/texinfo.txi (Invoking Macros, Macro Details): Document that
- commas in macro arguments don't work in TeX. Advise texi2dvi -e
- when macros don't work with TeX.
+2004-02-05 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.txi (Node Line Requirements): Add restrictions about
- parens and some punctuation characters in node names.
- (Def Cmd Template): Document that macros are not expanded.
+ * info/info-utils.c (info_parse_node): look for ``(line '' instead of
+ skipping any non-digit characters.
- The following two changes allow to say "info foo" if there's an
- Info file `foo' somewhere along INFOPATH.
+2004-02-05 Alper Ersoy <dirt@gtk.org>
- * info/info.c (add_file_directory_to_path): New function, code
- moved from `main'.
- (main): Use add_file_directory_to_path.
+ * makeinfo/index.c (insert_index_output_line_no): made ``(line NNN)'' not
+ translatable for Info output.
- * info/session.c (info_follow_menus): If the first menu entry
- couldn't be found as an item in DIR's menu, try it as a file name.
+2004-02-03 Alper Ersoy <dirt@gtk.org>
- 2001-06-19 Mark Montague <markmont@umich.edu>
+ * makeinfo/makeinfo.c (flush_output): increment node_line_number too.
- * info/filesys.c: Fix for sparc64 (offsets should be "long"s).
+ * makeinfo/makeinfo.h: new variable node_line_number to hold the last
+ output line number the current node.
- * info/session.c: Fix typos in function calls.
+ * makeinfo/nodes.c (cm_node): reset node_line_number just before the
+ node start cookie.
- 2001-08-23 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/files.h: new node member in DELAYED_WRITE struct.
+ * makeinfo/files.c (register_delayed_write): save current node name if
+ there's one.
+ (handle_delayed_writes): adjust line numbers in indices only if the
+ output is plaintext, or the index entry appears in the changed node.
- * makeinfo/footnote.c (cm_footnote): Don't allow footnotes inside
- footnotes.
- (output_pending_notes): Increment already_outputting_pending_notes
- in the HTML case as well, to protect execute_string from
- recursively entering output_pending_notes.
+ * makeinfo/index.c (index_add_arg, cm_printindex): use
+ node_line_number instead of output_line_number if the output is an
+ Info file.
-2002-03-01 <karl@gnu.org>
+2004-02-03 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.tex: fix mismatched $'s for sake of emacs font-lock.
- From: Stephen Gildea <gildea@stop.mail-abuse.org>.
+ * info/info-utils.h: new line_number member in REFERENCE struct.
-2002-02-27 <karl@gnu.org>
+ * info/info-utils.c (info_parse_node): parse (line ...) strings
+ from menu items.
+ (info_references_internal): save parsed line number in the entry.
- * configure.ac: pretest 4.0j.
+ * info/session.c (info_menu_of_ref_item): if selected entry has a line
+ number associated with it, jump to that line after updating window.
- * info/infodoc.c: 1scroll-forward typo.
+2004-02-02 Alper Ersoy <dirt@gtk.org>
-2002-02-26 <karl@gnu.org>
+ * makeinfo/xml.c (add_xref_punctuation): new function that inserts
+ necessary punctuation after @ref and @pxref commands.
+ (cm_xref): call add_xref_punctuation when multiple parameters are
+ given, make use of next_nonwhitespace_character function in the END
+ case.
+ (cm_ref): do not call cm_xref in the END case.
- * lib/system.h [! ENABLE_NLS]: let's not go const.
+2004-02-02 Alper Ersoy <dirt@gtk.org>
-2002-02-26 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/makeinfo.c (next_nonwhitespace_character): new function.
- * djgpp/config.sed: Add tweaking of file names in "install-info"
- and "uninstall-info" targets.
+2004-02-02 Alper Ersoy <dirt@gtk.org>
- * doc/inf-stnd.texi (Custom Key Bindings, Invoking infokey):
- Add footnotes about DOS file names.
+ * makeinfo/cmds.c (cm_code): call xml_start_para instead of tweaking
+ in_fixed_width_font, and use entities rather than quotes.
- * info/infokey.c (main) [__MSDOS__]: If HOME is not defined,
- default to the current directory.
+2004-02-02 Arnold D. Robbins <arnold@skeeve.com>
-2002-02-26 <karl@gnu.org>
+ * makeinfo/cmds.c (cm_TeX, cm_LaTeX): Add docbook support.
+ (cm_code): Add opening and closing single quotes for @samp in the
+ Docbook output.
+ * makeinfo/xml.c (xml_begin_document): Add `tex' and `latex' entities.
+ * makeinfo/xref.c (cm_xref): Add `See' and `see' strings for docbook
+ and xml.
- * lib/system.h (LC_MESSAGES) [! LC_MESSAGES]: need this after all.
+2004-01-31 Alper Ersoy <dirt@gtk.org>
-2002-02-25 <karl@gnu.org>
+ * makeinfo/makeinfo.c (main): fixed ``--option: makeinfo'' messages.
- * doc/info-stnd.texi: contents at top, avoid overfull hbox.
- * lib/Makefile.am (libtxi_a_sources): include gettext.h.
+2004-01-31 Alper Ersoy <dirt@gtk.org>
- * lib/system.h (LC_MESSAGES): don't need conditional, Bruno says
- that locale.h or libintl.h does so.
+ * makeinfo/cmds.c (cm_TeX, cm_LaTeX): really ignore the arguments as
+ the warning suggests.
- * configure.ac: pretest 4.0i.
+2004-01-31 Alper Ersoy <dirt@gtk.org>
- * dir-example: infokey.
- * doc/info-stnd.texi: invoking infokey.
- * info/infokey.c (short_help): reorganize slightly.
+ * makeinfo/cmds.c (cm_TeX, cm_LaTeX): warn if there are any arguments.
- * lib/system.h: use "gettext.h" instead of <libintl.h> per gettext
- 0.11 recommendation.
+2004-01-31 Alper Ersoy <dirt@gtk.org>
-2002-02-25 gettextize <bug-gnu-gettext@gnu.org>
+ * makeinfo/files.c (pop_path_from_include_path): do not mock with
+ include_files_path address directly, as it confuses realloc.
- * Makefile.am (SUBDIRS): Add intl.
- * configure.ac (AC_CONFIG_FILES): Add intl/Makefile.
+2004-01-31 Alper Ersoy <dirt@gtk.org>
-2002-02-25 <karl@gnu.org>
+ * makeinfo/makeinfo.c (main, usage): new --output-indent option.
- * util/Makefile.am (LDADD):
- * makeinfo/Makefile.am (LDADD):
- * info/Makefile.am (LDADD): @LIBINTL@ per gettextize.
+2004-01-31 Alper Ersoy <dirt@gtk.org>
- * configure.ac: gettextize changes.
- * Makefile.am: gettextize changes.
+ * makeinfo/xml.c (xml_add_char): break long lines in paragraphs
+ when the output format is Docbook.
-2002-02-25 gettextize <bug-gnu-gettext@gnu.org>
+2004-01-31 Alper Ersoy <dirt@gtk.org>
- * Makefile.am (SUBDIRS): Add m4.
- (SUBDIRS): Remove intl.
- (ACLOCAL_AMFLAGS): New variable.
- (EXTRA_DIST): Add config.rpath.
- * configure.ac (AC_CONFIG_FILES): Add m4/Makefile.
- (AC_CONFIG_FILES): Remove intl/Makefile.
+ * makeinfo/files.c (prepend_to_include_path, append_to_include_path)
+ (pop_path_from_include_path): new functions to manipulate
+ include_files_path.
-2002-02-23 <karl@gnu.org>
+ * makeinfo/makeinfo.c (convert_from_file): prepend the loaded file's
+ path to include_files_path in order to make relative include files to
+ be found, then remove afterwards.
+ (main): make use of new functions for -I and -P options.
- * pretest 4.0h.
+2004-01-30 Alper Ersoy <dirt@gtk.org>
- * 2002-02-23 Eli Zaretskii <eliz@is.elta.co.il>
- * doc/info-stnd.texi (Invoking Info): Add a reference to the
- description of index-apropos and index-search. Document the
- --raw-escapes option.
- (Searching Commands): Describe index-search and index-apropos.
+ * util/texinfo.dtd: added exdent element.
- * info/man.c (clean_manpage): If raw_escapes_p is not set, remove
- ANSI escape sequences from the man page.
+2004-01-29 Alper Ersoy <dirt@gtk.org>
- * info/info.h: Declare raw_escapes_p.
+ * makeinfo/makeinfo.c (convert_from_loaded_file): call
+ xml_begin_document after opening the output stream for writing.
- * info/info.c: <raw_escapes_p>: New variable.
- New option --raw-escapes or -R.
- (main): Handle it.
- (info_short_help): Document it.
- (main): Honor --output together with --usage, by dumping the node
- we found to the named file.
+ * makeinfo/files.c (register_delayed_write): use delayed_command
+ instead of command in messages as it may differ from the actual
+ command name. Check the usability of current_output_filename.
- 2002-02-23 Eli Zaretskii <eliz@is.elta.co.il>
- * makeinfo/html.c (nodename_to_filename): Call
- nodename_to_filename_1 with the last argument 1, not 0.
+2004-01-28 Karl Berry <karl@gnu.org>
- * makeinfo/toc.c (shortcontents_update_html)
- (contents_update_html): Don't omit the entry for the Top node.
+ * doc/texinfo.txi (HTML Splitting): describe when two nodes are
+ written to one output file.
- * 2002-01-30 Eli Zaretskii <eliz@is.elta.co.il>
- * makeinfo/node.c (cm_node): Don't condition splitting on
- top_node_seen being non-zero. If current_node is NULL, use the
- current output file name to get at the file name for the previous
- node. Don't compute a new file name for a node if we didn't close
- the current file.
+ * doc/texinfo.tex (\TeX): \edef using original \TeX definition.
- 2002-02-01 Eli Zaretskii <eliz@is.elta.co.il>
- * makeinfo/node.c (cm_node): Call html_output_head whenever we
- create a new split-HTML file.
+2004-01-28 Alper Ersoy <dirt@gtk.org>
- * makeinfo/html.c (html_output_head): Make html_title static.
- Compute it only once, and don't free it. Output the <h1> title
- header only once per run.
+ * makeinfo/defun.c (process_defun_args, defun_internal):
+ * makeinfo/insertion.c (begin_insertion, end_insertion): execute XML
+ only blocks for Docbook also.
- 2002-02-02 Eli Zaretskii <eliz@is.elta.co.il>
- * makeinfo/toc.c (contents_update_html): Fix the condition for
- omitting duplicate TOC entries. Fix comparison with the TOC entry
- for "Top".
+ * makeinfo/xml.c: added Docbook elements for definition commands.
+ (xml_begin_def_term): for Docbook, generate an Info-like @defun line.
+ (xml_insert_element_with_attribute): do not indent DEFINITION and
+ DEFINITIONTERM when the output is Docbook.
-2002-02-14 <karl@gnu.org>
+2004-01-25 Alper Ersoy <dirt@gtk.org>
- * doc/Makefile.am (DISTCLEANFILES): use this variable instead of
- the distclean-aminfo target, which apparently is no longer used.
+ * makeinfo/xml.c: changed majorheading and the like with bridgehead
+ for Docbook.
- * pretest 4.0g.
+ * makeinfo/sectioning.c (sectioning_underscore): do not start sections
+ with @majorheading and the like, only insert title.
- * doc/texinfo.tex (\appendixentry): new macro for typesetting
- appendix toc entries.
- (\appendixzzz, \summarycontents, \pdfoutlines): use it, instead of
- usurping \chapentry. This allows the bookmarks in the pdf output
- to come out right. Report from: Kurt Hornik
- <Kurt.Hornik@ci.tuwien.ac.at>.
+2004-01-25 Alper Ersoy <dirt@gtk.org>
-2002-02-13 <karl@gnu.org>
-
- * configure.ac: ALL_LINGUAS is deprecated as of gettext 0.11.
- * doc/texinfo.tex (\image): remove spurious \loggingall.
-
- * doc/texinfo.txi: @math now implies @tex.
- * doc/texinfo.tex (\math): imply @tex.
-
-2002-02-11 <karl@gnu.org>
-
- * makeinfo/insertion.c (handle_verbatim_environment): save and
- restore filling_enabled and inhibit_paragraph_indentation. Bug
- report from: Alexandre Duret-Lutz <duret_g@lrde.epita.fr>.
-
- * makeinfo/makeinfo.c (reader_loop): don't worry about bare braces
- inside @math.
-
-2002-02-08 <karl@gnu.org>
-
- * info/infodoc.c: keep underlines with the text they refer to, for
- translation purposes.
- Pointed out by Christian Rose <menthos@menthos.com>, 20 nov 2001.
-
- * doc/info.texi: recommend setting INFOPATH.
-
- * doc/Makefile.am (install-tex): need $(srcdir) for install.
- From: istry <istry@mail.ru>.
-
- * doc/texinfo.tex: replace $$$ delimiter with $.$, for sake of
- font-lock in Emacs 21.1. Suggestion from: Stephen Gildea
- <gildea@stop.mail-abuse.org>.
-
- 2002-01-26 Eli Zaretskii <eliz@is.elta.co.il>
- * info/infomap.c (default_emacs_like_info_keys)
- (default_emacs_like_ea_keys, default_vi_like_info_keys)
- (default_vi_like_ea_keys): Fix default keybindings to be
- consistent with non-INFOKEY branch. Add bindings for Home, End,
- and Delete keys.
-
- 2002-01-23 Eli Zaretskii <eliz@is.elta.co.il>
- * makeinfo/toc.h <TOC_ENTRY_ELT>: New member html_file.
-
- * makeinfo/toc.c (toc_add_entry): Compute and set the html_file
- member.
- (shortcontents_update_html): Produce the toc_* links correctly,
- without duplicating the link text. Fix comparison with "Top".
- Handle the case when there's @shortcontents, but no @contents.
- (contents_update_html): Fix the way toc_* anchors are produced
- from toc_entry_alist[i]->name: take only the node name from the
- string in toc_entry_alist[i]->name. Fix comparison with "Top".
-
- * makeinfo/sectioning.c (sectioning_html): Take the toc_anchor
- substring before closing the anchor with </a>. Fix the closing
- </hN> tag--add 2 to level, not 1. Use sizeof instead of a magic
- value of 9.
+ * makeinfo/xml.c:
+ * makeinfo/xml.h: new element EXDENT.
- * makeinfo/cmds.c: Make @summarycontents call cm_shortcontents, as
- promised by the docs.
+ * makeinfo/cmds.c (cm_comment): save the paragraph state.
+ (cm_exdent): use EXDENT element for XML, LINEANNOTATION for Docbook.
- 2002-01-19 Eli Zaretskii <eliz@is.elta.co.il>
- * djgpp/config.sed: Fix a problem with AC_CONFIG_LINKS that
- prevented building from a directory on another drive.
+ * makeinfo/html.c (html_output_head):
+ * makeinfo/xml.c (xml_begin_document): erase output_paragraph.
- * djgpp/config.bat: Fix problems with long --srcdir diectory names.
+ * makeinfo/insertion.c (begin_insertion): canonize whitespace around
+ copying text.
+ (cm_insert_copying): comment fixes. Do not append newline if the
+ output is Docbook.
- * djgpp/README: Update.
+ * makeinfo/makeinfo.c (close_paragraph): return if Docbook too.
-2002-01-31 <karl@gnu.org>
+ * makeinfo/sectioning.c (sectioning_underscore): removed newline from
+ the end of titles.
- * doc/texinfo.txi: mention dvips
+ * makeinfo/lang.c (cm_documentencoding): insert encoding attribute
+ into XML and Docbook prologs when handling delayed writes.
-2002-01-28 <karl@gnu.org>
+ * makeinfo/xml.c (xml_begin_document): register a delayed write for
+ @documentencoding when writing the prolog.
+ (xml_end_para): removed docbook checks.
+ (xml_insert_element_with_attribute): skip indentation if
+ xml_keep_space is true, indent after table element. When the output
+ is Docbook, do not insert xml:space attribute, and do not remove from
+ the end of group element and keep_space blocks.
+ (xml_add_char): join lines in a paragraph for Docbook too.
- * configure.ac (ALL_LINGUAS): add hr.
+2004-01-24 Alper Ersoy <dirt@gtk.org>
-2002-01-22 <karl@gnu.org>
+ * makeinfo/multi.c (out_char): simple use add_char for XML and Docbook
+ outputs too.
- * makeinfo/defun.c (defun.c): only warn about ( immediately
- following a defun name, since the groff manual needs other
- characters there where whitespace is incorrect.
- Reported by Werner Lemberg <wl@gnu.org>.
+ * makeinfo/makeinfo.c (close_paragraph): just return when the output
+ format is XML.
- * doc/info-stnd.texi: alphabetize variable list.
+ * makeinfo/makeinfo.h: new variable xml_indendation_increment.
- * doc/texinfo.txi: no :'s in index entries, index @page/@group
- some more.
+ * makeinfo/cmds.c (cm_comment): insert a newline before the comment,
+ if there is not already one.
+ (cm_noindent_cmd): skip whitespace after the command.
- * makeinfo/index.c (index_add_arg): warn if index entry contains a
- colon. From: Kenneth Lorber <keni@his.com>.
+ * makeinfo/xml.c:
+ * makeinfo/xml.h: new element DETAILMENU.
-2002-01-21 <karl@gnu.org>
+ * makeinfo/xml.c: menuentry and menucomment should not contain para.
+ (xml_indent, xml_indent_end_para): use xml_indentation_increment
+ value, and indent only if it is a positive number.
+ (xml_start_para): apply indentation for XML output too.
+ (xml_end_para): add newline if xml_indentation_increment is positive.
+ (xml_insert_element_with_attribute): major indentation fixes.
+ (xml_start_menu_entry): skip whitespace at the start of menu comments.
+ (xml_add_char): fixed paragraph detection in menus, and added a check
+ to detect multiple whitespaces after newline in menu comments. Do not
+ return when inside multitable to avoid concatenation of two lines
+ without a space char in between.
- * makeinfo/insertion.c: </pre not /<pre, reported by Mike
- Benefield <mike@duckbrain.com>.
+ * makeinfo/insertion.c (cm_insert_copying, cm_lisp, cm_smalllisp)
+ (cm_format, cm_smallformat, cm_display, cm_smalldisplay, cm_example)
+ (cm_smallexample): do not insert newline when the output is XML.
+ (end_insertion): ditto for the above mentioned block commands and
+ @group. Do not increment in_fixed_font for XML output.
+ (begin_insertion, end_insertion): enclose @detailmenu in a detailmenu
+ element.
-2002-01-18 <karl@gnu.org>
+ * util/texinfo.dtd: added detailmenu, and fixed menucomment and
+ tableitem definitions.
- * configure.ac: pretest 4.0f.
+2004-01-23 Alper Ersoy <dirt@gtk.org>
- * util/texindex.c:
- * util/install-info.c:
- * makeinfo/makeinfo.c:
- * info/info.c: it's 2002.
+ * util/Makefile.am: substituted catalog in EXTRA_DIST with catalog.in,
+ and added catalog to CLEANFILES.
- * info/session.c: pass right args to info_scroll_half_screen_up.
- From Eli.
+2004-01-23 Alper Ersoy <dirt@gtk.org>
-2002-01-18 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/files.h: new input_filename member in delayed_write struct.
- * makeinfo/multi.c (multitable_item): Always return a value.
+ * makeinfo/files.c (register_delayed_write): added input_filename to
+ saved variables, and adjusted line_number saving.
+ (handle_delayed_writes): set input_filename and line_number for
+ correct warning and error messages.
- * util/install-info.c (xmalloc, xrealloc, pfatal_with_name)
- (open_possibly_compressed_file, parse_input): Call `fatal' with 3
- arguments, to avoid compiler warnings.
- (main): Call `fatal', `error', and `warning' with the right number
- of arguments.
+2004-01-23 Alper Ersoy <dirt@gtk.org>
- * makeinfo/makeinfo.c (main): Remove extraneous first arg of
- usage().
+ * makeinfo/float.c (cm_listoffloats):
+ * makeinfo/index.c (cm_printindex): decrement line_number only if
+ not handling delayed writes.
- * info/window.c (build_message_node): Supply a 4th argument to
- build_message_buffer.
+ * makeinfo/float.c (float_type_exists): check if float has a label.
+2004-01-23 Alper Ersoy <dirt@gtk.org>
-2002-01-18 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/makeinfo.c (main): updated copyright year in --version text.
- * makeinfo/sectioning.c (sectioning_html): End the anchor properly
- with a </a>.
+2004-01-23 Alper Ersoy <dirt@gtk.org>
- * info/session.c (info_menu_or_ref_item): If we didn't find a
- cross-reference on this line, try the one before.
+ * makeinfo/tests/Makefile.am: commented top2.texi to fix distcheck.
- * info/infomap.c (fetch_user_maps): Provide two different
- translations for ``file too small'' and ``file too big'' error.
+2004-01-23 Alper Ersoy <dirt@gtk.org>
- * info/info.c (info_short_help): Print the --speech-friendly
- option together with the other options, not at the end of the help
- screen.
+ * makeinfo/xml.c (xml_begin_document): use PUBLIC id for TexinfoML
+ instead of SYSTEM.
-2002-01-18 Andreas Schwab <schwab@suse.de>
+2004-01-23 Alper Ersoy <dirt@gtk.org>
- * makeinfo/html.c (escape_string): When string is empty don't read
- past end of it.
+ * makeinfo/Makefile.am: removed texinfo.dtd and texinfo.xsl and ...
-2002-01-17 <karl@gnu.org>
+ * util/Makefile.am: added here.
- * doc/info-stnd.texi: overfull box in table.
+2004-01-23 Alper Ersoy <dirt@gtk.org>
-2002-01-16 <karl@gnu.org>
+ * utils/catalog.in: catalog file for texinfo.dtd.
- * configure.ac: pretest 4.0e.
+2004-01-23 Alper Ersoy <dirt@gtk.org>
- * doc/info.texi: update from emacs.
+ * makeinfo/texinfo.dtd:
+ * makeinfo/texinfo.xsl: moved to ...
-2002-01-03 Eli Zaretskii <eliz@is.elta.co.il>
+ * utils/texinfo.dtd:
+ * utils/texinfo.xsl: here.
- * makeinfo/makeinfo.c (file_line_error): New function.
+2004-01-23 Alper Ersoy <dirt@gtk.org>
- * makeinfo/insertion.c (discard_insertions): Call file_line_error
- instead of changing global variables.
+ * makeinfo/texinfo.dtd: added ordm and ordf entities and dmn element.
+ updated indexterm location in tables.
- * makeinfo/sectioning.c (cm_top): Ditto.
+2004-01-22 Karl Berry <karl@gnu.org>
- * makeinfo/node.c (validate_file): Ditto.
+ * doc/texinfo.tex (\dofloat): handle empty float type and empty
+ float label separately, matching makeinfo behavior.
+ * doc/texinfo.txi (Floats): new section, not yet fully written.
+ (Special Displays): new chapter to hold it.
+ (Footnotes, Images): move these sections to the new chapter.
+ (@@-Command Summary): list new commands.
+ * NEWS: mention new commands here too.
- * makeinfo/makeinfo.c (discard_braces, handle_variable_internal):
- Ditto.
+2004-01-21 Alper Ersoy <dirt@gtk.org>
- * makeinfo/macro.c (define_macro): Ditto.
+ * makeinfo/xml.c (xml_begin_index): move data to a temporary location
+ for delayed use and insert back when handling delayed writes.
- 2001-12-31 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/index.c (cm_printindex): call xml_begin_index when not
+ handling delayed writes too.
- * makeinfo/node.h (TAG_ENTRY): New struct member html_fname.
+2004-01-19 Karl Berry <karl@gnu.org>
- * makeinfo/node.c (find_node_by_fname): New function.
- (remember_node): Accept an additional argument FNAME, the node's
- file name, and record it in the list of nodes; callers changed.
- (cm_node): Call find_node_by_fname to see if this node's file name
- clashes with another node or anchor. If it clashes with another
- node, append the new node to the same file instead of erasing the
- other node. If it clashes with an anchor, print an error message
- and overwrite the anchor's file.
- (cm_anchor): If this anchor's file name clashes with another
- anchor or node, print an error message and ignore the anchor.
+ * doc/texinfo.tex: doc fix.
- * makeinfo/files.c (normalize_filename): New function.
+2004-01-18 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex (\commondummies): dummify @tie and remaining
+ @<char> commands.
+ (\tocindent): reduce to 15pt to match \defaultparindent.
+ (\setref): use XR as control sequence prefix
+ instead of just X; seems nicer. Change calls.
+
+ Finish implementing @listoffloats:
+ (\xrdef): keep lists of each float type.
+ (\dofloat): save the floattype in the aux file.
+ (\Efloat): write the lof text to the aux file.
+ (\iffloat, \doiffloat, \listoffloats,
+ \listoffloatsdo, \listoffloatsentry): new macros.
+ * bootstrap: autoheader should come after aclocal, I think.
+
+2004-01-17 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex (\doitemize): rename from \itemizey.
+ (\itemizeitem): do not set \parskip=0 if the last
+ thing was a \nobreak (e.g., from \sectionheading).
+ Report from: Jesper Harder <harder@ifa.au.dk>,
+ 17 Jan 2004 22:03:51 +0100.
+
+ * doc/texinfo.txi (email): no angle brackets in TeX output.
+ Report from: Jesper Harder <harder@ifa.au.dk>,
+ 17 Jan 2004 21:03:21 +0100.
- * makeinfo/files.h <normalize_filename>: Add declaration.
+2004-01-17 Alper Ersoy <dirt@gtk.org>
- * makeinfo/html.c (nodename_to_filename_1): Call
- normalize_filename before returning the file name to the caller.
- Disable the code which adds #Nodified-filename to the file name we
- produce.
+ * makeinfo/float.c (cm_listoffloats): Prefixed captions with
+ float_type. For HTML, used an <ul> block.
- * makeinfo/makeinfo.c (add_char): Don't replace whitespace with
- &nbsp; if we are producing an HTML directive.
- (add_html_elt): New function.
- (cm_xref, cm_inforef, cm_uref, cm_email, cm_image): Use
- add_html_elt instead of add_word, where appropriate.
+2004-01-17 Alper Ersoy <dirt@gtk.org>
- * makeinfo/html.c (add_link): Ditto.
+ * info/info.c (main, info_short_help): new option -w, --where,
+ --location that prints the physical location of Info file.
- * makeinfo/footnote.c (cm_footnote): Ditto.
+2004-01-17 Alper Ersoy <dirt@gtk.org>
- * makeinfo/defun.c (defun_internal): Ditto.
+ * makeinfo/defun.c (defun_internal):
+ * makeinfo/insertion.c (end_insertion): enclose paragraphs in @def
+ blocks in a blockquote element for indentation in the HTML output.
- 2001-12-27 Eli Zaretskii <eliz@is.elta.co.il>
+2004-01-17 Alper Ersoy <dirt@gtk.org>
- * makeinfo/node.c (cm_node): Don't omit links to (DIR) from the
- navigation bar, add_anchor_name will DTRT now.
+ * makeinfo/html.c (insert_html_tag_with_attribute): new function.
+ (insert_html_tag): only call insert_html_tag_with_attribute with
+ NULL attribute string and return.
+ (push_tag, pop_tag): keep the element attributes in stack too.
+ (html_output_head): fixed span.roman in the default CSS.
- * makeinfo/makeinfo.c (cm_xref): Produce a split-HTML file name
- from arg1, the node name, not from arg3 or arg2, which are the
- reference name. Use arg2 or arg3 for the text to be displayed as
- a link between ">" and "</a>". Use add_anchor_name instead of
- add_nodename_to_filename.
- (cm_inforef): Use add_anchor_name instead of
- add_nodename_to_filename. Handle the case of a missing second
- argument in @inforef.
+ * makeinfo/html.h: new attribs member in hstack struct.
- * makeinfo/html.c (add_anchor_name): Always add # and the anchor
- name, even if we are splitting. If the node is "(dir)", treat it
- as if it were "dir".
- (nodename_to_filename_1): Don't append #Top for the Top node.
- (add_link): Don't punt if nodename is "(dir)". Output "</a>"
- after the link.
+ * makeinfo/cmds.c (cm_dmn, cm_code, cm_sc, cm_r): use
+ insert_html_tag_with_attribute for setting element class.
- 2001-12-25 Eli Zaretskii <eliz@is.elta.co.il>
+2004-01-15 Karl Berry <karl@gnu.org>
- * makeinfo/makeinfo.c (cm_xref, cm_inforef): Output the target
- file name via add_nodename_to_filename.
+ * texinfo.tex (\readauxfile): \ must have catcode other to
+ handle \ in node/section names.
- 2001-12-20 Eli Zaretskii <eliz@is.elta.co.il>
+2004-01-16 Alper Ersoy <dirt@gtk.org>
- * makeinfo/html.c (nodename_to_filename_1): Make references to Top
- to refer to index.html#Top.
- (add_nodename_to_filename): Accept additional argument HREF;
- callers changed.
+ * makeinfo/toc.c (cm_contents): fixed Docbook element stack underflow.
- * makeinfo/toc.c (rewrite_top): If the filename to rewrite is
- stdout or the null device, do nothing.
+ * makeinfo/xml.c (xml_insert_indexterm): set xml_dont_touch_items_defs
+ for only XML output.
- * makeinfo/makeinfo.c (insert_toplevel_subdirectory): Use
- FILENAME_CMP instead of strcmp. Search for a period forward, not
- backward. Make index_name[] a static const array, and its len
- computed at compile time.
- (convert_from_loaded_file): If output_filename is the null device,
- turn off HTML splitting.
- (cm_xref): Use add_anchor_name, rather than add_escaped_anchor_name,
- in the 5-argument case in HTML mode.
- (cm_inforef): Fix external references in HTML mode.
+2004-01-14 Simon Josefsson <jas@extundo.com>
- * makeinfo/node.c (cm_node): Use FILENAME_CMP instead of strcmp.
- Don't open a new file if the new node's name is empty. Take the
- directory part of split-HTML files from current_output_filename,
- not from toplevel_output_filename (the latter doesn't include the
- manual's subdirectory part).
+ * util/gendocs.sh: new option --html.
- * makeinfo/html.c (nodename_to_filename_1): Use FILENAME_CMPN
- instead of strncmp. Support *.inf files in references.
+2004-01-14 Alper Ersoy <dirt@gtk.org>
-2001-12-11 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/html.c (rollback_empty_tag): rewrote to also identify empty
+ elements with attributes.
+ (insert_html_tag): increment and decrement in_html_elt.
- * djgpp/config.bat, djgpp/config.sed, djgpp/config.site: Update
- for Texinfo 4.0d.
+ * makeinfo/index.c (index_add_arg): do not call flush_output for xml
+ and html outputs as they do not need an accurate output line number
+ tracking, and flush_output makes rollback_empty tag useless.
- * makeinfo/makeinfo.c (insert_toplevel_subdirectory): Use IS_SLASH
- instead of literal `/'.
- (convert_from_loaded_file): Flush the output stream before
- creating the TOC.
+2004-01-13 Alper Ersoy <dirt@gtk.org>
+ * makeinfo/cmds.c (cm_code): increment and decrement in_html_elt when
+ inserting the class attribute to avoid space char being replaced with
+ entities.
+ (cm_r, cm_dmn): use insert_string instead of add_word for the class
+ attribute.
-2002-01-14 <karl@gnu.org>
+2004-01-13 Alper Ersoy <dirt@gtk.org>
- * info/info.c: translate --speech-friendly (from Eli).
- * makeinfo/index.c: formatting.
+ * makeinfo/cmds.c (cm_r): changed add_word_args with insert_html_tag,
+ and changed inline style with a class attribute.
- 2001-12-24 Eli Zaretskii <eliz@is.elta.co.il>
- * info/infomap.c (initialize_info_keymaps): Bind the user-defined
- keys on top of the default ones, not the other way around.
+ * makeinfo/html.c (insert_html_tag): when the current element is the
+ same with the last in the stack, do not return if it's span.
+ (html_output_head): new CSS class roman (for @r.)
-2002-01-11 <karl@gnu.org>
+2004-01-13 Alper Ersoy <dirt@gtk.org>
- * info/info.c: can't do #ifdef inside of printf any more.
- From: Tyler <tyler@zerodivide.cx>
+ * makeinfo/node.c (cm_node): reset output_position when closing the
+ current HTML output file.
- * configure.ac (ALL_LINGUAS): add he, from Eli.
+ * makeinfo/files.c (handle_delayed_writes): fixed position updating of
+ the next writes.
-2002-01-09 Eli Zaretskii <eliz@is.elta.co.il>
+2004-01-13 Karl Berry <karl@gnu.org>
- * info/window.c (calculate_line_starts): Cast node->contents[i] to
- unsigned char.
+ * makeinfo/files.c (register_delayed_write): reword warning, and
+ only warn if writing to stdout, not /dev/null.
-2002-01-04 <karl@gnu.org>
+2004-01-13 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.tex (\footnotezzz): \noindent=\relax.
+ * makeinfo/node.c (glean_node_from_menu): removed unnecessary
+ line_number incrementation.
-2002-01-03 <karl@gnu.org>
+2004-01-13 Alper Ersoy <dirt@gtk.org>
- * doc/texinfo.tex (\imagexxx): handle pdf and dvi cases the same.
- (\dopdfimage): need \immediate to avoid seg fault when including the
- same image twice.
- Bug reports from Alexandre Duret-Lutz <duret_g@lrde.epita.fr>.
+ * makeinfo/float.c (cm_listoffloats):
+ * makeinfo/index.c (cm_printindex): decrement line_number just after
+ get_rest_of_line to make messages refer to the correct line,
+ re-increment it just before returning.
-2001-12-31 <karl@gnu.org>
+2004-01-13 Alper Ersoy <dirt@gtk.org>
- * makeinfo/makeinfo.c (cm_image): check *ext_arg as well as
- ext_arg when computing length of fullname.
+ * makeinfo/node.c (cm_node): fixed prev, next, up nodes defaulting
+ code to not make use of @menus after @bye.
- * makeinfo/defun.c: docbook changes.
- * makeinfo/docbook.c (docbook_punctuation): remove deprecated
- default: at end of statement.
+2004-01-13 Alper Ersoy <dirt@gtk.org>
- * makeinfo/docbook.c: initial.
- * makeinfo/docbook.h: initial.
- * makeinfo/Makefile.am (makeinfo_SOURCES): add docbook.[ch].
- * makeinfo/makeinfo.c (add_char): use &nbsp; in docbook case.
+ * makeinfo/index.c (cm_printindex): handle @printindex immediately
+ if the output format is Docbook, rather than waiting for delayed
+ writes.
- * doc/texinfo.tex (\footnotezzz): use \everypar={\hang} instead of
- just \hang in case a footnote extends for multiple paragraphs.
+2004-01-13 Alper Ersoy <dirt@gtk.org>
-2001-12-18 <karl@gnu.org>
+ * makeinfo/float.c (cm_listoffloats): insert xml elements also for
+ docbook.
- * info/Makefile.am (BUILT_SOURCES): include $(EXEEXT) on makedoc
- dependency since automake doesn't do it.
+2004-01-13 Alper Ersoy <dirt@gtk.org>
- 2001-12-11 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/float.c (float_type_exists): new function that checks if a
+ specific type of @float is previously used.
+ (cm_listoffloats): warn if requested float_type is unknown.
- * djgpp/config.bat, djgpp/config.sed, djgpp/config.site: Update
- for Texinfo 4.0d.
+2004-01-12 Alper Ersoy <dirt@gtk.org>
- * info/infomap.c (fetch_user_maps): Initialize `filename' to NULL
- and don't try to call `open' if `filename' is NULL.
- [__MSDOS__]: Try the current directory if neither $INFOKEY nor
- $HOME are defined.
+ * makeinfo/files.c (register_delayed_write): warn if delayed write is
+ requested when the output file is not seekable.
- * makeinfo/makeinfo.c (insert_toplevel_subdirectory): Use IS_SLASH
- instead of literal `/'.
- (convert_from_loaded_file): Flush the output stream before
- creating the TOC.
+2004-01-10 Karl Berry <karl@gnu.org>
- 2001-12-10 Eli Zaretskii <eliz@is.elta.co.il>
+ * doc/texinfo.txi (Using Include Files): mention the possibility
+ of no nodes in an include file. From Bob.
- * info/infokey.c (main): Use FOPEN_WBIN instead of "w".
+2004-01-10 Simon Josefsson <jas@extundo.com>
- * info/infokey.h (INFOKEY_SRCFILE, INFOKEY_FILE) [__MSDOS__]:
- Special definitions for MS-DOS.
+ * makeinfo/node.c (cm_node): Only print ",\n" at correct places.
- 2001-12-09 Eli Zaretskii <eliz@is.elta.co.il>
+2004-01-10 Alper Ersoy <dirt@gtk.org>
- * lib/system.h: Condition inclusion of libintl.h on ENABLE_NLS.
- (gettext, bindtextdomain, textdomain) [!ENABLE_NLS]: Provide
- trivial definitions for when NLS is not used.
- (LC_MESSAGES) [!ENABLE_NLS]: Define if undefined by locale.h.
+ * makeinfo/html.c (html_output_head): use insert_string instead of
+ add_word for css inclusion to avoid reformatting.
-2001-12-18 Eli Zaretskii <eliz@is.elta.co.il>
+2004-01-09 Alper Ersoy <dirt@gtk.org>
- * info/infomap.c (decode_keys): Change the return type to int;
- callers changed. Return zero if some of the special keys in SRC
- are not defined by the terminal; return non-zero otherwise.
- (section_to_keymaps): If decode_keys returns zero, don't bind the
- key sequence.
+ * makeinfo/xml.c:
+ * makeinfo/xml.h: new variable xml_dont_touch_items_defs.
-2001-12-18 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/cmds.c (cm_comment, cm_sp):
+ * makeinfo/xml.c (xml_insert_indexterm): set and unset
+ xml_dont_touch_items_defs.
* makeinfo/xml.c (xml_insert_element_with_attribute)
- (xml_insert_element): Rename the argument `element' to `elt'.
-
- * info/infokey.c (compile): Use \033 instead of (non-standard) \e.
-
-2001-12-17 <karl@gnu.org>
-
- 2001-12-16 Eli Zaretskii <eliz@is.elta.co.il>
-
- * info/pcterm.c (pc_initialize_terminal) [INFOKEY]: Store term_kh,
- term_ke, term_ki, and term_kx sequences.
- (DJGPP_keytab): Map Home, End, and Insert to escape sequences, not
- to C-a, C-e, etc.
-
- * info/infomap.c (default_emacs_like_info_keys)
- (default_emacs_like_ea_keys, default_vi_like_info_keys)
- (default_vi_like_ea_keys): Add the leading suppress-default flag,
- to be consistent with the table which comes from a file.
-
- * info/session.c (info_do_lowercase_version): Add a doc string.
-
- * info/infodoc.c (describe_key) [INFOKEY]: If keystroke is bound
- to do-lowercase-version, but its lower-case variant is undefined,
- say that keystroke is also undefined.
-
-
-2001-12-12 <karl@gnu.org>
-
- * makeinfo/files.c (find_and_load): remove conditionals on
- VMS|O_BINARY, always just read as many bytes as we can.
-
- 2001-12-11 Eli Zaretskii <eliz@is.elta.co.il>
- * new files for djgpp/.
-
- 2001-09-09 Eli Zaretskii <eliz@is.elta.co.il>
- * info/echo-area.c (build_completions): Look for a candidate
- completion which matches user's request including the letter-case,
- use that as the value of LCD_completion.
-
- 2001-12-06 Eli Zaretskii <eliz@is.elta.co.il>
- * info/echo-area.c (build_completions): When looking for the best
- completion candidate, only compare as much characters as the user
- typed.
-
-
-2001-12-04 <karl@gnu.org>
-
- * doc/texinfo.tex (\pdfmkpgn): remove trailing @ in link names
- again. Also from Kurt.
-
- * doc/texinfo.tex (\image): need five commas to ignore additional
- optional args to @image. From Kurt.Hornik@ci.tuwien.ac.at.
-
- * doc/texinfo.tex (\afourlatex): reset \globaldefs=0 explicitly.
- From Trond Endrestøl <trond@ramstind.gtf.ol.no>.
-
-2001-12-01 <karl@gnu.org>
-
- * makeinfo/files.c (find_and_load): remove O_BINARY from open
- call, this messes up under Windows. From eli.
-
-2001-11-20 <karl@gnu.org>
-
- * makeinfo/makeinfo.c (cm_image): reword error messages.
-
-2001-11-19 <karl@gnu.org>
-
- * Pretest 4.0d.
- * doc/texinfo.txi: index ragged right/left.
-
- * info/window.c (build_message_buffer): handle %1$s as used in
- ja.po. From Fumitoshi UKAI <ukai@debian.or.jp>.
-
- * configure.ac (ALL_LINGUAS): add sv.
-
-2001-11-16 <karl@gnu.org>
-
- * Makefile.am (EXTRA_DIST): add COPYING.DOC.
-
- 1999-10-30 Andrew Bettison <andrewb@zip.com.au>
-
- All these changes are to implement user-configurable key mapping
- using the new 'infokey' program. For the time being, the new
- code is conditional on [INFOKEY] and the old code is still there
- in case we want to revert.
-
- * info/session.c (incremental_search): test for printable chars
- _before_ isearch command keys -- makes a difference if the
- isearch commands are bound to printable chars.
-
- * info/doc.h,
- * info/infodoc.c,
- * info/infomap.c,
- * info/m-x.c,
- * info/session.c: New typedef InfoCommand, plus a bunch of
- supporting macros, to abstract a "command" away from being a
- function pointer.
-
- * info/doc.h (pretty_keyseq),
- * info/infodoc.c (pretty_keyseq),
- * info/session.c (pretty_keyseq): Moved definition from
- session.c into infodoc.c, and rewrote to recognise special
- terminal sequences (PgUp, PgDn, etc.).
-
- * info/infodoc.c (create_internal_info_help_node,
- replace_in_documentation, info_where_is),
- * info/m-x.c (info_execute_command): Cleaned up references to
- hardwired keystrokes.
-
- * info/infodoc.c (replace_in_documentation):
- Extended the \\[foo] syntax to recognise \\%-X.Y[foo], which
- causes the replacement text to be inserted using sprintf("%-X.Ys").
-
- * info/session.c (_scroll_forward, _scroll_backward,
- scroll_forward_page_only, scroll_backward_page_only,
- scroll_forward_page_only_set_window,
- scroll_backward_page_only_set_window): New functions, eliminating
- need for SPC and DEL hack.
-
- * info/session.c (scroll_forward, scroll_backward,
- scroll_forward_set_window, scroll_backward_set_window): Call
- _scroll_forward and _scroll_backward to do all the work.
-
- * info/infomap.c (initialize_info_keymaps)[!INFOKEY]: set 'v'
- and Control('v') key bindings to info_scroll_backward_page_only
- and info_scroll_forward_page_only respectively.
-
- * info/Makefile.am (bin_PROGRAMS): Added new executable `infokey'.
- (infokey_SOURCES): Defined.
- (EXTRA_DIST): Added `sample_infokey'.
- (BUILT_SOURCES): Added `key.c'.
-
- * info/infokey.h,
- * info/infokey.c: Created, for new program `infokey' which
- creates a $HOME/.info file by compiling a text source file with
- syntax very similar to that used by `lesskey' in less 3.4.0.
-
- * info/makedoc.c: Generate new file `key.c' defining an array to
- map command names to codes.
-
- * info/key.h: Created, to define contents of new `key.c' now
- created by makedoc.
-
- * info/info.h (INFOKEY): Define, to enable all following changes.
- (set_variable_to_value)[INFOKEY]: Declare new function.
-
- * info/makedoc.c [INFOKEY]: Write '#define A_' numeric command
- code definitions into `funs.h' to support new key binding system.
-
- * info/session.c (info_dispatch_on_key, info_numeric_arg_digit_loop)
- [INFOKEY],
- * info/infomap.c [INFOKEY],
- * info/infodoc.c (function_documentation, function_name,
- describe_key, pretty_keyname, pretty_keyseq_internal,
- where_is_internal)[INFOKEY],
- * info/terminal.h (term_kh, term_ke, term_kx, term_ki)[INFOKEY],
- * info/terminal.c (term_kh, term_ke, term_kx, term_ki,
- terminal_initialize_terminal)[INFOKEY],
- * info/variables.c (set_variable_to_value)[INFOKEY],
- * info/sample_infokey: Added infokey functionality, copied more
- or less wholesale from 'lesskey' in GNU Less 3.4.0. Added a new
- typedef struct FUNCTION_KEYSEQ, and a new element `keys' to
- typedef struct FUNCTION_DOC, to give the user some control over
- the keystrokes that appear in the documentation node generated
- by get-help-window, and to improve efficiency a little.
-
- * info/infodoc.c (info_internal_help_text,
- create_internal_info_help_node)[INFOKEY]: Rewrote all code that
- assumes fixed keystrokes, replacing %10s sequences with \\%10[foo]
- sequences instead.
-
- * doc/info-stnd.texi: Documented above changes.
-
-2001-09-19 <karl@gnu.org>
-
- * makeinfo/cmds.c: </ not /<, duh :). From janneke.
-
-2001-09-12 <karl@gnu.org>
-
- * configure.ac (AC_SYS_POSIX_TERMIOS, AC_HEADER_TIOCGWINSZ): use
- these new autoconf macros instead of the old automake ones.
-
- * info/terminal.c: remove unconditional include of sys/ioctl.h.
- * info/termdep.h: <sys/ioctl.h> [GWINSZ_IN_SYS_IOCTL]: include outside of HAVE_TERMIOS_H,
- per autoconf manual.
-
- * doc/Makefile.am (install-info-am): remove override of automake's
- target, instead enable looking in . for info files within automake.
-
- * doc/info-stnd.texi: include separate version-stnd.texi
- * configure.ac: autoconf 2.52, and rename to configure.ac.
-
-2001-09-11 <karl@gnu.org>
-
- * doc/texinfo.txi: recommend against using - and _ in @set names,
- * and rearrange that section.
-
- * info/infodoc.c (replace_in_documentation): free fun_name to fix
- memory leak.
- From: "Art Haas" <ahaas@neosoft.com>, Sat, 4 Aug 2001 08:34:31 -0500.
-
- * makeinfo/lang.c: encoding support for info output from kama.
- * makeinfo/lang.h: encoding support for info output from kama.
-
- * makeinfo/html.c: include document encoding code unless
- no_encoding.
- * makeinfo/insertion.c (cm_direntry): don't call begin_insertion
- if ignoring.
- (cm_documentdescription): moved here, and likewise.
- (begin_insertion): don't need output format conditionals here.
-
- * makeinfo/cmds.c (cm_documentdescription): move to insertion.c.
- * makeinfo/makeinfo.h (enable_encoding): new global.
- * makeinfo/makeinfo.c: new option --enable-encoding, rearrange help.
-
- Sun Oct 31 18:44:24 UTC 1999 Karl Heinz Marbaise <kama@hippo.fido.de>
-
- - lang.{c,h}:
- o added translation map between HTML markups and 8-Bit
- (ISO-8859-1 codes; supplemental is Unicode for the future).
- o added cm_search_iso_map:
- search for characters based on HTML markup names for
- translation 8-Bit code.
- o recognizing of @documentencoding improved.
- now we can recognize things like ISO-8859-{1...15}
-
- - makeinfo.{c,h}:
- o added two command line switches.
- + info-encoding to activate the encoding for info output
- which is correctly shown by info. Default is NOT to
- encode the output to be compatible with earlier versions.
- + no-encoding to suppress encoding e.g. while producing
- ASCII output (--no-headers) results in that you get
- "A for &Auml; as before.
- o help output changed to document the switches.
-
- - html.c:
- charset encoding in html based on @documentencoding.
-
-
-2001-07-31 <karl@gnu.org>
-
- * doc/texinfo.txi: mention pdfcolor.tex.
- * doc/texinfo.tex: doc.
- * doc/Makefile.am (install-tex): install pdfcolor.tex too.
- * doc/pdfcolor.tex: new file, since Kurt.Hornik@ci.tuwien.ac.at
- reports that not all pdftex installations include it.
-
-2001-07-25 <karl@gnu.org>
-
- * doc/texinfo.tex (\Etitlepage): need \HEADINGSon before the
- \...aftertitlepage checks to get page numbers. Report from
- 3diff@gnu.org.
-
-2001-07-06 <karl@gnu.org>
-
- * doc/texinfo.txi: mention http://docbook2X.sourceforge.net/.
-
-2001-06-29 <karl@gnu.org>
-
- * makeinfo/makeinfo.c: make output to stdout imply --no-split for
- HTML, too.
-
- * makeinfo/html.c (html_output_head): use documentdescription if set.
- * makeinfo/insertion.h (insertion_type): new case documentdescription.
- * makeinfo/insertion.c (begin_insertion, end_insertion,
- insertion_type_names): new case for documentdescription.
- * makeinfo/cmds.c (cm_documentdescription): new fn.
- * makeinfo/makeinfo.h (document_description): new global.
- * doc/texinfo.txi: @documentdescription.
- @documentdescription implementation from patches by Will Estes.
-
-2001-06-26 <karl@gnu.org>
-
- * doc/texinfo.txi: documentdescription
- * doc/texinfo.tex: Ignore @documentdescription ... @end
- documentdescription.
-
- * doc/texinfo.txi: document sequential punctuation in @footnote is
- normal, suggested by rms.
-
-2001-06-21 <karl@gnu.org>
-
- * doc/texinfo.tex (\textfonts): call \setleading here, so that we can
- switch font sizes back and forth inside @tex with \globaldefs=1
- and not lose the leading.
-
- * doc/texinfo.txi: allow @smallbook to run without overfull or
- underfull boxes.
-
-2001-06-19 <karl@gnu.org>
-
- * doc/texinfo.tex (\imagexxx): ignore new optional args to @image.
-
- * makeinfo/html.c (html_output_head): include <h1>title</h1> at
- beginning of document.
- * makeinfo/sectioning.c (cm_top): don't include explicit links in
- HTML output, the regular code for @node will do it.
- (sectioning_html): use <h2> for chapter instead of <h1>, etc.
- * makeinfo/node.c (cm_node): do not include code to output the
- HTML <head>, we do that elsewhere now.
-
- 1999-11-26 W. L. Estes <will@fumblers.org>
- * makeinfo/insertion.c (begin_insertion): add an explicit <br>
- before beginning a <pre> block. for flushleft and flushright, use
- <div> tag with an align attribute set.
- * makeinfo/insertion.c (end_insertion): for flushleft and
- flushright, end the </div> block.
-
- * makeinfo/makeinfo.c (cm_image): new variable, alt_arg now allows
- user-supplied alt attribute value and
- ext_arg allows user-supplied extension for image files.
-
- * makeinfo/toc.c (contents_update_html): add anchors at chapter
- level entries
- (shortcontents_update_html): hrefs in shortcontents point to the
- above anchors in the detailed contents
-
- * doc/texinfo.txi: document changes to @image and the new behavior
- of shortcontents entries
-
-2001-06-14 <karl@gnu.org>
-
- * makeinfo/node.c: no need for size_t.
-
-2001-06-13 <karl@gnu.org>
-
- * texinfo.tex (\pdfmkdest): \normalturnoffactive, so refs and
- defs match.
- (\xrefX): pdf link defs no longer use @, so link refs shouldn't use @
- either. (All xrefs in pdf were failing.)
- (\mkpgn): remove redundant second definition.
-
- * texinfo.tex (\smallerfonts): new font size.
- (\smallexample, et al.): use it, in all cases, not just @smallbook.
-
- 1999-11-30 Andreas Schwab <schwab@suse.de>
- * doc/texinfo.tex (\xrefX): Turn off active characters when writing
- out the link name for pdf.
-
-2001-06-13 <karl@gnu.org>
-
- * doc/texinfo.txi: document that @smallexample is smaller in all
- page formats now.
-
-2001-06-11 <karl@gnu.org>
-
- * 4.0c.
- * util/Makefile.am: Don't need automake patch any more, with
- automake 1.4p4.
-
- * configure.in (AC_FUNC_SETVBUF_REVERSED): only needed on
- pre-sysvr3 systems that nobody has anymore? Or so Russ Allbery
- informs me ...
-
-2001-06-08 <karl@gnu.org>
-
- * makeinfo/Makefile.am (EXTRA_DIST): include texinfo.{dtd,xsl}.
-
- * util/Makefile.am: automake-1.4p3 now.
-
-2001-06-07 <karl@gnu.org>
-
- * util/texi2dvi: comment out conditional text, from Werner LEMBERG
- <wl@gnu.org>.
-
- 2001-06-02 Eli Zaretskii <eliz@is.elta.co.il>
- * info/echo-area.c (info_read_completing_internal): If there are
- no completions, say that instead of "Not complete".
-
- * configure.in (ALL_LINGUAS): add da
-
- * makeinfo/Makefile.am (pkgdata_DATA): include texinfo.xsl.
-
- * configure.in: update for autoconf 2.50.
-
-2001-06-04 <karl@gnu.org>
-
- * util/Makefile.am (EXTRA_DIST): automake-14p2.patch now.
- * util/automake-14p2.patch: rename from 14p1.
-
-2001-05-22 <karl@gnu.org>
-
- * changes from feloy for lowercase xml names, etc.
-
-2001-05-21 <karl@gnu.org>
-
- * util/Makefile.am (EXTRA_DIST): add automake-14p1.patch.
- * makeinfo/Makefile.am (pkgdata_DATA): define to install
- texinfo.dtd.
-
- 2001-05-17 Eli Zaretskii <eliz@is.elta.co.il>
- * makeinfo/makeinfo.c (cm_xref, cm_inforef): Don't allow empty
- first arguments in cross references.
-
- * makeinfo/makeinfo.c: redo --help, basic patch from ke@suse.de.
-
-2001-05-03 <karl@gnu.org>
-
- * doc/info.texi: move help-cross to be subnode of cross-refs,
- instead dangling out in space.
- * doc/info.texi: update from eli
-
-2001-05-02 <karl@gnu.org>
-
- * makeinfo/xml.c (xml_push_current_element): need to select the
- `name' member.
-
-2001-05-01 <karl@gnu.org>
-
- * configure.in: 4.0b
-
- * doc/info.texi (Help-Cross): subsection of Cross-refs.
-
- * lib/system.h (va_alist, etc.): moved from makeinfo.c.
- * makeinfo/makeinfo.c (va_alist, etc.): move to system.h
-
- * makeinfo/xml.[ch]: new files from Philippe Martin <feloy@free.fr>.
- * pretty much all files also modified for XML/DocBook output.
- * doc/texinfo.txi: minimally mention --xml and --docbook.
- * makeinfo/xml.c: convert to K&R until we can do ansi2knr.
-
- * util/texindex.c,
- * util/install-info.c,
- * info/info.c: it's 2001.
-
-2001-04-15 <karl@gnu.org>
-
- * doc/info.texi: major update from eli.
-
-2001-04-13 <karl@gnu.org>
-
- 1999-10-16 Eli Zaretskii <eliz@is.elta.co.il>
- * makeinfo/node.c (cm_node): Don't generate cross-references to
- "(DIR)".
- * makeinfo/html.c (add_link): Likewise.
-
- 1999-10-16 Eli Zaretskii <eliz@is.elta.co.il>
- * makeinfo/makeinfo.c (insert): Don't call html_output_head here.
- (add_char): Call html_output_head here...
- * makeinfo/cmds.c (cm_sp): ...and here...
- * makeinfo/toc.c (cm_contents, cm_shortcontents): ...and here...
- * makeinfo/node.c (cm_anchor): ...and here.
-
- * makeinfo/html.c (html_output_head): `free' html_title if
- expanded. Make <head> and <body> stand out.
-
-2001-04-12 <karl@gnu.org>
-
- 1999-12-26 Eli Zaretskii <eliz@is.elta.co.il>
- * makeinfo/defun.c (defun_internal): Use execute_string instead
- add_word_args to expand defined_name, type_name and category (in
- HTML mode).
-
-2001-03-29 <karl@gnu.org>
-
- * Makefile.am: simple license.
-
-2001-02-27 <karl@gnu.org>
-
- 1999-12-17 Yoshiki Hayashi <t90553@mail.ecc.u-tokyo.ac.jp>
- * info/terminal.h, info/terminal.c (term_kh, term_ke, term_kD):
- New variables to hold Home, End, Delete key sequences.
- * info/infomap.c (initialize_emacs_like_keymaps,
- initialize_vi_like_keymaps): Set them.
-
- * makeinfo/makeinfo.h,
- * makeinfo/makeinfo.c: --split-size option from Yoshiki:
- 1999-12-09 Yoshiki Hayashi <t90553@mail.ecc.u-tokyo.ac.jp>
- * makeinfo/makeinfo.h (split_size): New option.
- * makeinfo/makeinfo.c (long_options): Add split_size.
- (usage): Ditto. Suggested by Richard Y. Kim.
-
- * util/texi2dvi: -o support from Akim.
-
-2001-02-02 <karl@gnu.org>
-
- * dir-example: don't need zsh twice.
-
- From: Nishio Futoshi <fut_nis@d3.dion.ne.jp>, 02 Apr 2000.
- * doc/texinfo.txi: capitalization fixes.
- * doc/info.texi: up pointer fixes.
- * doc/texinfo.txi: installing an info file.
-
- * makeinfo/makeinfo.c: --output is for split html, not non-split.
- From: Karl Eichwalder <keichwa@gmx.net>
-
-2001-01-12 <karl@gnu.org>
-
- 1999-10-15 Eli Zaretskii <eliz@is.elta.co.il>
- * makeinfo/cmds.c (cm_sc): Don't print the warning about
- all-uppercase argument in menus under --no-headers.
-
- * makeinfo/files.c: pass O_BINARY flag to open, suggested by bfox.
-
-2001-01-11 <karl@gnu.org>
-
- * info/terminal.c [HAVE_TERMIOS_H && TCOON]: tcflow TCOOFF/TCCON
- to resume output if user presses CTRL-S at the beginning of
- things.
- [HAVE_TERMIO_H && TCXONC]: ditto.
- From Kevin Ryde <user42@zip.com.au>, 16jun2000;
- cf. emacs/src/sysdep.c.
-
-2001-01-08 <karl@gnu.org>
-
- * makeinfo/cmds.c: afivepaper, afourwide, afourlatex.
- * doc/texinfo.txi: afivepaper
-
-2001-01-05 <karl@gnu.org>
-
- * doc/info.texi: typo from: Martin Buchholz <martin@xemacs.org>.
- * doc/info.texi: typo fixes from meyering.
-
-2001-01-02 <karl@gnu.org>
-
- * makeinfo/makeinfo.c (remember_brace_1): don't assume command is
- non-null, an (erroneous) input line like \hbox to7in{ passes in a
- null.
-
- * makeinfo/toc.c: fix from jan
- * makeinfo/html.c: fix from jan for top-level references.
-
-2000-12-22 <karl@gnu.org>
-
- * makeinfo/makeinfo.c: --help changes.
- * doc/texinfo.txi: -o means the directory name for HTML output.
-
-2000-12-21 <karl@gnu.org>
-
- * doc/texinfo.txi: switch to fdl
-
- * makeinfo/html.c: doc fix.
- * makeinfo/insertion.c: no space after _ I guess.
- * makeinfo/cmds.c: no space after _ I guess.
-
- * makeinfo/html.c (nodename_to_filename_1): fix up external
- * top-node references.
-
-2000-12-20 <karl@gnu.org>
-
-* HTML table patch from Jan:
- 2000-12-19 Jan Nieuwenhuizen <janneke@gnu.org>
-
- * makeinfo/multi.c (multitable_item),
- (cm_tab): close html table columns. Also, align cell contents to
- top, which is probably the most sensible thing to do for text.
-
-
-2000-12-19 <karl@gnu.org>
-
- * makeinfo/makeinfo.c (insert_toplevel_subdirectory): try
- name.html if just name doesn't work.
-
- * doc/texinfo.txi: document html output in .html directory
- sometimes.
-
- * util/Makefile.am (EXTRA_DIST): add install-info-html.
-
- * util/texindex.c: 2000
- * util/install-info.c: 2000
- * info/info.c: 2000
- * configure.in: 4.0a
-
- * lib/system.h: include limits.h
-
- * Applied HTML splitting changes from Jan:
- 2000-11-10 Jan Nieuwenhuizen <janneke@gnu.org>
-
- * makeinfo: removed code for numbered split HTML output, removed
- SPLIT_JCN conditional.
-
- 2000-11-09 Jan Nieuwenhuizen <janneke@gnu.org>
-
- * makeinfo/html.c: prepared nodifying filename functions for
- linking not non-spit HTML documents, by adding ``#anchor'' to
- external refernces.
-
- * doc/texinfo.txi (Installing HTML info): updated doco for --html
- option, added node Installing HTML info.
-
- * util/install-info-html.in: new script. The bare minimum
- required for generating HTML index.
-
- * lib/system.h: compilation fix.
-
- 2000-11-08 Jan Nieuwenhuizen <janneke@gnu.org>
-
- * makeinfo/makeinfo.c (convert_from_loaded_file): [SPLIT_JCN]:
- overloaded already way too hairy function with logic to put split
- html output into subdirectory with basename of toplevel output
- file.
-
- * makeinfo/html.c (fix_filename): new function.
-
- 2000-11-07 Jan Nieuwenhuizen <janneke@gnu.org>
-
- * toc.c (toc_add_entry):
- (contents_update_html):
- (shortcontents_update_html): [SPLIT_JCN]: use hrefs for nodename based
- html files.
-
- * node.c (cm_node): [SPLIT_JCN]: create html filename based on
- nodename (instead of a numbered node<num>.html filename).
-
- * makeinfo/makeinfo.c (main): [SPLIT_JCN]: enable splitting of
- html output.
-
- * makeinfo/html.c
- (add_url_name,add_nodename_to_filename,nodename_to_filename): new
- functions.
-
-2000-12-15 <karl@gnu.org>
-
- * configure.in (AC_CHECK_HEADERS): add limits.h explicitly.
-
-2000-11-10 <karl@gnu.org>
-
- * dir-example: update
- * info/nodes.c: doc fixes, etc.
-
- * incorporated verbatim patch from janneke:
- 2000-04-14 <janneke@gnu.org>
-
- * applied texinfo-3.12s.jcn4 patch
-
- 1999-09-02 <janneke@gnu.org>
-
- * makeinfo/cmds.c,
- * makeinfo/insertion.c: @verbatiminclude file
- * doc/texinfo.tex: @verbatiminclude file
- * doc/texinfo.txi: @vebatiminclude file doco
- * NEWS: added @verbatiminclude to Language section
-
- 1999-09-01 <janneke@gnu.org>
-
- * makeinfo/makeinfo.c: bf: @exdent (urg6.texi) -- Rolled into 4.0
- * NEWS: added verb* to Language section
- * doc/texinfo.txi: @verb, @verbatim doco
- * doc/texinfo.tex: tricky tex-fix for @verb{<char>..<char>}
- * doc/texinfo.tex: real tab expansion for @verbatim mode
- * doc/texinfo.tex: proper start of environment, no indentation
-
- 1999-08-31 <janneke@gnu.org>
-
- * makeinfo/cmds.c:
- * makeinfo/insertion.{c,h},
- * makeinfo/makeinfo.{c,h}: redo of @verbatim, @verb{<char>..<char>}
- * doc/texinfo.tex: fixed @verb{<char>..<char>}
-
- 1999-08-30 Jan Nieuwenhuizen <janneke@gnu.org>
-
- * makeinfo/cmds.c,
- * makeinfo/insertion.{c,h},
- * makeinfo/makeinfo.{c,h}: added @verbatim (and preliminary @verb)
- support
- * doc/texinfo.tex: added @verbatim (and preliminary @verb) support
-
- 1999-08-24 Jan Nieuwenhuizen <janneke@gnu.org>
-
- * bf: empty node: makeinfo/node.c:cm_node () -- Rolled into 4.0
-
-
-2000-10-18 <karl@gnu.org>
-
- * doc/info.texi: eli update
-
-2000-09-22 <karl@gnu.org>
-
- * makeinfo/defun.c: warn if non-whitespace follows @defun'd name
- (suggestion from Akim).
-
- Installed some patches:
-
- 2000-08-04 Paul Eggert <eggert@twinsun.com>
- * makeinfo/multi.c (find_template_width):
- Don't access before start of *PARAMS.
-
- 2000-08-21 Eli Zaretskii <eliz@is.elta.co.il>
- * info/filesys.c (info_file_in_path): Reject FILENAME if it is
- empty, or ".", or "..".
-
- 2000-08-23 Eli Zaretskii <eliz@is.elta.co.il>
- * info/session.c (info_menu_or_ref_item): If the user have chosen
- menu item or xref that's identical to defentry's label, use
- defentry instead of looking for its label. Otherwise, select the
- entry whose position is the closest to the window's point, in
- case there's more than a single entry with that label.
-
-2000-09-12 <karl@gnu.org>
-
- * doc/texinfo.txi: it's 2000 now.
- * doc/texinfo.txi: document the only real (and rare) reason for not using implicit pointer
- creation.
-
-2000-09-06 <karl@gnu.org>
-
- * configure.in: test all termcap variables for existence. From
- andy@rz.uni-karlsruhe.de.
-
- * configure.in (ALL_LINGUAS): include ja.
- * lib/system.h [HAVE_IO_H]: make #include <io.h> conditional for
- BeOS. Reported by Dan Moore, dan@moore.cx.
- * configure.in (AC_CHECK_HEADERS): add io.h.
-
-2000-06-05 <karl@gnu.org>
-
- * doc/texinfo.txi: forgot to escape {}.
-
-2000-05-30 <karl@gnu.org>
-
- * info/filesys.c (is_dir_name): check all info suffixes as well as
- the compression suffixes. Fixes segmentation fault on a dir.info
- file ending after the * Menu.
-
-2000-05-28 <karl@gnu.org>
-
- * doc/texinfo.txi: Forgot {arg} in @rmacro example. From Olaf B.
-
-2000-05-27 <karl@gnu.org>
-
- * doc/txi-cs.tex: update from: Stepan Kasal <kasal@suse.cz>.
-
- * doc/Makefile.am (install-data-local): reformat warning per
- François to hopefully make it more noticeable.
-
- 2000-02-08 Eli Zaretskii <eliz@is.elta.co.il>
- * info/session.c (incremental_search): Don't retain RET when
- exiting isearch. Suggested by Hrvoje Niksic <hniksic@iskon.hr>.
-
-2000-05-22 <karl@gnu.org>
-
- * doc/texinfo.txi: pageparams -> pagesizes
-
-2000-05-18 <karl@gnu.org>
-
- * makeinfo/lang.c (cm_accent_tilde): need N in list.
- From: kama@hippo.fido.de (Karl Heinz Marbaise)
-
- * makeinfo/files.c (find_and_load): read only the number of bytes
- available in the buffer. Also, remove one-byte-at-a-time reading
- in the WIN32 case.
- From: "J. David Bryan" <dbryan@bcpl.net>
-
- * info/man.c: use eli's patch after all, we re-increment j at the
- top of the loop.
-
-2000-05-16 <karl@gnu.org>
-
- * info/man.c (clean_manpage): don't write before the beginning of
- newpage.
- (based on patch from Eli).
-
-2000-02-03 <karl@gnu.org>
-
- * doc/texinfo.txi: remove spurious space. from kaja.
-
-1999-10-12 Karl Berry <karl@gnu.org>
-
- * doc/Makefile.am (install-tex): install all txi-?? files.
-
-1999-10-01 W. L. Estes <will@fumblers.org>
-
- * makeinfo/cmds.c: dont treat @center as separate paragraph,
- use div element to output center
-
-1999-09-29 Eli Zaretskii <eliz@is.elta.co.il>
-
- * djgpp/README: Say `dir-example', not DIR.
-
- * lib/system.h (DEFAULT_INFOPATH) [__DJGPP__]: Define.
-
-1999-09-28 Karl Berry <karl@gnu.org>
-
- * configure.in,
- util/texi2dvi: version 4.0.
- * doc/texinfo.txi: New isbn.
-
-1999-09-24 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Fixes from Oleg.
-
-1999-09-20 Karl Berry <karl@gnu.org>
-
- * makeinfo/node.c: Don't write region at an anchor.
- From: Thomas Esken <esken@nmlab.informatik.fh-dortmund.de>
-
- * info/terminal.c: Only set dumb terminal if tgetent returns < 0,
- not 0.
- For HP-UP 11.
- From jeff.hull@state.co.us.
-
- * makeinfo/footnote.c: Don't translate the `Footnotes' string
- according to LANG, it should be according to
- @documentlanguage, which isn't implemented yet.
- From: Jan Nieuwenhuizen <janneke@gnu.org>
-
- * doc/texinfo.txi: @end direntry from kama.
-
-1999-09-19 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: \ninett is now \smalltt.
-
- * doc/texinfo.txi: arnold changes
-
- 1999-09-03 Akim Demaille <akim@epita.fr>
- * texi2dvi (getopt): batch has to be assigned `eval', not `echo'.
- (bibtex): Launch BibTeX also when the LOG file complains that
- there are no BBL file.
-
- * doc/texinfo.txi: Document that @anchor ignores spaces.
-
- * makeinfo/cmds.c (cm_shyph): remove, &shy; is not supported in
- browsers.
- From: Thomas Esken <esken@nmlab.informatik.fh-dortmund.de>
-
- * makeinfo/makeinfo.c: Don't crash if current_indent = 0.
- From: Jan Nieuwenhuizen <janneke@gnu.org>
-
- * makeinfo/makeinfo.c: Avoid blank lines between @menu entries.
- * configure.in: 3.12t
-
- 1999-08-31 Eli Zaretskii <eliz@is.elta.co.il>
- * info/info.c (info_short_help): Document --apropos.
-
-1999-09-18 Karl Berry <karl@gnu.org>
-
- * makeinfo/html.c (html_output_head): use text for <title>, not
- html markup. From François.
- * makeinfo/makeinfo.c (text_expansion): new routine.
- * makeinfo/cmds.c (cm_settitle): don't expand the title here,
- we'll do it later.
-
- * makeinfo/makeinfo.h (text_expansion): declare.
-
- * info/indices.c,
- * info/infodoc.c,
- * info/session.c,
- * info/footnotes.c: translate errors.
- * info/info.h: Use `' instead of "" in errors.
-
-1999-09-06 Karl Berry <karl@gnu.org>
-
- +1999-08-24 Jan Nieuwenhuizen <janneke@gnu.org>
- * makeinfo/node.c:cm_node: don't compare current_node when null.
-
- 1999-08-23 W. L. Estes <will@fumblers.org>
- * makeinfo/node.c (cm_node): write <a name=> tags even
- ifusing --no-headers
-
- * configure.in: ospeedlib -> trylib
- From: Andreas Schwab <schwab@suse.de>
-
- * makeinfo/makeinfo.c (read_command): add explicit 0 to return if
- enclosure command. From: Andreas Jaeger <aj@arthur.rhein-neckar.de>.
-
-1999-08-19 Karl Berry <karl@gnu.org>
-
- * configure.in: add missing quotes, logic in new termcap library
- check.
-
-1999-08-17 Karl Berry <karl@gnu.org>
-
- * makeinfo/multi.c,
- * makeinfo/sectioning.c,
- * makeinfo/node.c,
- * makeinfo/macro.c: omit unused vars
- * info/session.c (info_goto_invocation_node): omit unused decl.
-
- * configure.in: Check for extra termlib variable necessary on
- HP-UX 9.
- From: Olaf Bachmann <obachman@mathematik.uni-kl.de>
-
- 1999-08-16 Andreas Schwab <schwab@suse.de>
- * info/terminal.c (terminal_initialize_terminal): Try tcgetattr
- and cfgetospeed in preference to TIOCGETP.
- (original_tchars, original_ltchars): Define them only if needed.
-
-1999-08-16 Karl Berry <karl@gnu.org>
-
- * info/infodoc.c (create_internal_info_help_node): rename arg.
- (info_find_or_create_help_window): avoid deref of null eligible.
-
- * info/terminal.c (TIOCGETP, TIOCGETC, TIOCGLTC) [alpha && linux]:
- #undef. Useless stubs are present.
-
-1999-08-15 Karl Berry <karl@gnu.org>
-
- * info/nodes.c: Remove reference to nonexistent RFC for Info
- files.
-
-1999-08-11 Eli Zaretskii <eliz@is.elta.co.il>
-
- * info/nodes.c (info_find_file_internal): If the file's contents
- were gc'ed since last time it was loaded, reload the file.
-
-Wed Aug 11 06:42:47 1999 Karl Berry <karl@gnu.org>
-
- * doc/Makefile.am (EXTRA_DIST): add txi-pt.tex from Lalo.
-
-Mon Aug 9 16:28:18 1999 Karl Berry <karl@gnu.org>
-
- * util/texi2dvi: Support preloaded texinfo.tex, from Stephen.
-
- * makeinfo/makeinfo.c (add_char): restore ugly check for first
- character being <.
-
- * makeinfo/cmds.c (cm_kbd): Increment in_fixed_width_font for
- html.
-
- * doc/texinfo.txi: effect not affect
-
- * makeinfo/makeinfo.c: Rearrange help.
-
- * makeinfo/toc.c: Cast %* arguments to (int) to placate gcc
- -Wformat.
-
-Fri Aug 6 13:03:14 1999 Karl Berry <karl@gnu.org>
-
- * util/install-info.c: Hardwire the File: dir, Node: top part of
- the skeleton dir file.
- Report from: Stanislav Brabec <utx@k332.feld.cvut.cz>
-
- * info/Makefile.am (BUILT_SOURCES): rm -f $(BUILT_SOURCES), a
- kludge.
-
- 1999-07-28 Karl Eichwalder <ke@gnu.franken.de>
-
- * makeinfo/makeinfo.c: Fix help string (-o).
-
- 1999-07-30 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/makeinfo.c (cm_uref, cm_email): Don't collapse -- and
- `` in the URL part of the reference.
-
- 1999-08-03 Eli Zaretskii <eliz@is.elta.co.il>
-
- * util/install-info.c (main): For entries given on command line,
- set entry_sections and entry_sections_tail members to NULL, and
- set text_len member to the entry length. After processing the
- Info file, update the entry_sections pointers of all entries that
- came from the command line.
-
- * util/texindex.c (sort_offline, sort_in_core): use off_t rather
- than long.
- Found on FreedBSD 2.2.8 by "Trond Endrestol" <endrestol@hotmail.com>.
-
-Mon Jul 19 17:16:46 1999 Karl Berry <karl@gnu.org>
-
- * configure.in: 3.12n
-
- * makeinfo/makeinfo.c (add_char): Don't insert <p> if we're in
- @html.
-
- * makeinfo/html.c (add_escaped_anchor_name),
- * makeinfo/toc.c (toc_add_entry): use URL_SAFE_CHAR.
- * makeinfo/makeinfo.h (HTML_SAFE, URL_SAFE_CHAR): new macros.
-
-Sun Jul 18 14:47:40 1999 Karl Berry <karl@gnu.org>
-
- * dir-example: Add bzip2.
-
- * configure.in: 3.12m.
-
- * doc/texinfo.txi (@afourlatex,@afourwide): add to command list.
-
-1999-07-17 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/makeinfo.c (cm_xref): Don't collapse `` and -- while
- expanding node names. Generate a terminating period for
- @pxref, when it has more than a single argument.
-
- * makeinfo/index.c (cm_printindex): Don't collapse `` and -- while
- expanding node names.
-
-Sat Jul 17 16:33:45 1999 Karl Berry <karl@gnu.org>
-
- * 3.12l.
-
- * doc/texinfo.txi: @alias, @definfoenclose, etc.
-
- * util/texindex.c (indexify): error message instead of abort(2)
- when no page number.
-
-Fri Jul 16 18:00:26 1999 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Overfull boxes, help2man, etc.
-
- * util/Makefile.am (EXTRA_DIST): texi-outline.gawk is really
- outline.gawk, add fixref.gawk and prepinfo.awk and
- texi-docstring-magic.el.
-
-Thu Jul 15 18:57:54 1999 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: .fmt, etc.
- * doc/texinfo.txi: More macro docs, etc.
-
-Wed Jul 14 19:58:47 1999 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Give good quote.
-
- * util/Makefile.am (EXTRA_DIST): add texi-outline.gawk.
-
- From: kama@hippo.fido.de (Karl Heinz Marbaise)
- * makeinfo/toc.c (contents_update_html): go back to start level.
- * doc/texinfo.txi: deftypeop
-
- From: "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu>
- * makeinfo/toc.c (toc_add_entry): don't assume sprintf return type
- is int.
- * makeinfo/sectioning.c (insert_and_underscore): declare more
- unsigned char *.
- * makeinfo/macro.h (itext_info, itext_size): remove declarations,
- they're defined static.
- * makeinfo/makeinfo.c: Split up help string even more.
-
-Tue Jul 13 17:16:18 1999 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Document @rmacro.
- * makeinfo/macro.c (cm_rmacro): new command to do @allow-recursion
- by default.
- (define_macro): split off from cm_macro.
-
- * makeinfo/macro.h (cm_rmacro): declare.
- * makeinfo/macro.h (delete_macro): do not need to export.
- * makeinfo/cmds.c (rmacro): new command.
-
- * makeinfo/html.c,
- * makeinfo/toc.c,
- * makeinfo/lang.c,
- * makeinfo/makeinfo.c: Use strchr instead of member.
-
-Mon Jul 12 08:01:19 1999 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: document this.
- * makeinfo/macro.c (apply): warn if \ in macro body is not
- followed by a parameter name or \, instead of silently
- accepting it, for compatibility with TeX.
-
- * makeinfo/macro.c: Doc fix.
-
-Sun Jul 11 12:49:50 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/macro.c (cm_macro): do @quote-arg implicitly if single
- argument to macro.
- * doc/texinfo.txi: Document this.
-
- * doc/texinfo.txi (Smallcaps): Document makeinfo warning if arg is
- all uppercase.
- * makeinfo/cmds.c (cm_sc): warn if arg is all upper (suggested by
- Jim Meyering).
-
- * makeinfo/cmds.c (cm_var): warn if argument contains any of ,[]()
- which are unlikely to be allowable in real variable names.
- Suggested by rms.
-
- * makeinfo/makeinfo.h (member): remove weird masking macro.
-
- * doc/texinfo.txi: Probably ok to indent @example.
-
- * configure.in: 3.12k.
-
- * makeinfo/html.c (add_escaped_anchor_name): Cast to unsigned char
- for 8-bit chars. From Yoshiki.
-
- * makeinfo/makeinfo.c: complain -> warn for sake of <80 chars.
-
-1999-07-09 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/multi.c (multitable_item): Quote the value of align=
- property.
-
- * makeinfo/defun.c (defun_internal): Ditto.
-
- * makeinfo/cmds.c (cm_center): Ditto.
-
- * makeinfo/toc.c (toc_add_entry): New argument ANCHOR; all callers
- changed. In HTML mode, expand NODE_NAME, or use ANCHOR, if
- non-NULL, and save it together with the TOC name in the name
- member of the TOC entry.
- (toc_add_entry, toc_find_section_of_node): Add a warning in a
- comment that the NODE argument must be unexpanded.
- (contents_update_html): Terminate the TOC entry with </a>.
-
- * makeinfo/sectioning.c (sectioning_html): If the sectioning
- command is outside any node, generate explicit anchor and pass it
- to toc_add_entry.
-
- * makeinfo/node.c (expand_node_name): Now external instead of
- static.
- (cm_node): Output expanded node name in the navigation bar.
-
- * makeinfo/node.h: Declare expand_node_name.
-
- * makeinfo/index.c (cm_printindex): Produce valid HTML links, even
- if index->node is NULL or empty. Fix format of index under
- --no-headers.
-
-Fri Jul 9 18:09:28 1999 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Pair @end html properly. From Olaf B.
-
- * doc/Makefile.am (EXTRA_DIST): add txi-nl.tex from Marcel van der Boom
- <marcel@virtualprojects.org>.
-
- * doc/txi-en.tex: Doc fix.
-
-Wed Jul 7 16:07:44 1999 Karl Berry <karl@gnu.org>
-
- * doc/Makefile.am: Doc fix.
-
- * configure.in (txi_CHECK_DECLS): call this new macro (in
- acinclude.m4).
- * acinclude.m4: new file.
-
-Tue Jul 6 19:12:37 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/insertion.h,
- * makeinfo/insertion.c,
- * makeinfo/cmds.c,
- * makeinfo/defun.c: new command @deftypeop.
- Suggestion from: booth@us.ibm.com.
-
-1999-07-05 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/makeinfo.c (cm_value): Don't convert quotes and dashes
- in the argument of @value, since @set doesn't.
-
-Mon Jul 5 16:43:23 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/insertion.c (get_item_function): return "@ " rather
- than "@". (command_needs_braces): new fn.
- (cm_item): handle @itemize markers that don't take braces.
- Bug reported by Stephen, prototype fix from Yoshiki.
-
- * doc/texinfo.txi (Contents): @contents ignored at beginning when
- outputting to stdout.
- Installed this.
->1999-05-02 Eli Zaretskii <eliz@is.elta.co.il>
-> * makeinfo/toc.c (cm_contents, cm_shortcontents): If writing to
-> stdout, output the contents and short contents immediately, and
-> assign NULL to contents_filename and shortcontents_filename, so
-> that toc_update won't try to rewrite stdout.
-
-
- * makeinfo/sectioning.c (sectioning_html): declare starting_pos
- and ending_pos as unsigned char * since they're based on
- output_paragraph.
-
- * makeinfo/insertion.c: Cast output_paragraph to char * for sake
- of strncmp prototype (on IRIX 4).
- From: "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu>
-
-
- * info/man.c (get_manpage_contents): restore previous (default)
- SIGCHLD handler so the pclose when gunzipping info files
- doesn't fail with `No child processes' (because
- reap_children reaped it).
- From: Josip Rodin <jrodin@public.srce.hr>
- njs@uclink4.berkeley.edu, 38063-forwarded@bugs.debian.org
-
-Fri Jul 2 14:26:22 1999 Karl Berry <karl@gnu.org>
-
- From gildea:
- * info/terminal.c (TIOCGETC) [M_XENIX && TIOCGETC]: #undef.
- * info/session.c (strncasecmp) [M_XENIX]: declare.
-
-Thu Jul 1 19:25:12 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/makeinfo.c (cm_value): erroneous capitalization in
- error message.
-
- * makeinfo/insertion.c (end_insertion): @end html should turn html
- escaping back on. From esr.
-
- * makeinfo/makeinfo.c (cm_pxref): No period needed to terminate
- cross-reference.
-
-Sun Jun 13 16:12:41 1999 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Remove some more node links.
-
-Sat May 1 16:01:36 1999 Karl Berry <karl@gnu.org>
-
- * info/info.c: Single space for option indent to match others.
-
- * makeinfo/makeinfo.c,
- * util/texindex.c,
- * util/install-info.c: Must indent option list for help2man.
-
- * info/infodoc.c [HELP_NODE_GETS_REGENERATED]: set to true.
- (info_internal_help_text): put moving cmds first so they know how to go
- forward in the help window.
- (create_internal_info_help_node): can't always quit help with C-x 0.
- (info_find_or_create_help_window): pass !one_window_p.
-
-1999-04-29 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
-
- * makeinfo/makeinfo.c (cm_xref): Don't collapse --- to -- etc.,
- in references.
-
-Mon Apr 26 16:41:55 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/node.c (validate): arrange to translate the reference type.
- Report from Sergio.
-
- * makeinfo/makeinfo.c (validate): should not be declared here.
-
- * makeinfo/index.c (cm_printindex): <ul compact> is not
- translatable. From Yoshiki.
-
- * doc/Makefile.am (EXTRA_DIST): include new txi-es.tex from Adrian
- Perez Jorge <alu1415@csi.ull.es>. And new txi-en.tex.
-
-Sun Apr 25 16:08:27 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/cmds.c (cm_settitle): don't output html head here.
-
- * makeinfo/makeinfo.c: Move html routines to html.c.
- * makeinfo/Makefile.am (makeinfo_SOURCES): add html.[ch].
- * makeinfo/html.[ch]: new files.
-
- * makeinfo/makeinfo.c: Restore -- in --output line. From Sergio.
-
-1999-04-23 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
-
- * makeinfo/cmds.c (cm_center): Recover the previous state when
- called with --html.
-
-1999-04-24 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/cmds.c (cm_bye): Flush the output, in case some command
- produced it immediately before @bye.
-
- * makeinfo/toc.h (TOC_ENTRY_ELT): New member: containing_node.
-
- * makeinfo/toc.c (lots_of_stars): New variable.
- (toc_add_entry): Add a new parameter node_name; all callers
- changed. Record the name of the node containing the section.
- (toc_find_section_of_node): New function.
- (toc_free): Free the new containing_node member.
- (contents_update_info, shortcontents_update_info): Underline the
- title with stars. Output two empty lines after the TOC.
- (contents_update): Fix off-by-one error in writing the rest of the
- file after updating the TOC.
-
- * makeinfo/index.c (cm_printindex): Save and restore line_number
- and input_filename. Don't output the "* Menu" header when
- --no-headers is in effect. Make the fake node name for index
- entries that are outside any node be more explanatory, and emit an
- error for such index entries. Under --no-headers, output a
- reference to the section name, as returned by a call to
- toc_find_section_of_node, instead of a node name.
-
-1999-04-24 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/index.c (struct index_elt): Add a new member
- entry_text.
- (free_index, make_index_entries_unique): Free the entry_text
- member.
- (index_add_arg): Don't HTML-escape the index entry here.
- (index_add_arg): Initialize the entry member to NULL. Put the
- entry text into the entry_text member.
- (sort_index): Expand the index entries as if in non-HTML mode.
- Put the expansion into the entry member of struct index_elt.
- (cm_printindex): Allocate the line[] array in Info mode only.
- In HTML mode, escape and expand the original index entry text,
- don't use the results of expansion inside sort_index.
-
- * makeinfo/cmds.c (cm_r): Undo the effect of @code while printing
- one of the "code"-style indices in HTML mode.
-
-1999-04-23 Eli Zaretskii <eliz@is.elta.co.il>
-
- * info/infomap.c (initialize_vi_like_keymaps): Bind DEL in echo
- area to ea_rubout, except for __MSDOS__.
-
- * doc/info-stnd.texi (Node Commands): Document that `I' only
- produces its effect for programs documented in the current Info
- file. Tell them to invoke `I' from DIR if it doesn't work from
- current place.
-
-Thu Apr 22 09:59:02 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/makeinfo.c,
- * info/info.c: Rewrite help string a little more.
-
- * doc/info-stnd.texi: Change chapter name to match node name,
- * other changes.
-
- * makeinfo/cmds.c (cm_bye): call discard_braces.
-
- * makeinfo/cmds.c (cm_settitle): output more meta and link tags.
-
- * configure.in (ALL_LINGUAS): add eo.
-
- * util/install-info.c [STRIP_DOT_EXE]: #if not #ifdef
-
-Wed Apr 21 19:40:51 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/makeinfo.c: Doc fix.
-
- * makeinfo/sectioning.c (insert_and_underscore): do not output
- html anchor here.
- * makeinfo/node.c (cm_node): do anchor at node name not sectioning
- title.
-
- * makeinfo/node.c: Newlines on node lines.
-
-Tue Apr 20 13:02:46 1999 Karl Berry <karl@gnu.org>
-
- * info/man.c (get_manpage_contents): freopen stdin and stderr to
- /dev/null rather than closing them. http://bugs.debian.org/14787
-
-Mon Apr 19 14:12:09 1999 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Document possibility of `titlepage' stuff for
- plain text output using @ifinfo.
- Report from: Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at>.
-
- * makeinfo/cmds.c: Screw that.
- * doc/texinfo.txi: Fix up frontmatter a bit.
-
- * dir-example: Spaces not tabs.
- * dir-example (R FAQ): add.
-
- * makeinfo/makeinfo.c: Lowercase makeinfo in first line.
-
- * doc/info.texi (The node reached...): is a @subsection not a
- @subsub.
-
- * doc/texinfo.txi: Document option rename.
- * makeinfo/makeinfo.c: Rename option to commands-in-node-names.
-
- * makeinfo/index.h (index_compare_fn): declare.
- * makeinfo/index.c (index_element_compare): call through new
- variable index_compare_fn, and set it to strcoll if
- @documentlanguage was used and LANG != en.
- #include lang.h.
-
-Sat Apr 17 14:46:47 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/insertion.c (current_item_function, cm_item): rewrite
- to skip all conditionals.
- (cm_item): use current_item_function rather than current_insertion_type
- to check what to use for @item, so @ifset etc. can be used around
- @items.
- Report from: "W. L. Estes" <wlestes@br20920.uncg.edu>.
-
- * makeinfo/makeinfo.c (current_insertion_type): no need to
- declare.
-
- * makeinfo/makeinfo.c: Add examples to help message.
-
- * util/texindex.c (usage): Rearrange --help, avoid extra newline.
-
- * info/info.c: Sort --help in the usual place.
-
- * makeinfo/makeinfo.c: Reindent help message, rename
- --expensive-validation to --commands-in-nodes.
-
-Fri Apr 16 17:53:48 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/cmds.c (cm_ignore_arg): new routine.
- (cm_ignore_line_no_op): remove, can use cm_ignore_line.
-
-Tue Apr 13 16:45:39 1999 Karl Berry <karl@gnu.org>
-
- * doc/info-stnd.texi: Frontmatter changes.
-
- * doc/info.texi: Remove advanced remark in first node.
-
- * doc/texinfo.txi: Texinfo.tex does macros now. From Eli.
-
- * doc/texinfo.txi: Document @w{ } to produce an unbreakable space.
-
- * util/texi2dvi: Update from Akim, avoid Solaris ucb echo weirdness.
-
- * info/infodoc.c: Parenthesize function calls, don't depend on
- gettext being there. Report from: Doug Semler
- <doug@seaspace.com>.
-
-1999-04-12 Eli Zaretskii <eliz@is.elta.co.il>
-
- * info/infomap.c (initialize_vi_like_keymaps): Initialize the echo
- are keymap *before* it is filled up with keys.
-
-1999-04-10 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/macro.c (execute_macro): Reset the line number to where
- the macro argumenst begin, before executing its expansion.
-
- * makeinfo/makeinfo.c (cm_xref): Expand the name of arguments
- before writing them in HTML mode.
- (handle_menu_entry): Expand the name of the gleaned node before
- writing it in HTML mode.
-
- * makeinfo/sectioning.c (sectioning_html): Expand the name of the
- current node when producing the <a name=... anchor.
-
- * makeinfo/node.c (cm_node): Expand the name of node and its links
- before outputting them in HTML mode.
-
- * makeinfo/index.c (cm_printindex): Expand node names to which the
- index points.
-
- * makeinfo/footnote.c (cm_footnote): Call execute_string instead
- of add_word_args, since current_node needs to be expanded. Expand
- the name of the Footnotes node before calling
- remember_node_reference.
-
- * makeinfo/tests/node-expand.txi: New test, for testing how node
- names are expanded in @node, @menu, cross-references, and
- indices.
-
- * makeinfo/makeinfo.c (add_char): If we output <p>, adjust the
- affected brace positions by 3, so cm_xxx functions get what they
- expect in START and END.
- (insert_html_tag): Likewise.
-
- * makeinfo/cmds.c (cm_sc): Remove the kludge that looks for the
- beginning of <small>, it is no longer needed.
-
- * makeinfo/macro.c (cm_definfoenclose): Don't stop at the first
- blank after the second comma: the blank may belong to the second
- delimiter.
-
- * makeinfo/tests/htmlpara.txi: New test, for the commands affected
- by the <p> output at paragraph beginning.
-
- * makeinfo/makeinfo.h (expensive_validation): New option.
-
- * makeinfo/makeinfo.c (long_options): Add expensive_validation.
- (usage): Likewise.
-
- * makeinfo/node.c (find_node): If NAME isn't found verbatim, try
- expanding it and every node name in tag table, before comparing
- them, but only if expensive_validation is non-zero.
- (find_node_reference): Likewise.
- (cm_node): Don't expand node name and its links here.
- (validate_file): If direct comparisons fail, try expanding the
- comparees before giving up, unless expensive_validation is zero.
- Switch the order of NODE and UP in error message about a lacking
- menu item.
-
-1999-04-07 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/index.c (cm_printindex): Don't output "Menu" header.
-
- * makeinfo/node.c (get_node_token): Collapse whitespace in node
- names.
- (glean_node_from_menu, expand_node_name): Likewise.
-
- * info/infomap.c (initialize_vi_like_keymaps): Bind all the 256
- keys to ea_insert, like the Emacs-like case does.
-
- * doc/info-stnd.texi (Invoking Info): Document support for files
- compessed with bzip2, and the --vi-keys option.
- (Many places): Document key bindings under --vi-keys.
-
-1999-04-06 Eli Zaretskii <eliz@is.elta.co.il>
-
- * info/session.c (info_last_node, info_first_node): With a numeric
- argument, go to ARGth node counting from the beginning. Skip
- anchor tags when looking for the target node--the last tag can be
- an anchor, for example.
- (last_search_direction, last_search_case_sensitive): New
- variables.
- (last_search_for_string): Remove variable.
- (info_search_internal): Always move point by one notch before
- beginning the search, to avoid complications in repeated search
- commands. When looking for the next node tag, skip any anchor
- tags.
- (info_search_1): Accept a 5th argument ASK_FOR_STRING, and only
- prompt for search string if it's non-zero. All callers changed.
- Look for the COUNTth occurence of the string.
- (info_search, info_search_backward, info_search_case_sensitively):
- Set last_search_direction and last_search_case_sensitive.
- (info_search_next, info_search_previous): New commands, repeat
- last search in the same or reverse direction without prompting the
- user for the string.
-
- * info/infomap.c (initialize_emacs_like_keymaps): Bind `C-x n' to
- info_search_next and `C-x N' to info_search_previous.
- (initialize_vi_like_keymaps): Bind `n' to info_search_next and `N'
- to info_search_previous.
-
-1999-04-04 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/makeinfo.c (get_rest_of_line): Don't expand non-macros,
- so that macro-expanded output will still have them.
-
-1999-04-03 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/node.c (cm_node): Expand the node name and its links
- completely before using them, so that they could use e.g. @value{}
- etc.
-
- * makeinfo/makeinfo.c (replace_with_expansion): Don't
- remember_itext if we are executing_string.
-
- * makeinfo/sectioning.c (sectioning_html): Remove #ifdef
- HAVE_MACROS. Don't call me_execute_string if already
- executing_string.
-
- * makeinfo/toc.c (toc_add_entry): Expand macros in TOCNAME right
- here, since the macro can be later redefined.
- (contents_update_html, contents_update_info,
- shortcontents_update_html, shortcontents_update_info): Use stdio
- functions for output instead of add_word etc.
- (rewrite_top, contents_update, shortcontents_update, toc_update):
- New functions, replace the TOC placebo with the actual TOC.
- (cm_contents): Output a placebo instead of writing the TOC.
- (cm_shortcontents): Output a placebo instead of writing the short
- TOC.
-
- * makeinfo/makeinfo.c (convert_from_loaded_file): Call toc_update
- if appropriate.
-
- * makeinfo/sectioning.c (cm_top): Don't output the HTML header
- here, since the Top node might be preceeded by other commands,
- like @contents.
-
- * makeinfo/cmds.c (cm_settitle): Output the HTML header here.
-
- * makeinfo/node.c (set_current_output_filename): New function,
- saves the name of the actual file we are now writing, including in
- the case of split-HTML output.
- (cm_node): Call it to record the name of output file.
-
- * makeinfo/footnote.c (free_pending_notes): Re-initialize
- current_footnote_number to 1.
-
- * makeinfo/index.c (index_add_arg): Remove redundant xstrdup.
- (cm_printindex): Don't free index->entry: it is freed in
- free_index, if, e.g., there's more than one file to convert.
-
- * makeinfo/makeinfo.c (init_internals): Call toc_free.
-
-Mon Apr 5 16:53:33 1999 Karl Berry <karl@gnu.org>
-
- * doc/Makefile.am: Texmf_{texinfo,dvips}: dirs not files. From
- Kurt Hornik.
-
-Wed Mar 31 13:50:09 1999 Karl Berry <karl@gnu.org>
-
- * Pretest 3.12h.
-
- * makeinfo/node.c (last_node_p): new fn.
- (split_file): call it, instead of assuming no more entries means
- no more nodes. (Loses with anchors.)
- Report from: "Oleg S. Tihonov" <ost@benetnash.ffke-campus.mipt.ru>.
-
- * makeinfo/index.c (sort_index): whether an entry is @code or not
- depends on the element, not the index, because of synindex.
-
- * doc/Makefile.am (install-tex): Must use $(TEXMF), do
- $(mkinstalldirs) on tex dirs.
- From: Nathan Sidwell <nathan@acm.org>.
-
- * doc/texinfo.txi: Document need for blank line before @image if
- you want space.
-
- * Install changes from Eli:
-
- 1999-03-09 Eli Zaretskii <eliz@is.elta.co.il>
-
- * info/infodoc.c (info_internal_help_text): Remove hard-wired key
- names, use %-10s instead.
- (info_help_keys_text): New variable, holds two variants of keys
- that invoke basic commands, indexed by vi_keys_p.
- (create_internal_info_help_node): Use info_help_keys_text[].
-
- * info/window.c (build_message_buffer): Support more general
- format strings, like %-10.15s, %+4d etc.
-
- * info/infomap.c (initialize_vi_like_keymaps): Bind ESC-h, ESC-t,
- C-x LFD and C-x RET.
-
- 1999-03-08 Eli Zaretskii <eliz@is.elta.co.il>
-
- * util/install-info.c (output_dirfile): Sort the entries and
- output them in alphabetic order. Output each entry only in those
- sections where it belongs.
- (parse_input): New function, code moved from main. Process
- sections and entries in a single loop, and record with each entry
- the list of sections where that entry belongs. Record each entry
- separately, not all of them together as a single block.
- (parse_dir_file): New function, code moved from main.
- (main): Move code to parse_input and parse_dir_file. Put the new
- entries only into sections where they belong.
- (compare_entries_text): New function, called when sorting new
- entries.
-
- * info/infomap.c (initialize_vi_like_keymaps): New function. Bind
- keys a-la Less, including new functions from session.c below.
- (initialize_emacs_like_keymaps): New function, with the guts of
- initialize_info_keymaps.
-
- * info/session.c (info_scroll_forward, info_scroll_backward): If
- default_window_size is non-negative, use it as the default number
- of lines to scroll.
- (info_scroll_forward_set_window, info_scroll_backward_set_window,
- info_down_line, info_up_line, info_scroll_half_screen_down,
- info_scroll_half_screen_up, info_search_backward): New functions,
- for Less-like look and feel.
-
-Tue Mar 30 16:44:53 UTC 1999 Karl Heinz Marbaise <kama@hippo.fido.de>
-
- * doc/txi-de.tex:
- - added additional putwordin
- * doc/texinfo.txi:
- - changed defivar into deftypeivar
- * makeinfo/sectioning.c:
- - changed output of anchors based on problems with ie.
- * makeinfo/defun.c:
- - output in HTML mode changed to be on previous state.
- * makeinfo/insertion.c:
- - fixed up HTML output for deftypeivar.
-
-1999-03-30 Akim Demaille <demaille@inf.enst.fr>
-
- * texi2dvi ($tmpdir): Avoid security holes.
-
-Fri Mar 26 17:06:55 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/cmds.c (cm_exdent): rewrite to preserve blank lines.
- Bug from: "Oleg S. Tihonov" <ost@benetnash.ffke-campus.mipt.ru>.
-
- * makeinfo/cmds.c (cm_exdent): arg is in `roman'.
-
-Thu Mar 25 16:21:27 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/insertion.c,
- * makeinfo/defun.c,
- * makeinfo/insertion.h (insertion_type): add deftypeivar.
- * makeinfo/defun.h (cm_defun): declare here.
- * makeinfo/cmds.c (defun.h): include.
- * doc/texinfo.txi (deftypeivar[x]): new commands.
- * makeinfo/cmds.c (deftypeivar[x]): new commands.
-
- * makeinfo/cmds.c (cm_exdent): save, set and restore
- in_fixed_width_font.
-
- * doc/texinfo.txi (uref): rewrite.
-
- * info/info.c (info_short_help): more spaces for new help2man.
-
- * makeinfo/node.c (cm_node): output node name in html, change
- navbar punctuation.
-
- * doc/texinfo.5: Fix URL.
-
- * Finally installed this:
- 1998-05-01 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
- * makeinfo/makeinfo.c (convert_from_loaded_file): When the file
- contains no @setfilename then always look for \input (not
- \include) in the first line and skip that. Don't skip the first
- line if no \input was found.
-
-1999-03-24 Akim Demaille <demaille@inf.enst.fr>
-
- * configure.in (AC_HEADER_STAT): Added.
- * util/texindex.c (main): Check infiles are not directories.
-
-1999-03-24 Akim Demaille <demaille@inf.enst.fr>
-
- * texi2dvi (index_files): Don't use `!' to run sed -e "s!foo$!!"
- since the shell will interpret `$!'.
-
-Tue Mar 23 16:41:08 1999 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi (uref): rewrite to make HTML output read more
- nicely. From Tim S.
-
- * info/info.c (info_short_help): include examples.
-
- * makeinfo/makeinfo.c (close_paragraph_with_lines): move earlier
- so can be static.
-
- * makeinfo/sectioning.c,
- * makeinfo/node.c,
- * makeinfo/makeinfo.h,
- * makeinfo/makeinfo.c,
- * makeinfo/macro.c,
- * makeinfo/insertion.c,
- * makeinfo/cmds.c,
- * makeinfo/files.c,
- * makeinfo/footnote.c (size_of_input_text): rename to
- input_text_length.
-
- * makeinfo/makeinfo.c (cm_xref): make wrong-char-following a warning.
- (replace_with_expansion): remove bogus conditional that was duplicated
- unconditionally.
- From: Hans-Bernhard Broeker <broeker@physik.rwth-aachen.de>
-
-Mon Mar 22 14:39:59 1999 Karl Berry <karl@gnu.org>
-
- * doc/Makefile.am (install-tex): parenthesize.
-
- * Makefile.am (dist-hook): remove, it uses hard links so we chmod
- all our sources.
-
- * makeinfo/toc.c,
- * makeinfo/defun.c,
- * makeinfo/sectioning.c: Use _, not N_.
-
- * info/Makefile.am (ginfo_SOURCES): include $(BUILT_SOURCES)
- explicitly.
-
- * makeinfo/lang.c,
- * makeinfo/lang.h: ISO-639 updates.
-
- * makeinfo/cmds.c: exampleindent changes.
-
- * info/info.c (info_short_help): reformat somewhat, and don't say
- info info options any more.
-
- * doc/info-stnd.texi (Invoking): make description format somewhat
- more standard.
-
- * info/infomap.c (Initialize_info_keymaps): do ea_insert bindings
- first so subsequent bindings (e.g., for ESC) override.
-
-Sun Mar 21 17:31:00 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/multi.c (output_multitable_row): remove unnecessary
- trailing whitespace from output, output blank row for blank @item.
-
- * doc/texinfo.txi: Remove extra @item in language multitable.
-
-Sat Mar 20 12:30:25 1999 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Update language table from ISO 639:
- http://www.iro.umontreal.ca/contrib/po/iso-639. From kama.
-
- * doc/texinfo.txi (exampleindent): document.
-
- * doc/texinfo.txi (Creating an Info File): use this for the node name.
-
- * doc/info.texi: Make Texinfo references consistent, etc.
-
-1999-03-18 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
-
- * makeinfo/makeinfo.c (set_default_indentation_increment): new
- routine.
- * makeinfo/insertion.c (cm_exampleindent): new routine.
- Call set_default_indentation_increment.
-
-Mon Mar 15 17:06:15 1999 Karl Berry <karl@gnu.org>
-
- * info/Makefile.am (ginfo_SOURCES): Remove doc.c and funs.h in
- hopes they then won't be distributed. Report from Andreas.
-
- * makeinfo/cmds.c (cm_sp): close paragraph and disable filling to
- produce blank lines in info.
- Report from: Michael Vanier <mvanier@bbb.caltech.edu>.
-
- * doc/texinfo.txi: Attempt to get Edition info on one line.
-
- * makeinfo/makeinfo.h (cr_or_whitespace): use whitespace and check
- for \r. (skip_whitespace_and_newlines, command_char): use it.
- Report from bonzini@gnu.org.
-
- * makeinfo/cmds.c (cm_center): save and restore filling_enabled,
- so @center can be used inside an @example. Bug from kama.
-
-1999-03-13 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/footnote.c (cm_footnote): In separate footnote style,
- generate a reference to "foo-Footnote-NN" for each footnote.
- (output_pending_notes): In separate footnote style, generate an
- anchor "foo-Footnote-NN" for each footnote, so that the link in
- the parent node would lead directly to the footnote.
-
- * info/footnotes.c (make_footnotes_node): Recognize the new
- "foo-Footnote-NN" style of footnote references.
-
-1999-03-09 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * configure.in (AC_OUTPUT): Remove command to create po/Makefile,
- already done by AM_GNU_GETTEXT.
-
-Tue Mar 9 17:48:46 1999 Karl Berry <karl@gnu.org>
-
- * Makefile.am (dist-hook): make distribution directory writable.
-
- * Installed these changes:
-
- 1999-03-04 Akim Demaille <demaille@inf.enst.fr>
-
- * texi2dvi (bibtex): Allow several runs of bibtex, this can be
- used if bibentries reference other bibentries. Moreover, looking
- for `Citation' in the LOG should be enough to avoid uneless runs.
-
- Sun Mar 7 15:15:00 1999 UTC Karl Heinz Marbaise <kama@hippo.fido.de>
-
- * makeinfo/sectioning.{c,h}:
- - using defines instead of literals.
- - cleaned up some stylistic matters like Karl Berry
- suggested. Handling of things like:
- @unnumbered ..
- @section ...
- now it works correct.
-
- * makeinfo/toc.{c,h}
- - addTocEntry, freeToc changed into toc_add_entry
- toc_free. stylistics changed.
-
- * makeinfo/iso2cht.pl,iso-639: script, table from the web.
- - perl script converting the iso-639 table from the web
- into the appropiate files (isoenum.h, isotab.c and
- iso.texi) which can be inserted directly into
- lang.c, lang.h and texinfo.txi.
-
-Tue Mar 9 17:47:59 1999 Karl Berry <karl@gnu.org>
-
- * configure.in: Bump to 3.12g.
-
-Sun Mar 7 07:01:19 1999 Karl Berry <karl@gnu.org>
-
- * info/infomap.c: Don't do isprint, just bind everything.
-
-Fri Mar 5 14:31:42 1999 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi,
- * makeinfo/makeinfo.c: Document that --no-headers writes to stdout
- by default.
-
- * doc/texinfo.txi: @setchapternewpage doesn't change
- \bindingoffset, just headers. Recommend not including it in the
- manual source at all.
-
- * makeinfo/node.c (write_tag_table_internal): set
- in_fixed_width_font while constructing this so --- doesn't
- collapse to --, etc. Bug report from Sergio.
-
- * dir-example: Add a2ps stuff.
-
- * info/session.c: Allow any character in search string.
-
- * info/infodoc.c (describe_key): don't assume non-latin1
- characters are undefined.
-
- * info/infomap.c (initialize_info_keymaps): make all characters
- insertable by default in echo area. From Eli.
-
- * Installed these changes:
-
- Wed Feb 23 22:00:00 1999 Karl Heinz Marbaise <kama@hippo.fido.de>
-
- * makeinfo/sectioning.{c,h}:
- - added to hold complete handling of sectioning
- a little step towards modularization ;-)
-
- * makeinfo/cmds.c:
- - sectioning_alist moved to sectioning.c and
- added information about enumerated chapter,
- section ..., appendix or not. Everything
- which has any relationship with sectioning
- moved to sectioning.{c,h} I hope I have found
- all.
-
- * makeinfo/toc.{c,h}:
- - added for complete handling of "table of contents"
- "short contents". Better ASCII only support
- (--no-headers) so no Text "Menu" is printed.
- May be we can do more.
-
- * makeinfo/makeinfo.{c,h}:
- - added new command line switch --number to enumerate
- chapter, sections etc.
-
- * doc/texinfo.txi:
- - --number option documented.
-
- 1999-02-28 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
-
- * makeinfo/insertion.c (in_paragraph): New variable.
- (cm_item): Add </p> only if <p> is open.
- * makeinfo/makeinfo.c (handle_menu_entry): Ditto.
-
- * makeinfo/insertion.c (begin_insertion),
- * makeinfo/makeinfo.c (handle_menu_entry): If commentary
- precedes first menu item, put them outside of <ul>.
- Put <p> and </p> correctly.
-
- 1999-02-27 Eli Zaretskii <eliz@is.elta.co.il>
-
- * info/info.c (info_short_help): Document --show-options and
- --usage.
-
- 1999-02-26 Eli Zaretskii <eliz@is.elta.co.il>
-
- * info/makedoc.c (main) [STRIP_DOT_EXE]: Strip the .exe suffix, so
- that doc.c says "./makedoc.c", not "./makedoc.exe.c".
-
- * info/info.c (goto_invocation_p): New variable.
- (long_options): New options --show-options and its alias --usage.
- (main): Don't update the display until we find the first node to
- be displayed, to avoid flushing incorrect display. If user wants
- to see the command-line options node right away, display whatever
- info_intuit_options_node finds.
-
- * info/session.c (info_intuit_options_node): New function, uses
- heuristics to find the node which describes program's invocation.
- (info_goto_invocation_node): New command, asks for a program's
- name and displays the invocation node of that program.
- (entry_in_menu): New function, fuzzily looks for a menu entry in a
- node's menu.
- (program_name_from_file_name): New function, suggests a program
- name given a name of its Info file.
- (info_search_in_node): Accept an additional argument: a flag to
- search case-sensitively; all callers changed. If case-sensitive
- search is required, don't turn on the case-fold flag in the search
- binding.
- (info_search_internal): Accept an additional argument: a flag to
- search case-sensitively; all callers changed. Share the last
- search string between normal and case-sensitive search commands.
- (info_search_1): New function, with the guts that previously
- belonged to info_search. If the search is case-sensitive,
- mentions that in the prompt for the search string. If the search
- string includes upper-case characters, searches case-sensitively.
- (info_search): Calls info_search_1 with zero case-sensitivity
- flag.
- (info_search_case_sensitively): New command, calls info_search_1
- with non-zero case-sensitivity flag.
- (incremental_search): If the search
- string includes upper-case characters, searches case-sensitively.
-
- * info/search.c (search_backward): Fix bug in case-sensitive
- search.
-
- * info/infomap.c (initialize_info_keymaps): `-' in info window map
- produces negative arguments. `S' invokes case-sensitive search.
- `O' and `I' invoke goto-invocation.
-
- * doc/info-stnd.texi (Invoking Info): Document --show-options.
- (Node Commands): Document `O', goto-invocation.
- (Searching Commands): Document `S' and the case-sensitive search
- when the search string includes upper-case letters. Document `/'
- as a synonym for `s'.
- (Miscellaneous Commands): Document `M--' and `-'.
-
- 1999-02-25 Eli Zaretskii <eliz@is.elta.co.il>
-
- * info/info.c (main): Under --index-search, search indices *after*
- following menus, so that we don't look for an index in DIR.
-
-
-Wed Mar 3 17:20:07 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/cmds.c: Do not output <small> in info mode.
- From: Eli Zaretskii <eliz@is.elta.co.il>.
-
- * makeinfo/insertion.c (enum_html): Remove unused var temp.
- From: Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
-
- * info/infodoc.c: Avoid translation of blank lines.
-
- * info/tilde.c,
- * info/man.c,
- * makeinfo/index.c (index_add_arg): avoid use of alloca.
-
- * info/echo-area.c: Don't pause for an additional 75 microseconds.
- Noted by Eli.
-
- * configure.in: Bump to 3.12f.
-
- * doc/texinfo.txi: findex enddots. From Eli.
-
-1999-03-01 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
-
- * makeinfo/makeinfo.c (insert_html_tag): Add <p> when
- paragraph is not opened.
- (sectioning_html): Call close_paragraph so that paragraph
- will be started.
-
-1999-02-26 Akim Demaille <demaille@inf.enst.fr>
-
- * texi2dvi (get_xref_files): Take $filename_noext as $1.
- (get_xref_files): Look for $1.idx only, not *.idx.
- (get_xref_files): Look for $1.cb files (\usepackage{changebar}).
- * texi2dvi: Look for rerun requests in LOG files in addition to
- xref files comparison.
- (bibtex): Remove useless `./' (already added in
- command_line_filename).
- (filename_dir): Smarter sed expression that handles file names
- with no directory part.
- (txiversion): Removed useless () (`` already guarantee a subshell).
-
-1999-02-25 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * makeinfo/multi.c (find_template_width): Fix operator precedence.
-
-Tue Feb 23 10:35:53 1999 Karl Berry <karl@gnu.org>
-
- * dir-example: ccmode not cc-mode. From hds.
-
-Mon Feb 22 07:34:00 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/lang.c,
- * doc/texinfo.txi: Fix kazakhkh typo.
-
-1999-02-21 Eli Zaretskii <eliz@is.elta.co.il>
-
- * djgpp/config.sed: Add pcterm.c to terminal.o dependencies.
-
-1999-02-21 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * makeinfo/lang.c (cm_accent_generic): Emit the accent character
- only once, after the argument.
-
-Sun Feb 21 16:36:14 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/makeinfo.c (handle_menu_entry): new routine.
- (reader_loop): call it, allowing for comments in menus.
-
- * makeinfo/node.c: Rearrange functions to make static, etc.
-
- * doc/Makefile.am (EXTRA_DIST, install-tex): Add txi-cs and txi-no.
-
-1999-02-20 Eli Zaretskii <eliz@is.elta.co.il>
-
- * util/install-info.c (open_possibly_compressed_file): Output
- explicit message about empty input files.
- (insert_entry_here): Insert multiple entries in alphabetical order.
-
-Fri Feb 19 09:13:28 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/insertion.c (enum_html): new routine.
- (begin_insertion): call it.
- Based on code from: Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>.
-
- * lib/xexit.c (EXIT_FAILURE) [!defined EXIT_SUCCESS && VMS]: weird
- long value.
- From: Lars Hecking <lhecking@nmrc.ucc.ie>
-
-Thu Feb 18 16:42:10 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/node.h (remember_node_reference): decl.
- * makeinfo/makeinfo.c (find_unused_reference): dump unused decl.
-
-1999-02-18 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/cmds.c (cm_dots, cm_enddots): Don't produce &#133; for
- HTML, as too many browsers don't support it; use "..." in a
- smaller font (with <small>).
- (cm_top): Output the lang= attribute inside <html>.
-
- * makeinfo/node.c (cm_node): Output the lang= attribute inside
- <html>.
-
- * makeinfo/footnote.c (output_pending_notes): Generate <ol>
- instead of <dl compact>. Make the text of each footnote start a
- new paragraph.
-
-1999-02-17 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/insertion.c (cm_item): Remove <dd> when immediately
- followed by a <dt>. Add a <br> before every <dt>, except if we
- are converting @itemx, or in the first item after <dl>.
- (begin_insertion): Use <dl> for tables, to make it look closer to
- the Info output. Don't output a newline after a <pre>.
-
-1999-02-17 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/makeinfo.c (handle_variable): Don't backup input
- pointer if we hit the end of text (usually, inside
- execute_string).
- * makeinfo/insertion.c (get_item_function): Likewise.
-
-Wed Feb 17 15:09:06 1999 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Better indexing of space entries.
-
- * makeinfo/multi.c (find_template_width): new routine to really
- parse @multitable {...} templates.
- (setup_multitable_parameters): call it.
- Bug report from: Sergio Pokrovskij <pok@nbsp.nsk.su>.
-
- * lib/system.h (substring): declare.
-
- * lib/Makefile.am (libtxi_a_SOURCES): add substring.c.
-
- * makeinfo/defun.c: Move substring to lib.
-
- * util/texindex.c (tempcopy): no longer used.
- (maketempname): make static.
-
- * Installed these changes:
-
-1999-02-13 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/cmds.c (cm_acronym): New function, makes @acronym
- produce a smaller font size in HTML mode.
- (cm_sc): Produce smaller font size in HTML mode.
-
- * makeinfo/footnote.c (cm_footnote): In HTML output, make the
- footnote number be a superscript; remove [] around the link.
-
- * makeinfo/cmds.c (cm_var_sc): Separated into two functions:
- cm_var and cm_sc, since @var and @sc have different effects in
- HTML output.
-
- * makeinfo/makeinfo.c (cm_xref, cm_inforef): Don't put "[]" around
- HTML links.
-
- * info/pcterm.c (DJGPP_keytab): Add translation for Alt-PgUp and
- Alt-PgDn, to support the new M-prior key.
-
-Wed Feb 17 11:50:46 1999 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Don't mention texi2roff so prominently.
-
- * makeinfo/makeinfo.c: Pass enclose_expand to remember_brace
- rather than enclose_command. From Eli.
-
- * makeinfo/macro.c (cm_alias, cm_definfoenclose): Expand macros in
- first call to get_until_in_line. From Eli.
-
- * info/makedoc.c,
- * info/session.c,
- * info/man.c,
- * info/tilde.c,
- * info/info.c,
- * makeinfo/files.c,
- * makeinfo/multi.c,
- * makeinfo/node.c,
- * makeinfo/makeinfo.c: Use xexit.
- * makeinfo/makeinfo.h (NO_ERROR, FATAL, SYNTAX): remove.
-
- * info/terminal.c: Avoid sleep unless on sun-cmd terminal.
-
- * lib/xexit.c (EXIT_FAILURE) [!EXIT_FAILURE]: #define to 1 to fix
- Sony NEWS-OS 4.0C lossage. From Akim.
-
- * info/infodoc.c: Translate where is doc string, underline lines
- in help.
- From: Trond Endrestol <trond@agamemnon.gtf.ol.no>
-
- * makeinfo/cmds.c (cm_dots, cm_enddots): go back to ... and ....,
- &#133; apparently doesn't work widely enough.
-
-Tue Feb 16 07:37:54 1999 Karl Berry <karl@gnu.org>
-
- * configure.in (ALL_LINGUAS): add de_AT.
-
- * util/texi2dvi: Redirect cd output to /dev/null when determining
- txiversion.
-
-Mon Feb 15 13:43:37 1999 Karl Berry <karl@gnu.org>
-
- * util/install-info.c,
- * util/texindex.c: Call xexit instead of exit.
-
- * lib/system.h (xexit): Declare.
-
- * lib/Makefile.am (libtxi_a_SOURCES): Add xexit.c.
-
- * doc/texinfo.txi: Document that @documentencoding is used in the
- HTML output.
-
- * makeinfo/cmds.c (cm_top): use document_encoding if set.
- (command_table): call cm_documentencoding instead of no-op.
- * makeinfo/lang.c (document_encoding, cm_documentencoding): define.
- * makeinfo/lang.h (document_encoding, cm_documentencoding): declare.
-
- * makeinfo/insertion.c: Restore </p> before <li>.
-
- * util/texi2dvi: If texinfo.tex version is too low for macros, use
- makeinfo.
-
- * makeinfo/cmds.c (cm_center): save and restore value of
- indented_fill, otherwise @center within an @enumerate (say)
- also closes the indentation.
- Bug from: Sergio Pokrovskij <pok@nbsp.nsk.su>.
-
-Sun Feb 14 15:25:02 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/makeinfo.c: Doc fix.
-
- * doc/texinfo.txi: Be enthusiastic if people want to implement
- more output formats, but use makeinfo to do the job.
-
- * makeinfo/index.c (index_element_compare): Use strcoll if it's
- available.
- * configure.in: Call AC_FUNC_STRCOLL.
- * makeinfo/makeinfo.c (main): Use LC_CTYPE and LC_COLLATE
- categories. Suggestion from Oleg.
-
- * lib/system.h (setlocale) [!HAVE_SETLOCALE]: #define away.
- Suggestion from Akim.
-
- * doc/texinfo.txi: Document @paragraphindent working in TeX now.
-
- * doc/texinfo.txi,
- * makeinfo/lang.c,
- * makeinfo/lang.h (language_code_type): abbrev changes from Oleg.
-
- * makeinfo/cmds.c,
- * makeinfo/node.c: Only translate `Next:', `Previous:', and `Up:',
- not the whole href. From Eli.
-
- * doc/texinfo.txi: Document that only unsplit html output is
- supported in this release.
-
-Sat Feb 13 17:55:30 1999 Karl Berry <karl@gnu.org>
-
- * configure.in: Check for termlib before termcap for sake of
- Solaris (judging from less-332 configure.in) and maybe
- HP-UX 11.
-
- * doc/texinfo.txi (Footnote commands): incoherency reported by Aharon.
- Language vs country fixes from Oleg.
-
-1999-02-13 Karl Eichwalder <ke@gnu.franken.de>
-
- * makeinfo/node.c (cm_node): Tag navigation links as translatable.
- * makeinfo/cmds.c (cm_top): Ditto.
-
-Wed Feb 10 22:00:00 1999 Karl Heinz Marbaise <kama@hippo.fido.de>
-
- * makeinfo/defun.h:
- - new because we need get_base_type-function
- accessible in insertion.c
-
- * makeinfo/defun.c:
- - complete HTML handling of the @def... things.
-
- * makeinfo/Makefile.am:
- - defun.h added as part of makeinfo.
-
- * makeinfo/makeinfo.c:
- - define looking_at moved into header-file, because
- we need it in defun.c
-
- * makeinfo/insertion.c:
- - some minor changes made to support the @def...
- things in HTML.
-
- * makeinfo/lang.c: (cm_accent_generic)
- - bug fixed. Using umlaut (accent ...)
- would produce &A only if an umlaut follows
- an empty line.
- - bug fixed. Because things like &tilde; &grave;
- and &circ; do not exist as standalone characters
- in HTML.
- - cm_special_char now produce correct HTML for
- @O{} and @o{}.
- - warning using _("Text") instead "Text" (gettext).
-
- * makeinfo/cmds.c:
- - @url fixed. Display the given Text.
-
- * doc/texinfo.txi:
- - corrected the references for @uref, because
- they were given as "url" instead of "uref".
- @uref has three arguments, so show them in
- command list.
-
-Wed Feb 10 17:27:58 1999 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Rewrite for overfull box.
-
-Tue Feb 9 19:03:16 1999 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Document more HTML output stuff. Based on esr
- changes.
- * makeinfo/macro.c,
- * makeinfo/macro.h,
- * makeinfo/makeinfo.c: Do alias and definfoenclose expansion.
- From esr.
-
-Mon Feb 8 14:41:07 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/cmds.c: New commands @alias and @definfoenclose.
- From: "Eric S. Raymond" <esr@snark.thyrsus.com>.
-
- * doc/texinfo.txi: Document @documentlanguage and
- @documentencoding.
-
- * makeinfo/cmds.c: Move accent support to lang.c.
-
- * makeinfo/makeinfo.c (add_char): add &nbsp; rather than an 8-bit
- char for html.
-
- * makeinfo/Makefile.am (makeinfo_SOURCES): add lang.[ch].
-
- * doc/texinfo.txi: Be even more emphatic that @url is not
- typically what you want.
- * doc/texinfo.txi: Document that macro calls must use empty
- braces.
-
- * info/session.c: Do not translate node pointers. From Karl E.
-
- * makeinfo/cmds.c (cm_dfn): Use <dfn>. Suggestion from Eli.
-
-Sun Feb 7 07:00:08 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/makeinfo.c: Make --html imply --no-split.
-
- * makeinfo/cmds.c (cm_top): don't core dump if the top node has no
- next.
-
- * makeinfo/makeinfo.c (replace_with_expansion): compare length
- after expansion with length of full input text before
- expansion, not just the length of the expanded text.
- Bug (contents2) reported by kama.
-
- * info/infodoc.c (create_internal_info_help_node): gettext calls
- to help msg strings. From Ulrich.
-
-Fri Feb 5 17:35:13 1999 Karl Berry <karl@gnu.org>
-
- * util/texi2dvi: set makeinfo= for latex case.
-
- * doc/texinfo.txi (@deftp summary): ref Data Types node that
- actually describes it. From kama.
-
-Thu Feb 4 07:39:10 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/makeinfo.c: Take it back. Emacs info needs that text
- before the CTRL-_.
- * makeinfo/makeinfo.c: Don't bother to output the header (This is
- -, produced ...) to stdout.
-
- * doc/texinfo.txi (Other Info Directories): Mention that dir files
- must be named dir.
-
- * makeinfo/makeinfo.c (cm_uref): implement optional third
- argument.
- * doc/texinfo.txi (uref): document it.
- Suggestion from: Charles Karney <karney@pppl.gov>
-
- * doc/Makefile.am (info_TEXINFOS): put texinfo.txi first so
- UPDATED reflects its modtime, rather than info-stnd's.
-
- * makeinfo/files.c (full_pathname) [!WIN32]: #endif in wrong place.
- From: Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
-
- * makeinfo/cmds.c (cm_url): Remove URL: from output. It's ugly.
-
-Wed Feb 3 16:05:03 1999 Karl Berry <karl@gnu.org>
-
- * info/infodoc.c: Doc fix, zero not oh.
-
- * makeinfo/makeinfo.c (add_char): don't ignore if
- only_macro_expansion, even in no_headers case.
- Otherwise menu items don't get remembered and defaulting
- doesn't work. Macros suck!
-
- * util/texi2dvi (common): include orig_pwd.
- (language): reguess for each file if not explicitly set.
-
-Tue Feb 2 16:22:32 1999 Karl Berry <karl@gnu.org>
-
- * configure.in: Bump to 3.12d now.
-
-Mon Feb 1 14:46:45 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/insertion.c (cm_item): For itemize and enumerate, do
- </p> before the <li> for html. Bug from Eli.
-
- * makeinfo/index.c: Installed change in index.c:
- Mon Dec 28 12:50:14 1998 Matthew Fredette <fredette@mit.edu>
- * makeinfo.c (index_add_arg): Use xstrdup on input_filename
- when saving it in the new index entry.
-
- * util/texi2dvi: cd / before cd $orig_pwd in case of DOS drive
- change.
-
-Sun Jan 31 16:39:01 1999 Karl Berry <karl@gnu.org>
-
- * util/texi2dvi: Used sed to expand only the @{if,}tex parts of
- the source since makeinfo's conditional options aren't ready yet
- (from Akim).
- Also use ${1+"$@"} for Digital Unix "$@" expansion bug (from Noah).
-
- * util/install-info.c: Doc fix from Eli.
-
- * doc/texinfo.txi: Oops, said we looked for .png twice.
-
-Sat Jan 30 17:18:14 1999 Karl Berry <karl@gnu.org>
-
- * info/session.c (forward_move_node_structure): remove tangled
- code to merely print words instead of numbers; too hard to translate.
-
- * info/session.c: Missing _'s for more i18n. From Trond.
-
- * doc/Makefile.am (EXTRA_DIST): Include txi-no.tex from Trond.
-
-Sun Jan 24 09:28:12 1999 Karl Berry <karl@gnu.org>
-
- * Makefile.am (EXTRA_DIST): Use djgpp by itself instead of listing
- each file separately (new feature in automake 1.4).
-
- * makeinfo/insertion.c (begin_insertion): for quotation, always
- increment current_indent even if html output, why not.
- (Otherwise must not decrement current_indent in end_insertion.)
-
- * doc/texinfo.txi: More overfull box fixes.
-
- * makeinfo/insertion.c: Add some assertions and the beginnings of
- handling @tex.
-
- * doc/texinfo.txi: Fix overfull boxes, but tables of contents at
- the front.
-
- * util/texi2dvi: Can't pass --no-ifinfo --iftex to makeinfo yet,
- it's not ready.
-
-Sat Jan 23 10:22:16 1999 Karl Berry <karl@gnu.org>
-
- * util/texi2dvi: Pass --no-ifinfo --iftex to makeinfo.
-
-Fri Jan 22 19:09:49 1999 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Include version.texi before @settitle so
- @value{VERSION} gets expanded in the html title. From kama.
-
- * These patches from Tim Singletary <talon@clark.net>.
- * makeinfo/makeinfo.c: Simplify and improve html menus.
- * makeinfo/insertion.c (begin_insertion): simplify html menu case
- and set had_menu_commentary.
- * makeinfo/insertion.h (had_menu_commentary): declare new global.
- * makeinfo/node.h (glean_node_from_menu): declare.
- * makeinfo/node.c (glean_node_from_menu): new arg to specify what
- type of reference to remember as.
-
- Date: Sun, 29 Nov 1998 09:21:01 -0500 (EST)
- From: Tim Singletary <tsingle@talon.clark.net>
- To: texinfo-pretest@tug.org
- Subject: explanation of previous patches
-
- > These diffs introduce some non-trivial changes into very
- > sensitive parts of makeinfo, and it is hard to judge them without
- > knowing what exactly do they solve.
-
- At a high level, these patches fix (or at least significantly improve)
- the html conversion of menus. Specifically, they fix bugs in the
- conversion of menu commentary and detailmenu entries.
-
- The menu commentary fixes require some justification: The unpatched
- makeinfo attempts, with many bugs, to place menu commentary outside
- the <menu> by adding </ul> and <ul> tags. While I understand the
- motivation for this, that there might be browsers that don't support
- <p> within <menu>, I'm not aware of any such browser and don't see any
- compelling reason to continue the </ul> kludge.
-
- Certainly
- <menu>
- <li>First paragraph.
- <p>Second paragraph.
- <li>Second item.
- </menu>
- is valid html!
-
- Anyway, here's what my patches do:
-
- 1) Deleted the `<h4>Menu</h4>' at the beginning of each menu. Using
- `<h4>' is wrong since menus don't usually come after an `h3'
- header. `<b>' looks the same on most browsers, but my opinion is
- that there's no need for any header at all!
-
- 2) Deleted the `<li>' kludge at the begining of each menu. It's no
- longer needed since I'm deleting the </ul> kludge.
-
- 3) Replace `in_menu_para', declared static in makeinfo.c:add_char()
- with `had_menu_commentary', declared globally. Modified
- insertion.c:begin_insertion() to initialize had_menu_commentary to
- 1 when beginning a menu. Now there's enough state information for
- menu commentary to be processed within <menu> ... </menu>; the
- commentary can be seperated from the rest of the menu by bracketing
- it between <p>'s.
-
- Note that the first patch had a bug initializing
- had_menu_commentary; the second patch fixes this bug.
-
- 4) Changed the semantics of the argument to
- node.c:glean_node_from_menu(). Previously, glean_node_from_menu()
- only called remember_node_reference() when the argument was
- non-zero. But add_char() didn't call `glean_node_from_menu(1)'
- when processing detailmenu entries. In other words, detailmenu
- entries didn't get registered as references, which lead to the html
- conversion of detailmenu entries not producing proper hrefs!
-
- The new semantics are that glean_node_from_menu always calls
- remember_node_reference(), but calls it with `menu_reference' when
- the first arg to glean_node_from_menu() is 1 and with
- `followed_reference' otherwise. Now, detailmenu entries get
- registered as `followed_reference' (normal menu entries still get
- registered as `menu_reference') and the html conversion produces
- proper hrefs.
-
- 5) The above changes made it possible to streamline the section of
- add_char() that deals with html menu text.
-
- 6) In an otherwise unrelated change, rewrote a section of
- glean_node_from_menu to no longer use `goto save_node;'.
-
-
-Thu Jan 21 12:55:42 1999 Karl Berry <karl@gnu.org>
-
- * doc/info-stnd.texi: OK, let's try restoring the @include
- version.texi with the new automake.
-
- * makeinfo/cmds.c: Improve HTML @pounds, @bullet, etc.
-
- * doc/Makefile.am (install-tex): new target.
- (EXTRA_DIST): Include txi-??.tex.
- txi-de.tex: new file from kama.
-
- * Makefile.am (AUTOMAKE_OPTIONS): Bump to 1.4.
- (install-tex): new target.
-
- * util/texi2dvi: Restore "$@" for explicitness in main loop.
-
- * doc/Makefile.am (*.1) [TEXINFO_MAINT]: Conditionalize.
-
- * configure.in (AC_PREREQ): Bump to 2.13.
- (TEXINFO_MAINT): Define this AM_CONDITIONAL.
-
- * doc/texinfo.txi: Document that the HTML output name is derived
- from @setfilename.
-
- * makeinfo/makeinfo.c (convert_from_loaded_file): Use @setfilename
- for basename of html output.
-
- * doc/texinfo.txi (url): Use example.org for the example.
-
- * makeinfo/cmds.c (cm_url): @url should not produce a link, sorry
- to say.
-
-Wed Jan 20 16:31:55 1999 Karl Berry <karl@gnu.org>
-
- * util/texindex.c,
- * util/install-info.c,
- * makeinfo/makeinfo.c,
- * info/info.c: It's 1999.
-
- * doc/info.texi (Advanced info commands): Fix typos from Gildea.
-
- * makeinfo/makeinfo.c (end_of_sentence_p): don't check negative
- array offset.
- From: Enrico Scholz <enrico.scholz@wirtschaft.tu-chemnitz.de>
-
-Sun Jan 17 16:42:16 1999 Karl Berry <karl@gnu.org>
-
- * util/texi2dvi: Restore --batch, handle changing escape character
- more cleanly. From Akim (as always).
-
-Thu Jan 14 16:47:41 1999 Karl Berry <karl@gnu.org>
-
- * configure.in (ALL_LINGUAS): Add no.
- From: Trond Endrestol <trond@agamemnon.gtf.ol.no>
-
- * util/texi2dvi: Doc fix from Akim and do not always exit 1 from trap.
- And it's 1999.
-
- * doc/texinfo.txi (image): Document imagename.pdf.
-
- * Apply this change from Eli:
-
- 1998-11-20 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/makeinfo.h (meta_char_pos): New variable.
- * makeinfo/makeinfo.c (init_paragraph): Initialize it.
- (add_char): Use META to create a non-breakable space character.
- (add_meta_char): New function.
- (end_of_sentence_p): Don't handle characters at meta_char_pos as
- normal sentence enders.
- (flush_output): Only unMETA the non-breaking space character.
- Reset meta_char_pos to zero.
- (do_flush_right_indentation): Call adjust_braces_following.
- (indent): Likewise.
- (cm_value): Save and restore the value of meta_char_pos.
- (expansion): Likewise.
- * makeinfo/macro.c (me_execute_string_keep_state): Save and
- restore the value of meta_char_pos.
- * makeinfo/node.c (cm_node): Save and restore the value of
- meta_char_pos.
- * makeinfo/cmds.c (cm_accent): Make the dot we add due to
- @dotaccent be a meta-character.
- (cm_code, cm_dfn): Call add_meta_char to insert the closing
- quote.
- (cm_cite): Call add_char instead of add_word.
-
-Thu Jan 7 18:04:26 1999 Karl Berry <karl@gnu.org>
-
- * util/texi2dvi: Handle pdf files more cleanly. From Akim.
-
-Wed Jan 6 17:49:11 1999 Karl Berry <karl@gnu.org>
-
- * makeinfo/makeinfo.c (cm_image): Check for .png also.
-
-Sun Dec 20 07:54:47 1998 Karl Berry <karl@gnu.org>
-
- * util/texi2dvi: Add --pdf.
-
- * util/texi2dvi: New option -@ to use @input and @nonstopmode, in
- case texinfo is preloaded.
- From: Khimenko Victor <khim@sch57.msk.ru>
- Date: Sun, 20 Dec 1998 02:04:12 +0300 (EET)
-
-Sat Dec 19 17:37:37 1998 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi (Multitable Column Widths): leading zero ok for
- @columnfractions.
-
- * util/texi2dvi: New version from Akim, plus --quiet is like
- --batch, etc.
-
-Fri Dec 18 17:22:44 1998 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Document that the Texinfo source can't be
- arbitrarily ordered (for print) even if all pointers are supplied.
-
- * makeinfo/insertion.c (end_insertion): In itemize case,
- close_insertion_paragraph so @end itemize cause a line break.
- Report from: Sergei Pokrovsky <pok@nbsp.nsk.su>
- Date: Sun, 22 Nov 1998 19:45:21 +0700 (GMT)
-
-Tue Dec 15 16:21:51 1998 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: More fixes from Oleg.
-
- * configure.in: Bump version to 3.12c for next pretest.
-
- * util/install-info.c (open_possibly_compressed_file)
- [STRIP_DOT_EXE]: logic for compression_program assignment
- was reversed.
- From: wlestes@wlestes.uncg.edu
-
-Sat Dec 12 18:02:48 1998 Karl Berry <karl@gnu.org>
-
- * Merged these changes from Andreas:
-
-1998-12-06 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * makeinfo/node.c (cm_node): When searching for @menu don't
- require a space after it.
-
-1998-12-06 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * makeinfo/cmds.c (cm_top): free top_name only after done using it.
-
-Sat Dec 12 15:40:13 1998 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Various typos and fixes from Oleg.
-
- * doc/texinfo.txi: Move @node's outside of @ifinfo for the sake of
- HTML processing.
-
- * doc/texinfo.txi (titlepage): @pxref was not in parens. From Oleg.
-
-Sun Dec 6 16:49:09 1998 Karl Berry <karl@gnu.org>
-
- * dir-example: Amd is now am-utils.
-
- * doc/Makefile.am: Reinstate help2man invocations for development.
-
- * doc/texinfo.txi: Document @set...contentsaftertitlepage (from kama).
- Fix incorrect sense for @image and Hungariam typo (from Oleg).
-
- * lib/system.h: #include libintl.h here instead of acconfig.h, so
- the system include files have a chance to #define NULL
- before it does.
- * acconfig.h: Remove libintl.h and #defines from here.
- From: "Philippe De Muyter" <phdm@macqel.be>
- Date: Fri, 4 Dec 1998 00:56:25 +0100 (CET)
-
- * info/signals.c: Start #ifdef's in column one for cc on sysv68
- (m68k-motorola-sysv).
- From: "Philippe De Muyter" <phdm@macqel.be>
- Date: Fri, 4 Dec 1998 00:56:25 +0100 (CET)
-
- * info/filesys.c (is_dir_name): use strcpy instead of automatic
- array initialization.
- From: "Philippe De Muyter" <phdm@macqel.be>
- Date: Fri, 4 Dec 1998 00:56:25 +0100 (CET)
-
- * configure.in (ALL_LINGUAS): add ru.
-
-Fri Dec 4 08:12:11 1998 Karl Berry <karl@gnu.org>
-
- * info/infodoc.c: Gettextize the help buffer string.
-
-Sun Nov 29 17:12:35 1998 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Use @ifnottex rather than @ifinfo for @top.
- (makeinfo top): document this.
-
- * doc/info-stnd.texi,
- * doc/info.texi: Use @ifnottex rather than @ifinfo for @top.
-
- * makeinfo/insertion.c (cm_menu): Implicitly insert @top command
- so we can construct the node tree as usual when we see @menu
- before @node. Probably this is when the input uses
- @ifinfo instead of @ifnottex, as virtually all existing
- manuals do.
-
- * makeinfo/insertion.c (discard_insertions): Let any conditional
- cross node boundary. (So the @top node can be wrapped
- in @ifnottex, for example.)
-
- * Installed these:
-
-1998-11-21 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/makeinfo.c (expansion): Save and restore
- last_inserted_character and last_char_was_newline.
-
- * makeinfo/cmds.c (cm_dircategory): Kill any indentation before
- INFO-DIR-SECTION. install-info relies on this.
-
-1998-11-20 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/multi.c (struct env): Add meta_char_pos member.
- (select_output_environment): Save and restore meta_char_pos.
- (out_char): Output characters by switching environment to #0 and
- calling insert. Call flush_output when a newline is output.
- (output_multitable_row): Update the current environment's
- output_paragraph_offset as well, after removing trailing
- whitespace. Fix typo in loop index.
- (do_multitable): Call close_single_paragraph.
- (end_multitable): Call close_insertion_paragraph. Don't output
- an extra newline.
-
-1998-11-20 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/makeinfo.h (meta_char_pos): New variable.
- * makeinfo/makeinfo.c (init_paragraph): Initialize it.
- (add_char): Use META to create a non-breakable space character.
- (add_meta_char): New function.
- (end_of_sentence_p): Don't handle characters at meta_char_pos as
- normal sentence enders.
- (flush_output): Only unMETA the non-breaking space character.
- Reset meta_char_pos to zero.
- (do_flush_right_indentation): Call adjust_braces_following.
- (indent): Likewise.
- (cm_value): Save and restore the value of meta_char_pos.
- (expansion): Likewise.
- * makeinfo/macro.c (me_execute_string_keep_state): Save and
- restore the value of meta_char_pos.
- * makeinfo/node.c (cm_node): Save and restore the value of
- meta_char_pos.
- * makeinfo/cmds.c (cm_accent): Make the dot we add due to
- @dotaccent be a meta-character.
- (cm_code, cm_dfn): Call add_meta_char to insert the closing
- quote.
- (cm_cite): Call add_char instead of add_word.
-
-Sun Nov 29 16:30:06 1998 Karl Berry <karl@gnu.org>
-
- * info/info.h,
- * info/footnotes.h (FOOTNOTE_LABEL),
- * info/indices.c (APROPOS_NONE): Use N_ rather than _.
-
- * info/infodoc.c (create_internal_info_help_node,
- function_documentation): Do not translate the empty string.
- Date: Fri, 25 Sep 1998 15:09:42 +0400
- From: "Oleg S. Tihonov" <tihonov@ffke-campus.mipt.ru>
-
- * doc/info-stnd.texi: Mention PRIOR as another alias for
- PREVIOUS/PageUp.
-
- * doc/texinfo.txi: @emph produces _emph_ not *emph*. Spurious
- junk before makeinfo bison example.
- From: tihonov@ffke-campus.mipt.ru.
-
-1998-11-16 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/defun.c (defun_internal): Don't expand the arguments to
- @defun and its ilk.
-
- * makeinfo/makeinfo.c (expansion): Copy the name of the currently-
- executing command and restore it after expansion.
-
-Sun Nov 15 17:40:51 1998 Karl Berry <karl@gnu.org>
-
- * makeinfo/makeinfo.c: Rearrange usage, allow -v for verbose, only
- output `Making' line when verbose.
- * makeinfo/makeinfo.h (process_html, process_info, process_tex):
- declare.
- * makeinfo/cmds.c: Use conditional commands.
- * makeinfo/insertion.c (find_type_from_name): Handle rawhtml and
- rawtex.
- (conditional commands): Allow individual switching on and off.
-
- * makeinfo/insertion.h: Declare conditionals.
-
-1998-11-14 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/insertion.c (begin_insertion, end_insertion): Use <pre>
- to convert @display and @smalldisplay into HTML.
-
- * makeinfo/cmds.c (cm_asterisk): Don't insert an extra newline in
- HTML mode, since input includes a newline right after the @*.
- (cm_sp): Output "<br><p>\n" as many times as the argument says.
- (cm_url): Don't include "<a href=" in the anchor text in HTML
- output.
-
- * makeinfo/makeinfo.c (cm_pxref): Don't add a period after @pxref
- if in HTML mode.
- (get_rest_of_line): Accept an additional argument EXPAND, and
- expand the rest of line if it's non-zero. All callers changed.
- (close_paragraph): When in HTML mode, honor the formatting of the
- source paragraphs by generating "<p>" for every closed paragraph;
- follow it by as many "<p>"'s as paragraph_spacing specifies.
-
-Sat Nov 14 17:38:27 1998 Karl Berry <karl@gnu.org>
-
- * makeinfo/insertion.c: Use <ul compact> instead of deprecated <menu>.
- Omit extra <li> after the menu beginning.
-
- * makeinfo/index.c: Use <ul compact> instead of deprecated <menu>.
-
-Thu Nov 12 16:33:09 1998 Karl Berry <karl@gnu.org>
-
- * Makefile.am (EXTRA_DIST): add djgpp/config.sed.
-
- * info/terminal.c: #include <sys/ioctl.h> to define TIOCGWINSZ
- under LynxOS. From: Marius Groeger <mag@sysgo.de>.
-
-1998-11-06 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * makeinfo/insertion.c (begin_insertion): Correctly handle
- ifnottex and ifnothtml.
- (end_insertion): Likewise.
-
-Sun Nov 8 17:30:23 1998 Karl Berry <karl@gnu.org>
-
- * makeinfo/index.c,
- * makeinfo/insertion.c: Menu is special to Info.
- * makeinfo/node.c: Top is a special name, don't translate it.
- * info/session.c (info_top_node): Top is a special name, don't
- translate it.
- From: "Oleg S. Tihonov" <tihonov@ffke-campus.mipt.ru>.
-
-Fri Nov 6 17:18:43 1998 Karl Berry <karl@gnu.org>
-
- * configure.in: Version 3.12b.
-
- * util/texi2dvi: Fixes from Eli and Christoph Martin.
-
- Mon Oct 5 13:58:53 1998 Dave Glowacki <dglo@ssec.wisc.edu>
- * util/install-info.c: Fix off-by-one error in findlines()
-
- * util/texindex.c (usage): avoid trigraph until Ulrich fixes
- po2tbl.sed.in. From Paul Eggert.
-
-1998-11-03 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/makeinfo.c (cm_xref): Don't bypass the test that an
- xref ends with a period or a comma if the reference has a single
- argument.
-
-1998-10-31 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/insertion.c (end_insertion): Don't decrement
- in_fixed_width_font when leaving a menu, the previous value is
- restored by pop_insertion.
-
- * makeinfo/makeinfo.c (add_char): Don't increment output_column
- twice when a newline is inserted into the output.
-
- * doc/texinfo.txi (emph & strong): Document the use of underscores
- for @emph in the Info output.
-
-1998-10-30 Eli Zaretskii <eliz@is.elta.co.il>
-
- * djgpp/config.bat: Make sure intl/po2tblsed.in exists before we
- begin the configure boogie.
- * djgpp/config.sed: Sed script, to be run by config.bat.
-
- * doc/info-stnd.texi (Node Commands): Document the new G command.
-
- * info/session.c (info_follow_menus): Step over a possible leading
- space in a menu entry in menus[].
- (split_list_of_nodenames): Renamed from split_words. Split the
- string on commas, not on spaces, since a menu entry can have
- embedded whitespace. Get past the null byte after inserting it.
- (info_menu_sequence): Don't crash if there's no DIR node; try
- using Top of the current Info file, and if that doesn't work
- either, throw an error.
-
- * util/texi2dvi: Use $path_sep in TEXINPUTS. Don't include any
- dots in $tmpdir, 8+3 filesystems won't like that.
-
- * makeinfo/makeinfo.c (reader_loop): Expand any macros in a menu
- entry when creating a <menu> item for HTML. Fix an off-by-one
- error in counting input lines.
-
- * makeinfo/files.c (expand_filename): Don't treat .foo/bar as
- absolute file name.
-
- * makeinfo/makeinfo.c (add_char): Use strncpy instead of memcpy,
- since the buffers overlap. If the line being refilled includes
- nothing but the indentation and the word being added, do NOT add
- an extra newline.
-
- * util/install-info.c (strip_info_suffix, menu_item_equal,
- open_possibly_compressed_file) [__MSDOS__]: Allow .inz and .igz as
- suffuxes for compressed files.
- (open_possibly_compressed_file): Return an indication whether we
- opened a file or a pipe. Use FOPEN_RBIN from system.h.
- [STRIP_DOT_EXE]: Use gzip.exe with an explicit .exe extension.
- [O_BINARY]: If the file is not compressed, switch its stream to
- text mode.
- (readfile): Close the file or the pipe.
- (output_dirfile): Call pclose to actually run the compressor.
-
-Thu Nov 5 08:33:06 1998 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: effect -> affect
- From: Eric Hanchrow <offby1@blarg.net>
-
-Tue Nov 3 14:26:59 1998 Karl Berry <karl@gnu.org>
-
- * makeinfo/makeinfo.c (cm_image): Allocate enough space for the
- zero byte.
-
- * doc/texinfo.txi: Document epsf.tex standard location.
-
-Tue Oct 27 10:45:47 1998 Karl Berry <karl@gnu.org>
-
- * Makefile.am (TEXINFO_TEX): add definition.
-
- * doc/info-stnd.texi: Avoid unnecessary overfull boxes from
- examples.
-
- * doc/Makefile.am (install-data-local): missing ".
-
- * doc/Makefile.am: Don't try to run help2man in distribution.
-
-Mon Oct 26 13:43:53 1998 Karl Berry <karl@gnu.org>
-
- * configure.in (TEXMF): lose this whole block. It is too painful
- to maintain with the different tex installations out there.
-
- * util/Makefile.am (EXTRA_DIST): update-info renamed to
- fix-info-dir.
-
- * makeinfo/footnote.h: Doc fix.
-
- * makeinfo/multi.c: #include "insertion.h"
- * makeinfo/cmds.c: #include "node.h"
- * makeinfo/makeinfo.h,
- * makeinfo/makeinfo.c: Move globals, functions for insertions and
- nodes.
- * makeinfo/defun.c: #include "insertion.h"
- * makeinfo/Makefile.am: Add insertion.[ch], node.[ch].
- * node.[ch], insertion.[ch]: New files.
-
- * makeinfo/makeinfo.c,
- * makeinfo/makeinfo.h: Move globals for cmds.h.
- * makeinfo/index.h: Include cmds.h.
- * makeinfo/Makefile.am (makeinfo_SOURCES): Add cmds.h, cmds.c.
- * cmds.c, cmds.h: New files.
-
-Sat Oct 24 17:28:14 1998 Karl Berry <karl@gnu.org>
-
- * makeinfo/makeinfo.c,
- * makeinfo/makeinfo.h: Globals for files.c.
- * makeinfo/Makefile.am (makeinfo_SOURCES): add files.[ch].
-
-Tue Oct 20 17:03:10 1998 Karl Berry <karl@gnu.org>
-
- * makeinfo/Makefile.am (makeinfo_SOURCES): add macro.c and
- macro.h.
- * makeinfo/makeinfo.c: Move macro code to macro.h and macro.c.
- * makeinfo/makeinfo.h: Move macro stuff to macro.h, expose global
- last_char_was_newline for macro.c.
- * makeinfo/index.c,
- * makeinfo/footnote.c: #include macro.h.
-
-Wed Oct 7 16:24:07 1998 Karl Berry <karl@gnu.org>
-
- * doc/info-stnd.texi: For now don't include version.texi due to
- automake error.
-
- * makeinfo/index.h: #include makeinfo.h for sake of COMMAND type.
- * makeinfo/index.c: No need to include makeinfo.h, index.h does
- now.
-
- * makeinfo/makeinfo.c: Move footnote code to footnote.c.
- * makeinfo/makeinfo.h: Globals for footnote.c.
- * makeinfo/Makefile.am (makeinfo_SOURCES): add footnote.[ch].
-
- * makeinfo/makeinfo.c: Move defun code to defun.c, necessary
- global to makeinfo.h.
- * makeinfo/makeinfo.h (default_indentation_increment): move here
- for defun.c.
- * makeinfo/Makefile.am (makeinfo_SOURCES): add defun.c.
-
- * Makefile.am: Doc fix.
-
- * configure.in (AC_OUTPUT): generate makeinfo/tests/Makefile.
-
- * makeinfo/makeinfo.c,
- * makeinfo/makeinfo.h,
- * makeinfo/Makefile.am (makeinfo_SOURCES): add index.[ch].
-
-Fri Oct 2 17:42:26 1998 Karl Berry <karl@gnu.org>
-
- * lib/system.h (STREQ): new macro.
-
-Thu Oct 1 09:26:57 1998 Karl Berry <karl@gnu.org>
-
- * doc/texinfo.txi: Delete spare copy since out of date,
- add makeinfo html to menu,
- detailmenu doesn't take braces in summary.
-
-Wed Sep 30 14:38:21 1998 Karl Berry <karl@gnu.org>
-
- * makeinfo/makeinfo.c: Remove != NULL comparisons,
- xmalloc/xrealloc casts, assignments in if statements.
-
-Wed Sep 30 14:16:01 1998 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c: Remove NULL casts and parentheses in return
- statements.
-
- * makeinfo/makeinfo.c (add_link): Don't add a link if the node is null.
- (reader_loop): don't glean_node_from_menu if detailmenu, even if html.
- Various formatting changes.
-
- * doc/help2man: Always exit successfully.
-
- * makeinfo/Makefile.am (SUBDIRS): add.
- (makeinfo_SOURCES): no more html.h.
-
-Fri Sep 11 18:47:15 1998 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c: Fiddle with html output.
-
-1998-09-07 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/makeinfo.c (maybe_update_execution_strings): Only
- reallocate TEXT if the existing storage is too small, otherwise
- leave TEXT alone.
- (replace_with_expansion): Call maybe_update_execution_strings to
- reallocate input_text if we are executing_string, since storage
- for execution_string is assumed to be large enough to hold every
- possible string.
- (me_execute_string): xstrdup the argument, so callees could freely
- relocate it as needed.
-
-1998-09-06 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/makeinfo.c (replace_with_expansion): Don't remember
- macro-expansion pointers if we are executing_string.
-
-1998-09-05 Eli Zaretskii <eliz@is.elta.co.il>
-
- * info/filesys.c (info_suffixes): Put the empty suffix last in the
- list, so that `foo.info' is found before `foo', if both exist.
-
-1998-09-05 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/makeinfo.c (maybe_update_execution_strings): New
- function, updates an entry in execution_strings[] array after
- input_text is relocated by replace_with_expansion.
- (replace_with_expansion): Call it.
-
-1998-09-04 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/makeinfo.c (expand_macro): If a macro is called with
- too many arguments, return NULL and print the line number where
- the call begins.
- (execute_macro): If expand_macro returns NULL, return
- immediately.
-
-Sun Sep 6 19:11:28 1998 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c,
- * makeinfo/makeinfo.h,
- * makeinfo/multi.c: Html output. Specifically, these changes:
-
- Fri Jul 4 22:58:29 1997 Dave Love <d.love@dl.ac.uk>
-
- * doc/makeinfo.texi: Document HTML output.
-
- * makeinfo/makeinfo.c: Wrap strings in _() in bits changed for
- HTML.
- (cm_image): Generate <img> for HTML.
-
- Sun Jun 22 22:50:07 1997 Dave Love <d.love@dl.ac.uk>
-
- * makeinfo/makeinfo.c (NAMED_NODE_ANCHORS): New define.
- (title, outstanding_node, node_number, node_node_references,
- escape_html, ifinfo_as_html): New variables.
- (tentry.number, node_ref.number, fn.number): New fields.
- (CommandTable): Various additions and alterations for HTML.
- (long_options): Add html and no-info-as-html.
- (main): Extra code for HTML.
- (usage): Add HTML stuff.
- (expand_filename): Deal with .html.
- (escape_string): New procedure.
- (convert_from_loaded_file): Extra code for HTML.
- (init_internals): Call free_node_references, initialize
- node_number.
- (reader_loop): Process menu items for HTML hyperlinks. Escape
- HTML special characters.
- (add_char): Code for line breaks and paragraph insertions in
- HTML.
- (flush_output): Don't UNMETA for HTML.
- (indent): Do nothing for HTML.
- (current_item_function): Case for ifhtml.
- (begin_insertion): Deal with HTML in various cases.
- (insert_html_tag): new procedure.
- (cm_asterisk, cm_copyright, cm_accent, cm_code, cm_kbd,
- cm_angle_brackets, cm_var, cm_defn, cm_var, cm_emph, cm_string,
- cm_cite, cm_top, cm_xref, cm_inforef, cm_uref, cm_direntry,
- cm_ifinfo, cm_item, process_defun_args, defun_internal, cm_sp,
- cm_dircategory, cm_center, cm_result, cm_expansion, cm_error,
- cm_exdent, index_add_arg, make_index_entries_unique,
- cm_printindex, cm_footnote, output_pending_notes,
- me_execute_string): Code for HTML.
- (cm_shyph): New procedure.
- (cm_special_char): Add start, end args. Code for HTML.
- (cm_email, cm_url, cm_i, cm_b, cm_r): New procedures.
- (sectioning_html): New procedure.
- (sectioning_underscore): Use it.
- (add_link): New procedure.
- (remember_node): Add number field and update node_number. Note
- next, etc. nodes for HTML.
- (add_escaped_anchor_name, add_anchor_name): New procedures.
- (cm_node): New code for HTML. Move some other code to more
- useful place.
- (remember_node_reference): Add number field and update
- node_number.
- (remember_node_node_reference, free_node_node_references,
- number_of_node): New procedures.
- (cm_ifhtml, cm_html): New procedures.
- (expansion): Take care of HTML escaping.
- (cm_settitle): New procedure.
- (remember_note): Set number field.
-
- Declare various procedures in advance.
-
- * doc/texinfo.txi: Makeinfo --html documentation from Dave Love.
- Typo fixes from: Paul DuBois <dubois@primate.wisc.edu>.
-
-Thu Sep 3 11:11:01 1998 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/Makefile.am (makeinfo_SOURCES): add html.[ch].
-
-1998-08-28 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/makeinfo.c (cm_uref, cm_email): Use get_xref_token to
- gather arguments.
- (get_xref_token): Keep track of input line number when expanding
- xref arguments.
-
-Tue Aug 25 14:36:44 1998 Karl Berry <karl@cs.umb.edu>
-
- * util/texi2dvi: Exit the script if TeX exits with bad status.
-
-1998-08-16 Eli Zaretskii <eliz@is.elta.co.il>
-
- * info/indices.c (info_index_apropos): In the *Apropos*
- menu, print the label first, then the Info file name and
- the node name. Make the Info file name part of the menu
- entry, so that all entries are distinct.
- (apropos_in_all_indices): Scan each Info file only once, thus
- avoiding multiple identical entries in the *Apropos* menu.
- Free xstrdup'ed buffer, to avoid leaking memory.
-
-Thu Aug 13 12:54:58 1998 Karl Berry <karl@cs.umb.edu>
-
- * configure.in: Set version to 3.12a.
-
- * Makefile.am (AUTOMAKE_OPTIONS): bump required version to 1.3,
- add readme-alpha option.
-
- * util/texindex.c (program_name),
- * util/install-info.c (progname),
- * info/info.c (program_name),
- * makeinfo/makeinfo.c (progname): hardwire per coding standards.
- * doc/help2man: Remove ginfo special case.
-
-Tue Aug 11 17:41:15 1998 Karl Berry <karl@cs.umb.edu>
-
- * util/gen-dir-node: New version from drk@sgi.com.
-
-Mon Aug 10 13:55:37 1998 Karl Berry <karl@cs.umb.edu>
-
- * dir-example: Add entries from Linux.
-
- * info/info-utils.c (get_window_of_node): New fn.
- * info/info-utils.h (get_window_of_node): New fn.
- * (strchr,...) [!HAVE_STRCHR]: remove these #defines.
- * info/infodoc.c (info_find_or_create_help_window): Call
- get_window_of_node instead of get_internal_info_window.
- This is so pressing ? repeatedly will always get to the same Help
- window instead of popping up new ones.
- From: "Brian J. Fox" <bfox@prospero.datawave.net>
-
- * info/signals.c: Ignore SIGWINCH if we're in the midst of it.
- We might get a whole lot of them. Noticed on Afterstep.
- From: "Brian J. Fox" <bfox@prospero.datawave.net>
-
-1998-07-25 Bruno Haible <bruno@linuix.math.u-bordeaux.fr>
-
- * install-info.c (findlines): Allocate room for one more line,
- to avoid crash if dir file has exactly 512 lines.
-
-Tue Aug 4 07:14:35 1998 Karl Berry <karl@cs.umb.edu>
-
- * info/info.c: Improve help message.
-
- * dir-example: Add mtools.
-
-Fri Jul 31 13:29:52 1998 Karl Berry <karl@cs.umb.edu>
-
- * doc/help2man: Various hacks for texinfo.
-
- * doc/texinfo.txi: Make dir entries more consistent.
-
- * doc/Makefile.am: Generate man pages with help2man.
-
- * util/texi2dvi,
- * util/install-info.c,
- * makeinfo/makeinfo.c,
- * util/texindex.c: Improve help message.
-
- * doc/info.5: Initial.
- * doc/texinfo.5: Section 5.
-
-Thu Jul 30 17:31:42 1998 Karl Berry <karl@cs.umb.edu>
-
- * doc/info-stnd.texi,
- * doc/texinfo.txi: Use Automake-standard VERSION and UPDATED.
-
-Wed Jul 29 17:34:41 1998 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.txi: Describe macro limitations a bit more.
-
- * dir-example: Correct makeinfo link.
-
-Tue Jul 28 16:44:06 1998 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (remember_brace_1): xstrdup command, since
- we free it later.
-
-Mon Jul 27 16:27:30 1998 Karl Berry <karl@cs.umb.edu>
-
- * info/session.c (node_printed_rep): New fn.
- Change calls.
-
- * info/session.c (info_set_node_of_window): Simplify by taking new
- argument to say whether to call
- set_remembered_pagetop_and_point. Change calls.
- * info/indices.c: Change call.
-
- * info/info.c: Rewrite initial menu-sequence following stuff as a
- function in session.c, and call it.
-
- * info/infomap.c: Define `G' as info_menu_sequence.
- * info/session.h (info_menu_sequence, info_follow_menus): declare
- new fns.
- * info/session.c (info_follow_menus, split_words,
- * info_menu_sequence): New functions for new command.
-
-Thu Jul 23 16:44:42 1998 Karl Berry <karl@cs.umb.edu>
-
- * info/session.c (info_scroll_other_window_backward): new command.
- * info/infomap.c (initialize_info_keymaps): bind M-DEL and M-prior to
- scroll-other-window-backward.
- Report from: Vladimir Alexiev <vladimir@cs.ualberta.ca>
- Date: Tue, 2 Dec 1997 14:54:30 -0700
-
- * info/info-utils.c (printed_representation): If ISO_Latin_p, show
- characters as-is. Don't assume iscntrl(x) returns false
- for meta characters.
- Report from: Francois Pinard <pinard@iro.umontreal.ca>
- Date: 15 Jan 1998 17:48:51 -0500
-
- * info/pcterm.c (pc_initialize_terminal): now no need to set it
- here.
- * info/info-utils.c (ISO_Latin_p): set to 1 by default.
-
- * doc/info-stnd.texi: Document SPC, add goto-node anchor.
-
-Wed Jul 22 18:58:38 1998 Karl Berry <karl@cs.umb.edu>
-
- * info/window.c (message_buffer_to_node),
- * info/session.c (kill_node),
- * info/nodes.c (info_get_node_of_file_buffer,
- info_node_of_file_buffer_tags),
- * info/man.c (manpage_node_of_file_buffer),
- * info/footnotes.c (make_footnotes_node): set display_pos member
- in new node.
-
-Tue Jul 21 14:04:52 1998 Karl Berry <karl@cs.umb.edu>
-
- (all of this is to make SPC/DEL not move outside the current
- document, i.e., not up through dir)
- * info/info-utils.h (info_label_was_found): Move from here.
- * (info_prev_label_of_node): Don't use it any more.
- * info/session.c (INFO_LABEL_WAS_FOUND): Move to here, add test
- for filename not dir.
- (forward_move_node_structure): Change calls, notice if no more nodes.
- (backward_move_node_structure): Check for moving outside current
- document to dir.
- * info/filesys.c (compression_suffixes): Add bz2 for bunzip2.
- (is_dir_name): New fn.
- * info/filesys.h: Declare it.
- * info/nodes.c (info_get_node, info_find_file_internal): Use it.
-
- * makeinfo/makeinfo.c: Set in_fixed_width_font to avoid munging
- node names.
-
-Sat Jul 18 17:14:10 1998 Karl Berry <karl@cs.umb.edu>
-
- * info/man.c (reap_children): Call wait (NULL), since we don't
- actually use the return status for anything. NEXTSTEP 3.3
- doesn't like an int * even though that is the POSIX
- specification.
- Date: Fri, 22 Aug 1997 13:55:42 +0200
- From: "Felix H. Gatzemeier" <fxg@imib.rwth-aachen.de>
- Via: Thomas Esser <te@informatik.uni-hannover.de>
-
- * info/session.c (kill_node): Restore point when we go back.
-
-Thu Jul 16 18:54:04 1998 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (BRACE_ELEMENT): Add `command' to the save
- stack.
- (MAYBE_BRACE_ARGS): New possibility, somewhat like TeX's
- next-token-as-argument.
- (command_table): Use cm_accent and MAYBE_BRACE_ARGS for all accents.
- (read_command): Implement MAYBE_BRACE_ARGS.
- (init_brace_stack): save current command.
- (pop_and_call_brace): restore current command.
- (cm_accent): move almost all accent characters to after the argument.
- Suggested by Fran,cois.
-
- * info/info.c (version_string): Remove defn.
- Change call for --version option.
- * info/session.c (display_startup_message_and_start): Just use
- VERSION.
- * info/info.h (version_string): Remove decl.
-
-Tue Jul 14 16:46:58 1998 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.h: Doc fix.
-
- * makeinfo/makeinfo.c (validate_file): Don't complain about
- unreferenced anchors.
-
- * doc/texinfo.txi: Document @anchor.
-
-Sun Jul 12 14:14:50 1998 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (remember_node): Only set `current_node' if
- this is not an anchor.
-
- * info/nodes.c (get_tags_of_indirect_tags_table): Don't set
- nodelen to -1 when fixing up the subfile entries, it might be 0
- from an anchor.
-
- * info/nodes.c (find_node_of_anchor): Offset display_pos for
- anchor tags by the amount that node references are off by (- 1).
-
-Sat Jul 11 17:37:18 1998 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (cm_anchor): Add output_column for anchors
- embedded in a line.
-
-Fri Jul 10 16:28:21 1998 Karl Berry <karl@cs.umb.edu>
-
- * info/session.c (info_menu_or_ref_item): Don't search for the
- xref text if it's an anchor.
- * info/nodes.h (N_FromAnchor): New NODE flag.
- * info/nodes.c (find_node_of_anchor): New fn.
- (info_node_of_file_buffer_tags): Handle anchor case.
-
-Wed Jul 8 17:48:59 1998 Karl Berry <karl@cs.umb.edu>
-
- * info/window.c (window_set_node_of_window): Set window->point to
- node->display_pos.
- Remove unneeded casts.
-
-Tue Jul 7 08:06:14 1998 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (add_word_args) [!VA_SPRINTF]: Use buffer,
- not the undeclared temp_string.
- From: Tobias Naehring <naehring@eeetw3.et.tu-dresden.de>
- To: egcs-bugs@cygnus.com
- Date: Mon, 6 Jul 98 13:51:55 +0200
-
-Mon Jul 6 17:43:25 1998 Karl Berry <karl@cs.umb.edu>
-
- * info/nodes.h (NODE): Add display_pos member.
-
-Sun Jul 5 08:17:43 1998 Karl Berry <karl@cs.umb.edu>
-
- * info/nodes.h (INFO_REF_LABEL): Define.
-
- * util/texi2dvi: Rationalize use of `index' vs. more general
- `xref'.
-
-Thu Jul 2 18:53:43 1998 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c: Don't translate -Footnotes, it's a magic
- cookie. From Eli.
-
-Wed Jul 1 08:42:41 1998 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.txi (url): Missing word `command'.
-
-Tue Jun 30 10:35:48 1998 Karl Berry <karl@cs.umb.edu>
-
- * info/info.c: Missing \n in try --help msg.
-
- * makeinfo/makeinfo.c (cm_anchor): New fn for new cmd.
- (TAG_FLAG_ANCHOR): New flag for tag entries.
- (write_tag_table_internal): Handle anchor case.
- (TAG_FLAG_{{PREV,NEXT,UP}_ERROR,NO_WARN,IS_TOP}): Add TAG_FLAG_ prefix
- for clarity, change uses.
-
- * doc/texinfo.txi: Remove warning about footnotes with @item, that
- works now.
-
-Mon Jun 29 10:17:50 1998 Karl Berry <karl@cs.umb.edu>
-
- * configure.in (AM_CONFIG_HEADER): Use second argument to be 8.3
- compliant.
- * config.h.in: Rename to config.in.
-
- * info/Makefile.am (EXTRA_DIST),
- * info/terminal.c [__MSDOS__]: Change #include to pcterm.c and
- rename file.
-
-Sun Jun 28 14:29:27 1998 Karl Berry <karl@cs.umb.edu>
-
- * info/Makefile.am (EXTRA_DIST): Add pc_term.c.
-
- * makeinfo/makeinfo.c (HAVE_MACROS): Remove this conditional, we
- always want macros now.
-
- * info/indices.c: Copyright.
-
-1998-06-26 Eli Zaretskii <eliz@is.elta.co.il>
-
- * makeinfo/makeinfo.c: (only_macro_expansion): New variable,
- suppresses all expansions except macros.
- (replace_with_expansion): New function, replaces a portion of
- input text with its expansion. Avoids moving the text around if
- we are positive it will expand into itself. If the length of the
- expanded text is the same as the length of the original text, just
- replaces the original text without moving the rest. Resyncs the
- remembered text pointers with the realloc'ed input_text, when it
- is realloc'ed.
- (reader_loop): When only_macro_expansion is non-zero, only handle
- macros, but leave the rest of input intact.
- (read_command): Now returns an int, zero means no known command or
- macro is found after the prefix character; all callers changed.
- Support operation under non-zero only_macro_expansion.
- (cm_node): Expand only the macros in the @node line. Allocate and
- generate the macro-expanded @node line in one swell whoop.
- (glean_node_from_menu): Expand macros in menu entries.
- (get_xref_token): A new argument EXPAND, when non-zero, means
- expand macros in the entire brace-delimited argument before
- looking for the next comma; all callers changed.
- (expansion): Save and restore additional state variables important
- for output generation machinery. Disable indentation and filling
- during the recursive expansion, so that the output buffer offset
- is not invalidated by filling.
- (me_execute_string_keep_state): New function, calls
- me_execute_string, but saves and restores state variables
- important for output generation, so that -E doesn't change the
- generated Info output.
- (index_add_arg, cm_footnote): Call me_execute_string_keep_state.
- (expand_macro): New function, returns the macro expansion as a
- malloc'ed string.
- (execute_macro): Call expand_macro.
- (me_execute_string): Avoid memory leak by freeing input_filename.
- (get_until_in_braces, replace_with_expansion, add_char,
- cm_footnote, cm_macro, cm_unmacro, get_brace_args,
- extract_colon_unit): Use the faster memcpy/memmove instead of
- strncpy.
-
-Sat Jun 27 14:18:54 1998 Karl Berry <karl@cs.umb.edu>
-
- * doc/info.texi: Use @subsubsection instead of
- @unnumberedsubsubsection, since it's in a numbered chapter.
-
- * Started installation of following DOS patches from Eli.
->1998-05-16 Eli Zaretskii <eliz@is.elta.co.il>
->
-> * info/session.c (info_goto_node): Don't show the nodes of the
-> current Info file twice in *Completions*.
-> * info/echo-area.c (ea_possible_completions): Actually pass the
-> number of completions to printf_to_message_buffer.
->
-> * info/man.c (manpage_node_of_file_buffer): xstrdup the nodename
-> member of manpage nodes, since the tags are freed and recomputed
-> when a new man page is added to *manpages* file_buffer.
-> (get_manpage_node): Recompute info_windows[]->nodes[] for all
-> windows showing the man pages after nodes[]->contents are
-> invalidated by reallocation of file_buffer->contents.
->
->1998-05-15 Eli Zaretskii <eliz@is.elta.co.il>
->
-> * lib/system.h (DEFAULT_INFO_PRINT_COMMAND) [__MSDOS__]: Define to
-> ">PRN".
-> * info/session.c (print_node): Support ">printer" in
-> INFO_PRINT_COMMAND, to mean write to the named file/device insead
-> of piping to it as a program.
-> (kill_node): Compare window in addition to the nodename, when
-> looking for the node to kill.
->
->1998-05-09 Eli Zaretskii <eliz@is.elta.co.il>
->
-> * lib/system.h (SET_SCREEN_SIZE_HELPER) [__MSDOS__]: Define a new
-> macro.
-> * info/m-x.c (set_screen_height): Use SET_SCREEN_SIZE_HELPER, if
-> defined. If the screen size did'n change, redisplay the previous
-> screen contents.
->
-> * info/infomap.c (initialize_info_keymaps) [__MSDOS__]: Bind DEL
-> to ea_delete in the echo-area keymap.
-> * info/session.c (incremental_search): If the key is
-> isearch_terminate_search_key, but buffered input is pending, don't
-> gobble the ESC key.
->
-> * info/info.c (main): Switch the order thet terminal_prep_terminal
-> and terminal_clear_screen are called, to make it consistent with
-> what initialize_info_session does when called with non-zero second
-> argument. Call terminal_unprep_terminal last, after moving the
-> cursor to the bottom of the screen. If user_filename is of the
-> form "d:foo", add "d:." to the INFOPATH, not "d:".
->
-> * info/signals.c (initialize_info_signal_handler): Save old
-> SIGUSR1 handler.
-> (info_signal_handler): Handle SIGUSR1.
->
-> * info/indices.c (info_apropos): Print the results to stdout.
->
->1998-05-02 Eli Zaretskii <eliz@is.elta.co.il>
->
-> * makeinfo/makeinfo.c (ALSO_NULL_DEVICE): New macro, for alternate
-> null device name.
->
-> * info/man.c (get_manpage_contents): Redirect stderr of the man
-> page formatter to the null device.
-> (executable_file_in_path): Use IS_SLASH.
->
-> * info/session.c (info_gather_typeahead) [__DJGPP__]: Call
-> pc_term_chars_avail to get the number of pending characters.
->
-> * info/filesys.c (convert_eols): New function, converts DOS-style
-> EOLs to a single Newline.
-> (filesys_read_info_file, filesys_read_compressed): Call it.
-> (filesys_read_compressed) [STRIP_DOT_EXE]: Use explicit .exe
-> suffix.
-> (filesys_read_compressed): Check return status of `pclose'.
->
->1998-05-01 Eli Zaretskii <eliz@is.elta.co.il>
->
-> * info/filesys.c (filesys_read_info_file): Add additional
-> parameter: is_compressed. All callers changed.
->
-> * makeinfo/makeinfo.c (convert_from_loaded_file): Compare file
-> names with FILENAME_CMP. Use NULL_DEVICE.
-> (cm_node): Compare file names with FILENAME_CMP.
-> * info/tilde.c (tilde_find_suffix, tilde_expand_word): Use
-> IS_SLASH.
->
-> * info/pc_term.c: New file, handles the PC terminal on MS-DOS and
-> MS-Windows.
-> * info/terminal.c [__MSDOS__]: Include pc_term.c.
-> * info/Makefile.in (ginfo_SOURCES): Add pc_term.c
-> Add pc_term.c to dependencies of terminal.o.
->
-> * info/session.c (info_get_input_char): Reassign tty after EOF
-> from a non-stdin input stream.
->
->1998-04-30 Eli Zaretskii <eliz@is.elta.co.il>
->
-> * info/session.c (info_set_input_from_file): Use binary input.
-> (info_gc_file_buffers): Compare file names with FILENAME_CMP.
-> * info/search.c (skip_whitespace_and_newlines): Use
-> whitespace_or_newline macro instead of reinventing the wheel.
-> * info/nodes.c (info_find_file_internal): Use IS_ABSOLUTE and
-> FILENAME_CMP.
-> (info_load_file_internal): Call filename_non_directory to find out
-> where the basename begins.
-> (get_tags_of_indirect_tags_table): Call filename_non_directory.
-> containing_dir of "d:foo" is "d:.", not "d:".
-> (forget_info_file): Compare file names with FILENAME_CMP.
-> * info/nodemenu.c (get_visited_nodes): Use FILENAME_CMP to find
-> duplicate lines.
->
-> * lib/system.h (PIPE_USE_FORK): New macro.
-> * info/man.c (get_manpage_contents): Use it to determine whether
-> to call pipe/fork/exec or popen/pclose to run the man page
-> formatter.
-> (executable_file_in_path): Search for the file with several known
-> extensions such as .exe, where appropriate.
->
-> * lib/system.h (NULL_DEVICE): A new macro.
-> * info/makedoc.c (main): Use it.
-> (maybe_dump_tags): Switch output strem to binary mode when
-> appropriate.
-> (process_one_file): Update file_size after reading the file.
->
-> * info/infodoc.c: Add TAB, RET, and `i' to the list of important
-> commands in info_internal_help_text.
->
-> * info/info.c (main): Support the --speech-friendly option. Use
-> PATH_SEP to separate directories.
-> (info_short_help) [__MSDOS__]: Mention the --speech-friendly
-> option.
->
-> * info/info-utils.c (filename_non_directory): Use HAVE_DRIVE and
-> IS_SLASH.
-> * info/indices.c (do_info_index_search, index_entry_exists): Use
-> FILENAME_CMP to compare file names.
-> * info/filesys.c: Add ".inf" to the list of known extensions.
-> Look for .z before .Z, for the sake of case-insensitive
-> filesystems. Add DOS-specific extensions to work around 8+3
-> namespace restrictions.
-> (info_absolute_file): New function.
-> (info_find_fullpath): Call it for candidates which are absolute
-> file names. Use IS_SLASH and IS_ABSOLUTE.
-> (info_file_in_path): Use IS_SLASH.
-> (extract_colon_unit, info_add_path): Use PATH_SEP instead of ":".
-> (lookup_info_filename): Compare file names with FILENAME_CMP.
-> (filesys_read_info_file): Read Info files in binary mode.
-> (filesys_decompressor_for_file): Read Info files in binary mode.
-> Compare file names with FILENAME_CMP. On MS-DOS, allow files
-> whose names end with a `z' be decompressed with gunzip.
-> * info/dribble.c (open_dribble_file): Open dribble file in
-> FOPEN_WBIN mode.
-> * info/dir.c (maybe_build_dir_node): Use IS_SLASH.
-> * util/texindex.c (maketempname): Put the numeric suffix after the
-> dot, to salvage 3 more characters on 8+3 filesystems.
->
->1998-04-29 Eli Zaretskii <eliz@is.elta.co.il>
->
-> * util/texindex.c (main): Use IS_SLASH to find the basename of
-> argv[0]. Lose the .exe suffix, if any.
-> (decode_command): Look at $TEMP and $TMP in addition to $TMPDIR.
-> Use DEFAULT_TMPDIR.
-> * util/texi2dvi: Use either `:' or `;' as directory separator in
-> TEXINPUTS, computed at run time. Save previous versions of index
-> files in a separate backup directory.
-> * util/install-info.c (main): Support backslashes in file names by
-> using IS_SLASH. Avoid recomputing length of infile_basename
-> unnecessarily. Use FILENAME_CMP for comparing file names
-> case-insensitively, where appropriate. Allow foo.inf as well as
-> foo.info to be an Info file name.
-> * lib/system.h (PATH_SEP, STRIP_DOT_EXE, FILENAME_CMPN,
-> DEFAULT_TMPDIR): New macros.
->
->1998-04-25 Eli Zaretskii <eliz@is.elta.co.il>
->
-> * lib/system.h (O_BINARY, SET_BINARY, FOPEN_RBIN, FOPEN_WBIN,
-> IS_SLASH, HAVE_DRIVE, IS_ABSOLUTE, FILENAME_CMP, PATH_SEP,
-> HAVE_LONG_FILENAMES): New macros.
-> * makeinfo/makeinfo.c (find_and_load): Use O_BINARY to decide when
-> read returning a value different from what st_size says is not an
-> error. Realloc the buffer after we've read the file.
-> (skip_directory_part): New function, skips leading directory in a
-> way that works on DOSISH systems.
-> (filename_non_directory, pathname_part): Call it.
-> (filename_part): Call filename_non_directory.
-> (expand_filename, full_pathname): Use IS_ABSOLUTE and IS_SLASH.
-> (convert_from_file): Check .txi extension first.
-> (split_file): Support splitting output files on 8+3 filesystems.
-> (main, extract_colon_unit): Use PATH_SEP instead of ':'.
-> (get_file_info_in_path): Use IS_ABSOLUTE and IS_SLASH.
-
-
- * doc/texinfo.txi: Changes from Eli for MS-DOS stuff.
- * doc/info-stnd.texi: Fixes from Eli: he documented all the
- missing keys and command-line options, corrected
- inaccuracies (probably left-overs from previous versions),
- and added some clarifications where I thought the manual
- was not clear enough.
- * Makefile.am (EXTRA_DIST): Add djgpp files.
-
- * makeinfo/makeinfo.c: New no-op commands @setcontentsaftertitlepage
- and @setshortcontentsaftertitlepage.
- * doc/texinfo.txi: Document the new @set{,short}contentsaftertitlepage
- commands and the possibility of putting @contents and
- @shortcontents after @end titlepage.
-
- * util/texi2dvi: Check that the toc file has not changed (as well
- as .aux and .??).
-
-Thu Jun 25 16:58:46 1998 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.txi: Document new commands @env, @command, @option.
-
- * makeinfo/makeinfo.c (option, command, env): New markup commands, same
- as @code in info.
-
-Wed Jun 24 15:39:38 1998 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c: New no-op command @acronym.
-
- * doc/texinfo.txi: Document new command @acronym.
-
- * util/install-info.c (strip_info_suffix, menu_item_equal): New fns.
- (main): Call them instead of doing the filename test inline; all the
- .info variations are too confusing to write out twice.
-
-Tue Jun 23 18:01:40 1998 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.txi: Fix some overfull boxes.
-
-Mon Jun 22 19:22:17 1998 Karl Berry <karl@north>
-
- * configure.in: Remove AC_LINK_FILES call, that was an old gettext
- thing, no longer necessary, and causes problems with Autoconf.
-
-Sun Jun 14 07:00:15 1998 Karl Berry <karl@cs.umb.edu>
-
- * util/texi2dvi: Indent options so help2man will work. From Akim.
-
-Sat Jun 13 10:45:25 1998 Karl Berry <karl@cs.umb.edu>
-
- * configure.in (ALL_LINGUAS): Add nl.
-
- * util/texi2dvi: Avoid tabs.
-
-Wed Jun 10 17:38:21 1998 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (gen_defindex): Use xmalloc instead of alloca.
- This was our only use of alloca, so also remove all the #if junk
- at the beginning to define it.
-
- * makeinfo/makeinfo.c: Fix grammar in multiply-defined-node error
- message.
-
-Tue Jun 9 17:53:54 1998 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.txi: Document new commands @smallformat,
- @smalldisplay.
-
- * makeinfo/makeinfo.c: New commands @smalldisplay and @smallformat.
- Suggestion from: Eli Zaretskii <eliz@is.elta.co.il>.
-
- * makeinfo/makeinfo.h (insertion_type, insertion_type_names):
- Declare smalldisplay and smallformat.
-
-Mon Jun 8 07:57:52 1998 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.txi: Document possibility of combining @titlefont
- and @title. From Eli.
-
- * util/texi2dvi: Set verbose to : instead of false by default.
-
- * util/texi2dvi: Missing \\ for sed with -t text. From Akim.
-
-Sun Jun 7 13:02:13 1998 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.txi: Document @pagesizes and texidvi -t.
-
- * makeinfo/makeinfo.c: Define no-op @pagesizes and @afourpaper.
- (major_version, minor_version): Remove these globals, just use the
- Texinfo package version.
- (print_version_info): Ditto.
-
-Fri Jun 5 17:54:16 1998 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.txi: Change texi2dvi documentation a bit.
-
- * util/texi2dvi: Handle --option=argument style of specifying
- arguments.
-
-Sat May 30 14:01:37 1998 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.txi: More.
-
- * util/install-info.c (open_possibly_compressed_file): Finish
- implementation.
-
- * doc/texinfo.txi: Document install-info compression support.
-
-Fri May 29 08:01:43 1998 Karl Berry <karl@cs.umb.edu>
-
- * util/install-info.c (open_possibly_compressed_file): Initial
- implementation.
-
- * util/install-info.c (output_dirfile): Attempt to write dir.gz if
- that's what we read.
- (readfile): Pass back the actual opened filename, too.
-
- * info/indices.c: Check in Eli's patch.
-
-Thu May 28 17:09:45 1998 Karl Berry <karl@cs.umb.edu>
-
- * util/install-info.c (readfile): Set up to handle compressed
- input (and output) files. Change callers.
- Rearrange function order to avoid forward declarations.
-
- * configure.in: Remove check for libz, we'll fork gzip instead.
-
-Tue May 26 18:01:13 1998 Karl Berry <karl@cs.umb.edu>
-
- * util/install-info.c (print_help): Missing \n\ in help string.
-
- * makeinfo/makeinfo.c (POST_SENTENCE): Rename from post_sentence.
- Change calls.
- (flush_output): Strip 8th bit if post_sentence char as well as space.
- (cm_code, etc.): Change add_char calls for post_sentence chars to set
- 8th bit.
-
-1998-05-23 Eli Zaretskii <eliz@is.elta.co.il>
-
- * info/indices.c (info_next_index_match): Call
- info_set_node_of_window to display the node, so that footnotes are
- displayed as well.
-
-Thu May 21 11:05:50 1998 Karl Berry <karl@cs.umb.edu>
-
- * util/install-info.c (output_dirfile): New function, extracted
- from the end of main.
-
- * makeinfo/makeinfo.c (begin_insertion): Ignore @group in all the
- example-like environments, not just @example. Otherwise the first
- line in the environment is not indented correctly. Reported by rms.
-
-Wed May 20 17:44:38 1998 Karl Berry <karl@cs.umb.edu>
-
- * util/install-info.c: Doc fixes.
-
- * util/install-info.c: Handle XEmacs-style dir entries:
- * FILENAME::PROGRAM DESCRIPTION.
- Date: Wed, 13 May 1998 13:58:28 +0900
- From: KIRIYAMA Kazuhiko <kiri@kiri.toba-cmt.ac.jp>
-
- Also, do not set something_deleted on continuation lines; they are only
- deleted if the entry was deleted.
-
-Tue May 19 17:22:50 1998 Karl Berry <karl@cs.umb.edu>
-
- * util/install-info.c: Do not read the dir file if we are only
- deleting -- it might not exist, and we don't actually need it.
- From: David Kaelbling <drk@sgi.com>
- Date: Tue, 12 May 1998 11:05:26 -0400
-
- * util/gen-dir-node:
- From: David Kaelbling <drk@sgi.com>
- Date: Tue, 12 May 1998 16:05:16 -0400 -
- - The "dir" moobler header is slightly different from the default
- dir file.
- - If all files in ${infofiles} appear in the skeleton the last one
- is processed twice.
- - INFO-DIR-SECTION data is ignored.
- - Don't generate entries for directories.
-
-Sat May 16 17:16:56 1998 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (cm_novalidate): New fn for new command
- @novalidate, like --no-validate.
-
-Thu May 14 18:02:31 1998 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.txi: Document the @novalidate command.
-
-Wed May 13 17:47:20 1998 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.txi: Document limitation on @set/@value names in
- index commands.
-
-Fri May 1 14:12:15 1998 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.txi (Command List): @deftypevar out of order.
-
- * configure.in (ALL_LINGUAS): Add cs.
-
-Tue Apr 28 09:33:41 1998 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (strcasecmp): This is in lib now.
-
-1998-04-26 Richard Stallman <rms@psilocin.gnu.org>
-
- * util/install-info.c (print_help): Doc clarifications.
-
-Sun Apr 19 15:55:10 1998 Karl Berry <karl@cs.umb.edu>
-
- * lib/system.h (strcasecmp, strncasecmp) [!HAVE_STR[N]CASECMP]:
- Declare these.
-
- * info/search.h (str[n]casecmp): Remove decl from here.
-
- * configure.in (AC_REPLACE_FUNCS): Check for strcasecmp and
- strncasecmp here.
- (AC_CHECK_FUNCS): Instead of just strcasecmp here.
-
- * configure.in (texconfig): Use TEXMFMAIN in preference to TEXMF
- for post-0.4 teTeX.
-
-Wed Apr 15 17:20:31 1998 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.txi (Reporting Bugs): New section.
- Suggestion from: Andrew Shapira <shapiraa@cs.rpi.edu>
- Date: Mon, 4 Aug 1997 19:06:06 -0400 (EDT)
-
- * info/infomap.c: Define / to be info_search.
- Suggestion from: Egil Kvaleberg <egil@kvaleberg.no>
- Date: Fri, 1 Aug 1997 08:16:45 +0200 (MET DST)
-
- * doc/texinfo.txi (uref): Document reason for not using <URL: format.
- Also use ftp.gnu.org instead of ftp.gnu.ai.mit.edu throughout.
-
-Tue Apr 14 10:43:39 1998 Karl Berry <karl@cs.umb.edu>
-
- 1998-04-05 Karl Eichwalder <ke@suse.de>
- * makeinfo/makeinfo.c (begin_insertion): No need to
- gettext; it's a keyword. From carl-friedriech.spilcke-liss@ensae.fr.
- (cm_printindex): ditto.
-
- * util/texi2dvi: Always remove the $tmp_dir's.
- From: Dean Gaudet <dgaudet@arctic.org>
- Date: Tue, 14 Apr 1998 00:55:36 -0700 (PDT)
-
-Mon Apr 13 18:02:57 1998 Karl Berry <karl@cs.umb.edu>
-
- * configure.in: Include
- AM_SYS_POSIX_TERMIOS
- AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
- to avoid window resizing being ignored under glibc2 systems,
- e.g., Red Hat Linux 5.0. Actually any system where the ioctls are not
- defined in <termios.h>.
- See also http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl/full/206.
- * acconfig.h (GWINSZ_IN_SYS_IOCTL): New #undef for autoheader.
- * info/termdep.h [GWINSZ_IN_SYSIOCTL]: #include <sys/ioctl> if
- this is defined.
- From: Mark Jefferys <mjeffery@cse.ogi.edu>
- Date: Thu, 9 Apr 1998 12:38:27 -0700 (PDT)
-
-Fri Apr 3 01:18:22 1998 Philippe De Muyter <phdm@macqel.be>
-
- * info/info.c (main): Use 0, not NULL, as ? : alternative.
-
-Tue Mar 3 13:29:17 1998 Karl Berry <karl@cs.umb.edu>
-
- * configure.in: Version 3.12.
-
- * po/de.po: New version.
-
- * po/POTFILES.in: Do not include doc.c; that gets built at
- runtime, thus causing texinfo.pot to try to get rebuilt. Besides,
- it doesn't have any translatable strings.
-
-Sun Mar 1 10:38:47 1998 Karl Berry <karl@cs.umb.edu>
-
- * util/install-info.c: No need for i18n on version message. From
- ke@suse.de.
-
-Fri Feb 27 16:06:23 1998 Karl Berry <karl@cs.umb.edu>
-
- * configure.in: Run texconfig conf instead of confall.
-
- * doc/Makefile.am (INSTALL_INFO): New variable.
- (install-info-am): Use install-info from our distribution.
-
- * info/info.c (info_minor_version): Increment.
- * (info_patch_level),
- * info/info.h (info_patch_level): Remove.
-
- * info/info.c (program_name): Move decl.
-
- * util/install-info.c (ensure_dirfile_exists): Use commas and \t
- instead of an explicit tab, which make dist expands.
-
- * doc/texinfo.txi: @prep.ai.mit.edu -> @gnu.org.
-
- * info/info.c: Make help messages consistent with others.
-
- * util/install-info.c (print_help): Format consistently.
-
- (readfile): Support gzipped files via libz.
- From: Elliot Lee <sopwith@redhat.com>
- Date: Mon, 1 Sep 1997 23:37:14 -0400 (EDT)
-
-Thu Feb 26 16:13:14 1998 Karl Berry <karl@cs.umb.edu>
-
- * info/echo-area.c: Whoops, _ might not start with parens.
-
- * configure.in: Check for libz.
- Do not output emacs/Makefile.
-
- * Makefile.am (AUTOMAKE_OPTIONS): Set to 1.2f.
-
- * util/texi2dvi: Always remove temporary directories. (From Akim.)
- Formatting changes.
-
-Wed Feb 25 15:26:26 1998 Karl Berry <karl@cs.umb.edu>
-
- * util/texi2dvi: New options --batch, --clean.
- From: Akim Demaille <demaille@inf.enst.fr>
- Date: 15 Aug 1997 18:05:33 +0200
- * doc/texinfo.txi (Format with texi2dvi): Mention --help.
-
- Applied this:
-1997-08-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * makeinfo/makeinfo.c (me_executing_string): New variable.
- (me_execute_string): Use it instead of executing_string.
- (popfile): Check for me_executing_string as well as
- executing_string.
- (get_until_in_line): Likewise.
- (insert_and_underscore): Do not write any expansion output if
- executing a string.
- (cm_node, cm_include, index_add_arg, cm_footnote, execute_macro,
- cm_macro, cm_unmacro): Likewise.
- (cm_footnote): Include the footnote marker in the expansion
- output.
- (append_to_expansion_output): Do nothing if the input_text wasn't
- a remembered text.
- (defun_internal): Make the index entry even if expanding macros.
- (expansion): Don't reset macro_expansion_output_stream around call
- to execute_string.
- (apply): Fix typo.
-
-Tue Feb 24 17:33:44 1998 Karl Berry <karl@cs.umb.edu>
-
- 1997-11-10 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
- * makeinfo/makeinfo.c (get_until_in_line): Don't use xstrdup on
- the unterminated input_text.
-
- * makeinfo/makeinfo.c: Don't assume all \'s in macro bodies are
- arguments.
- From: Mathias.Herberts@irisa.fr (Mathias Herberts)
- Date: Tue, 6 Jan 1998 18:54:26 +0100
-
- * configure.in: Check for sigblock in libc before libbsd.
- * From: hjl@lucon.org (H.J. Lu)
- * Date: Fri, 23 Jan 1998 21:50:25 -0800 (PST)
-
-Mon Feb 23 16:26:31 1998 Karl Berry <karl@cs.umb.edu>
-
- * info/window.c (character_width): If ISO_Latin_p is set, make
- printable_limit 255, not 160. ISO Latin 1 uses
- essentially all of the 256 characters.
- Reported by: Marius Groeger <mag@sysgo.de>
- Date: Wed, 17 Dec 1997 16:05:27 +0100
-
- * info/info.c: Improve help message.
-
-Sun Feb 22 17:38:32 1998 Karl Berry <karl@cs.umb.edu>
-
- * Makefile.am (SUBDIRS): Remove emacs; we'll just distribute the
- Elisp files with Emacs.
-
- * doc/Makefile.am (info_TEXINFOS, texinfo): Rename manual to
- texinfo.txi to avoid DOS filename clash with texinfo.tex.
-
- * info/tilde.c: Copy slightly updated alloca stuff from makeinfo.
-
- * util/texindex.c (main): Declare as returning int to placate
- warnings.
-
- * info/Makefile.am: Uncomment BUILT_SOURCES stuff and add missing _.
- From: "Joel N. Weber II" <devnull@gnu.org>
- Date: Fri, 30 Jan 1998 17:21:38 -1000
-
- * util/texindex.c,
- * util/install-info.c,
- * makeinfo/makeinfo.c,
- * info/info.c: Change help address to @gnu.org.
-
- 1998-01-22 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
- * makeinfo/makeinfo.c (usage): Fix order of arguments to help
- format string.
-
- * makeinfo/makeinfo.c (cm_top): Error message wording.
-
- * doc/texinfo.texi (Functions in Typed Languages): Remove
- duplicate description of @deftypemethod.
- From: KHMarbaise@p69.ks.fido.de (Karl Heinz Marbaise)
- Date: Wed, 07 Jan 1998 11:11:50 +0100
-
- * info/session.c (info_get_input_char) [EINTR]: Keep reading if we
- get EINTR.
- From: Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
- Date: 22 Dec 1997 10:32:53 +0100
-
-Sat Feb 21 17:41:26 1998 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (find_and_load): Malloc enough room for the
- null as well as the newline.
- From: "John W. Eaton" <jwe@bevo.che.wisc.edu>
- Date: Tue, 30 Sep 1997 21:12:01 -0500
-
- * util/texindex.c (--version),
- * makeinfo/makeinfo.c (cm_today),
- * makeinfo/makeinfo.c (print_version_info): Version strings etc. do not
- need translation.
- From: Karl Eichwalder <ke@suse.de>
- Date: 13 Sep 1997 16:20:02 +0200
-
- * info/echo-area.c: Rewrite pluralization to be translatable.
- From: Karl Eichwalder <ke@suse.de>
- Date: 13 Sep 1997 16:20:02 +0200
-
- * util/texindex.c,
- * info/info.c,
- * makeinfo/makeinfo.c,
- * util/install-info.c: --version: Give year as argument to printf,
- to reduce the number of translations needed.
- From: Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
- Date: 02 Sep 1997 18:01:26 +0200
-
- * util/texindex.c: Remove the fnctl.h and sys/file.h conditional #includes, they are
- already in lib/system.h.
- From: "Philippe De Muyter" <phdm@macqel.be>
- Date: Thu, 21 Aug 1997 20:16:49 +0200 (MET DST)
-
- * info/terminal.c (terminal_begin_using_terminal,
- terminal_end_using_terminal): #ifdef SIGWINCH settings for
- m68k-motorola-sysv.
- From: "Philippe De Muyter" <phdm@macqel.be>
- Date: Thu, 21 Aug 1997 20:16:49 +0200 (MET DST)
-
- * info/filesys.c (info_suffixes): Add /index as a possibility for
- subdirectories.
- From: Matthew Wilcox <willy@odie.barnet.ac.uk>
- Date: Wed, 6 Aug 1997 15:55:16 +0100 (BST)
-
- * configure.in: Redirect texconfig input from /dev/null to avoid
- stoppage.
- From: Thomas Esser <te@informatik.uni-hannover.de>
- Date: Mon, 4 Aug 1997 18:15:49 +0200
-
- * makeinfo/makeinfo.c (find_and_load): Null-terminate the input text.
- From: Kenneth Stailey <kstailey@disclosure.com>.
-
- * info/Makefile.am (INCLUDES): Add -I.. -I$(srcdir).
-
-Fri Aug 22 16:24:59 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.texi: Adjust ISBN, edition number for print run.
-
-Mon Aug 4 16:12:42 1997 Karl Berry <karl@cs.umb.edu>
-
- * info/info.c (main) [INFODIR]: Add this to infopath, if set.
- * info/Makefile.am (DEFS): New define, include -DINFODIR.
- From: Larry Schwimmer <rosebud@cyclone.Stanford.EDU>.
-
- * util/install-info.c (ensure_dirfile_exists): Use tabs instead of
- spaces on the File: dir line.
- Bug from: Dave Love <d.love@dl.ac.uk>.
-
-Sat Aug 2 12:43:57 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (cm_value, cm_email, cm_uref): Have to cast
- from unsigned char * to char * or IRIX cc complains.
- From: "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu>.
-
-Fri Aug 1 14:05:10 1997 Karl Berry <karl@cs.umb.edu>
-
- * Makefile.am (EXTRA_DIST): Remove README-alpha.
- From: "ir. Mark M._Kettenis" <kettenis@phys.uva.nl>.
-
-1997-07-31 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * configure.in: Use AC_CHECK_HEADERS, not AC_CHECK_HEADER.
-
-Thu Jul 31 11:57:46 1997 Karl Berry <karl@cs.umb.edu>
-
- * Version 3.11.
-
- * info/man.c (reap_children): Declare status as int, not unsigned,
- since that's what POSIX says the arg to wait should be.
-
- * makeinfo/makeinfo.c (cm_uref, cm_email): Rewrite to do macro
- expansion in the arguments.
-
- * makeinfo/makeinfo.c (main): setlocale LC_MESSAGES and LC_TIME,
- instead of LC_ALL.
- From: Akim Demaille <demaille@inf.enst.fr>.
-
- * makeinfo/makeinfo.c (cm_today): Let the %d %s %d be translated,
- so other languages can change the order of day/month/year.
- From: Akim Demaille <demaille@inf.enst.fr>.
+ (xml_add_char): do not do anything about @deffnx and @itemx commands
+ if xml_dont_touch_items_defs is non-zero.
- * info/infomap.c: Doc fix.
+2004-01-09 Alper Ersoy <dirt@gtk.org>
- * lib/system.h [!O_RDONLY]: Prefer <fcntl.h> to <sys/fcntl.h>.
+ * info/Makefile.am: define INFODIR2 that points to $datadir/info.
- * configure.in (AC_CHECK_HEADERS): Check for fcntl.h.
+ * info/info.c (main): prepend INFODIR2 to infopath, if defined and if
+ not the same with INFODIR.
- * doc/Makefile.am (install-data-local): Suggest tex/generic/dvips
- for epsf.tex.
- From: Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
+2004-01-08 Alper Ersoy <dirt@gtk.org>
- * configure.in (TEXMF): Move check to block with other program
- checks.
+ * makeinfo/index.c (cm_printindex): adapted to delayed writing,
+ decreased the space between the columns of plaintext output.
-Wed Jul 30 11:20:37 1997 Karl Berry <karl@cs.umb.edu>
+ * makeinfo/float.c (cm_listoffloats): disabled menu header checks,
+ synced column_width with @printindex.
- * makeinfo/makeinfo.c (defun_internal): Allow extra text after
- most @def... commands, for tzname[2] in libc.texinfo.
+2004-01-08 Alper Ersoy <dirt@gtk.org>
- * info/info.c: Include indices.h.
- * configure.in (AC_CHECK_HEADERS): Test for sys/wait.h, info/man.c
- uses it.
- From: Erick Branderhorst <Erick.Branderhorst@asml.nl>.
+ * makeinfo/index.c: moved INDEX_ELT and INDEX_ALIST typedefs to ...
-Tue Jul 29 15:55:19 1997 Karl Berry <karl@cs.umb.edu>
+ * makeinfo/index.h: here
- * configure.in: Version 3.9j.
+ * makeinfo/files.h:
+ * makeinfo/files.c (register_delayed_write): save line number in input
+ document that the calling command is in.
+ (handle_delayed_writes): adjust byte offsets in tag table and output
+ line numbers in all of the indices,
- * info/terminal.c (output_character_function): Return int (the
- arg), not void.
+ * makeinfo/makeinfo.c (convert_from_loaded_file): when finished, write
+ the tag table after handling delayed writes.
- * info/infomap.c: Don't define term_kP as 'v', since that's undefined.
- From: Tom Hageman <tom@basil.icce.rug.nl>.
+ * makeinfo/node.c (write_tag_table): accept a filename argument, and
+ open the file in append mode.
- * makeinfo/makeinfo.c: Parameterize some messages to avoid
- duplicate translations.
+2004-01-08 Alper Ersoy <dirt@gtk.org>
- * info/terminal.c: Only try to declare ospeed, PC, tputs, etc. if
- we don't have <ncurses.h/termcap.h> or <termcap.h>.
+ * makeinfo/float.c (add_new_float):
+ * makeinfo/float.h: save the line number @float command used.
- * makeinfo/makeinfo.c (cm_email): New function, like cm_uref.
+2004-01-08 Alper Ersoy <dirt@gtk.org>
-Sun Jul 27 17:09:20 1997 Karl Berry <karl@cs.umb.edu>
+ * makeinfo/toc.c (cm_contents): moved the call to html_output_head
+ to ...
- * configure.in: Only check for <ncurses/termcap.h> if we're using
- -lncurses.
- From: Bo Johansson <bo.johansson@mbox2.swipnet.se>.
+ * makeinfo/files.c (register_delayed_write): here.
- * info/dir.c (new_dir_file_p): Avoid automatic struct
- initialization, SunOS 4 etc. cc can't handle it.
- From: "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu>.
+2004-01-08 Alper Ersoy <dirt@gtk.org>
-Sat Jul 26 15:08:13 1997 Karl Berry <karl@cs.umb.edu>
+ * makeinfo/float.c (cm_listoffloats): adapted for delayed writing,
+ and slightly fixed formatting with no_headers.
- * Version 3.9i.
+2004-01-08 Alper Ersoy <dirt@gtk.org>
- * configure.in: Check for termcap.h and ncurses/termcap.h.
- From: bo.johansson@mbox2.swipnet.se.
+ * makeinfo/cmds.c: use cm_contents for @shortcontents
+ and @summarycontents too.
-Fri Jul 25 14:09:05 1997 Karl Berry <karl@cs.umb.edu>
+ * makeinfo/files.c (register_delayed_write)
+ (handle_delayed_writes): new functions.
- * doc/texinfo.texi: Document new second optional arg to email.
+ * makeinfo/files.h: new delayed_write struct and
+ handling_delayed_writes variable.
- * info/infodoc.c: Document CTRL-x 0 as the way to get out of help.
+ * makeinfo/makeinfo.c (insert): use whitespace macro instead of
+ testing characters manually.
+ (convert_from_loaded_file): call handle_delayed_writes when finished.
+
+ * makeinfo/toc.c (contents_update_html, contents_update_info)
+ (shortcontents_update_html, shortcontents_update_info): changed file
+ read/writes with insert and insert_string.
+ (rewrite_top, contents_update, shortcontents_update)
+ (toc_update, cm_shortcontents): removed functions.
+ (cm_contents): for HTML and Info, only call register_delayed_write if
+ handling_delayed_writes is not true. Call contents_update_html and
+ other variants according to output format and command name.
- * info/dir.c (maybe_build_dir_node): Really check for the same dir
- file twice, not just by name.
- (new_dir_file_p): New function.
+ * makeinfo/toc.h: removed obsolete variables and functions.
- * util/install-info.c: Tell them about --help in doc strings.
+2004-01-08 Alper Ersoy <dirt@gtk.org>
-Thu Jul 24 14:25:44 1997 Karl Berry <karl@cs.umb.edu>
+ * makeinfo/index.c (index_add_arg): keep line number of the index
+ entry where it appears in the output.
+ (insert_index_output_line_no): new function.
+ (cm_printindex): call insert_index_output_line_no for info and
+ plaintext outputs.
- * util/texindex.c (memory_error): Move to avoid incorrect implicit
- decl.
+2004-01-08 Alper Ersoy <dirt@gtk.org>
- * makeinfo/makeinfo.c,
- * makeinfo/multi.c,
- * util/install-info.c,
- * util/texindex.c,
- * info/tilde.c,
- * info/man.c,
- * info/gc.c,
- * info/session.c (info_replace_key_to_typeahead): Remove unused
- function,
- * info/nodemenu.c,
- * info/man.c,
- * info/m-x.c,
- * info/footnotes.c
- * info/info.c
- * info/indices.c,
- * info/filesys.c: Parenthesize to avoid -Wall warnings
- remove unused variables,
- make return types explicit,
- printf type corrections.
+ * makeinfo/makeinfo.h: new variable output_line_number.
- * lib/system.h: <ctype.h>: Include this.
- * util/texindex.c,
- * makeinfo/makeinfo.c,
- * info/echo-area.c,
- * info/display.c: ctype.h: Included in system.h now.
+ * makeinfo/makeinfo.c (flush_output): keep number of lines in the
+ flushed data, in output_line_number variable.
- * info/echo-area.c: Parenthesize to avoid -Wall warnings.
- (ctype.h): #include for isprint.
- (echo_area_stack_depth): Remove unused function.
- * info/display.c: Parenthesize to avoid -Wall warnings.
- (ctype.h): #include for isprint.
- * info/dir.c: Parenthesize to avoid -Wall warnings.
- (build_dir_node_internal): Remove declaration of nonexistent function.
- From: Erick Branderhorst <Erick.Branderhorst@asml.nl>.
+2004-01-07 Alper Ersoy <dirt@gtk.org>
- * configure.in (TEXMF): Call texconfig to discover the default value,
- for the sake of the warning in doc/Makefile.
- From: Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
+ * makeinfo/float.c (cm_listoffloats): when there is no caption, do not
+ insert space between the float number and the colon.
- * doc/Makefile.am (TEXMF): New variable.
- (install-data-local): Use it in warning.
- From: Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
+2004-01-07 Alper Ersoy <dirt@gtk.org>
- * info/session.c (initialize_info_session): Only call
- terminal_prep_terminal if clear_screen is true. Otherwise, failed
- --index-searches prep the terminal but do not unprep it.
- From: William Edward Webber <wew@yallara.cs.rmit.EDU.AU>.
+ * makeinfo/float.c (cm_listoffloats): use shorttitle only if it's
+ defined.
- * info/nodemenu.c: Doc fix.
+2004-01-07 Alper Ersoy <dirt@gtk.org>
-Mon Jul 21 17:11:09 1997 Karl Berry <karl@cs.umb.edu>
+ * makeinfo/cmds.c: new command @shortcaption.
- * doc/texinfo.texi: Comment out @smallbook and @set smallbook so
- people at other sites can print it the way they want.
- From: Thomas Walter <walter@pctc.chemie.uni-erlangen.de>
-
-Sun Jul 20 07:52:25 1997 Karl Berry <karl@cs.umb.edu>
-
- * configure.in: 3.9h.
-
- * doc/Makefile.am (install-info-am, distclean-aminfo): New targets
- to avoid assuming info files are in srcdir.
-
- * lib/system.h (xstrdup): Returns char *, not void *.
-
- * doc/Makefile.am (.texi.info),
- * doc/Makefile.am (texinfo): Don't run in $(srcdir).
-
- * util/install-info.c (main): Remove unnecessary decl of strrchr.
-
- * info/tilde.c: Include info.h (for config.h) before alloca stuff.
-
- * makeinfo/makeinfo.c (validate_file): Rename `valid' to `valid_p'
- to avoid conflict with SunOS 4 header files.
- From: "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu>.
-
- * info/session.c (initialize_info_session): Call
- terminal_prep_terminal here (before calling terminal_clear_screen).
- (info_session): Instead of here.
- From: William Edward Webber <wew@yallara.cs.rmit.EDU.AU>.
-
- * Makefile.am (EXTRA_DIST): Add README-alpha.
-
-Sat Jul 19 13:50:27 1997 Karl Berry <karl@cs.umb.edu>
-
- * info/terminal.c: Use `keypad transmit' sequence if it's defined:
- (term_keypad_on, term_keypad_off): New statics.
- (terminal_begin_using_terminal): If term_keypad_on, send it.
- (terminal_end_using_terminal): If term_keypad_off, send it.
- (terminal_initialize_terminal): Look up ks and ke termcap strings.
- From: William Edward Webber <wew@yallara.cs.rmit.EDU.AU>.
-
- * info/infomap.c (initialize_info_keymaps): Initialize hardwired
- cases for arrow keys a la readline. Found by John Eaton,
- jwe@bevo.che.wisc.edu.
-
- * makeinfo/makeinfo.c (output_pending_notes): Remove footnote
- macro expansion code I #if 0'd out some time ago. And doc fixes.
-
- * Applied this patch:
-
-Sat Jul 19 16:29:01 1997 Karl Eichwalder <ke@suse.de>
-
- * info/info.c (main): setlocale, bindtextdomain, and textdomain.
-
-Fri Jul 18 10:02:18 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/Makefile.am (install-data-local),
- * emacs/Makefile.am (install-data-local): Give subdir in warning.
-
- * configure.in: Version 3.9f.
-
- * doc/texinfo.texi: Correct \^ to @^.
- From Andreas S.
-
- * Merged these changes:
-
-1997-07-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * info/display.c (display_cursor_at_point): Flush ouput.
-
-1997-07-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * info/session.c (remember_window_and_node): Don't crash when the
- current window has no current node.
-
-1997-07-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * util/texindex.c (usage): Translate the doc strings.
- * makeinfo/makeinfo.c (cm_today): Translate the month names.
- * info/variables.c (describe_variable): Translate the doc strings.
- * info/nodes.h: Don't translate the strings defining the info format.
-
-1997-07-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * makeinfo/makeinfo.c (get_item_function): Remove superfluous call
- to canon_white after get_rest_of_line.
- (cm_end): Likewise.
- (handle_variable): Likewise.
- (cm_item): Likewise.
- (cm_unmacro): Likewise.
-
-1997-07-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * info/nodemenu.c (list_visited_nodes): Don't clear the internal
- flag, this and other functions depend on it. Don't insist on
- displaying the menu below the current window.
-
-1997-07-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * makeinfo/makeinfo.c (cm_uref): Fix memory leaks.
- (cm_inforef): Likewise. Handle empty cross reference name.
-
-1997-07-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * info/echo-area.c (ea_possible_completions): Check that the
- current window can actually be split.
-
-Thu Jul 17 17:19:34 1997 Karl Berry <karl@cs.umb.edu>
-
-
- * emacs/Makefile.am (*clean-lisp): Define, as Automake didn't.
- From: Kenneth Stailey <kstailey@disclosure.com>.
-
- * doc/Makefile.am: Do not distribute info.1.
- * makeinfo/macros: Do not distribute this directory, it's merged
- into the main documentation.
- * doc/makeinfo.texi: Don't distribute this either, it's in the
- main manual.
-
- * util/install-info.c: Use \n\ for multiline string constant.
- From: Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
-
-Wed Jul 16 15:29:50 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.texi: @set must be after @setfilename, I guess.
- Noted by Erick Branderhorst.
-
- * Applied this change:
-
-Tue Nov 12 22:20:22 1996 John Eaton <jwe@bevo.che.wisc.edu>
-
- * makeinfo.c (INDEX_ALIST): Use two indices, read_index and
- write_index, instead of just one.
- (find_index_offset): If a match is found, return index to the
- current INDEX_ALIST struct, not the index pointing to the list of
- index entries.
- (translate_index): Return read_index from the matching
- INDEX_ALIST.
- (undefindex): Delete the list of index elements pointed to by
- read_index from the INDEX_ALIST that matches name.
- (defindex): Initialize read_index and write_index.
- (index_add_arg): Add entries to the list pointed to by write_index
- from the INDEX_ALIST matching name.
- (index_append): Delete unused function.
- (cm_synindex): Don't merge indcies, just make the write_index for
- redirectee the same as the write_index for redirector.
-
-Tue Jul 15 09:32:04 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.texi: Bump edition number for 2.24.
-
- * util/Makefile.am (localedir): Define.
-
- * info/window.h: Rename __window__ to window_struct.
-
- * info/window.h,
- * info/variables.h,
- * info/search.h,
- * info/man.h,
- * info/info-utils.h,
- * info/gc.h,
- * info/footnotes.h,
- * info/filesys.h,
- * info/echo-area.h,
- * info/display.h: Avoid leading _ in #define for #include protection.
-
- * makeinfo/makeinfo.c: Version 1.68.
- * info/info.c: Version 2.17.
-
- * Most all files: Untabify.
-
- * doc/Makefile.am (texinfo): Add explicit target.
-
- * emacs/Makefile.am (noinst_LISP): Remove the obsolete
- detexinfo.el (makeinfo --no-headers is better) and
- texnfo-tex.el (now handled by TeX modes in general).
-
-Mon Jul 14 15:21:03 1997 Karl Berry <karl@cs.umb.edu>
-
- * util/texi2dvi: Update RCS file from 3.9 distribution.
-
- * util/Makefile.am (EXTRA_DIST): Add update-info, from
- rhawes@dmapub.dma.org
-
-Sun Jul 13 17:05:03 1997 Karl Berry <karl@cs.umb.edu>
-
- * info/signals.c: Use RETSIGTYPE instead of hardwiring void.
- From: "Jeffery L. JT Vogt" <lfm@atw.earthreach.com>.
-
- * info/session.c (info_history_node): Rewrite as
- info_kill_node (current_node).
- (kill_node, read_nodename_to_kill): New functions from info_kill_node.
- (info_kill_node): Now this just calls them.
-
-Fri Jul 11 11:56:58 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.texi: Fix `Conditionals' xref.
-
-Thu Jul 10 17:58:12 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/info.texi: Don't say SPC clears ? screen.
-
-Sun Jul 6 16:26:41 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/info-stnd.texi: Document --index-search.
-
- * info/tilde.c,
- * info/session.c: Remove redundant getenv decl.
-
- * Installed following change:
-Tue Nov 12 14:44:00 1996 John W. Eaton <jwe@bevo.che.wisc.edu>
-
- * info/info.c (main): Handle new option, --index-search STRING.
- (index_search_p, index_search_string): New static variables, used
- to handle --index-search option.
-
- * info/session.c (initialize_info_session): New arg,
- clear_screen. Change all callers.
-
- * info/indices.h (do_info_index_search, index_intry_exists):
- Provide declarations here.
-
- * info/indices.c (do_info_index_search): New function, extracted
- from info_index_search.
- (info_index_search): Simply call do_info_index_search() with
- search_string set to NULL.
- (index_entry_exists): New function.
-
-Sat Jul 5 17:17:14 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.texi: Document @kbdinputstyle.
-
- * makeinfo/makeinfo.c (kbdinputstyle): New command.
- (cm_no_op_line_arg): New function.
-
- * info/termdep.h (HAVE_TERMIOS_H) [NeXT]: #undef.
- From: Gregor Hoffleit <flight@mathi.uni-heidelberg.de> et al.
-
-Fri Jul 4 14:18:08 1997 Karl Berry <karl@cs.umb.edu>
-
- * info/Makefile.am (EXTRA_DIST),
- * util/Makefile.am (EXTRA_DIST),
- * makeinfo/Makefile.am (EXTRA_DIST),
- * lib/Makefile.am (EXTRA_DIST): Include README.
-
- * doc/texinfo.texi (makeinfo options): Document --paragraph-indent
- values more completely.
- * makeinfo/makeinfo.c (set_paragraph_indent): Allow translated
- asis or none, improve doc.
- From ke.
-
- * doc/Makefile.am (dist-info): New empty target so that we do not
- distribute info files.
- From Erick Branderhorst.
-
- * doc/texinfo.texi (Invoking install-info): Document that the dir
- file is created now if need be.
- * Makefile.am (EXTRA_DIST): No longer need dir.
- * util/install-info.c (ensure_dirfile_exists): New routine.
- (main): Call it before trying to open dirfile for reading.
-
- * doc/texinfo.texi: Document install-info --delete a little better.
- * util/install-info.c: Set something_deleted when we delete a
- normal line.
- Bug from: Denis Kosygin <dkosygin@math.Princeton.EDU>.
-
- * util/install-info.c: If no info dir entry, give warning and exit 0.
-
-Wed Jul 2 06:35:17 1997 Karl Berry <karl@cs.umb.edu>
-
- * configure.in (ALL_LINGUAS): Add fr.
-
- * makeinfo/makeinfo.h (insertion_type, insertion_type_names): Add
- ifnot... entries. Alphabetize.
-
-Tue Jul 1 17:21:54 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (sort_index): Set defining_line and
- input_filename so errors in index entries are reported at
- the correct location. From rms.
-
- * makeinfo/makeinfo.c (cm_ifnothtml, etc.): Routines for new
- commands.
-
-Sun Jun 29 09:44:01 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.texi: Document new @ifnot... commands, etc.
- * doc/texinfo.texi: Document @image, etc.
-
-Thu Jun 26 17:57:37 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (cm_image): New routine for new command @image.
- (cm_end): Move to better place, doesn't need its own page.
- Doc fixes.
-
-Mon Jun 23 16:54:03 1997 Karl Berry <karl@cs.umb.edu>
-
- * Makefile.am (SUBDIRS): Do intl first.
-
- * doc/Makefile.am (EXTRA_DIST): Include epsf.tex.
- (install-data-local): Suggest possible installation directory.
- * epsf.tex: New file.
-
-Wed Jun 18 17:51:52 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.texi: Document texinfo.cnf.
-
-Sun Jun 15 14:37:58 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.texi (Command List): Various commands missing or
- erroneous.
- From: Karl_Heinz_Marbaise@p69.ks.fido.de.
-
- * makeinfo/makeinfo.c: Oops, failed to break out of loop.
-
- * util/texindex.c: Use <getopt.h> not "getopt.h".
-
- * All source files: Merge gettext changes from Karl E.;
- his ChangeLog entries below.
-
-Sat Jun 14 17:04:28 1997 Karl Berry <karl@cs.umb.edu>
-
- * Makefile.am,
- * makeinfo/Makefile.am: Doc fix.
- * util/Makefile.am (EXTRA_DIST): Add texi2dvi. From Karl E.
-
-Fri Jun 13 17:39:34 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c [WIN32]: Handle read bogosity and c:\
- absolute paths.
- From: Eric Hanchrow <erich@MICROSOFT.com>.
-
- * configure.in (AC_CHECK_HEADERS): Check for pwd.h.
- * info/tilde.c (pwd.h): Move #include to system.h.
-
- * makeinfo/makeinfo.c (main): New option -P to prepend to search path.
- From: Kenneth Stailey <kstailey@cvs.openbsd.org>.
-
- * doc/texinfo.texi (Invoking makeinfo),
- * doc/makeinfo.texi: Mention -P.
-
-Thu Jun 12 16:25:40 1997 Karl Berry <karl@cs.umb.edu>
-
- * info/signals.h (SIGCHLD): #define as SIGCLD if undefined, for sysV68.
- From: "Philippe De Muyter" <phdm%labauto1@ulb.ac.be>.
-
- * util/install-info.c (O_RDONLY): Remove this stuff, it's in system.h.
- (main): Handle existing entry in dir file having .info extension.
- From: "Bradley C. Kuszmaul" <bradley@GRANITE.SYSTEMSX.CS.YALE.EDU>.
-
- * makeinfo/makeinfo.c (get_char_len): Don't count 8-bit characters
- as two chars in the output.
- From: Sung-Hyun Nam <namsh@amuna.rms.lgic.co.kr>.
-
-Wed Jun 11 16:36:51 1997 Karl Berry <karl@cs.umb.edu>
+ * makeinfo/xml.c:
+ * makeinfo/xml.h: new element SHORTCAPTION.
- * doc/texinfo.texi (Other Info Directories): Document new trailing
- : in INFOPATH feature.
+ * makeinfo/insertion.c (cm_caption): insert CAPTION or SHORTCAPTION
+ according to command.
+ (begin_insertion): read @shortcaption too. Fixed XML floatpos
+ contents.
- * info/info.c (main): Have trailing : in INFOPATH expand to the
- default path.
+ * makeinfo/float.h: added shorttitle and position to the float_elt
+ struct.
-Fri Jun 6 13:22:02 1997 Karl Berry <karl@cs.umb.edu>
+ * makeinfo/float.c (add_new_float): accept a shorttitle argument.
+ (current_float_shorttitle, current_float_position): new functions.
+ (cm_listoffloats): if title is too long to fit into a line, try
+ shorttitle.
- * doc/texinfo.texi (uref): New node for new command.
+2004-01-07 Alper Ersoy <dirt@gtk.org>
-Thu Jun 5 18:13:48 1997 Karl Berry <karl@cs.umb.edu>
+ * makeinfo/float.h: new variable node_has_listoffloats.
- * makeinfo/makeinfo.c (cm_uref): New function to accept optional
- second argument. Call it in command table.
+ * makeinfo/float.c (cm_listoffloats): insert menu header string only
+ if node_has_listoffloats is not true.
-Sat Jun 14 10:54:16 1997 Karl Eichwalder <ke@suse.de>
+ * makeinfo/node.c (cm_node): reset node_has_listoffloats.
- * mkinstalldirs: Update from automake-1.1p.
+2004-01-06 Alper Ersoy <dirt@gtk.org>
- * configure.in: Touch po/ChangeLog (gettext needs it).
+ * makeinfo/insertion.c (begin_insertion): fixed a thinko in @float
+ arguments parsing code, regarding string termination; changed manual
+ input text skipping with skip_whitespace_and_newlines for proper
+ line_number handling; and changed magic number 10 with sizeof for
+ improved readability.
-Thu Jun 12 08:37:52 1997 Karl Eichwalder <ke@ke.Central.DE>
+ * makeinfo/float.c (cm_listoffloats): end paragraph before the menu
+ header. Use add_html_block_elt to insert <div> element.
- * util/texindex.c: Include system.h, remove config.h.
+2004-01-06 Alper Ersoy <dirt@gtk.org>
- * po/POTFILES.in: Fill it.
+ * makeinfo/crossrefs.c:
+ * makeinfo/crossrefs.h: moved to ...
- * makeinfo/multi.c: Include system.h.
+ * makeinfo/xref.c:
+ * makeinfo/xref.h: new files.
- * info/Makefile.am:
* makeinfo/Makefile.am:
- * util/Makefile.am:
- (localedir): Set.
- (INCLUDES): Add intl/ and LOCALEDIR.
- (LDADD): Add @INTLLIBS@.
-
- * makeinfo/makeinfo.c (main):
- * util/texindex.c (main):
- * util/install-info.c (main):
- setlocale, bindtextdomain, and textdomain.
-
- * lib/system.h: Include locale.h and libintl.h.
-
- * acconfig.h: Include libintl.h.
- (_, N_): Define.
- Add ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_LC_MESSAGES,
- HAVE_STPCPY for libintl.
- Add @TOP@ and @BOTTOM@.
-
- * configure.in (AM_GNU_GETTEXT): Add.
- (AC_OUTPUT): Process Makefiles in intl/ and po/.
- (ALL_LINGUAS): Available languages.
-
- * Makefile.am (AUTOMAKE_OPTIONS): Now use 1.1p.
-
-Wed Jun 11 17:05:37 1997 Karl Eichwalder <ke@ke.Central.DE>
-
- * Makefile.am (SUBDIRS): Add intl/ and po/ for NLS.
-
- * run `gettextize -c' to get the i18n skeleton.
-
-Wed Jun 4 17:51:08 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (uref): New command, another alias for @code
- for now.
-
-Wed Jun 4 02:02:33 1997 Miles Bader <miles@gnu.ai.mit.edu>
-
- * doc/texinfo.texi (email): { and } need @ escapes.
-
-Sun Jun 1 16:34:12 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.texi (itemx): @itemx should always follow @item.
-
- * makeinfo/makeinfo.c (cm_item): Insert blank line if two
- consecutive @item's.
- From: Karl Eichwalder <ke@ke.central.de>.
- Also various doc fixes.
-
-Tue May 27 17:20:44 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.texi (various): Document @deftypemethod.
- (email): @ should have been @@ in the example.
- From: Mate Wierdl <mw@wierdlmpc.msci.memphis.edu>
-
-Mon May 26 16:56:26 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/multi.c (setup_multitable_parameters): Avoid use of %n
- for sake of m68k-hp-bsd.
- From: Derek L Davies <ddavies@world.std.com>.
-
- * info/terminal.c (terminal_begin_using_terminal,
- terminal_end_using_terminal): Call fflush and sleep to handle
- cmdtool/shelltool with scrollbars. Also ignore
- SIGWINCH so we do not prematurely exit. Move call.
- (terminal_prep_terminal): Disable LNEXT (CTRL-V).
- From: strube@physik3.gwdg.de (Hans Werner Strube).
-
- * configure.in (AC_TYPE_SIGNAL): Check this.
-
-Sun May 25 16:49:58 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (discard_insertions): Take arg saying
- whether ifinfo/ifset/etc. are ok.
- (convert_from_loaded_file): At `finished', call discard_insertions.
- (handle_variable_internal): Complain if we reach eof before the
- @end for a false condition.
- From: HERBERT@boevm4.vnet.ibm.com.
-
- * info/Makefile.am (ginfo_SOURCES): Add doc.h.
- * lib/Makefile.am (libtxi_a_SOURCES): Add system.h.
-
-Sat May 24 18:08:27 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c: Check that we have macro_expansion_filename
- before using strcmp.
-
-Thu May 22 17:59:46 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/makeinfo.texi: Minimally document --force.
-
- * makeinfo/makeinfo.c (--force): New option.
- (-E): Allow stdout via `-'.
- (convert_from_loaded_file): Unlink output files if errors and !force.
-
-Tue May 20 17:48:42 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c: Change all strdup calls to xstrdup.
- (xmalloc, xrealloc, memory_error): Remove these functions, they're
- in lib.
- (set_paragraph_indent, cm_paragraph_indent): Move to misc page.
- (cm_footnote): Expand macros in the arg for the macro expansion output.
-
-Fri May 16 17:26:59 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (cm_macro): Allocate an empty body if the
- macro was empty.
- (cm_unmacro): Allocate one more byte for the null.
- From: Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>.
-
-Sun May 11 17:51:21 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * makeinfo/makeinfo.c (cm_printindex): Fix calculation of the
- length of an index line.
-
-Sun May 11 14:47:42 1997 Tom Tromey <tromey@cygnus.com>
-
- * makeinfo/makeinfo.c (main): Don't unconditionally run usage when
- -e specified.
-
-Sun May 11 17:47:42 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (init_indices): Free the source for an @synindex.
- (undefindex): Do not go further if the target was already freed.
- (free_index): Do not free the node names, as init_tags already did.
- (cm_synindex, index_add_arg): Improve error message.
- (program_index, function_index, etc.): Remove these unused #defines.
-
-Tue May 6 17:53:37 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (init_internals): Do not free current_node,
- it already is, at least when multiple input files are specified.
- From: Karl Eichwalder <ke@ke.central.de>.
-
-Mon May 5 16:14:39 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.texi: Mention both alignment and non-alignment of
- continuation description lines in menus (Arnold).
-
-Sun Apr 27 16:12:44 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (apply): Handle body being `\string'.
- Also, avoid dereferencing a null pointer when a macro has no named
- parameters.
- From: Eli Zaretskii <eliz@is.elta.co.il>.
-
- * makeinfo/makeinfo.c: Wording changes/fixes in warnings.
-
- * info/session.c (info_get_input_char): Do not mix stdio with raw I/O.
- From: Egil Kvaleberg <egilk@sn.no>.
-
- From Tom Hageman <tom@basil.icce.rug.nl>. These changes make
- arrow keys work:
- * info/infomap.c: Add arrow key bindings.
- (keymap_bind_keyseq): New support function.
- (initialize_info_keymaps): Use it.
- (term_ku,term_kd,term_kl,term_kr): Remove explicit declarations;
- use #include "terminal.h" instead.
- * info/session.c (initialize_info_session): Unbuffer stdin.
- (info_get_another_input_char): Fix bug in `ready' logic.
- * info/terminal.h,
- * info/terminal.c (term_kP, term_kN): New variables to hold
- PageUp, PageDown key sequences.
- (terminal_initialize_terminal): Set them.
-
- * util/texindex.c (main),
- * util/install-info.c (main),
- * makeinfo/makeinfo.c (print_version_info),
- * info/info.c (main): Use PACKAGE and VERSION from Automake for
- printing version number.
-
-Sat Apr 26 19:19:46 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (get_until_in_line): Do not expand if
- executing_string.
- Also, free temporary strings.
- Also, untabify entire file.
-
- * doc/texinfo.texi: Many corrections from Arnold.
-
-Thu Apr 24 16:31:09 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/multi.c (draw_horizontal_separator): Account for indent
- here also. From Ulrich.
-
-Wed Apr 23 15:15:34 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (cm_today): Use time_t instead of long;
- everyone else does.
- (LOCALTIME_CAST): Remove kludge, we'll always use time_t now.
-
- * info/Makefile.am (ginfo_SOURCES): Remove general.h, that got
- merged into system.h.
-
-Mon Apr 21 17:13:25 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/multi.c (output_multitable_row): Account for
- column_indent, both the global one and for each column.
- (setup_multitable_parameters): Account for column_indent in the table
- width in the columnfrac case, but don't bother with the template
- case for now.
-
-Sun Apr 20 16:32:00 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (output_stream): Remove redundant
- definition; it's in makeinfo.h,
- and a vaxstation-ultrix4.3 fails to link because of the two defns.
- From: Anders Olofsson <anders@kid025.ericsson.se>.
-
- * makeinfo/makeinfo.c (expansion): Inhibit appending to the macro
- expansion stream.
- (get_until_in_line): Possibly expand the text.
- Change caller in get_node_token to do the expansion,
- all other calls to remain the same.
-
- * makeinfo/makeinfo.c (cm_node): No need to call strlen to check
- for the empty string.
-
- * doc/texinfo.texi: Restore missing @c for initial comment.
-
-Fri Apr 18 17:41:36 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.texi: Mention that .info is unnecessary in the info
- file name argument of an xref.
-
- * doc/texinfo.texi: Mention texi2dvi -t instead of embedding
- @smallbook or @afourpaper in the document source.
-
-Sun Apr 13 15:19:08 1997 Karl Berry <karl@cs.umb.edu>
-
- * lib/system.h (_GNU_SOURCE): #define.
-
-Mon Apr 7 16:30:11 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/info.texi,
- * doc/info-stnd.texi,
- * doc/texinfo.texi: Do not make (dir) the previous ptr from the top node,
- and tell people not to do that in the manual.
- From: rmedina@kanojo.ivic.ve (Rodrigo Medina),
- confirmed by rms.
-
-Fri Apr 4 16:30:33 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c: Move error page to top to avoid
- prototypes, and do add prototypes for add_word_args and execute_string,
- so we can use <stdarg.h>.
-
- * info/makedoc.c,
- * info/nodemenu.c: Use %ld instead of %d for file offsets.
- * makeinfo/makeinfo.c (delete_macro): Decrement macro_list_len.
- (get_macro_args): Decrement line number if see \n.
- * utils/texindex.c (indexify): Use fputs instead of fprintf
- for constant string.
- From: Eli Zaretskii <eliz@is.elta.co.il>.
-
-Thu Apr 3 17:40:52 1997 Karl Berry <karl@cs.umb.edu>
-
- * configure.in (AC_CHECK_HEADERS): No need to check for vararg.h
- here, AC_FUNC_VPRINTF does it.
- (AC_CHECK_FUNCS): Likewise for vsprintf and vfprintf.
- * makeinfo/makeinfo.c (add_word_args, execute_string): Rewrite
- like the error functions.
-
-Wed Apr 2 17:46:28 1997 Karl Berry <karl@cs.umb.edu>
-
- * configure.in: Add AC_FUNC_VPRINTF.
- * makeinfo/makeinfo.c (error, line_error, warning): Rewrite a la
- error.c from the *utils to use <stdarg.h> if available.
-
-Tue Apr 1 11:48:40 1997 Karl Berry <karl@cs.umb.edu>
-
- * doc/texinfo.texi: Tabs are a bad idea.
-
- * doc/userdoc.texi,
- * doc/info.texi: Untabify.
-
-Sun Mar 30 17:36:47 1997 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (end_of_sentence_p): New function.
- (add_char): Call it, instead of simply sentence_ender.
- (post_sentence): New macro.
- Also, remove some #include's now in system.h.
- * lib/system.h [VMS]: #include <perror.h>, from makeinfo.
-
-Thu Mar 27 17:41:03 1997 Karl Berry <karl@cs.umb.edu>
-
- * info/search.c (skip_node_characters): Do not arbitrarily
- strip trailing period from end of node name; this is valid.
-
-Mon Mar 24 16:44:42 1997 Karl Berry <karl@cs.umb.edu>
-
- * configure.in (AC_OUTPUT): Don't need to create stamp-h here,
- tromey says AM_CONFIG_HEADER will do it.
-
- * info/Makefile.am, util/Makefile.am, makeinfo/Makefile.am (INCLUDES):
- Don't need -I.. (for config.h) or -I$(srcdir), says tromey.
- Automake includes those already.
-
-Fri Mar 14 15:05:17 1997 Karl Berry <karl@cs.umb.edu>
-
- * info/Makefile.am: Build as ginfo, install as info,
- to avoid conflict with the standard info target.
-
- * lib/system.h: New file.
- * makeinfo/makeinfo.c (strerror): Remove declaration,
- include system.h, remove other redundant #if stuff.
- * info/general.h: Include system.h instead of doing common stuff.
- * util/install-info.c (my_strerror): Remove this, use strerror,
- include system.h.
-
- * info/terminal.c (terminal_prep_terminal): Only use OCRNL and
- ONLCR if they are defined. Reported by many people.
-
- * Installed:
-
- Sun Dec 1 19:23:54 1996 Karl Eichwalder <ke@ke.Central.DE>
-
- * configure.in (TERMLIBS): Add ncurses.
-
-Thu Mar 13 13:59:45 1997 Karl Berry <karl@cs.umb.edu>
-
- * lib/Makefile.am (libtxi_a_SOURCES): Add xstrdup.c.
- * info/*.c: Use xstrdup instead of strdup everywhere.
-
- * info/tilde.c: Do not include clib.h, move stdlib.h include to
- * info/general.h: here.
-
- * configure.in (AC_CONFIG_HEADER): Use this,
- to avoid hugely long compile line with all the -D's.
- * info/general.h: Include <config.h>.
-
- * emacs/Makefile.am (install, install-data): Do @echo
- to tell the user to compile/install the elisp manually.
-
- * configure.in (AC_REPLACE_FUNCS): Move strerror check to here.
- (AC_CHECK_FUNCS): From here.
-
- * lib/strerror.c: New file, from enscript (et al.) distribution.
-
-Tue Mar 11 16:36:25 1997 Karl Berry <karl@cs.umb.edu>
-
- * info/Makefile.am (info_SOURCES): Add doc.c, dribble.c, infodoc.c.
- (LDADD): Add @TERMLIBS@.
-
- * info/info.h: HANDLE_MAN_PAGES, NAMED_FUNCTIONS: Define these.
-
- * info/filesys.h: Spurious ! when DEFAULT_INFOPATH is not defined.
-
- * configure.in (AC_OUTPUT): Do lib first and doc last.
-
- * info/echo-area.c,
- * info/echo-area.h,
- * info/info.h: Rename echo_area to echo-area.
-
-Mon Mar 10 17:59:05 1997 Karl Berry <karl@cs.umb.edu>
-
- * */Makefile.am: Write Makefile.am files for Automake.
- * doc: New subdirectory, move all manuals and texinfo.tex there.
- * AUTHORS, THANKS, config.guess, config.sub, mkinstalldirs: New files,
- required by Automake.
- * lib/xmalloc.c: Move from info/.
-
-Fri Oct 4 07:49:49 1996 Karl Berry <karl@cs.umb.edu>
-
- * Version 3.9.
-
- * Makefile.in (install): Say to install texinfo.tex manually.
-
- * util/texi2dvi,
- * util/texindex.c,
- * makeinfo/makeinfo.c,
- * info/info.c: Include only the current year in the copyright message.
-
- * util/texi2dvi: Exit successfully.
- From: Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.
-
-Thu Oct 3 12:58:32 1996 Karl Berry <karl@cs.umb.edu>
-
- * Rename install.sh to the preferred install-sh.
-
- * Makefile.in (VERSION),
- * util/texi2dvi,
- * util/texindex.c,
- * util/install-info.c,
- * makeinfo/makeinfo.c (minor_version, print_version_info),
- * info/info.c: Update version number.
-
- * util/texi2dvi: Only show diff if verbose.
-
- * util/install-info.c (main): Check for a missing dir file as well
- as a missing info files.
- (main): At start of a node, completely initialize the newly-malloced
- node structure.
-
- * texinfo.texi: Fix incorrect uses of @key,
- insert missing newline in Installing Dir Entries' @menu item,
- document install-info invocation.
-
- * Makefile.in (DISTFILES): Do not put .gdbinit's in distribution.
- (dist): Use || instead of && (and invert sense) so make doesn't think
- the command failed.
- (dist): Exclude more junk.
-
- * makeinfo/makeinfo.c (cm_xref): Back out patch from Tom T., since
- we generate a good-enough error message that is suppressible
- without it.
-
- * util/gen-dir-node: The recommended name for the top-level info
- file is dir, not dir.info.
-
- * util/install-info.c (main): At `Mark the end of the Top node',
- make sure the node name is non-NULL before comparing it. From
- lvirden@cas.org.
-
- * configure.in (AC_REPLACE_FUNCS): Use this for memcpy, memmove,
- and strdup.
- (AC_CHECK_FUNCS): Instead of this.
- Because both bcopy and memmove are missing on the 3b2, as reported by
- Gaylen Miller <gaylen@proaxis.com>, hence we must provide our own.
- * libtxi/Makefile.in (LIBOBJS): New variable.
- (OBJS): Include it.
- * libtxi/memcpy.c, libtxi/memmove.c, libtxi/strdup.c: New files,
- taken from fileutils 3.13.
- * makeinfo/makeinfo.c,
- * info/clib.c (strdup): Move to libtxi.
-
-Wed Oct 2 18:23:30 1996 Karl Berry <karl@cs.umb.edu>
-
- * info/info-utils.h (memcpy) [!HAVE_MEMCPY],
- * info/termdep.h (memcpy) [!HAVE_MEMCPY],
- * makeinfo/makeinfo.c (memmove) [!HAVE_MEMMOVE]: Remove this
- #ifdef, as we now include it in libtxi if missing.
-
-Tue Oct 1 17:41:52 1996 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/Makefile.in (install),
- * info/Makefile.in (install),
- * Makefile.in (install): Use new option name --info-dir instead of
- --infodir.
-
- * makeinfo/multi.c (out_char): New fn. Replace all calls to
- putc/fprintf with calls to this.
-
- * util/install-info.c: Rename --infodir to info-dir.
-
-Mon Sep 30 10:07:21 1996 Karl Berry <karl@cs.umb.edu>
-
- * Version 3.8.
-
- * texinfo.tex: Untabify.
-
- * texinfo.tex (\ptexl, \ptexL): Do not save, we have our own
- commands now.
- (\onepageout): Reformat for readability, and call \indexdummies
- to avoid expansion of Texinfo commands (e.g., accents) in \write's.
- (\,, \dotaccent, \ringaccent, \tieaccent, \ubaraccent, udotaccent,
- \questiondown, \exclamdown, \dotless): New macros.
- (\l): Let plain TeX definition remain, instead of switching
- to ``lisp'' font.
- (\multitable): Ensure space between the columns,
- insert struts to make interline spacing constant,
- use real strut instead of a box containing `Xy'.
- (\indexdummies): Do not define \rm, \char, but
- do define \@, \{, \}, \dotless, and \,. And \t should generate
- \t, not \r.
- (\indexnofonts): Define \, and \dotless as \indexdummyfont,
- and let \@ be @.
- (\doind): Reformat for readability, and use temp control sequence
- names that actually make sense.
- (\doublecolumnout, \pagesofar, \enddoublecolumns): Restore
- Knuth's original code to avoid spurious overfull vbox messages.
- (No boxes are actually overfull).
- (\shortcontents): Do not allow hyphenations.
- (\dochapentry, \tocentry): Make glue above and below flexible, to allow
- better page breaks.
- (\tex): Reset \, to its plain TeX meaning,
- and do not reset \l.
-
- * COPYING: Update for new FSF address (from gcc dist).
-
- * libtxi/Makefile.in: Various simplifications.
-
-Sun Sep 29 12:58:44 1996 Karl Berry <karl@cs.umb.edu>
-
- * util/texi2dvi: Use $progname instead of $0 for --version.
-
- * util/install-info.c (xmalloc, xrealloc): Declare malloc and
- realloc as returning void *,
- to avoid ptr/int problems on Digital Unix.
-
- * info/tilde.c (tilde_expand_word): Declare getenv as returning char *,
- to avoid warning on Digital Unix.
-
- * makeinfo/multi.c (multitable_active): Declare extern here to
- avoid ld warning on rs6000.
-
- * util/texindex.c (usage): Avoid ??' trigraph.
-
- * util/install-info.c: Include <sys/fcntl.h> or <fnctl.h>,
- according to HAVE_SYS_FCNTL_H,
- and only include <sys/file.h> if HAVE_SYS_FILE_H.
- (readlines): Oops, had NULL's and 0's reversed for ptr/int members.
-
- * info/terminal.c (terminal_goto_xy): Remove spurious extra ;.
-
- * util/install-info.c: Untabify. (input_sections): Initialize.
- (find_lines): Initialize the terminating element of the array.
- (print_help): Document --infodir.
- (main): Compare the basename of infile sans .info to the dir entry,
- not infile itself.
- * util/Makefile.in (clean): Remove the install-info binary.
-
- * info/Makefile.in (distclean): Remove *.info* files.
-
- * Makefile.in (install),
- * info/Makefile.in (install),
- * makeinfo/Makefile.in (install): Use --infodir instead of --info-file.
-
- * info/info.c,
- * makeinfo/makeinfo.c: Avoid newlines in string constants for the
- sake of SunOS cc.
-
- * makeinfo/multi.c: Do not assume ANSI C.
-
- * info/info.texi: Oops, need @end vtable for a @vtable.
-
-Sat Sep 28 16:31:28 1996 Karl Berry <karl@cs.umb.edu>
-
- * Makefile.in (texinfo): Do not depend on sub-all, as then
- makeinfo is always run. Instead, depend on texinfo.texi.
-
- * makeinfo/Makefile.in (info, dvi): New targets.
- makeinfo.info, makeinfo.dvi: Do not depend on macro.texi for now.
-
- * info/Makefile.in (install): Must call install-info twice.
-
- * info/info-stnd.texi,
- * info/info.texi,
- * makeinfo/makeinfo.texi: Include direntry.
-
- * emacs/Makefile.in: Use && after cd, etc.
-
- * texinfo.texi: Kludges so makeinfo -E will not create spurious
- differences. Add new direntries.
-
- * util/install-info.c,
- * util/texindex.c,
- * makeinfo/makeinfo.c,
- * info/info.c: Standardize --version output.
-
- * makeinfo/makeinfo.c (defun_internal): Don't insert index command
- if expanding macros.
- (cm_footnotestyle): Don't change the footnote style if it was set
- on the command line.
-
- * util/texi2dvi: Recompute original index files each time through loop.
- Make indentation uniform.
- Use same basename for the temp input files.
- Standardize --version output.
-
- * info/Makefile.in (install),
- * makeinfo/Makefile.in (install): Insert $(POST_INSTALL).
-
-Fri Sep 27 13:27:30 1996 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.texi (Format with texi2dvi): Rewrite now that the script
- runs in a loop.
-
- * info/Makefile.in (MAKEINFO): Simplify to ../makeinfo/makeinfo.
-
-Fri Sep 27 00:26:03 1996 Miles Bader <miles@gnu.ai.mit.edu>
-
- * info/terminal.c [HAVE_TERMIOS_H] (terminal_prep_terminal,
- terminal_unprep_terminal): Add code for termios.
- [HAVE_TERMIOS_H] (original_termios, ttybuff): New variables.
- * info/termdep.h: [HAVE_TERMIOS_H]: Add include of <termios.h>.
- * configure.in: Add check for <termios.h>.
-
-Thu Sep 26 10:46:34 1996 Karl Berry <karl@cs.umb.edu>
-
- * emacs/texnfo-upd.el,
- * emacs/texinfo.el,
- * emacs/texinfmt.el: Update from bob for new Texinfo commands, etc.
-
- * emacs/info.el, emacs/informat.el, emacs/makeinfo.el,
- emacs/texnfo-tex.el: Update from Emacs 19.34 dist.
-
- * emacs/elisp-comp: Use TMPDIR if set.
-
- * util/Makefile.in (libdir): Remove.
-
- * makeinfo/Makefile.in (install),
- * Makefile.in (install),
- * info/Makefile.in (install): Run install-info.
- (libdir): Remove.
-
- * texinfo.texi: Various fixes as I make this go through TeX.
-
- * util/install-info.c: Quote newlines in help message.
-
- * util/texi2dvi (texi2dvi): Run TeX until the aux/index files
- stabilize, instead of just twice. From: David Shaw
- <daves@gsms01.alcatel.com.au>.
-
-Tue Sep 24 14:43:03 1996 Karl Berry <karl@cs.umb.edu>
-
- * dir: Blank dir file for installation on new systems.
-
-Mon Sep 23 12:18:43 1996 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (args_from_string): Do not back up at a };
- that leads to an infinite loop.
-
-Sat Sep 21 17:48:04 1996 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (cm_xref): Do not seg fault if outside of
- any node. From: Tom Tromey <tromey@creche.cygnus.com>.
- (cm_ctrl): Make obsolete.
-
-Tue Sep 17 13:30:08 1996 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\inforef): Move to more appropriate place.
- (\pounds): Remove spurious extra $.
- (\email): Typeset argument in angle brackets.
- (\macro): Use \doignore for robustness, instead of just letting TeX
- parse the argument.
- (\unmacro): Define.
-
-Sat Sep 14 16:17:35 1996 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.texi: Document multitables, new ISBN number.
-
-Wed Sep 11 18:01:24 1996 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/multi.c (struct env): Remove unused output_position
- field; this needs to be global.
- (setup_multitable_parameters): Implement template-defined multitables.
- (output_multitable_row): Remove trailing whitespace.
-
- * makeinfo/makeinfo.c (_READ_BUFFER_GROWTH, struct _defines):
- Remove leading underscore for POSIX/ANSI pedants.
- (init_conversion): Initialize output_position here.
- (init_paragraph): Instead of here, where it loses with the
- multitable calls, eventually resulting in negative counts to the
- write call when the output file is split.
-
- * texinfo.texi: First cut at macro documentation.
- Change accent doc to use tables.
- Remove whitespace experiments, they are now the default.
-
-Mon Sep 9 14:16:24 1996 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c: Use putc instead of fprintf where possible.
- (cm_accent): Put _ from @ubaraccent after argument.
-
- * util/texindex.c (strerror) [!strerror]: Conditionalize
- declaration.
-
-Sat Sep 7 14:13:24 1996 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (commandTable): Obsolete @setchapterstyle.
-
-Thu Sep 5 15:45:11 1996 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (convert_from_loaded_file): Oops, fix
- wording of initial output comment.
-
- * makeinfo/makeinfo.c (cm_angle_brackets): Rename from cm_key.
- (commandTable): @email should produce angle brackets.
- @key: Change name.
-
-Tue Sep 3 14:52:17 1996 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\hsize): Decrease.
- (\hoffset): Increase.
- (\setleading): Decrease dramatically.
- This change affects 8.5x11 format only.
-
- * texinfo.texi: Document accent commands.
-
-Mon Sep 2 11:10:49 1996 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (commandTable): Deprecate @ichapter and
- @titlespec.
- Move all the deprecated @i<section> commands to the end of the list.
-
- * texinfo.texi: Document @pounds{} and @centerchap{}.
-
- * texinfo.tex (\centerchfplain): Rewrite to use \chfplain, and to
- actually center.
- (\unnchfplain): Just call \chfplain.
- (\chfplain): Rewrite to be generally callable.
- (\centerparametersmaybe): Hook, a no-op except with @centerchap.
-
-Sun Sep 1 15:01:49 1996 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.texi: Document @<whitespace>, rearrange spacing section.
-
- * makeinfo.c (commandTable): Make @. @? @! insert themselves,
- not be sentence-non-enders. They are sentence *enders*. Also,
- make @\t and @\n insert a normal space character, not themselves.
- Also, define @hyphenation.
- (insert_space): New function.
- (cm_ignore_sentence_ender): Remove this.
- (flush_output): Check only for META-SPC, not META-<sentence-ender>.
-
-Fri Aug 30 18:55:30 1996 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.texi: Document @- and @hyphenation{}.
- Miscellanous fixes.
-
- * makeinfo/makeinfo.c (commandTable): Define @- as cm_no_op, since
- makeinfo doesn't do hyphenation.
-
-Thu Aug 29 13:05:38 1996 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\key): Do not uppercase the argument; key names
- can be mixed case, e.g., `Control'.
-
- * makeinfo/makeinfo.c: @infotop, @infounnumbered,
- @infounnumberedsec, @infounnumberedsubsec,
- @infounnumberedsubsubsec, @infoappendix, @infoappendixsec,
- @infoappendixsubsec, @infoappendixsubsubsec, @infochapter,
- @infosection, @infosubsection, @infosubsubsection:
- Remove these long-since obsolete commands.
- @iappendix, @iappendixsection, @iappendixsec, @iappendixsubsec,
- @iappendixsubsubsec, @ichapter, @isection, @isubsection,
- @isubsubsection, @iunnumbered, @iunnumberedsec, @iunnumberedsubsec,
- @iunnumberedsubsubsec:
- Deprecate these.
- @infoinclude:
- Obsolete this.
- @,: Have to take an argument, since have to do @,{c} not c@,; can't
- feasibly implement the latter in TeX.
-
- * makeinfo/makeinfo.c: Rename @d to @udotaccent, since this is
- relatively infrequently used.
-
-Tue Aug 27 14:58:56 1996 Karl Berry <karl@cs.umb.edu>
-
- * info/info.c (print_short_help),
- * util/install-info.c (print_help),
- * util/texi2dvi,
- * makeinfo/makeinfo.c (usage) Include bug reporting address.
-
-Mon Aug 26 15:27:17 1996 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (commandTable): Remove @input, @medbreak,
- @smallbreak, @overfullrule, @br.
-
-Sun Aug 25 17:25:48 1996 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (commandTable): Unify commands that perform
- the same operation, such as cm_file, cm_samp, cm_email,
- etc., which all do cm_code.
-
- * texinfo.texi: Document @ifhtml ... @end ifhtml. Change
- `PlainTeX' to `plain TeX'.
-
-Fri Aug 23 16:03:16 1996 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\pounds): New Texinfo command @pounds{}.
- (\parskip): New smaller value.
- (\chapheadingskip, \secheadingskip, \subsecheadingskip): New smaller
- values, both for 8.5x11 and @smallbook formats. From Bob.
-
- * makeinfo/makeinfo.c (cm_special_char): @pounds{} prints a #.
- (commandTable): Add new command @pounds.
-
-Tue Aug 20 13:47:20 1996 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (CommandTable): Restore "!", accidentally
- removed previously.
-
- * texinfo.tex (\key): Typeset a lozenge around the argument (from
- gildea@intouchsys.com).
- * makeinfo/makeinfo.c (cm_key): Surround arg with <...> to match
- new lozenge style in TeX.
-
-Wed Aug 14 16:59:23 1996 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.texi: Propagate change from rms.
-
-Tue Aug 13 11:33:27 1996 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.texi: Propagate change from rms.
-
- * texinfo.texi: Document other @headings options.
-
-Sun Aug 11 13:19:42 1996 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (cm_accent, cm_special_char, cm_dotless):
- New functions.
- (CommandTable): Add new commands for all of plain.tex's
- accents and non-English characters.
-
-Fri Aug 9 14:12:07 1996 Karl Berry <karl@cs.umb.edu>
-
- * makeinfo/makeinfo.c (convert_from_loaded_file): Say we're making
- ``text'' file if no_headers. Also, use `input_filename' instead
- of just `name' for clarity.
- (suffixes): Check for no suffix last, i.e., prefer `foo.texi' as an
- input file to `foo'. (The latter is probably a binary.)
+ * makeinfo/cmds.c:
+ * makeinfo/footnote.c:
+ * makeinfo/html.c:
+ * makeinfo/makeinfo.c:
+ * makeinfo/node.c:
+ * makeinfo/node.h:
+ * makeinfo/sectioning.c:
+ * makeinfo/toc.c: adjusted for new names.
-Mon Aug 5 13:52:39 1996 Karl Berry <karl@cs.umb.edu>
+2004-01-06 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\heading, \subheading, \subsubheading): Can no
- longer call the nonexistent \*secheadingi series. Instead, call
- \plain*secheading.
- (\plainsubsecheading, \plainsubsubsecheading): New macros, by analogy
- with \plainsecheading.
- (\unnumberedsubseczzz, \unnumberedsubsubseczzz): Call them.
+ * makeinfo/makeinfo.c:
+ * makeinfo/makeinfo.h: moved cross referencing commands to ...
-Sun Aug 4 16:46:10 1996 Karl Berry <karl@cs.umb.edu>
+ * makeinfo/crossrefs.c:
+ * makeinfo/crossrefs.h: new files.
- * makeinfo/makeinfo.c (flush_output): Mask out eighth bit, that we
- turned on in non-sentence enders.
+ * makeinfo/cmds.c:
+ * makeinfo/footnote.c:
+ * makeinfo/html.c:
+ * makeinfo/makeinfo.c:
+ * makeinfo/node.c:
+ * makeinfo/sectioning.c:
+ * makeinfo/toc.c: added crossrefs.h to includes.
-Sat Aug 3 14:03:10 1996 Karl Berry <karl@cs.umb.edu>
+ * makeinfo/Makefile.am: added new files crossrefs.c and crossrefs.h
- * texinfo.tex (\HEADINGSdouble, \HEADINGSsingle,
- HEADINGSdoubleafter, \HEADINGSsingleafter, \CHAPPAGoff,
- \CHAPPAGon, \CHAPPAGodd): Set \contentsalignmacro, analogous to
- \pagealignmacro.
- (\startcontents): Call \contentsalignmacro instead of \pagealignmacro.
+2004-01-06 Alper Ersoy <dirt@gtk.org>
-Mon Jul 29 14:44:33 1996 Karl Berry <karl@cs.umb.edu>
+ * makeinfo/node.c (cm_node): removed ``Node: <nodename>'' from the
+ node headers.
- * texinfo.tex (\indexfonts): Make leading be 12pt. Otherwise, it's
- too crammed.
- (\smalllispx): Remove \setleading{10pt}. That was too small.
- (\doprintindex): Do not call \tex ... \Etex. Index files are Texinfo
- source, not TeX source, except for using \ instead of @ as the
- escape character (for now).
+2004-01-06 Alper Ersoy <dirt@gtk.org>
-Sun Jul 28 13:37:05 1996 Karl Berry <karl@cs.umb.edu>
+ * makeinfo/insertion.c (begin_insertion): keep line_number the same
+ before and after get_until, so messages issued inside full_expansion
+ have correct line numbers.
- * texinfo.tex (paragraphindent): Move to more reasonable place in
- the source file.
- (chapfonts, secfonts, subsecfonts, indexfonts): Call \setleading.
- (\chfplain, \secheading, \plainsecheading, \subsecheading,
- \subsubheading): Rewrite to properly \hangindent the title.
- (\sectionheading): New generic macro to print section titles.
+2004-01-06 Alper Ersoy <dirt@gtk.org>
- * texinfo.texi: Update the `Obtaining TeX' node.
+ * makeinfo/makeinfo.c (handle_menu_entry):
+ * makeinfo/node.c (glean_node_from_menu): adjust line_number.
-Fri Jul 26 14:11:48 1996 Karl Berry <karl@cs.umb.edu>
+2004-01-05 Karl Berry <karl@gnu.org>
- * util/texi2dvi: Do macro expansion with makeinfo before running TeX.
- Various expansion safety measures added for test; avoid use of -o.
+ * doc/texinfo.tex (\rawbackslashxx): rename to \backslashcurfont,
+ to keep reducing the number of `xx's here.
- * makeinfo/makeinfo.c (usage): More usage message tweaks.
+ * doc/texinfo.tex (\setref): call \atdummies, not \indexnofonts; we
+ need to keep the user's commands.
+ (\dofloat): call \indexnofonts and \turnoffactive
+ to support commands and special characters in the
+ float type name.
-Fri Jul 26 11:55:37 1996 Karl Berry <karl@laurie>
+ * doc/texinfo.txi (firstparindent): shorten name so it doesn't
+ break in the toc.
- * util/texi2dvi: Format usage message to conform to the other *utils.
+2004-01-05 Alper Ersoy <dirt@gtk.org>
-Thu Jul 25 17:05:47 1996 Karl Berry <karl@cs.umb.edu>
+ * makeinfo/html.c (html_output_head): new CSS entry span.sc for
+ small-caps font variant.
- * emacs/Makefile.in: Do not compile the Elisp by default. We
- don't install it, so it confuses people to compile it.
+ * makeinfo/cmds.c (cm_sc): use span with class attribute sc, instead
+ of small.
-Sun Jul 21 07:20:09 1996 Karl Berry <karl@cs.umb.edu>
+2004-01-04 Stepan Kasal <kasal@ucw.cz>
- * util/Makefile.in (install-info): Dependency should be
- install-info.o, not install-info. Also, update copyright years.
+ * doc/texinfo.tex (\commondummies, \indexnofonts): Merge the
+ common part of these two to ...
+ (\commondummiesnofonts): ... a new macro.
+ (\indexdummylatex, \indexdummytex, \indexdummydots): Nuke,
+ the time saved is not worth the hassle.
- * makeinfo/makeinfo.c (cm_printindex): Don't call execute_string
- to print index entries, we've already done the expansion now.
+2004-01-04 Stepan Kasal <kasal@ucw.cz>
- * makeinfo/makeinfo.h: Add copyright. Finish merge of rms changes.
- * makeinfo/makeinfo.c: Finish merge, add my expansion changes again.
- * makeinfo/multi.c: Add copyright message.
+ * doc/texinfo.tex (\makedispenv): Determine the size of the fonts
+ according to the value of SETdispenvsize, using ...
+ (\setnormaldispenv, \setsmalldispenv, \SETdispenvsize, \smallword):
+ (\nosmallword): ... these new macros.
+ (\flushleft): No longer defined via \makedispenv.
-Fri Jul 19 10:35:22 1996 Karl Berry <karl@cs.umb.edu>
+2004-01-03 Karl Berry <karl@gnu.org>
- * info/info.c: Update copyright date.
+ * doc/texinfo.tex (\TeX): new macro, copying plain but make a
+ period following end a sentence. Idea from LaTeX.
- * info/info.texi,
- * util/install-info.c,
- * emacs/Makefile.in,
- * emacs/texnfo-tex.el,
- * emacs/Makefile.in: Change FSF address.
+2004-01-02 Alper Ersoy <dirt@gtk.org>
- * Merged changes from bfox -- below, plus multitable changes, plus
- lots more.
+ * makeinfo/node.c (clean_old_split_files): new function.
+ (split_file): moved filename generation code to a ...
+ (enumerate_filename): new function.
- Sun Apr 14 08:49:50 1996 Brian J. Fox <bfox@nirvana.samsara.com>
+ * makeinfo/makeinfo.c (convert_from_loaded_file): call
+ clean_old_split_files before calling split_file.
- * makeinfo/makeinfo.c (remember_node_reference): Numerous commands
- call remember_node_reference. If a node has not yet been defined,
- use the empty string as the current node for those cases.
+2004-01-02 Alper Ersoy <dirt@gtk.org>
- Mon Feb 12 17:35:38 1996 Brian J. Fox <bfox@nirvana.samsara.com>
+ * makeinfo/makeinfo.c (create_html_directory): new function.
+ (insert_toplevel_subdirectory): moved common if blocks to
+ create_html_directory. Adjusted checks to reuse existing
+ directories, and remove existing <output>.html files, when
+ falling back to suffices.
- * makeinfo/makeinfo.c (push_node_filename): Clean up calls to
- xmalloc and xrealloc. Only have to call xrealloc.
+2004-01-02 Alper Ersoy <dirt@gtk.org>
- Fri Jan 26 08:00:38 1996 Brian J. Fox <bfox@nirvana.samsara.com>
+ * makeinfo/cmds.c (cm_code): for HTML, use span for @command, @env,
+ @file, @option and @samp, and insert command name as class attribute.
- * info/session.c (info_input_buffer_space_available): Fix typo
- which forced the limitation of the sizeof (int) instead of sizeof
- (buffer).
+2003-12-31 Alper Ersoy <dirt@gtk.org>
- * Makefile.in (PACKVER): now at 3.8. Add TERMIOS support to
- Info. Minor bugs fixed in Makeinfo.
+ * makeinfo/makeinfo.c (add_char, handle_menu_entry): end <ul> block
+ before inserting <p>, and restart afterwards.
-Sat Jul 13 11:58:57 1996 Karl Berry <karl@cs.umb.edu>
+2003-12-31 Alper Ersoy <dirt@gtk.org>
- * texinfo.texi (ftable vtable): Mention example.
+ * makeinfo/makeinfo.c (handle_menu_entry): for HTML, append colon only
+ if there is a description following the menu item.
-Sun Jun 30 14:59:51 1996 Karl Berry <karl@goldman.gnu.ai.mit.edu>
+2003-12-31 Alper Ersoy <dirt@gtk.org>
- * makeinfo/makeinfo.c (cm_email): New function for new @email command.
- * texinfo.texi (email): New node documenting it.
+ * makeinfo/makeinfo.c (usage): removed short forms of output options.
-Wed Apr 17 18:07:34 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+2003-12-30 Alper Ersoy <dirt@gtk.org>
- * makeinfo/makeinfo.c (cm_kbd): Do nothing if in @example or @code.
- (struct brace_element): New field in_fixed_with_font.
- (remember_brace_1): Save in_fixed_with_font.
- (pop_and_call_brace): Restore in_fixed_with_font.
- (cm_code): Don't decrement in_fixed_with_font at end of construct.
- (struct istack_elt): New field in_fixed_with_font.
- (push_insertion, pop_insertion): Save and restore in_fixed_with_font.
- (end_insertion): Don't decrement in_fixed_with_font here.
- (not_fixed_width): New function.
- (cm_sc, cm_var, cm_italic, cm_roman, cm_titlefont):
- Use not_fixed_width.
+ * cmds.c (cm_comment): do not output comments before HTML header is
+ written.
-Sat Apr 13 23:22:05 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+2003-12-30 Alper Ersoy <dirt@gtk.org>
- * util/install-info.c (main): Fatal error if no input file spec'd.
- Look for START-INFO-DIR-ENTRY, not BEGIN-INFO-DIR-ENTRY.
+ * makeinfo/makeinfo.c (main): new option --plaintext.
+ (usage): added short forms of --html, --xml, --docbook and --plaintext
+ to the help text.
-Thu Apr 11 18:21:50 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+2003-12-30 Alper Ersoy <dirt@gtk.org>
- * makeinfo/makeinfo.c (cm_enddots): New function.
- (self_delimiting): Accept -, ^ and ".
- (CommandTable): Add commands -, ^, ", enddots, centerchap.
+ * makeinfo/multi.c (multitable_item): removed thead and tbody from
+ HTML tables. Added hsep after @headitem for Info.
+ (multitable_item, multitable_tab): for HTML, use th instead of td for
+ @headitem rows.
-Sun Mar 24 12:18:32 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+ * makeinfo/xml.c (xml_begin_multitable): moved Docbook TGROUP code to
+ a ...
+ (xml_begin_multitable_group): new function.
+ (xml_end_multitable_row): restart TGROUP on @headitem.
+ (xml_end_multitable): warn if @headitem is the last item in
+ multitable, and output format is Docbook. Joined common code between
+ XML and Docbook.
- * makeinfo/makeinfo.c (enum insertion_type): Add `direntry'.
- (insertion_type_names): Add "direntry".
- (cm_dircategory): New function.
- (cm_direntry): New function.
- (CommandTable): Add "dircategory" and "direntry".
- (insert_string): New function.
- (end_insertion): Handle direntry.
- (begin_insertion): Handle direntry.
+2003-12-30 Arnold D. Robbins <arnold@skeeve.com>
-Sun Mar 24 11:10:05 1996 Karl Berry <karl@spiff.gnu.ai.mit.edu>
+ * makeinfo/cmds.c (cm_strong): Use <emphasis role="bold"> for docbook.
- * makeinfo/makeinfo.c (cm_url): New function for new @url command.
+2003-12-30 Alper Ersoy <dirt@gtk.org>
-Fri Feb 23 21:14:40 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+ * makeinfo/float.c (cm_listoffloats): substituted fixed numbers with
+ the sizeof operator where possible, and commented code where not, to
+ improve code readability.
- * info/Makefile.in (install, uninstall): Use manprefix.
+2003-12-30 Alper Ersoy <dirt@gtk.org>
-Fri Feb 23 19:50:18 1996 Richard Stallman <rms@whiz-bang.gnu.ai.mit.edu>
+ * makeinfo/makeinfo.c (cm_image): do not escape backslash and double
+ quote characters in plaintext output.
- * util/Makefile.in (install-info, install-info.o): New targets.
- (all): Depend on install-info.
- (install, uninstall): Operate on install-info.
+2003-12-30 Alper Ersoy <dirt@gtk.org>
- * install-info.c: New file.
+ * makeinfo/makeinfo.c (cm_image): do not write magic cookie when
+ output format is plaintext.
-Wed Jan 3 10:01:45 1996 Brian J. Fox <bfox@nirvana.datawave.net>
+2003-12-30 Alper Ersoy <dirt@gtk.org>
- * makeinfo/makeinfo.c (make_index_entries_unique): Be a little bit
- stricter about what makes two index entries identical.
+ * makeinfo/makeinfo.c (add_char): added forgotten html check to
+ in_html_block_level_elt if block.
-Fri Dec 29 13:00:24 1995 Brian J. Fox <bfox@wizard.datawave.net>
+2003-12-30 Alper Ersoy <dirt@gtk.org>
- * makeinfo/makeinfo.c (Whole File): Add @detailmenu for allowing
- detailed menu listings to appear while still defaulting nodes.
+ * makeinfo/xml.c:
+ * makeinfo/xml.h: added new element alttext (IMAGEALTTEXT),
+ as a child of image.
-Wed Dec 27 13:54:30 1995 Brian Fox <bfox@albert.gnu.ai.mit.edu>
+ * makeinfo/makeinfo.c (cm_image): moved alttext attribute to the new
+ alttext child in XML output, to keep markup intact. Moved filename
+ CDATA to name attribute.
- * makeinfo/makeinfo.c (cm_code): Always notice that we are in
- fixed_width_font, even if other formatting changes are not to take
- place.
+ * makeinfo/texinfo.dtd: updated image element.
-Sat Dec 23 11:48:43 1995 Brian J. Fox <bfox@wizard.datawave.net>
+2003-12-30 Alper Ersoy <dirt@gtk.org>
- * info/man.c: (clean_manpage) Remove ^L's from page.
+ * makeinfo/makeinfo.c (cm_image): use HTML entities in alt attribute.
- * makeinfo/makeinfo.c (get_brace_args): Change some memcpy's to
- memmoves.
+2003-12-28 Alper Ersoy <dirt@gtk.org>
- * info/info.c (main): Prefer caseless matches over partial
- matches.
+ * makeinfo/insertion.c (cm_item): do not call close_single_paragraph
+ and use rollback_empty_tag for empty <dd> removal.
- * Makefile.in (All Subdir Targets): Change suggested by Debian
- people which allows errors in recursive makes to kill the
- top-level make.
+2003-12-28 Alper Ersoy <dirt@gtk.org>
- * makeinfo/Makefile.in (makeinfo.dvi): New target.
+ * makeinfo/html.c (rollback_empty_tag): new function.
+ (insert_html_tag): try rollback_empty_tag before closing both
+ tag and old_tag.
- * info/info.c (main): Print version of containing texinfo package.
+2003-12-28 Alper Ersoy <dirt@gtk.org>
- * makeinfo/makeinfo.c (flush_output): Don't strip high-bit from
- sentence_enders.
- Print the version number of the containing texinfo package.
+ * makeinfo/cmds.c (cm_sp): for HTML use <pre>.
- * info/man.c (locate_manpage_xref): Count the 0th entry.
+ * makeinfo/defun.c (defun_internal): do not close paragraph when
+ outputting HTML to avoid empty <p> elements.
+ (process_defun_args): joined duplicate if/else blocks.
- * makeinfo/makeinfo.c (cm_menu): If a menu is seen before a node
- has been defined, warn, and create the node `Top'.
+ * makeinfo/html.c (insert_html_tag): removed redundant paragraph
+ starting code.
-Wed Jun 21 03:19:39 1995 Brian Fox <bfox@albert.gnu.ai.mit.edu>
+ * makeinfo/insertion.c (begin_insertion): keep state of the first <dt>
+ child of a <dl> in the new html_deflist_has_term variable for ...
+ (cm_item): cleaner <br> insertion checks. Fixed non-functional empty
+ <dd> rollback code.
- * makeinfo/makeinfo.c (cm_infoinclude): Clean up after printing
- error if the file couldn't be included.
- (discard_braces): Print errors only for those unmatched open
- braces that belong to a texinfo command.
+ * makeinfo/makeinfo.c (add_html_block_elt, add_html_block_elt_args):
+ new functions for inserting block level elements that must not be
+ preceded by a <p> element.
+ (add_char): insert <p> only if in_html_block_level_elt is not true.
- * */Makefile.in: Use @CFLAGS@ and @LDFLAGS@.
+ * makeinfo/cmds.c (cm_comment, cm_center):
+ * makeinfo/footnote.c (output_pending_notes):
+ * makeinfo/html.c (html_output_head):
+ * makeinfo/index.c (cm_printindex):
+ * makeinfo/insertion.c (enum_html, begin_insertion, end_insertion)
+ (handle_verbatim_environment, cm_item):
+ * makeinfo/makeinfo.c (handle_menu_entry):
+ * makeinfo/multi.c (do_multitable):
+ * makeinfo/node.c (cm_node):
+ * makeinfo/sectioning.c (sectioning_html): use add_html_block_elt and
+ add_html_block_elt_args instead of add_word and add_word_args
+ respectively, when inserting <ul>, <div>, <h?> and the like.
- * makeinfo/makeinfo.c: End `node_search_string' and friends with a
- terminating null character.
+2003-12-25 Karl Berry <karl@gnu.org>
-Wed Jun 21 01:23:49 1995 Jim Meyering (meyering@comco.com)
+ * doc/texinfo.txi (Def Cmd Continuation Lines): new node.
+ * NEWS: mention this new feature.
- * makeinfo/makeinfo.c: Close comment after #endif.
+2003-12-25 Alper Ersoy <dirt@gtk.org>
-Tue Jun 20 04:58:26 1995 Brian Fox <bfox@albert.gnu.ai.mit.edu>
+ * makeinfo/insertion.c (end_insertion): inhibit paragraph indentation
+ for more cases after example, display and the like environments.
- * emacs/Makefile.in (install): Fix typo: "fle" -> "file".
+ * makeinfo/xml.c (xml_start_para, xml_end_para): made <para> and
+ </para> indentation more newline-aware.
- * Makefile.in (VERSION): Bump to 3.6
+2003-12-25 Alper Ersoy <dirt@gtk.org>
- * info/clib.c: Include general.h for `info_toupper' and friends.
+ * makeinfo/insertion.c (end_insertion, cm_example, cm_smallexample)
+ (cm_lisp, cm_smalllisp, cm_format, cm_smallformat, cm_display)
+ (cm_smalldisplay): unified whitespaces inside these elements
+ in XML and Docbook output (always one newline at the beginning
+ and one at the end).
- * info/clib.h: strncmp and strncascmp return an int. What kind of
- drugs was I on?
+2003-12-25 Alper Ersoy <dirt@gtk.org>
-Mon Jun 19 23:34:47 1995 Brian Fox <bfox@albert.gnu.ai.mit.edu>
+ * makeinfo/lang.c (cm_accent_generic_no_headers): do not issue
+ warnings when substituting non-ASCII accents with punctuation.
- * makeinfo/makeinfo.c (make_index_entries_unique): Copy the last
- index entry.
+2003-12-24 Karl Berry <karl@gnu.org>
-Mon Jun 19 21:55:49 1995 Noah Friedman <friedman@prep.ai.mit.edu>
+ * makeinfo/makeinfo.c (cm_xref): rparen is not allowed after all,
+ confirmed by experimentation (thanks to Luc).
+ * doc/texinfo.txi (ref): remove it from doc.
- * util/texi2dvi (--version): New option.
- Cosmetic changes.
+2003-12-23 Alper Ersoy <dirt@gtk.org>
-Mon Jun 19 16:06:40 1995 Brian Fox <bfox@albert.gnu.ai.mit.edu>
+ * makeinfo/makeinfo.c (convert_from_loaded_file): when finished, do
+ not indent body and html closing tags, and do not use comment tags if
+ there is no trailing information.
- * makeinfo/makeinfo.c (cm_macro): Fix typo. `x != y' is not the
- same as `x |= y'.
+2003-12-23 Alper Ersoy <dirt@gtk.org>
- * info/Makefile.in (exec_prefix): Use @exec_prefix@ not $(prefix).
- * makeinfo/Makefile.in (exec_prefix): Use @exec_prefix@ not $(prefix).
- * util/Makefile.in (exec_prefix): Use @exec_prefix@ not $(prefix).
- * libtxi/Makefile.in (exec_prefix): Use @exec_prefix@ not $(prefix).
+ * makeinfo/cmds.c (cm_acronym):
+ * makeinfo/cmds.h: save second arguments of acronym in acronyms_stack
+ and reuse them as title attributes of acronym element of HTML output,
+ when there is only one argument given.
- * emacs/Makefile.in (uninstall): New target.
- (install): Use the definition of $(lispdir), don't dynamically
- find it. Use INSTALL_DATA not cp.
- (exec_prefix): use @exec_prefix@ not $(prefix).
+2003-12-23 Alper Ersoy <dirt@gtk.org>
- * makeinfo/makeinfo.c (apply): If there isn't an actual argument
- for a named argument, default it to "".
+ * makeinfo/makeinfo.c (cm_image): use text_expansion for alt
+ attribute of images.
- * Makefile.in (VERSION): Now at 3.5.
- (texinfo): Make ./makeinfo/makeinfo depend on sub-all for parallel
- makes.
+2003-12-23 Alper Ersoy <dirt@gtk.org>
- * emacs/Makefile.in (ELISP_OBJS): Explictly declare .el and .elc
- in the SUFFIXES list.
+ * makeinfo/sectioning.c (sectioning_html): do not insert "%s "
+ unconditionally for title enumerations, which causes unnecessary
+ blanks for @unnumbered and @top.
- * makeinfo/makeinfo.c (cm_today): Special case for losing alpha.
- * (minor_version): Increase to 63.
+2003-12-23 Arnold D. Robbins <arnold@skeeve.com>
- * info/info.c (version_string): Now at 2.14.
- * info/tilde.c: Declare getenv to return (char *).
- * info/window.c (build_message_buffer): Jump through hoops to keep
- DEC Alpha's happy.
+ * float.h (FLOAT_ELT): New member: `title_used'. Avoids reuse of
+ title inside nested floats.
+ (current_float_used_title, current_float_set_title_used): declared.
- * info/xmalloc.c: Declare malloc and realloc as (void *) returning
+ * float.c (add_new_float): Init `new->title_used' to zero.
+ (current_float_used_title, current_float_set_title_used): new
functions.
-Sun Jun 18 12:47:21 1995 Richard Stallman <rms@mole.gnu.ai.mit.edu>
-
- * emacs/detexinfo.el (detexinfo-line-cmds-without-arg):
- Handle ifhtml.
-
-Fri Jun 16 13:48:14 1995 Brian Fox <bfox@albert.gnu.ai.mit.edu>
-
- * util/texindex.c: Update TEXINDEX_VERSION_STRING for texinfo 3.4
-
- * (All *.c *.h *.in): Change FSF old address to new.
- * texinfo.texi (Obtaining TeX): Change FSF old address to new
- address. Change Old phone numbers to new phone numbers.
-
- * Makefile.in (VERSION): Change to 3.4.
-
-Thu Jun 15 22:49:07 1995 Robert J. Chassell <bob@hill.gnu.ai.mit.edu>
-
- * texinfo.texi, emacs/=development/cover.texi: update
- Texinfo distribution package version number
-
-Thu Jun 15 09:23:02 1995 Brian J. Fox <bfox@wizard.datawave.net>
-
- * info/info.c: (minor_version): Set to 13.
-
- * info/clib.c,h: New files gather together replacement functions
- for those POSIX-style C library functions that are not present on
- the target system.
-
- * info/Makefile.in (SRCS): Add clib.c and clib.h. makedoc now
- needs clib.o to build on systems missing various string.h stuff.
-
- * info/variables.c (whole file): Call strdup, not savestring.
- * info/tilde.c (whole file): Call strdup, not savestring.
- * info/search.c (whole file): Call strdup, not savestring.
- * info/nodes.c (whole file): Call strdup, not savestring.
- * info/nodemenu.c (whole file): Call strdup, not savestring.
- * info/man.c (whole file): Call strdup, not savestring.
- * info/makedoc.c (whole file): Call strdup, not savestring.
- * info/m-x.c (whole file): Call strdup, not savestring.
- * info/info.c (whole file): Call strdup, not savestring.
- * info/indices.c (whole file): Call strdup, not savestring.
- * info/echo_area.c (whole file): Call strdup, not savestring.
- * info/session.c (whole file): Call strdup, not savestring.
- * info/filesys.c (whole file): Call strdup, not savestring.
-
- * makeinfo/makeinfo.c (minor_version): Change to 1.62.
- * makeinfo/makeinfo.c (get_execution_string): Initialize `i' to 0
- in case there are no execution_strings.
-
-Wed Jun 14 17:48:06 1995 Brian J. Fox <bfox@wizard.datawave.net>
-
- * texinfo.texi: include "texinfo.tex", not "texinfo".
- * info/session.c (forget_window_and_nodes): Place a sequence point
- in between "info_windows[i] = info_windows[++i];" as per various
- compiler experts.
-
- * makeinfo/makeinfo.c (strdup): Create this function if the system
- doesn't have it.
- (discard_insertions): Use the insertion's filename, not the
- current input file.
- (push_insertion): Remember the current input file with each
- insertion.
- (pop_insertion): Free storage used by remembered input file.
-
- * makeinfo/makeinfo.c (whole file): Use `strdup' instead of
- `savestring'.
- * configure.in: Check for `strdup'.
-
-Wed Jun 14 15:58:51 1995 Brian Fox <bfox@albert.gnu.ai.mit.edu>
-
- * libtxi/Makefile.in (prefix): Use @prefix@, not /usr/local/
-
-Wed Jun 14 10:50:57 1995 Brian J. Fox <bfox@wizard.datawave.net>
-
- * Makefile.in (DISTFILES): Don't include *.elc files in the list
- of files to distribute.
- (installdirs): Include `emacs' in the list of sub-dirs with
- Makefile.in's.
-
- * emacs/elisp-comp: Shell script which batch compiles the *.el files.
- * emacs/Makefile.in: New file contains targets to build the elc files.
- * configure.in: Add `emacs/Makefile' to the list of created makefiles.
- * makeinfo/makeinfo.c (whole file): Give every function a return
- type. All cm_xxx functions are now void. Add declarations for
- functions to top of file.
-
-Mon Jun 12 12:00:57 1995 Brian J. Fox <bfox@wizard.datawave.net>
-
- * info/man.c (reference_section_starters): Add versions of "SEE
- ALSO" and "RELATED INFORMATION" with tabs instead of spaces as
- well.
-
- * util/texindex.c: Back out changes for OFF_T. Explicity coerce
- the result of lseek to a long, and use longs everywhere.
-
- * texinfo.texi: Change "@end shorttitlepage" to "@end titlepage".
- * makeinfo/makeinfo.c: Make @shorttitlepage ignore the rest of the
- line.
-
- * util/texindex.c (strrchr): Create if not present.
- Test for HAVE_STRCHR and HAVE_STRING_H.
- (main): Make PROGRAM_NAME be just the last path componenet of argv[0].
- (decode_command): Rewrite.
- (usage): Rewrite. Now texindex handles --version.
-
- * makeinfo/makeinfo.c (make_index_entries_unique): Rewrite from
- scratch.
-
- * Don't distribute created info files with texinfo. After all,
- the user will have the tools necessary to create them, yes?
-
- * Makefile.in (distclean): Remove *.log
-
- * info/man.c (read_from_fd): Change timeout value for select to 15
- seconds. Some systems (e.g., albert.ai.mit.edu) actually need
- more than 10 seconds to format a man page.
-
- * info/tilde.c: Fix typo in declaration for
- `tilde_expansion_failure_hook'.
-
-Wed Jun 7 13:36:53 1995 Brian Fox <bfox@albert.gnu.ai.mit.edu>
-
- * info/tilde.h: Change type of tilde_expansion_failure_hook to
- a pointer to a function returning a (char *).
- * info/tilde.c: Change type of tilde_expansion_failure_hook to a
- pointer to function returning a (char *).
-
- * makeinfo/makeinfo.c (get_execution_string): Don't use `i' in the
- latter assignment, use `execution_strings_index' instead.
-
- * info/man.c (read_from_fd): Change logic to avoid using FIONREAD.
-
- * info/xmalloc.c (xrealloc): Use (void *), not (caddr_t *).
- * info/xmalloc.c (xmalloc): Use (void *), not (caddr_t *).
-
- * Makefile.in (DISTFILES): Don't find RCS no "=" directories.
-
- * util/Makefile.in (prefix): Use @prefix@ as the value.
- * info/Makefile.in (prefix): Use @prefix@ as the value.
- * makeinfo/Makefile.in (prefix): Use @prefix@ as the value.
-
-Wed Jun 7 12:29:28 1995 Robert J. Chassell <bob@hill.gnu.ai.mit.edu>
-
- * texinfo.texi: Correct minor typos.
-
- * emacs/texinfmt.el: Don't require @shorttitlepage to be inside
- of @iftex ... @end iftex
-
-Mon May 8 18:33:52 1995 Brian J. Fox <bfox@wizard.datawave.net>
-
- * info/nodes.c: #include "man.h" if HANDLE_MAN_PAGES.
- (info_get_node_of_file_buffer): If the file buffer is one
- associated with manpages, call the manpage node finding
- function instead.
- (info_find_file_internal): If the file buffer is one associated
- with manpages, avoid doing any file I/O.
- (info_reload_file_buffer_contents): Ditto.
- (info_find_file_internal): Call create_manpage_file_buffer instead
- of info_load_file_internal.
-
- * info/info.c: #include "man.h" if HANDLE_MAN_PAGES.
- (main): If the initial node cannot be found, perhaps find it as a
- manpage.
- * info/info-utils.c: #include "man.h" if HANDLE_MAN_PAGES.
- (info_xrefs_of_node): If handling man pages, and this is a manpage
- node, use xrefs_of_manpage.
-
- * info/session.c (info_set_input_from_file): Only fclose (stream)
- if it is non-null and not stdin.
- #include "man.h" if HANDLE_MAN_PAGES.
- (info_menu_or_ref_item): If handling man pages, and this is a
- manpage node, get the xrefs from manpage_xrefs_in_binding.
- (info_man): Compile in for M-x man if handling man pages.
- (info_move_to_xref): If handling man pages, and the current node
- is a manpage node, use locate_manpage_xref to get xrefs.
-
-Thu May 4 08:55:23 1995 Brian J. Fox <bfox@wizard.datawave.net>
-
- * info/info.c (main): If the output device is not a terminal, and
- no output filename has been specified, make user_output_filename
- be "-", so that the info is written to stdout, and turn on the
- dumping of subnodes.
-
-Thu Apr 13 18:05:06 1995 Daniel Hagerty <hag@churchy.gnu.ai.mit.edu>
-
- * texinfo.texi: Fixed @end titlepage/@end shorttitlepage
-
-Sat Apr 8 12:51:49 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
-
- * makeinfo/makeinfo.c [! HAVE_STRERROR] (strerror): New function,
- snarfed from ../info/filesys.c.
- (cm_infoinclude): Use strerror instead of sys_errlist.
-
-Tue Apr 4 18:44:00 1995 Brian J. Fox <bfox@wizard.datawave.net>
-
- * util/texindex.c (sort_offline): Change TOTAL to be an off_t.
- * util/texindex.c (sort_in_core): Change TOTAL to be an off_t.
- * util/texindex.c (MAX_IN_CORE_SORT): Cast to off_t.
-
-Sun Apr 2 16:20:13 1995 Brian J. Fox <bfox@wizard.datawave.net>
-
- * info/Makefile.in: Define DEFAULT_INFOPATH in case we are
- compiling in the current directory.
- * info/Makefile.in (info.o): Add filesys.h because of DEFAULT_INFOPATH.
- * info/(search.c,h, nodes.c info-utils.c) Use strcasecmp and
- strncasecmp instead of stricmp and strnicmp. Define strcasecmp
- and strncasecmp in search.c if !HAVE_STRCASECMP.
- * info/search.c: If HAVE_STRING_H include it.
- * info/nodes.c: If HAVE_STRING_H include it.
- * info/info-utils.c: If HAVE_STRING_H include it.
- * info/info.h: If HAVE_STRING_H include it.
- * configure.in (AC_HAVE_FUNCS): Check for strcasecmp.
- * makeinfo/makeinfo.c (strcasecmp): Define if !HAVE_STRCASECMP.
- * makeinfo/makeinfo.c (entire file): Use `strcasecmp' instead of
- `stricmp'.
- * makeinfo/makeinfo.c (cm_ifeq): New command takes three args.
- Compares first two, executes remainder if the first two are
- string-wise eq.
- * makeinfo/makeinfo.c (ifhtml): Add to command list. Shouldn't be
- used, but it is by people who don't want to hack macros.
-
-Sat Apr 1 09:20:14 1995 Brian J. Fox <bfox@wizard.datawave.net>
-
- * makeinfo/makeinfo.c (begin_insertion): Fix reversed arguments to
- line_error.
-
- * info/info-stnd.texi: Use "end" footnote style instead of "separate".
-
- * info/Makefile.in: Change "rm -f" to $(RM).
-
- * info/general.h: Define zero_mem in terms of memset if we have
- it, else in terms of bzero if we have that, else as inline code.
-
- * info/NEWS: Updated to reflect changes in 2.11.
-
-Fri Mar 31 22:38:31 1995 Brian J. Fox <bfox@wizard.datawave.net>
-
- * Makefile (DISTFILES): Don't include *.a, *orig, nor *.e
- files.
- (DISTFILES):
-
-Sat Mar 4 12:16:29 1995 Brian J. Fox <bfox@wizard.datawave.net>
-
- * Makefile.in: Use @prefix@ instead of hardwired `/usr/local'.
- Clean up makefile rules which make in subdirs.
- (ALL_SUBDIRS): Add makeinfo/macros to list of subdirectories.
-
- * configure.in (AC_CHECK_FUNCS): Add `bcopy' to list of things to
- check for.
-
-Fri Mar 3 13:54:10 1995 Robert J. Chassell <bob@hill.gnu.ai.mit.edu>
-
- * texinfo.texi: Minor changes for incremental new edition 2.20.
-
-Fri Mar 3 19:01:36 1995 Brian J. Fox <bfox@wizard.datawave.net>
-
- * filesys.c (filesys_read_info_file): Local variable ST_SIZE is a
- long which has the value of finfo->st_size casted to it.
- * nodes.c (whole file): Similar changes.
-
- These changes and the following for makedoc.c were required for
- proper operation on HPm68k NetBSD.
-
-Mon Feb 27 15:16:27 1995 Brian J. Fox <bfox@wizard.datawave.net>
-
- * makedoc.c (process_one_file): Local variable FILE_SIZE is a long
- which has the value of finfo.st_size casted to it.
-
-
-Fri Mar 3 18:58:38 1995 Brian J. Fox <bfox@wizard.datawave.net>
-
- * makeinfo.c (find_and_load): Cast fileinfo.st_size to a long for
- internal use. This makes things work on NetBSD.
-
-
-Fri Mar 3 13:54:10 1995 Robert J. Chassell <bob@hill.gnu.ai.mit.edu>
-
- * texinfo.texi: Minor changes for incremental new edition 2.20.
-
-Fri Mar 3 09:41:39 1995 Brian J. Fox <bfox@wizard.datawave.net>
-
- * configure.in (TERMLIBS): Use AC_CHECK_LIB instead of
- AC_HAVE_LIBRARY.
-
-Mon Jan 9 16:55:31 1995 Brian Fox <bfox@churchy.gnu.ai.mit.edu>
-
- * Makefile.in (DISTFILES): Add the directory EMACS-BACKUPS to the
- list of things to avoid distributing.
-
-Tue Nov 29 17:48:37 1994 David J. MacKenzie <djm@duality.gnu.ai.mit.edu>
-
- * configure.in: Check for off_t.
- * util/texindex.c (main): Use it.
-
-Fri Nov 11 14:46:28 1994 David J. MacKenzie <djm@duality.gnu.ai.mit.edu>
-
- * configure.in: Update for Autoconf v2.
-
-Thu Oct 13 02:17:38 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
-
- * emacs/detexinfo.el (detexinfo): Handle @!, @?, @^, @".
-
-Mon Aug 1 03:26:13 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
-
- * texindex.c: Move the memset define down past string.h include.
-
-Tue Jun 28 14:21:43 1994 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
-
- * makeinfo/makeinfo.c: Add --help option.
- (usage): Take args for stream and error code.
- Change callers.
- (print_version_info): Write to stdout, not stderr.
-
-Wed May 18 18:55:24 1994 Brian J. Fox (bfox@ai.mit.edu)
-
- * info/session.c (forget_window_and_nodes): Negate test for
- internal_info_node_p. We only want to free the text if it is
- not an internal node.
-
-Thu Mar 10 03:07:18 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
-
- * texindex.c (memset): Fix invalid parm name (was 0).
-
-Thu Feb 10 12:56:52 1994 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * makeinfo/makeinfo.c (current_item_function): Don't loop if elt
- is NULL.
-
-Wed Feb 9 12:21:09 1994 Brian J. Fox (bfox@ai.mit.edu)
-
- * makeinfo/makeinfo.c (minor_version): Release now at 1.60.
-
- * makeinfo/makeinfo.c (expand_filename): Additional fixes. Now
- when called with NULL filename, makes an output filename from the
- input filename.
- (convert_from_loaded_file): If REQUIRE_SETFILENAME is #defined (no
- longer the default case) then error if no @setfilename was found
- in the file. If REQUIRE_SETFILENAME is not #defined, the input
- file starts either at the first line, or at the second line if the
- first line contains the text "\input", and the output filename is
- the input file name without directory and with ".info" replacing
- any extension found.
- (convert_from_loaded_file): Fixed bug in search for first
- occurence of "@setfilename".
-
-Tue Feb 8 14:16:58 1994 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * configure.in: Check for sys/file.h.
- info/dir.c, info/filesys.c, info/makedoc.c, info/nodes.c,
- info/session.c, info/termdep.h, makeinfo/makeinfo.c
- [HAVE_SYS_FILE_H]: Include <sys/file.h>.
-
- * makeinfo/makeinfo.c (convert_from_loaded_file): Print
- real_output_filename instead of output_filename, so user knows
- exactly where output file is going.
-
- Fri Jun 11 14:34:30 1993 Ian Lance Taylor (ian@cygnus.com)
- * configure.in: Check for sigprocmask and sigsetmask.
- * info/signals.h (HAVE_SIGSETMASK): Don't define.
- (HAVE_SIGPROCMASK): Use instead of _POSIX_VERSION.
- (BLOCK_SIGNAL, UNBLOCK_SIGNAL): If neither HAVE_SIGPROCMASK nor
- HAVE_SIGSETMASK is defined, define these to do nothing.
- * info/signals.c (sigprocmask): Don't compile if HAVE_SIGSETMASK
- is not defined.
-
- * info/terminal.c (terminal_prep_terminal): Don't clobber VINTR
- and VQUIT in conditionals.
-
-Mon Feb 7 18:10:22 1994 Brian J. Fox (bfox@ai.mit.edu)
-
- * makeinfo/makeinfo.c (full_pathname): Correct to really return
- the full pathname of the input argument. Now makeinfo
- /foo/bar.texi, where /foo/bar.texi contains "@setfilename
- bar.info", correctly leaves the output file in "./bar.info".
- Note that "@setfilename ../bar.info" still works; this is already
- an absolute pathname.
-
-Sat Feb 5 13:04:05 1994 Brian J. Fox (bfox@ai.mit.edu)
-
- * makeinfo/makeinfo.c: Version 1.59 released.
-
- * makeinfo/makeinfo.c (whole file): Large number of changes allow
- the "-E filename" option to be used to write a macro expanded
- output file. On a file which contains no @include's and no
- @macro's, the output file is identical to the input file.
-
- * makeinfo/makeinfo.c (declarations): Remove cm_tex (). It is
- never used since it is implemented with `command_name_condition'.
-
- * makeinfo/makeinfo.c (add_char): Shift braces following the
- current break point if we have deleted any characters.
- (adjust_braces_following): New function adjusts all of the markers
- in the brace stack which follow HERE by AMOUNT. This fixes a bug
- where (for example) @var{} immediately following a line break
- which is the end of a sentence modified the output incorrectly.
-
-Wed Feb 2 14:14:03 1994 Brian J. Fox (bfox@ai.mit.edu)
-
- * makeinfo: Version 1.58.
-
- * makeinfo/makeinfo.c (cm_node): Add extra hair to allow
- backtracking through execution strings. Add extra hair to allow
- the first node seen after a @top node is seen to adjust the
- sectioning level of the @top node and associated menus.
- Fix a few typos.
- Add facility for macros to invoke the original definition. This
- works by not allowing a single macro to recurse. Mutual recursion
- is also disallowed with this plan.
-
- * makeinfo/macros: New directory contains shippable macros.
- * makeinfo/macros/simpledoc.texi: Macros which simplify the most
- common uses of TeXinfo. See the example file.
- Macros are now a reasonable way to get people started using
- TeXinfo.
-
-Mon Jan 31 12:54:36 1994 Brian J. Fox (bfox@ai.mit.edu)
-
- * makeinfo/makeinfo.c (minor_version): Increase to 57.
-
- * makeinfo/makeinfo.c (cm_node): Call execute_string on the node,
- next, prev, and up pointers.
- (reader_loop): Change logic for `@bye'. No longer required at the
- ends of executed strings.
- (execute_string): Do not append `@bye' to the string to execute.
-
- * makeinfo/makeinfo.c (whole file): Use COMMAND_PREFIX instead of
- hardcoding `@' character in strings and searches.
-
- * makeinfo/makeinfo.c (read_command): If HAVE_MACROS is defined,
- then recognize and execute macros here.
- (CommandTable): Add "macro" and "unmacro" to table if HAVE_MACROS
- is defined.
-
- * makeinfo/makeinfo.c (cm_macro, cm_unmacro, execute_macro)
- makeinfo/makeinfo.c (get_macro_args, find_macro, add_macro)
- makeinfo/makeinfo.c (delete_macro, array_len, apply):
- New functions implement macro facility if HAVE_MACROS is
- defined.
-
- * makeinfo/macro.texi (new file): Examples of using the new macro
- facility.
-
-Mon Jan 31 10:24:52 1994 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * makeinfo/makeinfo.c (executing_string): Restore global
- declaration.
-
-Mon Jan 24 23:48:26 1994 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * texinfo.texi: Various typo fixes from Bob Chassell
- <bob@gnu.ai.mit.edu>.
-
-Thu Jan 6 13:34:21 1994 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * texinfo.texi: Turned on smallbook format and @set smallbook.
-
-Wed Dec 15 20:08:43 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * info/filesys.h (DEFAULT_INFOPATH): Added /usr/local/info,
- /opt/gnu/info, /usr/share/info, and /usr/local/share/info.
-
-Tue Dec 14 19:10:20 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * libtxi/Makefile.in (ALLOCA): Define from configure.
-
-Fri Dec 10 04:33:12 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * util/texi2dvi: Put under RCS control.
-
-Sun Dec 26 11:55:46 1993 Brian J. Fox (bfox@ai.mit.edu)
-
- * info/session.c (info_numeric_digit_arg_loop): Fix doc string.
-
- * info/infodoc.c (create_internal_info_help_node): Print out list
- of functions which have to keystroke equivalent if we support
- NAMED_FUNCTIONS.
-
- * info/filesys.c (compress_suffixes): Add ".gz" for "gunzip" to
- alist.
-
- * info/footnotes.c (make_footnotes_node): If refs[i] doesn't have
- a nodename, then it couldn't be a reference to a footnote.
-
- * info/nodemenu.c (get_visited_nodes): Handle the case where
- filter_func has left no possible buffers to select.
-
-Sat Dec 25 10:35:56 1993 Brian J. Fox (bfox@ai.mit.edu)
-
- * info/infodoc.c (create_internal_info_help_node): Conditionalize
- generation of the help node based on the #define
- HELP_NODE_GETS_REGENERATED. When this is not set (the default)
- the help node is generated exactly once, and is not gc'able.
- Otherwise, a new node is always created for the help window, and
- the old node gets garbage collected by the gc system.
- (info_find_or_create_help_window): Conditionalize window node
- selected based on the #define HELP_NODE_GETS_REGENERATED.
-
- * info/dir.c (add_menu_to_file_buffer): Place exactly one blank
- line between directory entries.
-
- * info/info.c (version_string): Update minor version to "11".
-
- * info/info.h: Update comment to "2.11".
-
- * info/dir.c (maybe_build_dir_node): Only add the contents of a
- new file if it is not identical to the file of the DIR buffer.
-
- * info/nodes.c (info_get_node): Call `maybe_build_dir_node' on
- "dir" as well as "localdir" to mimic emacs-19.22 "dir" merging
- behaviour.
-
-Fri Dec 3 13:41:44 1993 Brian J. Fox (bfox@ai.mit.edu)
-
- * info/info-utils.c (canonicalize_whitespace): Suppress whitespace
- found at the start of STRING.
-
-Sat Nov 20 14:00:50 1993 Brian J. Fox (bfox@hippie)
-
- * info/indices.c (DECLARE_INFO_COMMAND): Fix typo in assignment to
- `old_offset' (= instead of ==).
-
-Tue Nov 2 12:22:40 1993 Brian J. Fox (bfox@ai.mit.edu)
-
- * makeinfo/makeinfo.c (make_index_entries_unique): New function
- makes a sorted array have all unique entries by appending numbers
- to the ends of strings.
- (sort_index): Call `make_index_entries_unique'.
-
-Mon Sep 20 12:04:05 1993 Brian J. Fox (bfox@ai.mit.edu)
-
- * makeinfo/makeinfo.c (get_execution_string): New Function returns
- a pointer to an EXECUTION_STRING structure.
- (execute_string): No longer uses a static string; call
- `get_execution_string' instead in order to get a free buffer for
- consing.
-
-Sun May 23 07:00:20 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * Texinfo 3.1 released.
-
-Sat May 22 18:21:27 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * info/info.c (info_patch_level): Increment constant to 1.
-
- * info/Makefile.in (DEFAULT_INFOPATH): Default definition deleted.
- Makefile.in: Put it here instead.
- * Makefile.in (MDEFINES): Add DEFAULT_INFOPATH.
-
- * configure.in: check for vfprintf and vsprintf.
-
- * makeinfo/makeinfo.c: Version 1.55.
-
- * makeinfo/makeinfo.c (add_word_args, execute_string) [HAVE_VARARGS_H]:
- Don't use this definition unless HAVE_VSPRINTF is also defined.
- (error, line_error, warning) [HAVE_VARARGS_H]: Don't use this
- definition unless HAVE_VFPRINTF is also defined.
- Remove indentation of all cpp directives, except for #pragma.
-
-Fri May 21 14:34:24 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * texinfo.texi: Rename to texi.texi.
- Change @setfilenname and START-INFO-DIR-ENTRY to `texi.info'.
-
- * Makefile.in (MDEFINES): Pass LDFLAGS to sub-makes.
- (realclean): Delete `configure'.
- Changed all references to texinfo.info to texi.info
-
- * configure.in: Add AC_PROG_RANLIB, and AC_CONST.
- Check for `rindex' function.
- Check for varargs.h.
- Clean up symbol names for header files so a single AC_HAVE_HEADERS
- can be used.
- (AC_INIT): Use texi.texi instead of makeinfo/makeinfo.c
-
- * info/info-utils.h: Copy definitions of bcopy, index, and rindex
- (with appropriate #ifdef wrappers) from termdep.h. These are
- included by a mutually exclusive set of files.
-
- * info/termdep.h [HAVE_SYS_PTEM]: Use HAVE_SYS_PTEM_H instead.
-
- * info/terminal.c, info/termdep.h [HAVE_TERMIO]: Use HAVE_TERMIO_H
- instead.
-
- * info/makedoc.c, info/filesys.c [!O_RDONLY]: Include fcntl.h or
- sys/fnctl.h, depending on whether HAVE_SYS_FCNTL_H is set.
-
- * info/termdep.h: Remove all indentation in #-exprs.
- Remove old assumptions about bcopy, index, and rindex.
- [HAVE_BCOPY]: Define bcopy.
- [HAVE_RINDEX]: Define index and rindex.
-
- * info/nodes.c (info_get_node): Don't call stricmp if nodename is
- NULL. Remove indentation in #-exprs.
-
- * info/echo_area.c (echo_area_stack_depth): Declare static.
-
- * info/Makefile.in (DEFAULT_INFOPATH): Make separate Makefile
- variable so it can be overridden more easily by the user. Add `.'
- to beginning of path.
- (clean): Delete core.* (386bsd core files).
- (MAKEDOC): Variable removed. Refer to `makedoc' explicitly.
- (funs.h): Add `:' commands after if, to avoid spurious nonzero
- exit statuses.
-
- * info/userdoc.texi: Improved comments explaining its purpose.
-
- * makeinfo/makeinfo.c [HAVE_VARARGS_H]: Include varargs.h.
- (error, line_error, warning, add_word_args,
- execute_string)[HAVE_VARARGS_H]: New versions that
- use varargs. From bfox.
-
- * makeinfo/Makefile.in (clean): Delete core.* (386bsd core files).
-
- * util/Makefile.in (clean): Remove core.* (386bsd core files).
-
- * libtxi/Makefile.in: Remove all references to $(common).
- (RANLIB): New variable, set from autoconf.
- (libtxi.a): Use $(RANLIB) instead of `ranlib' in target rules.
- (clean): Delete core.* (386bsd core files).
-
-Tue May 18 12:08:24 1993 Robert J. Chassell (bob at grackle.stockbridge.ma.us)
-
- * emacs/texinfmt.el (texinfo-format-refill): Do not fill a section
- title line with the asterisks, hyphens, etc. that underline
- it in any circumstance.
-
-Sun May 16 13:53:43 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * util/mkinstalldirs: handle relative pathnames.
-
-Fri May 14 20:18:49 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * util/mkinstalldirs: initialize IFS if unset.
-
-Tue May 11 06:33:14 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * makeinfo/makeinfo.c (cm_item): don't dereference item_func if NULL.
-
-Mon May 10 14:50:31 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * Texinfo 3.0 released.
-
- * Makefile.in (ALLOCA): Provide for substitution.
-
-Mon May 10 10:12:53 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * emacs/texinfmt.el (texinfmt-version): Updated year.
-
-Fri Apr 16 04:48:03 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * makeinfo/makeinfo.c: Version 1.54 from bfox.
-
- * util/fixfonts: Replace instances of `[..]' with `test'.
- Use more portable `test' arguments: `z$foo = z' instead of `! $foo'.
- Robustify quoting in eval assignments.
- (textfmdir, texpkdir, texgfdir): Don't override definition from
- environment, if any.
- Trap EXIT, SIGHUP, SIGINT, SIGQUIT, SIGTERM to delete temp files
- instead of trying to remove them explicitly before calling exit.
- When changing cwd, do so in subshell, in case various tex*dir
- variables are relative.
- Don't use `head', `dirname', or `basename'. These don't behave
- consistently and/or don't even exist on some systems. They can
- all be emulated with `sed' anyway.
- (tempfile2_line1): New variable. Use it instead of running
- process to extract first line out of tempfile2 multiple times.
- Eliminate some gratuitous uses of $tempfile2, such as in for loops.
-
-Fri Mar 26 23:25:13 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * texinfo.texi: @setfilename texinfo.info.
-
- * makeinfo/makeinfo.c (reader_loop, end_insertion): Fix typos in
- comments.
- (handle_variable_internal): Handle the case that there further
- menu text after a false ifset/ifclear.
-
- * util/texi2dvi: Version 0.4
- Replace all instances of `[ ... ]' with `test'.
- Updated bug-reporting address.
-
-Thu Mar 25 12:31:30 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * info/Makefile.in (install): Install info.1 man page.
- (uninstall): Remove installed info.1 man page.
-
- * info/infoman.texi: Standalone manual renamed to info-stnd.texi.
- Makefile.in: Targets updated appropriately.
-
- * info/Makefile.in (LDEFS): New variable. Use it for info-local
- macros, since DEFS will be inherited from parent make and any
- local definitions will get clobbered.
-
- * info/RELEASE: Renamed to info/NEWS.
-
- * README: New file.
-
- * Makefile.in (topclean): New target.
-
- * Getting-started: Renamed to INTRODUCTION. Former name is too
- long (over 14 chars).
-
- * New-features: Renamed to NEWS.
-
- * Makefile.in (MDEFINES): Set it.
-
- * Makefile.in (dist): Use --gzip option to tar to make sure
- resulting file is compressed with gzip. Change tar file
- extension from `.Z' to `.z'.
-
- * Makefile.in (DISTFILES): Filter out any file or directory names
- starting with `='.
-
- * fixfonts: Moved to util/fixfonts.
-
- * RELEASE: Deleted.
-
- * makeinfo/Makefile.in (VPATH): Use $(srcdir), not @srcdir@.
- (common): Use ../libtxi, not ../common.
- (makeinfo.in): Run makeinfo with --no-split.
-
- * makeinfo/makeinfo.texi: Changes from bob.
-
- * util/Makefile.in (VPATH): Use $(srcdir), not @srcdir@.
- (common): Use ../libtxi, not ../common.
-
- * util/fixfonts: Moved from top-level directory.
-
-Wed Mar 24 10:21:31 1993 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfmt.el (texinfo-format-region): Do not require
- `@setfilename' line; delete `\input texinfo' line if part of
- region.
-
- * emacs/texinfmt.el (texinfo-raise-lower-sections): Raise or lower the
- hierarchical level of chapters, sections, etc. according to
- `@raisesections' and `@lowersections' commands.
-
-Thu Mar 18 16:02:27 1993 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfo.el (texinfo-show-structure): Indent *Occur* buffer
- according to the structure of the file.
-
-Sat Mar 6 05:16:44 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * util/texi2dvi: use ${1+"$@"}, not just "$@".
-
-Tue Feb 2 08:38:06 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * info/Makefile.in: Replace all "--nosplit" arguments to makeinfo
- with "--no-split"
-
-Sun Jan 31 18:16:58 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * util/texi2dvi: Don't put .dvi and related auxillary files in same
- directory as source files. Put them in current directory instead.
- (TEXINPUTS_orig): New variable.
- (file_texi): Variable removed.
- (filename_texi): New variable.
- (command_line_filename): Use this wherever references to file_texi
- occured except in setting filename_noext.
- (TEXINPUTS): Current directory and source directory where input
- file resides prepended to standard path before invoking TeX.
-
-Wed Jan 27 16:24:37 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * util/Makefile.in: overhauled.
-
-Tue Jan 26 21:04:23 1993 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * Makefile.in, info/Makefile.in, makeinfo/Makefile.in: Overhauled.
-
- * configure.in: Renamed from texinfo.in.
- Incorporated makeinfo/makeinfo.in, info/info.in, and
- util/util.in. Create all child Makefiles.
-
- * makeinfo/makeinfo.in, info/info.in: Deleted (incorporated into
- top configure.in).
-
- * util/util.in: Deleted (incorporated into ../configure.in).
-
-Mon Jan 25 10:59:49 1993 Brian Fox (bfox@cubit)
-
- * info/info.c: New version 2.9; new variable INFO_PATCH_LEVEL
- appears in the version string if it is non-zero. New function
- version_string () produces the current version string, as in 2.8-p1.
-
- * info/dir.c: New file implements Gillespies `localdir' hacks.
-
- * info/nodes.c (info_get_node): Now calls maybe_build_dir_node ()
- if the file name to look for is "dir".
-
- * info/nodes.h: New flag N_CannotGC unconditionally prevents garbage
- collection of a file buffer's contents. Used when "dir" is made
- from at least one "localdir".
-
-Fri Jan 22 11:36:42 1993 Brian Fox (bfox@cubit)
-
- * info/footnotes.c: Do not declare auto_footnotes_p as "extern" in
- this file.
-
-Thu Jan 21 08:57:08 1993 Brian Fox (bfox@cubit)
-
- * info/info.c: New version 2.8.
-
- * info/userdoc.texi, info/infoman.texi, info/info.texi: Fully
- document Info; create both online and printed manual versions.
- "userdoc.texi" contains exactly the documentation for GNU Info 2.x.
- "infoman.texi" is a wrapper for that file; it is meant to produce
- printed documentation. "info.texi" has the user documentation as a
- complete chapter within itself, but continues to contain the Info
- tutorial.
-
- * info/makedoc.c: Convert "ea_" into "echo_area_" when creating the
- command name.
-
-Fri Jan 15 16:50:35 1993 Brian Fox (bfox@cubit)
-
- * info/search.c (skip_node_characters): New argument NEWLINES_OKAY if
- non-zero says that newlines should be skipped over during parsing.
-
- * info/info-utils.c (info_parse_node): New argument NEWLINES_OKAY if
- non-zero says that newlines should be skipped while parsing out
- the nodename specification.
-
-Wed Jan 13 14:42:33 1993 Brian Fox (bfox@cubit)
-
- * info/makedoc.c: Remove "info_" from the front of the command name
- before installing it.
-
- * info/session.c (info_menu_or_ref_item): A label of "Menu" is okay if
- the builder is not info_menu_of_node ();
-
- * info/m-x.c: New function replace_in_documentation () replaces \\[foo]
- with the keystrokes you type to get that command. Now used in
- indices.c, info.c, infodoc.c.
+ * xml.c (xml_begin_docbook_float): Make use of new functions to
+ avoid omitting title, tag, id if have already done so inside
+ nested float.
-Mon Jan 11 10:27:41 1993 Brian Fox (bfox@cubit)
+2003-12-22 Karl Berry <karl@gnu.org>
- * info/variables.c, h: New files contain describe-variable and stuff
- moved out of m-x.c.
+ * makeinfo/makeinfo.c (cm_xref): warn if character after @ref does
+ not produce a valid Info ref.
+ (cm_ref): call cm_xref in both START and END cases.
+ * doc/texinfo.txi (ref): make the second example being a "wrong"
+ one explicit (report from Luc), and mention the warning.
- * info/m-x.c: Move VARIABLE_ALIST and variable functions into
- variables.c. Add documentation string to variable definition.
+2003-12-21 Karl Berry <karl@gnu.org>
- * info/echo_area.c (push_echo_area): Zero the contents of
- echo_area_completion_items after pushing the vars.
+ * doc/texinfo.tex (\comma): new command.
+ * makeinfo/cmds.c (cm_comma): new fn.
+ (command_table): use it for @comma.
+ * doc/texinfo.txi (Atsign Braces Comma): Rename node.
+ (Inserting a Comma): new node.
+ (@@-Command Summary): include it here.
-Sat Jan 9 11:59:47 1993 Brian Fox (bfox@cubit)
+2003-12-20 gettextize <bug-gnu-gettext@gnu.org>
- * info/Makefile.in: Add footnotes.c,h,o to the appropriate Makefile
- variables.
+ * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.13.1.
- * info/window.c (window_tile_windows): New function divides the
- available space among the visible windows.
+2003-12-19 Karl Berry <karl@gnu.org>
- * info/session.c (info_tile_windows): New function calls
- window_tile_windows.
+ * doc/texinfo.tex (\ordf, \ordm): use \lllsize instead of \lsize.
+ Advice from Steve Peter.
- * info/footnotes.c, footnotes.h: New file implements functions for
- aiding automatic footnote display when entering a node which has
- footnotes.
+ * doc/texinfo.txi (Printing Indices & Menus): typo, @@index ->
+ @@vindex. From Luc.
- * info/m-x.c: New user-variable "automatic-footnotes".
+2003-12-19 Alper Ersoy <dirt@gtk.org>
- * info/window.c (window_physical_lines) New function counts the
- carriage returns found in NODE.
+ * makeinfo/cmds.c (cm_acronym): read and make use of second argument
+ like texinfo.tex does.
-Wed Jan 6 11:24:19 1993 Brian Fox (bfox@cubit)
-
- * info/general.h: #include <unistd.h> if we have it.
-
-Tue Jan 5 11:12:33 1993 Brian Fox (bfox@cubit)
-
- * info/info-utils.c (info_concatenate_references): If either arg is
- NULL, return the other arg.
-
- * info/indices.c (info_indices_of_file_buffer): Simplified and
- corrected loop through tags/nodes of file buffer looking for
- indices.
-
- * info/search.c (skip_node_characters): Rewrite "if" statement for
- clarification and conciseness.
-
-Fri Jan 1 03:18:26 1993 Brian Fox (bfox@cubit)
-
- * info/info.in: Check for setvbuf (), and check to see whether the args
- are reversed.
-
- * info/dribble.c (open_dribble_file) Check HAVE_SETVBUF and
- SETVBUF_REVERSED when setting the buffering on info_dribble_file.
-
-Thu Dec 31 20:14:13 1992 Brian Fox (bfox@cubit)
-
- * info/session.c (info_select_reference) If the node couldn't be found,
- look for the label as a filename (i.e., "(LABEL)Top").
-
-Wed Dec 30 01:57:50 1992 Brian Fox (bfox@cubit)
-
- * New Version 2.7 Beta.
-
- * info/echo_area.c: Numerous functions now do something with the
- numeric argument. Kill ring implemented, as well as yank and
- yank_pop. Also transpose-chars.
-
- * info/window.c (window_make_modeline): Check node->flags for
- N_IsCompressed and display "zz" in the modeline if the node comes
- from a file which is compressed on disk.
-
-Mon Dec 28 17:33:12 1992 Brian Fox (bfox@cubit)
-
- * info/filesys.c, info/nodes.c: New member of FILE_BUFFER "FILESIZE"
- contains the size of file_buffer->contents. finfo.st_size is no
- longer relied upon to read the contents of files, since the new
- function (filesys_read_info_file) can read compressed files.
-
- * info/filesys.c (info_find_fullpath) If a file starts with a slash (or
- tilde expansion causes it to start with a slash) still call
- info_find_file_in_path () on it so that we can find files with
- compression suffixes.
-
- * info/m-x.c: New variable "gc-compressed-files".
-
-Tue Dec 22 03:45:28 1992 Brian Fox (bfox@cubit)
-
- * info/info.c: Version 2.6 Beta.
-
- * info/indices.c (info_index_next): Improve the final search for the
- matched index entry.
-
- * info/session.c (move_to_screen_line): New function implements `M-r'.
- Given a numeric argument, move point to the start of that line in
- the current window; without an arg, move to the center line.
- * infomap.c: Put move_to_screen_line () on `M-r'.
-
- * info/nodes.c (adjust_nodestart): Don't set N_UpdateTags unless the
- node came from a tags table.
-
- * info/nodes.c (info_find_file_internal): If the filename being looked
- for doesn't start with a `/', then additionally compare the
- filename against the fullpath of the file buffer sans the
- directory name. This can happen when selecting nodemenu items.
-
-Mon Dec 21 10:07:18 1992 Brian Fox (bfox@cubit)
-
- * info/session.c, info/display.c: Remove all references to
- active_window_ch, active_window_cv, cursor_h, and cursor_v. The
- single function display_cursor_at_point () is used for all cursor
- movement, and to place the terminal's cursor at the right location
- on the screen.
-
-Sat Dec 19 12:01:33 1992 Brian Fox (bfox@cubit)
-
- * info/nodemenu.c: New file implements a few functions for manipulating
- previously visited nodes. `list-visited-nodes' produces a menu of
- the nodes that could be reached by info_history_node () in some
- window. `select-visited-node' is similar to `list-visited-node'
- followed by `info-menu-item', but doesn't display a window with
- the visited nodes menu.
-
- * info/session.c (info_numeric_arg_digit_loop): If redisplay had been
- interrupted, then redisplay all of the windows while waiting for
- input.
-
- * info/display.c (display_was_interrupted_p): New variable keeps track
- of interrupted display. Used in
- info/session.c:info_numeric_arg_digit_loop ().
-
- * info/session.c (info_global_next, info_global_prev): Use the numeric
- argument passed to determine how many nodes to move.
-
- * info/session.c (info_scroll_forward, info_scroll_backward): If the
- invoking key is not SPC or DEL only do Page Only scrolling.
-
-Thu Dec 17 01:34:22 1992 Brian Fox (bfox@cubit)
-
- * info/display.c (display_update_one_window): Allow W_NoWrap to affect
- window display.
-
- * info/window.c (calculate_line_starts): Now takes a WINDOW * as an
- argument, and simply does the calculation, placing the results
- into window->line_starts and window->line_count. It also handles
- W_NoWrap in window->flags.
-
-Mon Dec 14 02:18:55 1992 Brian Fox (bfox@cubit)
-
- * info/session.c (info_backward_scroll): Don't try to get previous node
- if the top of the node isn't currently being displayed.
-
- * info/window.c (window_adjust_pagetop) Use new variable
- "window_scroll_step" to attempt to control the amount which the
- window scrolls.
-
- * info/m-x.c (info_variables) Add "scroll-step" to the list.
-
-Thu Dec 10 08:52:10 1992 Brian Fox (bfox@cubit)
-
- * info/m-x.c: New variable entry show-index-matches. When set to
- non-zero the matched portion of the search string is indicated
- with ` and '. Perhaps I should use `|' inst|ea|d?
-
- * info/echo_area.c (ea_possible_completions): Always build completions
- before checking to see how many there were.
-
- * info/info-utils.c: (info_concatenate_references): New utility
- function concatenates references.
-
- * info/Makefile.in: Add indices.c and indices.h to SRCS and HDRS.
- Add indices.c to CMDFILES.
-
- * info/indices.c, info/indices.h: New file implements `i' and `,'
- commands of info, and provides index searching capabilities.
-
- * info/echo_area.c (info_read_completing_in_echo_area): Split off into
- separate callable function info_read_completing_internal ().
-
- * info/echo_area.c (info_read_maybe_completing): New function calls
- info_read_completing_internal () with non-forcing argument.
-
- * info/session.c: Rename down_next_upnext_or_error () and
- prev_up_or_error () to forward_move_node_structure (), and
- backward_move_node_structure (). Implement new commands
- info_global_next () and info_global_prev ().
-
- * info/infomap.c (initialize_info_keymaps): Bind `[' and `]' to
- backward_, forward_move_node_structure () respectively.
-
- * info/session.c (info_menu_digit): Called with "0" as arg, select the
- last menu item.
-
- * info/infomap.c (initialize_info_keymaps): "0" calls
- info_menu_digit ().
-
- * info/session.c (info_move_to_xref): Take dir into account when there
- are xrefs and menu items in the node and we are wrapping
- backwards.
-
-Tue Dec 8 09:57:58 1992 Brian Fox (bfox@cubit)
-
- * info/info.c: Version 2.5 Beta.
-
- * info/terminal.c (terminal_insert_lines, terminal_delete_lines) Do not
- expect tgoto to return a new string; it returns the address of a
- static buffer.
-
- * info/infodoc.c (info_find_or_create_help_window) Correct check for
- prior existing help node.
-
- * info/m-x.c (set_variable): Allow variables to have a list of choices.
- Add new variable scroll-behaviour.
-
- * info/session.c (down_next_upnext_or_error, prev_up_or_error) New
- functions implement user-controlled behaviour when attempting to
- scroll past the bottom or top of a node. New variable
- info_scroll_behaviour is user visible as "scroll-behaviour".
-
- * info/session.c (info_scroll_forward, info_scroll_backward) Call new
- functions for user-controlled scroll behaviour.
-
- * info/terminal.c (terminal_initialize_terminal) Set PC from BC not
- from BUFFER.
-
-Mon Dec 7 11:26:12 1992 Brian Fox (bfox@cubit)
-
- * util/texindex.c: Change EXIT_SUCCESS and EXIT_FATAL to TI_NO_ERROR
- and TI_FATAL_ERROR respectively. This avoids namespace conflicts
- on NeXT 2.0.
-
-Sat Dec 5 00:07:59 1992 Brian Fox (bfox@cubit)
-
- * info/info.c: New option "--subnodes" says to recursively dump the
- menus of the nodes that you wish to dump. Menu items which point
- to external nodes are not dumped, and no node is dumped twice.
-
-Thu Dec 3 16:11:02 1992 Brian Fox (bfox@cubit)
-
- * info/session.c (info_error) Don't ring the bell if
- info_error_rings_bell_p is zero. (info_abort_key) Ring the bell
- if printing "Quit" in the echo area wouldn't do it.
-
- * info/m-x.c (set_variable) New functions allows setting of
- variables in the echo area. Currently, only visilble-bell and
- errors-ring-bell are implemented.
-
-Wed Dec 2 13:11:37 1992 Brian Fox (bfox@cubit)
-
- * info/nodes.c, info/makedoc.c: If O_RDONLY is not defined by
- sys/file.h, include sys/fcntl.h.
-
- * info/filesys.c (info_file_in_path): Expand leading tildes found
- within directory names.
-
- * info/terminal.c (terminal_initialize_terminal) Set ospeed to 13 if
- not settable any other way. It is an index into an array of
- output speeds.
-
- * info/display.c (free_display) Do not free a NULL display.
-
- * info/display.c (string_width): New functions returns the width of
- STRING when printed at HPOS.
-
-Sun Nov 29 01:24:42 1992 Brian Fox (bfox@cubit)
-
- * info/info.c: New version 2.4 beta.
-
- * info/general.h: #define info_toupper and info_tolower which check
- their arguments before performing any conversion.
-
- * info/search.c, info/echo_area.c: Use info_toupper.
-
-Sat Nov 28 14:23:24 1992 Brian Fox (bfox@cubit)
-
- * info/session.c (info_scroll_forward, info_scroll_backward) If at
- last/first page of the node, and the last command was
- forward/backward, do info_next/prev/_node.
-
- * info/session.c: New function info_select_reference_this_line gets
- menu or cross reference immediately.
-
- * info/infomap.c (initialize_info_keymaps): Add info_keymap[LFD] to
- invoke info_select_reference_this_line ().
-
- * info/session.c (info_last_reference) Rename to
- info_history_reference. Wrote info_last_reference, and
- info_first_reference which go to the last or first node of an info
- file.
-
-Fri Nov 27 00:59:02 1992 Brian Fox (bfox@cubit)
-
- * info/info.c: New version 2.3. Completed implementing contents of
- TODO file.
-
- * info/session.c (info_redraw_display): Fix C-l with numeric arg.
-
-Thu Nov 26 20:14:18 1992 Brian Fox (bfox@cubit)
-
- * info/m-x.c: New file implements reading named commands in the echo
- area, along with a new function "info-set-screen-height".
- Compilation of this file and some code in others controlled by the
- Makefile variable NAMED_COMMANDS (set to -DNAMED_COMMANDS).
-
- * info/window.c (window_new_screen_size) Rewrite from scratch, allowing
- clean growth and shrinkage of the screen. New variable
- window_deletion_notifier is a pointer to a function to call when
- the screen changes size, and some windows have to get deleted.
- The function is called with the window to be deleted as an
- argument, and it should clean up dangling references to that
- window.
-
- * info/session.c (initialize_info_session): Set
- window_deletion_function to forget_window_and_nodes.
-
- * info/display.c (display_update_one_window): If the first row of the
- window to display wouldn't appear in the_screen, don't try to
- display it. This happens when the screen has been made
- unreasonably small, and we attempt to display the echo area.
-
-Tue Nov 24 00:47:20 1992 Brian Fox (bfox@cubit)
-
- * Release Info 2.2.
-
- * info/session.c: New functions implement reading typeahead and
- implement C-g flushing typed ahead characters.
- (info_search_internal): allows C-g to exit multi-file searches.
-
-Mon Nov 23 01:53:35 1992 Brian Fox (bfox@cubit)
-
- * info/nodes.c: Remove calls to sscanf (), replacing them with calls to
- atol (), since that is much faster.
- (get_nodes_of_tags_table) Only check for "(Indirect)" if we
- haven't parsed any nodes out of the tags table. Increase the
- amount that file_buffer->nodes grows to 100 from 50. These two
- together sufficiently speed up the parsing process.
-
- * info/nodes.c: info_get_node_of_file_buffer_tags (),
- info_get_node_of_file_buffer_nodes (): Search the appropriate list
- and return a node. This was simply a cut and paste edit to
- functionalize the code.
-
- * info/TODO: Remove suggestion for partial tag parsing, since tag
- parsing is much faster now.
-
-Sat Nov 21 02:48:23 1992 Brian Fox (bfox@cubit)
-
- * info/makedoc.c: New File replaces makedoc.sh shell script.
-
- * info/infomap.c: Install info_isearch (on C-s) and
- info_reverse_isearch (on C-r) for Info windows.
-
- * info/session.c (incremental_search, info_isearch,
- info_reverse_isearch) New functions implement incremental
- searching.
-
-Fri Nov 20 00:01:35 1992 Brian Fox (bfox@cubit)
-
- * info/terminal.c (terminal_initialize_terminal): Declare and set up
- `ospeed'. Turn off C-s and C-q processing.
-
- * info/session.c (info_show_point) When this function is called, the
- desired result is to show the point immediately. So now it calls
- set_window_pagetop () if the new pagetop is not the same as the
- old one. This means that info_prev_line (), info_next_line (),
- info_forward_word (), and info_backward_word () can all scroll the
- window if they have to.
-
-Thu Nov 19 12:27:07 1992 Brian Fox (bfox@cubit)
-
- * info/session.c (set_window_pagetop): Add scrolling to make this
- faster.
-
- * info/echo_area.c (push/pop_echo_area): Remember the list of items to
- complete over.
-
- * info/session.c (info_forward_char): Don't let point get equal to
- nodelen, only to nodelen - 1.
-
- * info/display.c: New function display_scroll_display () scrolls the
- rmembered display as well as the text on the actual display.
-
- * info/terminal.c: New functions terminal_scroll_terminal (),
- terminal_scroll_down (), and terminal_scroll_up (). All
- implemented using "al" and "dl" termcap capabilities. (i.e.,
- insert and delete line).
-
-Wed Nov 18 15:05:14 1992 Brian Fox (bfox@cubit)
-
- * info/termdep.h: Only define HAVE_FCNTL_H if !aix and !ultrix.
-
-Tue Nov 17 20:35:08 1992 Brian Fox (bfox@cubit)
-
- * First Beta Release of Info 2.0.
-
-Sun Nov 1 02:21:05 1992 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * util/texi2dvi (--force): Option removed. Always run tex at least
- once, don't bother checking if .dvi file is newer than source.
-
-Fri Oct 30 02:16:28 1992 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * util/texi2dvi (-D): debugging option renamed from '-d'.
- Made check to enable debugging more terse.
- When checking if index files have changed, use
- variable $this_file instead of $file in for loop.
- (file_texi): wherever the variable $file was used to reference
- the texinfo file, substituted $file_texi.
-
-Sat Oct 17 07:30:34 1992 Brian J. Fox (bfox@helios)
-
- * util/texindex.c: Remove references to USG replacing them with a
- define declaring the actual feature required or missing.
-
-Thu Oct 15 16:17:47 1992 Robert J. Chassell (bob@nutrimat.gnu.ai.mit.edu)
-
- * emacs/texinfmt.el (texinfo-format-setfilename): Remove date from
- Info file header so regression testing is easier.
-
-Tue Sep 15 16:28:35 1992 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfmt.el (texinfmt-version): New variable.
- (texinfo-format-setfilename): Include date and
- version in Info file header.
- Better documentation for @definfoenclose
- Handle whitespace after @end iftex, etc.
-
-Thu Sep 3 09:25:37 1992 Robert J. Chassell (bob at grackle)
-
- * emacs/texnfo-upd.el: Fix typo re `texinfo-sequential-node-update.'
-
-Tue Aug 18 08:56:24 1992 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfmt.el (texinfo-value): Revise syntax.
-
- * emacs/texnfo-upd.el (texinfo-start-menu-description):
- New function to insert title as description in a menu.
- (texinfo-make-menu-list): Remove automatic title insertion.
-
- * emacs/texinfo.el (texinfo-mode-map): Add keybinding for
- texinfo-start-menu-description.
-
-Wed Jul 29 11:58:53 1992 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfmt.el (texinfo-set): Revise to set a string to the flag.
- (texinfo-value): @value{flag}: New command which inserts the
- string to which the flag is set.
-
-Tue Jul 7 15:10:52 1992 Robert J. Chassell (bob at grackle)
-
- * emacs/texnfo-upd.el (texinfo-master-menu): Error message if file
- contains too few nodes for a master menu.
- (texinfo-insert-master-menu-list): Only attempt to insert detailed
- master menu if there is one.
-
-Wed Jun 10 15:26:18 1992 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfmt.el (texinfo-append-refill): Refill properly when lines
- begin with within-paragraph @-commands.
-
-Tue Jun 9 12:28:11 1992 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfmt.el: Add `texinfo-deffn-formatting-property' and
- `texinfo-defun-indexing-property' to @deffn commands.
-
-Mon Jun 8 11:52:01 1992 Robert J. Chassell (bob at grackle)
-
- * emacs/texnfo-upd.el: Replace `(mark-whole-buffer)' with
- `(push-mark (point-max) t) (goto-char (point-min))'
- to avoid `Mark set' messages.
-
-Fri Jun 5 15:15:16 1992 Robert J. Chassell (bob@kropotkin.gnu.ai.mit.edu)
-
- * emacs/texnfo-upd.el (texinfo-check-for-node-name): Offer section
- title as prompt.
- (texinfo-copy-next-section-title): Copy title correctly.
-
-Thu May 28 20:34:17 1992 Robert J. Chassell (bob@hill.gnu.ai.mit.edu)
-
- * emacs/texinfmt.el: @vtable defined, parallel to @ftable, for
- variables.
- (texinfo-append-refill): set case-fold-search nil so @TeX is not
- confused with @tex.
-
-Thu Mar 26 21:36:41 1992 Robert J. Chassell (bob@kropotkin.gnu.ai.mit.edu)
-
- * emacs/makeinfo.el: Rename temp buffer from `*Makeinfo*' back to
- `*compilation*' so `next-error' works; unfortunately,
- `*compilation*' is written into the code as the name
- `next-error' needs.
- Rename `makeinfo-recenter-makeinfo-buffer' back to
- `makeinfo-recenter-makeinfo-buffer'
-
-Thu May 14 21:14:25 1992 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * util/fixfonts: Enclosed most variable references with "" to prevent
- potential globbing and other weirdness. Eliminated uses of
- ${var-value}, which unfortunately isn't portable.
-
- * util/texi2dvi: rewritten from scratch.
-
-Sat Apr 18 23:46:25 1992 Charles Hannum (mycroft@hal.gnu.ai.mit.edu)
-
- * util/fixfonts: Re-evaluate prefix and libdir if inherited (to resolve
- variable references from make).
- (texlibdir): Don't add '/tex', since it's already there.
-
-Fri Apr 10 14:51:23 1992 Noah Friedman (friedman@prep.ai.mit.edu)
-
- * util/fixfonts: set prefix and libdir only if they are not already
- defined (i.e. not inherited from the environment).
- Changed default path for libdir to be consistent with Makefile.
-
-Tue Mar 3 13:17:42 1992 Robert J. Chassell (bob at grackle)
-
- * emacs/texnfo-upd.el (texinfo-insert-master-menu-list): Insert a
- master menu only after `Top' node and before next node.
- (texinfo-copy-menu): Error message if menu empty.
-
-Mon Feb 24 15:47:49 1992 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfmt.el (texinfo-format-region): Make sure region ends in a
- newline.
- (texinfo-itemize-item): Recognize all non-whitespace on same line
- as @item command.
-
-Sat Feb 22 02:15:00 1992 Brian Fox (bfox at gnuwest.fsf.org)
-
- * util/texindex.c: New version 1.45 has cleanups, should compile under
- VMS quietly.
-
-Wed Feb 12 10:50:51 1992 Robert J. Chassell (bob at grackle)
-
- * emacs/makeinfo.el: Rename temp buffer as *Makeinfo*.
- Rename `makeinfo-recenter-compilation-buffer'.
- (makeinfo-buffer): Offer to save buffer if it is modified.
- (makeinfo-compile): Do not offer to save other buffers.
- (makeinfo-compilation-sentinel): Switch to Info file.
-
-Tue Feb 4 13:07:39 1992 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfmt.el (texinfo-print-index): Format so that node names in
- the index are lined up.
-
-Mon Feb 3 09:08:14 1992 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfmt.el (texinfo-itemize-item): Format entry when text
- is on the same line as @item command. Also, handle @-commands.
- (texinfo-format-region, texinfo-format-buffer-1): Set fill column
- to local value of Texinfo buffer.
-
- * emacs/texnfo-upd.el (texinfo-pointer-name): Find only those
- section commands that are accompanied by `@node' lines.
-
-Tue Jan 14 16:10:16 1992 Robert J. Chassell (bob at grackle)
-
- * emacs/texnfo-upd.el: Ensure that no commands depend on the value of
- case-fold-search.
-
-Fri Jan 10 15:13:55 1992 Robert J. Chassell (bob at kropotkin)
-
- * emacs/texinfmt.el (texinfo-append-refill): Replace use of
- unsupported function `looking-at-backward' with
- `re-search-backward'.
-
-Mon Dec 23 23:46:42 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
-
- * util/texindex.c: Change POSIX ifdefs to HAVE_UNISTD_H and
- _POSIX_VERSION.
-
-Mon Dec 16 15:01:36 1991 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfmt.el (texinfo-append-refill): New function appends
- @refill to all appropriate paragraphs so you no longer need to
- append @refill command yourself.
- (texinfo-format-region, texinfo-format-buffer-1,
- texinfo-format-include): Call `texinfo-append-refill'.
-
-Fri Dec 6 01:25:09 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
-
- * util/texindex.c: Conditionalize on _AIX (which is predefined) instead
- of AIX, just like makeinfo does.
-
-Tue Nov 26 10:21:04 1991 Robert J. Chassell (bob at grackle)
-
- * emacs/texnfo-upd.el (texinfo-section-types-regexp): `@subtitle' no
- longer treated as subsection.
-
-Sat Nov 16 08:27:42 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
-
- * util/fixfonts: New file, from Karl Berry.
-
-Tue Nov 12 16:13:24 1991 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfmt.el: Create @end smalllisp.
-
-Mon Nov 11 16:50:13 1991 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfo.el (texinfo-environment-regexp): Add all other block
- enclosing Texinfo commands.
-
-Thu Nov 7 10:23:51 1991 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfo.el (texinfo-insert-@end): Attempt to insert correct end
- command statement, eg, @end table. Fails with nested lists.
- (texinfo-insert-*): Accept prefix arg to surround following N
- words with braces for command.
-
-Thu Oct 31 21:31:41 1991 Robert J. Chassell (bob at kropotki)
-
- * emacs/texinfmt.el (texinfo-clear): Clear flag even if flag not
- previously set.
-
-Wed Oct 23 11:15:58 1991 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfo.el (texinfo-mode): page-delimiter now finds top node as
- well as chapters.
-
-Tue Oct 22 11:46:12 1991 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfmt.el (texinfo-do-flushright): Test whether a line is too
- long for the flush right command (line length must be less than
- the value of fill column).
-
- * emacs/texnfo-tex.el (texinfo-tex-buffer): Prompt for original file
- even if point moved to *texinfo-tex-shell*.
- texinfo-tex-original-file: variable to hold file name.
-
-Wed Oct 16 08:32:05 1991 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfmt.el (texinfo-format-center): Expand string before
- centering so @-commands not included.
-
-Thu Oct 10 22:01:47 1991 Robert J. Chassell (bob at kropotki)
-
- * emacs/texnfo-tex.el (texinfo-show-tex-print-queue): Do not kill a
- running process; do start a process none exists.
-
-Thu Sep 26 21:58:47 1991 Robert J. Chassell (bob at kropotki)
-
- * util/texi2dvi: Misc. bugs fixed.
-
- * emacs/texinfo.el: Remove extraneous references to TeX.
-
-Thu Sep 19 20:45:29 1991 Robert J. Chassell (bob at kropotki)
-
- * emacs/texinfmt.el: add @cartouche as a noop (makes box with rounded
- corners in TeX)
-
-Tue Sep 10 20:44:57 1991 Robert J. Chassell (bob at grackle)
-
- * emacs/texnfo-upd.el (texinfo-make-one-menu): Copy node-name correctly
- for message.
-
-Thu Aug 29 17:54:07 1991 Robert J. Chassell (bob at kropotki)
-
- * emacs/texnfo-tex.el (texinfo-quit-tex-job): Do not set mark.
-
-Wed Aug 21 10:36:21 1991 Robert J. Chassell (bob at grackle)
-
- * emacs/texnfo-upd.el: (texinfo-copy-menu-title): Copy title as it
- should rather than node line.
-
-Mon Aug 5 15:27:12 1991 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfmt.el (texinfo-format-convert): Changed regexp that
- looks for three hyphens in a row to find those between word
- constituent characters, as now, for Oxford Univ. style dashes and
- also between spaces, for Cambridge Univ. Press style dashes.
-
- * emacs/texnfo-tex.el (texinfo-tex-start-shell): Runs "/bin/sh" so
- `explicit-shell-file-name' is not set globally.
-
- * emacs/texnfo-upd.el: Rewrite messages.
- (texinfo-find-higher-level-node): Stop search at limit.
- (texinfo-copy-menu-title): Rewrite to handle outer include files.
- (texinfo-multi-file-update): Update all nodes properly;
- rewrite doc string and interactive.
-
-Sat Aug 3 10:46:13 1991 Robert J. Chassell (bob at grackle)
-
- * emacs/texnfo-upd.el (texinfo-all-menus-update): Fixed typo that
- caused the function to create a master menu when it shouldn't.
-
- * emacs/texinfo.el (texinfo-mode): Make `indent-tabs-mode' a local
- variable and set to nil to prevent TABs troubles with TeX.
-
-Wed Jul 31 11:07:08 1991 Robert J. Chassell (bob at grackle)
-
- * emacs/texnfo-tex.el (texinfo-quit-tex-job): New function: quit
- currently running TeX job, by sending an `x' to it.
- (texinfo-tex-shell-sentinel): New function to
- restart texinfo-tex-shell after it is killed.
- (texinfo-kill-tex-job): Rewrite to use kill-process rather than
- quit-process; uses `texinfo-tex-shell-sentinel' to restart
- texinfo-tex-shell after it is killed.
- (texinfo-tex-region, texinfo-tex-buffer): Replace
- texinfo-kill-tex-job with quit-process.
-
- * emacs/texinfo.el (texinfo-define-common-keys): Add keybinding for
- texinfo-quit-tex-job
-
-Wed Jul 10 15:15:03 1991 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfmt.el: New commands @set, @clear, @ifset...@end
- ifset, and @ifclear...@end ifclear.
- Definition functions rewritten to make them easier to
- maintain.
-
-Wed Jul 3 19:37:04 1991 Robert J. Chassell (bob at kropotki)
-
- * emacs/texinfmt.el (texinfo-format-deftypefn-index): Remove reference
- to data-type to make consistent with texinfo.tex and makeinfo.
- texinfo.el: Fix page-delimiter and texinfo-chapter-level-regexp
- variables.
-
-Thu Jun 27 18:35:36 1991 Robert J. Chassell (bob at nutrimat)
-
- * emacs/texinfmt.el: Add @dmn as `texinfo-format-noop'.
- texinfo2.texi: Document @dmn.
- texinfmt.el (texinfo{,-end}-{eleterate,ecapitate} renamed
- {alphaenumerate, capsenumerate}.
-
-Fri Jun 14 12:46:32 1991 Robert J. Chassell (bob at churchy.gnu.ai.mit.edu)
-
- * emacs/texinfmt.el (texinfo-format-defun-1): @defivar prints name
- correctly.
-
-Thu Jun 6 21:38:33 1991 Robert J. Chassell (bob at churchy.gnu.ai.mit.edu)
-
- * emacs/texinfo.el (texinfo-mode): Set page delimiter to
- 'texinfo-chapter-level-regexp' so that page commands work by
- chapter or equivalent.
-
- * emacs/texinfmt.el (texinfo-format-defun-1): @defop prints name
- correctly.
- (batch-texinfo-format): replace unsupported
- 'buffer-disable-undo' with 'buffer-flush-undo'
-
-Fri Apr 5 15:17:17 1991 Robert J. Chassell (bob at wookumz.gnu.ai.mit.edu)
-
- * emacs/makeinfo.el (makeinfo-compilation-sentinel): Check for
- existance of makeinfo-temp-file to avoid harmless error message.
- texinfo2.texi: Minor typos fixed.
-
-Thu Mar 28 19:13:24 1991 Robert J. Chassell (bob at pogo.gnu.ai.mit.edu)
-
- * util/texi2dvi: Revised.
-
-Mon Mar 11 12:35:51 1991 Robert J. Chassell (bob at grackle)
-
- * emacs/texinfmt.el: (@footnotestyle): New command to set
- footnotestyle.
- (@paragraphindent): New command to set indentation.
- (texinfo-format-refill): Add indentation feature so as to
- indent paragraph or leave indentation asis before refilling
- according to value set by @paragraphindent command.
- (texinfo-format-region): Insert header, if any, into Info buffer.
- (texinfo-format-separate-node, texinfo-format-end-node): Run
- texinfo-format-scan on footnote text only once.
- (texinfo-format-scan): Shorten `---' to `--'.
-
- * emacs/texinfo.el: Define key for `texinfo-master-menu'; define
- start and end of header expressions.
-
- * emacs/texnfo-upd.el (texinfo-all-menus-update): Update
- pre-existing master menu, if there is one.
-
-Fri May 11 14:36:07 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
-
- * util/texindex.c: Rename `lines' to `nlines'.
- (bzero): Pass arg to lib$movc5 through non-register var.
- (perror_with_file, pfatal_with_file): Move extern decls and includes
- to top of file.
- [VMS]: If not using VMS C, define away `noshare' keyword.
- Include perror.h.
-
-Mon Jul 11 18:02:29 1988 Chris Hanson (cph at kleph)
-
- * util/texindex.c (indexify): when comparing to initial strings to
- decide whether to change the header, must use `strncmp' to avoid
- comparing entire strings of which initials are a substring.
-
-Sun Jun 26 18:46:16 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
-
- * util/texindex.c (sort_in_core, sort_offline, parsefile):
- Give up on input file if any line doesn't start with backslash.
-
-/* changelog for texinfo.tex before 19jun01. */
-
-2001-05-24 <karl@gnu.org>
-
- * texinfo.tex (\smallbreak, \medbreak, \bigbreak): add check for
- \ifnum\lastpenalty to plain tex definitions, so that we won't
- insert space right after a section title.
- (\aboveenvbreak): similar check of \lastpenalty.
-
-2001-05-21 <karl@gnu.org>
-
- * texinfo.tex (\pdfurl): \let\value=\expandablevalue, so at least
- some cases can be properly handled.
-
-2001-03-28 <karl@gnu.org>
-
- * texinfo.tex: Copyright.
-
- * texinfo.tex (\pdfmkdest): remove trailing @ in target names;
- suggestion from: Reiner Schlotte <R.Schlotte@science-computing.de>.
- (\imagexxx): call \normalturnoffactive so _ (among others) will be
- allowed in filenames; report from arnold@skeeve.com.
-
-2001-02-02 <karl@gnu.org>
-
- * texinfo.tex (\secondary): handle pdf case.
- (\dosubind): secondary index entry not written as separate arg for
- texindex.
- From: Trevin Beattie <trevin@eyring.com>
- Date: Tue, 21 Mar 2000 13:04:06 -0700
-
-2001-01-12 <karl@gnu.org>
-
- * texinfo.tex (\dopdfimage): different syntax for filename
- inclusion (foo vs {foo}). From: <Kurt.Hornik@ci.tuwien.ac.at>,
- 22dec99.
-
-2001-01-08 <karl@gnu.org>
-
- * texinfo.tex (\afivepaper): new command from Jose Romildo
- Malaquias <romildo@urano.iceb.ufop.br>.
-
-2000-12-12 <karl@gnu.org>
-
- * texinfo.tex: oops, had outside page reversed.
-
-2000-12-11 <karl@gnu.org>
-
- * texinfo.tex (\inmargin): allow lefttext and righttext as args.
-
-2000-11-10 <karl@gnu.org>
-
- * texinfo.tex: implementation of new commands @verbatim, @verb,
- and @verbatiminclude from janneke@gnu.org.
-
-2000-11-09 <karl@gnu.org>
-
- * texinfo.tex (\inmargin): rewrite to allow for placing the
- material either in the right or left margin.
-
-2000-10-27 <karl@gnu.org>
-
- * texinfo.tex (\dosynindex): new macro subroutine, do not
- \closeout twice the index being redirected.
- (\synindex, \syncodeindex): call it.
-
-2000-10-18 <karl@gnu.org>
-
- * texinfo.tex (\inmargin): rewrite to allow argument to be vmode
- material, such as a box from an image.
-
-2000-09-06 <karl@gnu.org>
-
- * texinfo.tex (\doublecolumnout): must subtract \ht\partialpage
- here, not in \begindoublecolumns. Otherwise the \partialpage on
- the first page of double columns affects every subsequent page,
- e.g., if @setchapternewpage off. Reported by Aharon Robbins
- <arnold@skeeve.com> for standards.texi.
-
-2000-05-28 <karl@gnu.org>
-
- * texinfo.tex (\linkcolor): replace Cyan with Blue.
- (\output): do \pdfmkdest at top.
- (\pdfmakeoutlines): set \_ to \normalunderscore.
- From: Trevin Beattie <trevin@eyring.com>.
-
-2000-05-27 <karl@gnu.org>
-
- * texinfo.tex (\today): only define if undefined.
- From: Stepan Kasal <kasal@suse.cz>.
-
-2000-05-16 <karl@gnu.org>
-
- * texinfo.tex (\deftypeivarheader): need defheaderxcond. From:
- Marcel van der Boom <marcel@hsdev.com>.
-
-1999-10-01 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\afourwide): had hsize and vsize reversed.
- From: Pascal Obry <pascal_obry@csi.com>
-
-1999-09-25 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\alias): fix from Andreas.
-
-1999-09-19 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\key): rename the \smallrm and \smallsy here.
-
- * texinfo.tex (\indexfonts): rename to \smallfonts, along with
- \indrm, etc.
- Define all the fonts, too.
- (\footnotezzz): use \smallfonts.
-
- * texinfo.tex (\needx): get better leading; do nothing if @need
- value is less than one linespace. From Arnold.
- (\douref, \xrefX, \doemail [pdf]): make spaces normal again, so our
- \ignorespaces commands are effective even in an @display.
-
- * texinfo.tex (\finishtitlepage): remove FINISH TITLE debugging
- message.
-
- * texinfo.tex (\anchor): rewrite to always \ignorespaces.
- Bug from esken.
-
- * texinfo.tex (\indexnofonts): dummy up \acronym.
- From: Thomas Esken <esken@nmlab.informatik.fh-dortmund.de>
-
-1999-09-06 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\texinfoversion): update.
-
- * texinfo.tex: Avoid multiparagraph cells losing linespace between
- paragraphs. From: Andreas Schwab <schwab@suse.de>.
- Bug from: Lalo Martins <lalo@webcom.com>.
-
-1999-08-19 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\shortchaplabel): move computation of width of
- "Appendix" inside, in case it's been changed by a language.
-
-Mon Aug 9 16:31:55 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex: pdf updates from Han.
-
-Fri Aug 6 13:48:22 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\charcode): remove unused counter.
- From: Akira KAKUTO <kakuto@fsci.fuk.kindai.ac.jp>.
-
-Thu Jul 22 19:08:19 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex: Update from Han.
-
-Tue Jul 20 17:13:16 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex: More pdf improvements from Han.
-
-Mon Jul 19 16:33:31 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex: Better pdf support from: Han The Thanh
- <thanh@informatics.muni.cz>.
-
-Sun Jul 18 14:21:03 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex: pdfimage takes braces.
-
-Tue Jul 6 19:40:14 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\deftypeop): New command.
-
-Mon Jul 5 17:17:33 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\contents): call \pdfmakeoutlines here instead of
- inline (!).
- (\pdfmakeoutlines): call \indexnofonts instead of making a separate
- attempt at it.
-
-Tue May 25 06:16:06 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (time-stamp-format): use %02H.
-
- * texinfo.tex: Had PDF and DVI transposed.
-
-Sun Apr 25 15:30:00 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\appendixletter): restore \the, necessary for .toc.
-
-Thu Apr 22 19:22:12 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\emergencystretch): Increase to .15\hsize.
-
-Tue Apr 20 05:11:04 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\defunargs): use \tensl\hyphenchar\font to work
- better with Gildea's PostScript version.
-
- * texinfo.tex (\tab): Change back to just &.
- From: Nathan Sidwell <nathan@acm.org>.
-
- * texinfo.tex: No \fi.
-
-Mon Apr 19 17:38:54 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\pdflink) [!\ifpdf]: define to ignore arg.
-
- * texinfo.tex: Add pdf support. Merge from: Kurt Hornik
- <Kurt.Hornik@ci.tuwien.ac.at>.
-
-Wed Mar 31 13:24:16 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\defopheader): missing word space before `on'.
- Report from: Chris Hanson <cph@martigny.ai.mit.edu>.
-
-Fri Mar 26 17:00:41 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\imagexxx): Equalize space above and below if in
- vmode. From rms.
-
-Thu Mar 25 20:00:00 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\deftypeivar): new command.
-
-Tue Mar 23 17:53:37 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (&): be sure active & is defined for @deftypefn
- operator&.
- Report from: Nathan Sidwell <nathan@acm.org>.
-
-Sat Mar 20 12:31:53 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\exampleindent): new command. From Yoshiki.
-
- * texinfo.tex: Changes from Andreas to use \sl\$ inside italics
- and to avoid extra spaces around @anchor.
-
- * texinfo.tex (\image, \imagexx): move pdf test to imagexxx for
- correct filename parsing.
-
-Mon Mar 15 16:51:20 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\imagexxx): reset catcode ^^M in case we're inside
- in an example. Report from kama.
-
- * texinfo.tex (\putwordin): new macro for word `in'.
- (\xrefX): use it.
- Report from: "Alexey A. Nikiforov" <A.A.Nikiforov@inp.nsk.su>
-
-Sun Feb 21 16:47:28 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex: Expand tabs.
-
-Sun Feb 14 16:02:29 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\paragraphindent): implement.
- Suggestion from: Paul DuBois <dubois@primate.wisc.edu>.
-
-Tue Feb 9 07:25:07 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\alias): use def rather than \let.
- Change timestamp format to include hours.
-
- * texinfo.tex: New commands @alias and @definfoenclose.
- From: "Eric S. Raymond" <esr@snark.thyrsus.com>.
-
-Mon Feb 8 14:46:56 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\scanmacro): Use \endinput to avoid spurious space,
- and various other space fixes. From: Andreas Schwab
- <schwab@ls5.informatik.uni-dortmund.de>.
-
-Thu Feb 4 15:24:40 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\uref): implement optional third arg.
-
- * texinfo.tex (\dosubind): Include index entry in third arg to
- \entry instead of writing as bogus fourth arg.
- Report from: kama@hippo.fido.de (Karl Heinz Marbaise).
-
- * texinfo.tex (\setemergencystretch): Increase somewhat.
-
- * texinfo.tex (\putwordof): rename from \putwordOf.
- * texinfo.tex (defivarhead, \defcvarheader): Use \putwordof.
-
-Tue Feb 2 16:57:00 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\documentlanguage, \documentencoding): new
- commands. \documentlanguage based on an implementation by kama.
-
-Sat Jan 30 17:23:45 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\putwordMMai): Should be MMay. From Trond.
-
-Fri Jan 29 17:52:16 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex: Fix @macro expansion inside @section. Patch from
- Andreas:
-
- From: Andreas Schwab <schwab@ls5.informatik.uni-dortmund.de>
-
- The general idea is to construct a list a all defined macros in
- the form \do\macro1\do\macro2..., then temporarily define
- \do to something appropriate and execute the list to do
- whatever is needed. Here is a patch, and i have also
- fixed a few other bugs that i found while browsing through
- the @macro implementation. Additionally i have added a
- check to prevent the user from doing silly things like
- @macro shipout.
-
-Sun Jan 24 09:59:42 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\obstexwarn): Don't use *** in message, it
- interferes with make output parsing.
-
-Thu Jan 21 15:45:20 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex: Internationalization improvements from kama.
-
-Wed Jan 20 17:12:52 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\contents, \shortcontents): Run \contentspagealignmacro.
- From: Trond Endrestol <trond@agamemnon.gtf.ol.no>
-
-Thu Jan 14 16:53:43 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\begindoublecolumns): Ship out \partialpage
- immediately if it is nonvoid, instead of saving it. This avoids a
- bug where the index could end up printing one line per page (see
- the indexspread.tex test).
- From: Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * texinfo.tex (\image): If running pdftex, do \pdfimage{imagefile.pdf}.
- From: Samuel Tardieu <sam@inf.enst.fr>
-
- Also, update copyright year.
-
-Tue Jan 5 17:50:45 1999 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\enddoublecolumns): Move \pagegoal reset to after
- the \endgroup so we get the restored single-column \vsize
- as intended.
-
-Sun Dec 20 17:57:22 1998 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\indexdummies): Set \{ and \} to \mylbrace and
- \mybrace to avoid braces in the index file, which
- texindex can't handle.
-
-Sat Dec 19 18:13:16 1998 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\pickupwholefraction): Ignore whole-number part.
- (\setuptable): Always pass whole-number part and decimal point. This
- allows leading zeroes.
- Suggestion from: Ben Bullock <ben@hayamasa.demon.co.uk>.
- Date: Fri, 21 Aug 1998 14:06:50 +0100 (BST)
-
-Tue Dec 15 16:38:07 1998 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\indexdummies): set \{ and \} to \lbracecmd and
- \rbracecmd to avoid lossage if @tex is active during \shipout.
- Report from: "Peter Kabal" <Kabal@ece.mcgill.ca>.
-
-Sun Dec 6 17:11:17 1998 Karl Berry <karl@gnu.org>
-
- * texinfo.tex: Doc fix.
-
-1998-11-11 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * doc/texinfo.tex (\onepageout): Put the cropmarks in vboxes of
- zero height so that they don't contribute space themselves.
- Compensate for \topandbottommargin.
- (\internalpagesizes): Advance \outervsize by 2\topandbottommargin,
- not only 0.6in.
-
-Fri Nov 6 17:27:57 1998 Karl Berry <karl@gnu.org>
-
- * texinfo.tex: Use standard time-stamp.el package instead of
- update-date.el.
-
-Sat Oct 31 19:23:02 1998 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\indexnofonts,\indexdummies): add \url and \uref to
- list.
-
-Fri Oct 30 08:16:23 1998 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (\expandablevalue): Delete spurious `v' character.
-
-Tue Oct 27 11:18:40 1998 Karl Berry <karl@gnu.org>
-
- * texinfo.tex (@env, @command, @option): Must disable for index
- and xref commands. Also, \input plain if necessary before
- using {} in the version number.
-
-Wed Sep 30 11:40:36 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex: Use date as version number instead of RCS, and
- update-date to update it.
-
-Thu Sep 17 13:22:44 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex: Fix @macro expansion of @code with _ in the
- argument.
- From: Zack Weinberg <zack@rabi.columbia.edu>.
-
-Fri Aug 28 10:30:29 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\itemzzz): take \itemmargin into account when
- unhboxing. Reported by Bob.
-
-Fri Aug 14 16:56:58 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex: Change @defun environments so that right margin is
- not changed, and instead the defun type label is outdented
- into the margin.
-
-Thu Aug 13 13:31:41 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\smartslanted): define this separately from
- \smartitalic.
- (\emph, \i): use \smartitalic for true italics.
-
-Mon Aug 10 11:51:13 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\value): handle active _ or - in argument (happens
- if called from @code).
- Report from: Dave Love <d.love@dl.ac.uk>.
-
-Sun Jul 19 09:49:23 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\dosubind): Don't do \vskip to preserve \lastskip
- unless we are in vertical mode. Otherwise we might end a
- paragraph prematurely, and \folio won't get expanded by
- \output.
- Report from: "Richard E. Stone" <res@rstone.mn.org>
-
-Thu Jul 16 15:33:37 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex: Keep track of how negative the page numbers have
- gotten:
- (\lastnegativepageno): New \count register.
- (\startcontents): Use it.
- (\contents, \summarycontents): set it.
-
-Mon Jul 13 16:58:11 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\imagexxx): Add some space around the image if it's
- by itself.
-
-1998-07-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * texinfo.tex (chapterzzz): Put a space before the chapter number
- in the message.
- (appendixzzz): Use \putwordAppendix in the message.
-
-Thu Jul 9 08:39:53 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\macro): Globalize assignments since it's done
- inside a group. From Zack.
-
-Mon Jul 6 17:21:25 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\comment): Speed up.
- (\loggingall): Turn on eTeX's extended tracing.
- More macro fixes.
- Date: Sat, 04 Jul 1998 14:51:49 -0400
- From: Zack Weinberg <zack@rabi.phys.columbia.edu>
-
-Thu Jul 2 10:20:32 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\contents, \summarycontents, \startcontents): Use
- roman numerals for toc, arabic outside, even when toc is
- at the beginning.
-
-Mon Jun 29 10:05:28 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\anchor): New command @anchor.
- (\xrefX): Avoid double space when xref to an @anchor or an @unnumbered.
-
- * texinfo.tex (\itemzzz): Use kerns and \unhbox when item text
- fits in the space, so footnotes can work.
-
- * texinfo.tex (\setref): Take additional argument for the -snt
- xref. Call \indexdummies.
- (\donoderef, \appendixnoderef, \unnumbnoderef): Change \setref calls.
-
-Sat Jun 27 19:16:34 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\contents, \summarycontents): Must not be \outer.
-
-Fri Jun 26 16:15:14 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\writetocentry): New macro.
- (\chapternofonts): No longer needed.
- (\chapter, ..., \unnumberedsubsubsec): Change all the sectioning
- commands to call \writetocentry instead of doing it inline.
- Also, do not call \chapternofonts, we avoid expansion with
- \the\toks instead.
- (\opencontents): No longer needed, instead \writetocentry opens
- the file when necessary.
- (\setfilename): Don't call \opencontents.
- (\ifsetcontentsaftertitlepage, \ifsetshortcontentsaftertitlepage):
- New conditionals.
- (\Etitlepage): Call \contents and/or \shortcontents if
- conditionals are set.
-
- Global: use \nobreak instead of \penalty 10000 for epsilon efficiency.
-
-Thu Jun 25 08:29:32 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\option,\env,\command): New markup commands.
- Suggested by arnold@gnu.org.
-
- * texinfo.tex (\afourpaper): More reasonable margins.
- From: Wilhelm Mueller <muewi@hb.senbvs43.uni-bremen.de>
- Date: Thu, 25 Jun 1998 10:48:13 +0200 (MET DST)
-
-Wed Jun 24 17:46:43 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\acronym): New Texinfo command.
-
-Tue Jun 23 17:36:39 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\dots, \enddots): Missing \leavevmode.
- Report from: Thomas Esken <esken@nmlab.informatik.fh-dortmund.de>
- Date: Tue, 23 Jun 1998 14:22:27 +0200 (MET DST)
-
-Mon Jun 22 16:00:53 1998 Karl Berry <karl@north>
-
- * texinfo.tex: Rewrite of index stuff to do better column breaking
- and balancing.
- The old code failed miserably when the index was just the wrong size,
- e.g., the Autoconf manual with @afourpaper.
- Bug report from: Wilhelm Mueller <muewi@hb.senbvs43.uni-bremen.de>
- Date: Fri, 12 Jun 1998 16:34:49 +0200 (MET DST)
- (\initial): Add more glue around the initial, and make it a
- multiple of \baselineskip.
- (\entry): Add glue before each entry so the columns can always be the
- same height.
- (\doublecolumnout): Available space no longer needs to handle
- \partialpage specially.
- (\pagesofar): Take \ht\partialpage into account with \vsize.
- (\enddoublecolumns): Reset \output to avoid calling
- \balancecolumns twice
- (\balancecolumns): Format for readability.
- (\initialskipamount): No longer needed, remove.
-
- (\hbadness): Increase a bit, boxes that are a little underfull look ok.
-
-Sun Jun 21 16:48:38 1998 Karl Berry <karl@north>
-
- * texinfo.tex (\ninettsl): cmsltt10 is not standard, so use
- cmsltt10 scaled 900.
- Date: Mon, 15 Jun 1998 12:35:41 +0200 (MET DST)
- From: Werner Struckmann <struck@ips.cs.tu-bs.de>.
-
-Thu Jun 18 08:32:15 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex: @macro fixes from Zack Weinberg
- <zack@rabi.phys.columbia.edu>.
- - @ifblah did not work inside @macro
- - spaces in parameter lists in macro definitions caused errors
- - leading spaces in parameter lists in macro invocations were
- preserved inappropriately.
-
-Wed Jun 10 16:50:53 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\smallformatx, \smalldisplayx): New macros.
- (\smallbook): Arrange to use them.
- (\display, \flushleft, etc.): Rewrite to avoid duplication.
-
-Sun Jun 7 18:13:45 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\pagesizes): Rename to \internalpagesizes.
- (\custompaper): Rename to \pagesizes.
-
-Sat Jun 6 13:16:32 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex: Rewrite paper size definitions, add @custompaper.
-
- * texinfo.tex: Fix for macros in arguments to other commands.
- From Zack.
-
-Thu Jun 4 11:21:07 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex: Better @macro implementation.
- From: Zack Weinberg <zack@rabi.phys.columbia.edu>.
-
-Tue May 26 17:43:21 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\imagexxx): Center image if it is not part of a
- paragraph.
-
-Tue May 19 17:17:12 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex: \linkstrue by default.
- Also, first implementation of @macro; can only handle some cases,
- but that is better than nothing.
- From: Zack Weinberg <zack@rabi.phys.columbia.edu>
-
-Thu May 14 17:32:47 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex: New command @novalidate along the lines of makeinfo
- --no-validate.
- Date: Sun, 26 Oct 1997 18:54:47 -0500
- From: Zack Weinberg <zack@rabi.phys.columbia.edu>
-
-Tue May 12 16:19:35 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\valuexxx): Split up into expandable and
- non-expandable parts.
- (\expandablevalue): New macro.
- (\indexdummies): \let\value = \expandable value.
-
- * texinfo.tex: Doc fixes.
-
- * texinfo.tex (\doind): Just call \dosubind with empty third arg.
- (\dosubind): Replace with \doind definition and suitable code to handle
- possible third arg. And propagate glue past the whatsit from the
- \write so index entries don't cause extra space between
- @defuns (for example).
-
-Wed May 6 12:51:27 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\deftypemethparsebody): Handle the extra arg in
- @deftypemethodx, too.
- (\deftypefunx): Error definition was misspelled as \deftypeunx.
-
-Fri May 1 17:31:58 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo/texinfo.tex (\putwordon, \putwordMethodon): New macros.
- Use in \def... commands.
- (\indexdummies): make `\ ' be just ` ' for sorting.
- (\deftypemethparsebody): New macro.
- (\defmethod): Call it.
- Various doc fixes.
- Repored by: KHMarbaise@p69.ks.fido.de (Karl Heinz Marbaise)
- Date: Wed, 07 Jan 1998 10:19:42 +0100
-
-Fri Apr 10 16:54:48 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex: @cartouche: Align right side correctly.
- From: dale.smith@bellhow.com (Dale Smith)
- Date: Fri, 06 Mar 1998 14:47:02 GMT
-
-Sun Apr 5 17:19:03 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\dosetq): Use \normalturnoffactive instead of just
- \turnoffactive, so \'s in node names are handled properly.
- (\tie): Move definition to more rational position in the file.
- (\@, \{, etc.): Use decimal numbers in all cases, to avoid use of '.
- Paranoia only.
- (\+): Turn off once and for all at the beginning, and define as
- \tabalign in @tex.
-
-Tue Mar 31 19:33:31 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\synindex, \syncodeindex): \closeout the redirected
- index.
- From: Jakob Stoklund Olesen <stoklund@mi.aau.dk>
-
- * texinfo.tex (\doignore): Ignore everything after `c', so @end
- ifinfo and the like can be commented out.
- (\macrocsname): New macro.
- Reported by: "James A. Lupo" <lupoja@feynman.ml.wpafb.af.mil>
-
-Wed Feb 25 15:48:51 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\doprintindex): Change catcode of @ before \read,
- in case of \initial{@} being the line that is read.
- Reported by: Drew Csillag <drew_csillag@geocities.com>
-
- * texinfo.tex (\dotable): Add \leftskip to \hsize in the first column.
- Don't inherit \rightskip from surrounding environment.
- Set \item to \crcr to avoid empty first row.
- Prepend \parskip glue before table.
- Set \everycr locally outside of alignment, don't reset it
- explicitly in \Emultitable.
- All from Andreas Schwab, to avoid overfull hboxes.
-
- Also, work on leading commentary in file a bit.
-
-Tue Feb 24 17:48:29 1998 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex: \!: Save and restore this for @tex.
- From: Jean-Pierre Moreau <jpmoreau@ciframedical.com>
- Date: Fri, 22 Aug 1997 16:47:36 -0400
-
- * texinfo.tex (\angleleft, \angleright): New macros.
- (\refx, \email, \key): Use them.
- From: Stephen Gildea <gildea@intouchsys.com>
- Date: Fri, 26 Dec 1997 11:43:32 EST
-
-Mon Feb 23 17:34:23 1998 Karl Berry <karl@cs.umb.edu>
-
- 1997-08-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
- * doc/texinfo.tex (xrdef): Read the second argument with \
- as an escape character.
-
-1998-01-22 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * texinfo.tex (\tocentry): Don't \turnoffactive before typesetting
- the arguments, it causes special characters to be printed
- incorrectly.
-
-Mon Jan 19 10:58:25 1998 Karl Berry <karl@cs.umb.edu>
-
- * texi2html: Correct version number, home page reference.
-
-Sat Jan 17 15:12:03 1998 Karl Berry <karl@cs.umb.edu>
-
- * texi2html: Version 1.54. Handle @image better, etc.
- * From: Bob Friesenhahn <bfriesen@simple.dallas.tx.us>.
-
-Wed Dec 24 13:59:07 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\dots, \enddots): Use current font instead of
- always using math italic. From Stephen Gildea.
-
-Tue Dec 23 11:33:07 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex: Spurious xepsf.tex should be epsf.tex.
-
-Mon Oct 13 15:49:28 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\titlefont): Explicitly set \rm.
-
-Sat Jul 26 15:12:37 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\email): Let to \uref instead of \code, as a second
- optional argument makes sense for this, too.
-
-Mon Jul 14 13:43:43 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\indexdummies): Add \value.
-
-Thu Jul 10 13:34:30 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\authorrm): Must use \def instead of \let, as
- \secrm is not yet defined.
-
-1997-07-09 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
-
- * texinfo.tex (\titlefont): Define again, using \titlefonts.
-
-Wed Jul 9 16:45:30 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\startcontents): Leave ^ catcode as other.
-
-Sat Jul 5 17:16:40 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\titlefonts): New macro to set title font styles,
- so italic etc. work in @title.
- (\titlefont): No longer needed.
- (\titlepage): Call \titlefonts instead of \titlefont.
- (\chapsf, \ssecsy, \ssecttsl): Correct magstep values.
- From: Stephen Gildea <gildea@intouchsys.com>.
-
- * texinfo.tex (\onepageout): Back up to 2\baselineskip per Stephen.
- (\kbdinputstyle): New command.
-
-1997-04-03 00:07:28 1997 Richard Stallman <rms@gnu.ai.mit.edu>
-
- * texinfo.tex (\kbdfont, \kbdexamplefont): New macros, parms that
- tell @@kbd what to do.
- (\setkbdinputdistinct, \setkbdinputexample): New commands set them.
- (\kbd): Use those parms.
-
-Thu Jul 3 16:52:39 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\onepageout): Leave only one line space above the
- footline, to be more like plain. Suggested by Stephen Gildea.
- (\evenfootline): Left one too many line spaces here, so reduce by two.
-
- (\ifnottex): Another ignore command.
- (\ifnothtml,\ifnotinfo): New commands.
- (\doignore): Ignore brace characters, so mismatched braces in ignored
- text do not cause complaints.
-
-Fri Jun 27 15:09:16 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\image): New definition for new @image command.
-
-Wed Jun 18 15:58:20 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\oddfootingxxx),
- (\onepageout): Leave space for the footline if present.
- (\everyfootingxxx, \everyheadingxxx): Call \oddfootingxxx and
- \evenfootingxxx instead of repeating their code. From: Stephen
- Gildea <gildea@intouchsys.com>.
-
- (\setfilename): Read texinfo.cnf if present.
-
- (\indexdummies, \indexnofonts): No-op additional commands @result @equiv
- @expansion @print @error @point. From: Dave Bodenstab
- <imdave@ais.net> (for texi2www doc).
-
-Fri Jun 6 10:31:34 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\setmultitablespacing): Restore bad typing mistake
- from yesterday.
-
-Thu Jun 5 18:04:26 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\uref): Write real definition, taking one mandatory
- argument and one optional one.
-
-Wed Jun 4 17:16:09 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\mainmagstep): Define this as a \count variable
- instead of with \let, to make changing to \magstep1 more transparent.
- From: HERBERT@boevm4.vnet.ibm.com.
- (\uref): New command a la \url.
-
-Sat May 24 18:06:41 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\deftypemethod, \deftypemethodheader): New macros
- to implement new commands @deftypemethod and @deftypemethodx.
- Suggestion from: KHMarbaise@p69.ks.fido.de (Karl Heinz Marbaise).
-
-Wed May 21 17:17:52 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\opnr, \clnr): Increment/decrement \parencount, for
- @defun lines with nested parens. From Bill Schelter
- <wfs@fireant.ma.utexas.edu>.
- (\itemizeitem): Correct \errmessage.
-
-Mon May 19 17:34:40 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\codeunder): Use \_ and \ifusingtt to avoid
- dotaccent from _ in roman fonts, e.g., @deftypefn.
- (\tex): Remove spurious spaces at the end of subdefinitions.
- From: "John W. Eaton" <jwe@bevo.che.wisc.edu>.
- (\url, \email): \let to \code; no quotes or angle brackets.
-
-Mon May 5 17:06:35 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\onepageout): \ifcropmarks, center the page body.
- Lost this when merged \croppageout with \onepageout. Found by
- Arnold.
-
- (\doprintindex): Do not bother to go into double column mode unless
- there actually is a non-empty index.
-
- (\begindoublecolumns): Include any existing \partialpage in the new one,
- lest we lose a whole page of output. Found by M J Morley
- <mjm@scs.leeds.ac.uk>.
-
- (\chapternofonts): Remove spurious spaces, both in the definitions that
- get output to the aux file(s) and in this macro.
-
- Fix comments and rationalize whitespace in various other places.
-
-Sun Apr 27 15:41:16 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\chapter, etc.): Avoid expansion of section title
- when writing the toc.
-
-Thu Apr 24 16:35:46 1997 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\onepageout): Integrate cropmarks case here,
- instead of having a completely different routine.
- (\croppageout): Remove this.
-
-Sun Jun 9 14:26:42 1996 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\ignoremorecommands): Ignore \defcodeindex, and do
- not ignore \message.
-
-Thu Apr 11 12:59:42 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
-
- * texinfo.tex (\macro): New macro.
- (\enddots, \endldots): New macros.
- (\centerchap, \centerchapyyy): New macros.
- (\centerchfplain, \centerchfopen): New macros.
- (\CHAPFplain, \CHAPFopen): Set \centerchapmacro.
-
-Wed Mar 13 11:42:17 1996 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\url): New macro, like \samp for now.
-
-Sun Mar 10 13:05:08 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
-
- * texinfo.tex: Changes in @multitable code.
- Change meaning of @multitablelinespace.
-
-Tue Mar 5 18:56:08 1996 Dave Love <d.love@dl.ac.uk>
-
- * texinfo.tex (\set): Set catcode of space explicitly (inside a
- group) to avoid losing inside @example, say.
-
-Sun Mar 3 17:01:27 1996 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\itemxpar): Protect the \vskip here with \nobreak,
- to avoid a possible page break at an @itemx.
-
-Sun Feb 25 14:53:15 1996 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\obstexwarn): Use \global to avoid ever getting the
- warning twice.
-
- * texinfo.tex (\include): Allow underscores and other such
- characters we made active in the file name argument.
-
-Tue Feb 6 15:06:27 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
-
- * texinfo.tex (\afourlatex): Delete the old duplicate definition
- of \afourlatex.
-
-Sun Feb 4 15:20:16 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
-
- * texinfo.tex (\tab): New definition.
- (\setuptable): Fix previous change.
- (\multitablecolspace): Renamed from \multitablecolmargin.
- (\multitablelinespace): Renamed from \multitablelineskip.
-
-Fri Feb 2 02:20:16 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
-
- * texinfo.tex (\multitableparskip): Renamed from \intableparskip.
- Allocate with \newskip.
- (\multitableparindent): Renamed from \intableparindent. Use \newskip.
- (\multitablelineskip): Renamed from \spacebetweenlines. Use \newskip.
- (\multitablecolmargin): Renamed from \spacebetweencols.
- (\columnfractions): Renamed from \percentofhsize.
- (xcolumnfractions): Renamed from \xpercentofhsize.
-
- * texinfo.tex (\setuptable): Handle >1 digits after @percentofsize.
- (\pickupwholepercent): New macro.
-
-Sun Jan 28 21:14:46 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
-
- * texinfo.tex (\key, \kbdfoo): Use \ttsl unconditionally.
- (\setkeyfont): Definition deleted.
-
-Tue Jan 23 14:57:23 1996 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex: @kbd within @example selects slanted tty font:
- (\ttsl, \ttslshape): Define this new font shape.
- (\kbdfoo): Set the font to \ttsl if already using \tt.
- (\setkeyfont, \ifmonospace): New macros.
-
-Wed Jan 17 23:57:48 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
-
- * texinfo.tex (\changepagesizes): Additional arg for topskip.
- (\afourlatex): Total rewrite.
- (\afourwide): Pass new arg to \changepagesizes.
-
-Wed Jan 3 17:15:00 1996 Stephen Gildea <gildea@x.org>
-
- * texinfo.tex (\slbshape, \itbshape): Use bold slant and and
- bold italic in titles to match the bold roman. Do not use
- bold sf or bold tt, which would be too heavy.
-
- * texinfo.tex (\setfont): Pass font name in more pieces.
- (\*shape): New macros defining symbolic names for all font
- shapes so can use other font families with different naming
- conventions.
-
-Wed Jan 3 15:52:18 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
-
- * texinfo.tex (\ignoremorecommands): Turn off @everyheading and
- friends, @headings, @setchapternewpage, @setchapterstyle.
-
-Sat Dec 30 17:20:48 1995 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\inmargin): Don't allow a break before the vertical
- kern. Do allow a whole paragraph of marginal text, not just one line.
- Use \inmarginspacing.
-
-Thu Dec 28 23:22:08 1995 Richard Stallman <rms@mole.gnu.ai.mit.edu>
-
- * texinfo.tex (\inmargin): New command @inmargin.
- (\dircategory): Ignore @dircategory.
-
-Tue Dec 12 17:25:36 1995 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\lvvmode): Remove this; use \leavevmode as usual,
- so spaces/underscores at beginnings of lines inside @example work.
- Bogus index entries should be (and now are, I think) handled in
- other ways.
-
-Mon Nov 13 16:07:09 1995 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\xrefX): Test for xref-automatic-section-title
- being @set correctly, and remove spurious redefinition of
- \printednodename in that case.
-
-Mon Oct 16 15:16:34 1995 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\unsepspaces): New macro to make active space
- expand into a normal space char in index entries.
- (\indexdummies): Use \unsepspaces.
-
-Thu Oct 12 14:56:52 1995 Richard Stallman <rms@mole.gnu.ai.mit.edu>
-
- * texinfo.tex (\tie): Use \lvvmode, not \leavevmode.
- Don't use \@M directly either.
-
-Sun Aug 27 21:17:09 1995 Paul Eggert <eggert@twinsun.com>
-
- * texinfo.tex (\appendixsection): Fix misspelled defn.
-
-Mon Jul 31 23:57:57 1995 Richard Stallman <rms@mole.gnu.ai.mit.edu>
-
- * texinfo.tex (\ttfont): Don't call \nohyphenation.
-
-Sun Jul 30 18:30:47 1995 Richard Stallman <rms@mole.gnu.ai.mit.edu>
-
- * texinfo.tex (\tocentry): Use \turnoffactive.
-
-Sun Feb 5 05:34:13 1995 Richard Stallman <rms@pogo.gnu.ai.mit.edu>
-
- * texinfo.tex (\boldbraxnoamp): New function.
- (\deftypefunargs): Use that, not \boldbrax.
-
-Tue Jan 31 12:15:28 1995 Karl Berry <karl@cs.umb.edu>
-
- * texinfo.tex (\set): Use \gdef, not \xdef.
-
-Sat Jan 21 16:39:36 1995 Richard Stallman <rms@pogo.gnu.ai.mit.edu>
+ * makeinfo/xml.c:
+ * makeinfo/xml.h:
+ * makeinfo/texinfo.dtd: new elements acronymword and acronymdesc.
- * texinfo.tex: Initially make _ and + \active,
- then later make them \other.
- (\otherifyactive): New command.
+2003-12-19 Alper Ersoy <dirt@gtk.org>
-Thu Jan 19 21:59:22 1995 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+ * makeinfo/insertion.c (begin_insertion): insert float element for
+ docbook too.
- * texinfo.tex (\afourwide): New command.
+2003-12-18 Karl Berry <karl@gnu.org>
-Mon Jan 16 09:29:38 1995 Stephen Gildea <gildea@x.org>
+ * doc/texinfo.txi, doc/info-stnd.texi: fix incorrect cross-manual
+ xrefs. From: Juri Linkov <juri@jurta.org>, 18 Dec 2003 05:01:07 +0200.
- * texinfo.tex: Initially make + and _ "other" characters.
- (\fixbackslash, \everyjob): Make + and _ active characters.
+2003-12-18 Alper Ersoy <dirt@gtk.org>
-Tue Jan 10 19:16:09 1995 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+ * makeinfo/makeinfo.c (insert): rollback unnecessary whitespace before
+ newline characters.
- * texinfo.tex: At beginning, \input plain if necessary.
- (\deftypefunargs): Use \boldbrax, not \functionparens.
+2003-12-17 Karl Berry <karl@gnu.org>
-Sun Dec 18 16:40:11 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+ * doc/texinfo.tex (\ordf, \ordm): new macros.
+ (\commondummies): include them.
+ (\indexnofonts): here too.
+ * makeinfo/makeinfo.c (command_table): add them.
+ * makeinfo/lang.c (cm_special_char): first cut at handling them.
+ * doc/texinfo.txi (Inserting Accents): document them.
- * texinfo.tex (\indsc): Use csc10 (at 9pt), not indrm.
+2003-12-16 Alper Ersoy <dirt@gtk.org>
-Mon Oct 31 00:51:20 1994 Richard Stallman <rms@pogo.gnu.ai.mit.edu>
+ * makeinfo/defun.c (process_defun_args): use execute_string instead
+ of add_word so accent commands are honored.
- * texinfo.tex (\changepapersizes): Fix definition syntax.
- (\fontprefix): Define only if not yet defined.
+2003-12-16 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\margin): Define a new insert.
- (\SETmarginindex): Initialize to \relax.
- (\doindex): Optionally put the entry in the margin.
- (\pagecontents): Print the index entries put in the margin.
+ * makeinfo/xml.c (xml_begin_document): output xml process instruction
+ also in the Docbook prolog.
-Sat Oct 29 19:50:10 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+2003-12-16 Karl Berry <karl@gnu.org>
- * texinfo.tex (\auxhat): New macro.
- (\dosetq): Use \auxhat.
- (reading the aux file): Give ^ catcode 7.
+ * doc/texinfo.txi (dots): document enddots spacing.
-Wed Oct 26 03:28:04 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+2003-12-16 Stepan Kasal <kasal@ucw.cz>
- * texinfo.tex (\setfont): New macro. Use it for specifying
- most of the fonts that are normally cm fonts.
- (\fontprefix): New macro, normally `cm'.
+ * doc/texinfo.tex (\dots): Use \hfil instead of \hss and only
+ the stretch factor in explicit skips; I don't suppose the dots
+ will overlap.
+ (\enddots): Merged with \dots.
-Mon Oct 24 01:27:09 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+2003-12-16 Karl Berry <karl@gnu.org>
- * texinfo.tex (\startcontents): Set catcode of ^.
+ * makeinfo/makeinfo.c (cm_image): quote the src= arg in the Info
+ case, since apparently that's what Jan implemented. Report from:
+ Torsten Bronger <bronger@physik.rwth-aachen.de>, 16 Dec 2003
+ 12:55:30 +0100.
-Thu Oct 13 02:19:43 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+ * util/dir-example: wdiff tools.
- * texinfo.tex (\ifhtml, \html, \enddots, \?, \!): New commands.
+2003-12-15 Stepan Kasal <kasal@ucw.cz>
-Fri Sep 16 16:30:52 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+ * doc/texinfo.tex (\dofloat): Move \startsavinginserts before
+ the begin of the vtop; it's still local---within the group
+ open by \float.
+ (\dofloat, \Efloat): Fix indentation.
- * texinfo.tex (\defheaderxcond): New macro.
- (\deftypefnheaderx): Use defheaderxcond when calling defname.
- (\deftypefunheaderx, \deftypevarheader, \deftypevrheader): Likewise.
+2003-12-15 Stepan Kasal <kasal@ucw.cz>
-Fri Aug 26 03:08:08 1994 Amy Hendickson <amyh@ai.mit.edu>
+ * doc/texinfo.tex (\innerdef, \innernewcount): Nuked.
+ (\getfloatno): New macro, to establish the right float count.
- * texinfo.tex (\multitable): New command.
+2003-12-15 Stepan Kasal <kasal@ucw.cz>
-Mon Aug 1 14:28:57 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+ * doc/texinfo.tex (\innernewbox): Nuked, the call expanded.
- * texinfo.tex (\changepagesizes, \afourlatex): New macros.
+2003-12-14 Karl Berry <karl@gnu.org>
-Tue Jul 12 11:45:58 1994 Karl Berry (karl@cs.umb.edu)
+ * makeinfo/tests/*: unset TEXINFO_OUTPUT where necessary.
- * texinfo.tex (\quotation): Set \parskip to zero to avoid extra
- space below the environment.
- (\quotation): Clean up comments and indentation.
+2003-12-13 Karl Berry <karl@gnu.org>
-Wed Jul 13 05:36:40 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * doc/texinfo.txi (Smallcaps, acronym): Compare and contrast these
+ a bit more fully.
+ * doc/texinfo.tex (\setfontstyle): just \def the string; since we
+ are \edef'd, we can't make ourselves a control sequence.
+ (\selectfonts): new macro.
+ (\doacronym): print acronym in smaller size, and \unsepspaces for
+ if we're called inside @display.
+ (\registeredsymbol): we can use \lllsize here too.
- * texinfo.tex (\xrefX): Put back, and correct, the test of
- SETxref-automatic-section-title.
+ * configure.ac: gettext 0.13 (many generated files updated).
-Thu Jul 7 15:57:52 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * Makefile.am (AUTOMAKE_OPTIONS): 1.8.
- * Set catcodes of chars 128-255 to \other.
+ * makeinfo/makeinfo.c: give warning if TEXINFO_OUTPUT value is
+ unrecognized.
+ * doc/texinfo.txi (makeinfo options): document TEXINFO_OUTPUT.
-Mon Jul 4 15:32:41 1994 Karl Berry (karl@cs.umb.edu)
+ * doc/texinfo.txi (tex): document @LaTeX.
+
+ * doc/texinfo.tex (\loggingall): reduce \errorcontextlines for
+ sake of infinite loops.
+ (\setfontstyle): \def better than \edef?
+ (\commondummies): LaTeX is a new dummy.
+ (\indexdummies): likewise.
+ (\indexdummylatex): sorted the obvious way.
- * texinfo.tex (\tie): Set \catcode of @ to 11 before using \@M.
+ * doc/texinfo.tex (\LaTeX): New macro for new command.
+ (\setfontstyle): new macro to remember current font style.
+ (\rm,\it,\sl,\bf,\tt,\sf,\ttsl): call it; all but
+ the last two are new too.
+ (\ssecsc): use correct magnification, we do for everything else.
+ (\reducedrm..\reducedsy): new fonts.
+ (\reducedfonts): new macro.
+ (\textfonts..\smallerfonts): set \lsize and \lllsize macros.
- * texinfo.tex (\xrefX): Undo \turnoffactive while printing the node
- name, so _ in node names doesn't come out as the dot accent.
+2003-12-13 Alper Ersoy <dirt@gtk.org>
-Sat Jul 2 14:49:26 1994 Karl Berry (karl@cs.umb.edu)
+ * makeinfo/makeinfo.c (main): changed TEXINFO_XML_OUTPUT to
+ TEXINFO_OUTPUT. It now specifies the default output format.
- * texinfo.tex (\tie): Ensure we're in horizontal mode before the
- \penalty.
+2003-12-13 Alper Ersoy <dirt@gtk.org>
-Tue May 10 01:21:28 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * makeinfo/defun.c (defun_internal): implemented basic line
+ continuation.
- * texinfo.tex (\donoderef, \unnumbnoderef, \appendixnoderef):
- Set \lastnode globally.
+2003-12-13 Karl Berry <karl@gnu.org>
-Sun Apr 17 15:35:43 1994 Karl Berry (karl@ra.cs.umb.edu)
+ * CVSROOT/loginfo: put filename/version number in mail subject.
- * texinfo.tex (\~): Define to be a tie.
- (\ptextilde): New defn to save the plain's tilde accent.
- (\tex): Restore plain tilde.
+ * util/srclist.txt (help2man): remove, we require cvs-builders to
+ have this installed now (or accept `missing's replacement),
+ along with the rest of the dev tools.
-Sun Mar 27 23:35:17 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+2003-12-13 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\smallbook): Set \defbodyindent and \deftypemargin.
+ * makeinfo/defun.c (defun_internal):
+ * makeinfo/insertion.c (end_insertion): do not use tables for HTML
+ @deffns.
-Sun Mar 20 19:47:59 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+2003-12-13 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\xrefX): Define and use \correctnodename.
- (@turnoffactive): Move after @ becomes available
- and turn off backslash as well as other chars. Use @realbackslash.
- (@normalturnoffactive): Like @turnoffactive but use @normalbackslash.
+ * makeinfo/insertion.c (begin_insertion): strip whitespace from @float
+ arguments.
-Sat Mar 19 12:26:25 1994 Karl Berry (karl@cs.umb.edu)
+ * makeinfo/sectioning.c: last_section_title and last_section_number
+ now default to empty strings.
- * texinfo.tex (\singlespaceskip): Increase to 12.5pt.
- (\singlespace): Call \setleading instead of just assigning to
- \baselineskip, so the strut box will be reset.
- (\smalllispx): Likewise.
+2003-12-13 Alper Ersoy <dirt@gtk.org>
-Sun Mar 13 20:32:28 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * makeinfo/cmds.c (cm_LaTeX): new function for @LaTeX{}.
- * texinfo.tex (\dots): Change back to \ldots.
+ * makeinfo/texinfo.dtd: new latex entity.
-Sat Mar 12 22:34:10 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+2003-12-13 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\indexnofonts): Add %'s to suppress newlines after \def.
+ * makeinfo/xml.h:
+ * makeinfo/xml.c: new element DIMENSION.
-Sat Feb 26 15:51:37 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * makeinfo/cmds.c (cm_dmn): new function for @dmn.
- * texinfo.tex (\deftexinfoversion): New macro.
- (\texinfoversion): Define using \deftexinfoversion.
+2003-12-13 Alper Ersoy <dirt@gtk.org>
-Wed Jan 26 12:40:52 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * makeinfo/makeinfo.c (main): if TEXINFO_XML_OUTPUT envvar is set,
+ default to XML output.
- * texinfo.tex (\putwordSee, \putwordInfo, \putwordfile)
- (\putwordChapter, \putwordAppendix, \putwordSection)
- (\putwordsection, \putwordpage)
- (\putwordTableofContents, \putwordShortContents): New macros.
- Used in various places instead of fixed words.
+2003-12-13 Alper Ersoy <dirt@gtk.org>
-Mon Jan 24 22:51:36 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * makeinfo/makeinfo.c (main): enabling one output format effectively
+ disables others.
- * texinfo.tex (\ignoremorecommands): Turn off @item and @message.
+2003-12-13 Alper Ersoy <dirt@gtk.org>
-Thu Jan 20 17:01:53 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * makeinfo/lang.h:
+ * makeinfo/lang.c (current_document_encoding): new function.
- * texinfo.tex (\indexnofonts): Treat accents as dummies.
- Turn modified European letters into one or more ordinary letters.
+ * makeinfo/xml.c (xml_begin_document): specify encoding in the XML
+ prolog if different from no_encoding.
-Tue Jan 18 14:54:32 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+2003-12-13 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\indexdummies): Handle tex accents and European letters.
+ * makeinfo/xml.c:
+ * makeinfo/texinfo.dtd: moved documentlanguage out of para.
-Wed Nov 24 16:11:51 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+2003-12-13 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\dots): Use $\,$ for spacing.
+ * makeinfo/float.c (add_new_float): now expects position argument too.
-Sun Nov 21 22:16:21 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * makeinfo/insertion.c (begin_insertion): read arguments from @float
+ line, do not look for @anchor.
+ (end_insertion): changed info caption style.
+ (cm_caption): use is_in_insertion_of_type instead of
+ current_insertion_type.
- * texinfo.tex (\dots): Avoid using \ldots; use periods and kern.
- (\indexdotfill): Use italic periods.
+ * makeinfo/xml.h:
+ * makeinfo/xml.c: new element floatpos.
+ (xml_begin_enumerate): check actual supplied value, not first digit.
+ Also special case for GPL's silly `@enumerate 0'. From Aharon Robbins
+ <arnold@skeeve.com> Tue, 9 Dec 2003 12:38:04 +0200.
-Fri Nov 19 20:50:31 1993 Roland H. Pesch (pesch@apple-gunkies.gnu.ai.mit.edu)
+2003-12-12 Karl Berry <karl@gnu.org>
- * texinfo.tex (\deftypefunargs): use \tclose rather than \code to
- avoid side effects on active chars
+ * doc/texinfo.tex (ifnotdocbook,ifnotxml): define these @-commands.
+ Report from Arnold.
-Tue Sep 28 16:01:58 1993 Roland H. Pesch (pesch@apple-gunkies.gnu.ai.mit.edu)
+ * doc/texinfo.tex (\setfilename): make the \openout\auxfile be
+ \immediate, again.
- * texinfo.tex (\obeyedspace defn): remove blank after \sepspaces
- (left destructive penalty in vertical list)
+2003-12-09 Stepan Kasal <kasal@ucw.cz>
-Mon Aug 30 14:17:27 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
+ * doc/texinfo.tex (\envparseargdef): New macro, a combination
+ of \envdef and \parseargdef.
+ (\enumerate, \float): Use it.
- * texinfo.tex (\setref, \unnumbsetref, \appendixsetref): Uncomment
- \dosetq for title.
- (\Ytitle): Define as \thissection instead of \thischapter.
- (\xrefX): If there is no printed-title arg given, and @ifset
- xref-automatic-section-title, try to use the real section title.
+2003-12-09 Stepan Kasal <kasal@ucw.cz>
-Tue Jul 27 12:47:24 1993 Charles Hannym (mycroft@trinity.gnu.ai.mit.edu)
+ * doc/texinfo.tex (\float, \Efloat, \caption, \shortcaption):
+ (\listoffloats): Adapt to the new environment definition framework.
- * texinfo.tex (\ifitemxneedsnegativevskip): New \if; set immediately
- following a short \item.
- (\itemxpar): \par and then if \ifitemxneedsnegativevskip is set, do
- a \vskip-\parskip.
- (\internalBitemx, \internalBxitemx, \internalBkitemx): Use \itemxpar
- rather than \par.
- (\itemzzz): Set \ifitemxneedsnegativevskip as appropriate.
+2003-12-09 Stepan Kasal <kasal@ucw.cz>
-Thu Jul 22 16:08:33 1993 Charles Hannum (mycroft@trinity.gnu.ai.mit.edu)
+ * doc/texinfo.tex (\setref, \xrefX): Make the ``\indexnofonts''
+ setups in these two consistent.
- * texinfo.tex (\titlezzz, \finishtitlepage): Explicitly make hrules
- have a width of \hsize so they aren't too long in smallbook format.
+2003-12-09 Stepan Kasal <kasal@ucw.cz>
-Tue Jun 29 15:56:19 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+ * doc/texinfo.tex (\innernewbox): New macro, non-outer \newbox.
+ (\newsaveinsX): Use it.
- * texinfo.tex (\deftypefnheaderx): call \normalparens to permit
- normal typesetting of strings (e.g. for C++ docn) containing `&'
+2003-12-09 Stepan Kasal <kasal@ucw.cz>
-Fri Jun 25 14:08:44 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+ * doc/texinfo.tex: after test for epsf.tex, \closein 1, even if the
+ file wasn't there.
+ (\summarycontents, \tryauxfile): Similarily, \closein 1 even if eof.
+ (\startcontents, \contents, \summarycontents): fix indentation.
- * texinfo.tex (\nestedignore): turn off \ind... fonts too
- (primarily for use within @smallexample)
+2003-12-09 Stepan Kasal <kasal@ucw.cz>
-Wed Jun 23 11:58:48 1993 Jim Kingdon (kingdon@wombat.gnu.ai.mit.edu)
+ * doc/texinfo.tex (\pdfmakeoutlines): Fix a typo, need
+ \def\thisubsecnum not \let.
- * longopts.table: Update GDB options.
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
-Sun Jun 20 22:00:11 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
+ * doc/texinfo.tex (\makedefun): Add `\def\deffnheader' or the like
+ at the end; all calls of this macro changed.
- * lgpl.texinfo: Use @smallexample instead of @example. Reformat
- example disclaimer to avoid overfull \hbox.
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
-Mon Jun 14 04:09:47 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * doc/texinfo.tex (\normaldefunargs): Renamed to ...
+ (\defunargs): ... this; all callers changed.
+ (\ampdefunargs): Nuked, the only call expanded.
- * texinfo.tex (\entry): Don't make a line of dots
- if there are no page numbers.
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
-Fri Jun 11 16:35:23 1993 Karl Berry (karl@cs.umb.edu)
+ * doc/texinfo.tex (\setfilename): Simplify the code for conditional
+ \input of texinfo.cnf.
+ (\contents): Call \pdfmakeoutlines only if .toc exists.
+ (\pdfmakeoutlines): Thus .toc must exist, no need to check again.
+ (\documentlanguage): Simplify, fix indentation.
- * texinfo.tex (\defparsebodycommon): New macro from \defvrparsebody.
- (\deftpparsebody): Call it; can't use \defvrparsebody.
- (\deftpheaderline, \removeemptybraces): New macros.
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
-Sat May 8 10:49:25 1993 Karl Berry (karl@cs.umb.edu)
+ * doc/texinfo.tex (\center): Separate the horizontal and vetical...
+ (\centerH, \centerV): ... versions; account for \leftskip in \centerV.
- * texinfo.tex (\itemzzz): Only change \parskip temporarily, and
- unskip by it later if the item text is on its own line.
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
- * texinfo.tex (\tablez): Do \afterenvbreak before the \endgroup,
- so the \parskip value is the table's, not the surrounding text's.
- (\vtable, \ftable, \itemizey): Likewise.
- Note: for most environments, \nonfillfinish deals with this.
+ * doc/texinfo.tex (\group, \Egroup): Don't call \offinterlineskip;
+ to fix the line spacing after the group, propagate \prevdepth.
+ (Else, @exdent inside @group gets the wrong spacing.)
- * texinfo.tex (\smalllisp): New definition for non-small case, a
- la @smallexample.
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
- * texinfo.tex: Delete \message{} at beginning; it does nothing.
+ * doc/texinfo.tex (\acronym): Check for second parameter, ...
+ (\doacronym): using this new function; remove smallcaps.
- (These changes are all trying to make space above and below
- environments more equal.)
- * texinfo.tex (\singlespace): Don't insert a kern.
- (\group): Do \offinterlineskip, and reset \par to insert a blank
- line's worth of space.
- (\lisppar): Delete meaningless call to \obeyspaces before making
- the definition.
- (\Elisp [the outer one]): Rename to \nonfillfinish, and end the
- paragraph before the group.
- (\lisp): Set \Elisp (the inner one) to \nonfillfinish
- (\example, \smallexample, \display, \format, \flushleft,
- \flushright, \quotation): Use \nonfillfinish.
- (\lineskipfactor, \strut{height,depth}percent): Set to more exact
- values.
- (\setleading): Set \normallineskip and call \normalbaselines, for
- cleanliness.
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
-Thu May 6 16:00:59 1993 Jeffrey Osier (jeffrey@deneb.cygnus.com)
+ * doc/texinfo.tex (\pdfmakeoutlines): Make the counting macros
+ robust, so that they won't break on incorrectly nested sections.
+ (For instance, in the bzip2 manual.)
- * texinfo.tex (\ignoremorecommands): Turn off \set and \clear.
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
-Tue Apr 20 17:02:34 1993 Roland H. Pesch (pesch@apple-gunkies.gnu.ai.mit.edu)
+ * doc/texinfo.tex (\author): If appears inside a @quotation
+ environment, interpret it as an affiliation; otherwise it has to
+ appear directly inside @titlepage.
- * texinfo.tex (\codex): Delete space.
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
-Thu Apr 15 14:59:04 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+ * doc/texinfo.tex (\argremovec, \argcheckspaces): Add support for
+ continued lines to \parsearg, while ...
+ (\domakedefun, \printdefunline): ... removing it from @defun's ...
+ (\parsedefunline): ... and thus nuking this.
+ (\startdefunx): Replaced by ...
+ (\dodefunx): ... this; it reuses the code of the respective @defun.
- * texinfo.tex (\ignoremorecommands): Turn off @raisesections, @up,
- @lowersections, @down within false conditionals.
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
-Sun Apr 18 04:33:13 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * doc/texinfo.tex (\defparsearg): Rename to ...
+ (\parseargdef): ... this; all uses changed.
- * texinfo.tex (\code): Define - and _ to permit line-breaking
- despite the fact that hyphenation is disabled.
- (\codex, \codedash, \codeunder): New macros.
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
-Tue Mar 16 18:19:16 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+ New framework for environments in texinfo.tex. It's used like this:
+ \envdef\foo{...}
+ \def\Efoo{...}
+ It's the responsibility of \envdef to insert \begingroup before the
+ actual body; @end closes the group after calling \Efoo.
+ \envdef also defines \thisenv, so the current environment is known;
+ @end checks whether the environment name matches.
+ The \checkenv macro can be used also elsewhere to check whether the
+ current environment is the one expected.
- * texinfo.tex (\ignoremorecommands): Turn off @printindex within
- false conditionals.
+ Non-false conditionals (@iftex, @ifset) don't fit into this, so they
+ are not treated as enviroments; they don't open a group.
+ (The implementation of @end takes care not to call \endgroup in this
+ special case.)
-Sun Mar 14 10:47:36 1993 Karl Berry (karl@cs.umb.edu)
+ * doc/texinfo.tex: All environment definitions, true conditionals and
+ @ifset, @ifclear, changed.
- * texinfo.tex (\footnote): Don't bother to take the footnote text
- as an argument, and hence don't define as \long.
- (\footnotezzz): Do \footstrut after we start the paragraph.
- (Also reformat these macros to make them easier to read.)
+ Another issue:
+ @set and @value allowed - and _ in variable names, but @clear, @ifset
+ and @ifclear were not ready to accept such variables.
-Fri Feb 26 13:02:44 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+ * doc/texinfo.tex (@set, @clear, @ifset, @ifclear): Call
+ \makevalueexpandable.
- * texinfo.tex (@include): Use \thisfile rather than #1 as \input arg.
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
- * texinfo.tex (\readauxfile): Call \warnedobstrue to turn off warning
- re TeX 3.0 on second and subsequent runs.
+ * doc/texinfo.tex (\multitable): Move \everytab={} and the check
+ for saved inserts to \everycr; thus \item is \crcr again.
+ (\Emultitable): Call \setpercentfalse only after the last \crcr.
-Thu Feb 25 18:03:38 1993 Karl Berry (karl@cs.umb.edu)
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
- * texinfo.tex (\realeverypar): Delete, as it was unused.
+ * doc/texinfo.tex (\readauxfile): Read it, unconditinally;
+ don't open the aux file for writing.
+ (\tryauxfile): A new wrapper around \readauxfile, which checks
+ whether the file exists.
+ (\setfilename): Call \tryauxfile, then open the aux file for writing.
- * texinfo.tex (\group): Do a \strut in \everypar.
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
-Mon Feb 22 17:10:06 1993 Karl Berry (karl@claude.cs.umb.edu)
+ * doc/texinfo.tex (\readauxfile): Don't hide serious problems by
+ setting the catcode of backslash to other.
- * texinfo.tex (\obeyedspace): Define to be whatever \sepspaces
- does (and move the definition to after \sepspaces).
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
-Wed Feb 17 01:55:20 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * doc/texinfo.tex (\setref): Call \indexnofonts to get nicer names
+ of reference identifiers expanded in \edef.
- * texinfo.tex (\nonfillstart): Do \singlespaces and \let\par
- before \obeylines.
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
-Fri Feb 12 12:32:56 1993 Roland H. Pesch (pesch at el_bosque.cygnus.com)
+ * doc/texinfo.tex (\scanmacro): Add \spaceisspace, in case we are
+ in an environment with active spaces; without this, \eatspaces
+ didn't work.
- * texinfo.tex (\obstexwarn): issue message re bug in TeX 3.0.
- (\nullfont): commented-out redefinition, to enable w/TeX 3.0.
- (\nestedignore): call \obstexwarn for manuals that may trip bug
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
- * texinfo.tex (\nestedignore): avoid @tex contents with \doignore
+ * doc/texinfo.tex (\scanmacro): Define only one version, using ...
+ (\scantokens): ... which is a primitive of e-TeX; under ordinary
+ TeX, define a replacement.
-Thu Feb 11 15:41:06 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+2003-12-08 Stepan Kasal <kasal@ucw.cz>
- * texinfo.tex (\indexdummies): enable @dfn and @emph in index entries
+ * doc/texinfo.tex (\spaceisspace): A macro which resets space's
+ catcode to its normal value; use where appropriate.
-Thu Feb 11 13:32:32 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+2003-12-08 Karl Berry <karl@gnu.org>
- * texinfo.tex (\ignoremorecommands): ignore @include within
- failing conditionals
+ * util/texi2dvi: use etex/pdfetex if available.
+ (findprog): new helper fn.
+ * NEWS (texi2dvi): mention this.
+ * doc/texinfo.txi (Format with texi2dvi): use @TeX{} instead of
+ @code{tex}, since we don't literally run `tex' any more.
-Sat Feb 6 19:44:28 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * info/session.c (info_select_reference_this_line): don't crash if
+ we have no window->line_starts, as it is after
+ set-screen-height to less than 5.
+ Report from: Christian Biere <christianbiere@gmx.de>,
+ 8 Dec 2003 19:12:08 +0100.
- * texinfo.tex (\nestedignore): Set \globaldefs--make all defs local.
+ * doc/texinfo.tex (\comma): new command.
-Tue Feb 2 15:57:37 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+ * bootstrap: make need for --enable-maintainer-mode more explicit.
- * texinfo.tex (@raisesections, @lowersections): new commands.
- * (@up, down): original BFox synonyms for above.
- * (\numhead, \apphead, \unnmhead): internal macros to map headings
- to appropriate level
- * (@nwnode): new synonym for @node, used in newest
- makeinfo
+ * doc/texinfo.tex (\xrefX): otherify everything before getting the
+ -title \csname, so that _'s (et al.) are allowed.
-Tue Jan 26 17:05:02 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+2003-12-07 Karl Berry <karl@gnu.org>
- * texinfo.tex (\include): avoid group around file contents
+ * doc/texinfo.tex (\xrefX): handle float case.
+ (\parsefloat): take additional optional arg for xref label.
+ (\dofloat): call \setref to define the float in
+ the aux file.
+ (\Yfloat): new macro for \setref.
+ (\floatmagic): new macro for \xrefX and \dofloat
+ to communicate.
-Tue Jan 19 18:58:56 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+2003-12-03 Karl Berry <karl@gnu.org>
- * texinfo.tex (\ignoremorecommands, used in \nestedignore): also
- ignore cross-ref commands and \settitle
- (\setyyy, used in @set): make definitions global
- (\clearxxx, used in @clear): clear definitions globally
+ * doc/texinfo.txi (Not Ending a Sentence): mention special
+ entities output for @: in Docbook and XML.
-Thu Jan 14 17:43:32 1993 Michael I Bushnell (mib@geech.gnu.ai.mit.edu)
+2003-12-02 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex: Added \shorttitlepage.
+ * makeinfo/cmds.c (cm_punct): new function to handle @., @! and @?
+ commands.
+ (cm_comment): crunch multiple dashes to a single dash for XML
+ validity.
-Sat Jan 2 15:01:45 1993 Karl Berry (karl@cs.umb.edu)
+ * makeinfo/texinfo.dtd: new entities: period, eosperiod, quest,
+ eosquest, excl, eosexcl.
- * texinfo.tex (\tclose): Use \spaceskip instead of modifying
- \fontdimen's to normalize the interword space.
+2003-12-02 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\t, \key, \tclose): Use \hyphenchar instead of
- \exhyphenpenalty, to turn off hyphenation for real.
- (\{no,restore}hyphenation): New macros.
+ * makeinfo/insertion.c (begin_insertion): look for a newline before
+ @anchor and @caption commands in floatenv.
-Sat Jan 2 15:01:45 1993 Karl Berry (karl@cs.umb.edu)
+2003-12-2 Arnold Robbins <arnold@skeeve.com>
- * texinfo.tex (\t, \key, \tclose): Use \hyphenchar instead of
- \exhyphenpenalty, to turn off hyphenation for real.
- (\{no,restore}hyphenation): New macros.
+ * makeinfo/insertion.c (end_insertion): Change tests for docbook
+ and insertion to check current insertion type instead of if deep
+ inside a float insertion.
+ (cm_example, cm_smallexample, cm_lisp, cm_smalllisp, cm_cartouche)
+ (cm_caption): Same.
-Tue Jan 5 19:15:46 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * xml.h (FLOATCARTOUCHE): New constant.
+ * xml.c (texinfoxml_element_list, docbook_element_list): Add "sidebar"
+ for FLOATCARTOUCHE. For docbook, map @display, @smalldisplay to
+ "literallayout".
+ (replacement_elements): Add entry for CARTOUCHE -> FLOATCARTOUCHE.
+ (xml_begin_docbook_float): Special case for CARTOUCHE, sidebars don't
+ have labels.
- * texinfo.tex (\deftpparsebody): Make synonymous with \defvrparsebody.
+2003-12-01 Karl Berry <karl@gnu.org>
-Sun Dec 27 09:40:08 1992 Karl Berry (karl@cs.umb.edu)
+ * doc/texinfo.tex (\float, \listoffloats): new macros for new
+ @-commands -- skeletal implementation only now.
- * texinfo.tex (\inforef, \inforefzzz): Use the \ignorespaces
- primitive instead of \losespace.
- (\losespace): Delete.
+ From: Aharon Robbins <arnold@skeeve.com>, 1 Dec 2003 17:43:12 +0200:
+ * makeinfo/float.h (current_float_type): declare.
+ * makeinfo/cmds.c (cm_colon): new fn.
+ (command_table): use it for @:.
- * texinfo.tex (\menu, \direntry): Handle like \ifinfo.
+2003-11-29 Karl Berry <karl@gnu.org>
- * texinfo.tex (\unmatchedenderror, \defineunmatchedend): New macros.
- (\endxxx): Call it, instead of just doing it inline.
- (\conditionalsucceed, \nece): More new macros.
- (\iftex): Call \conditionalsucceed.
- (\Eiftex): Define to give an error at the outer level.
+ * doc/texinfo.tex (@turnoffactive): include @unsepspaces, so
+ spaces in anchor names don't expand in the .aux file. From
+ Stepan.
- * texinfo.tex (\ignoremorecommands, \nestedignore): New macros.
- (\ifset, \ifclear): Expand a macro on success as well as failure;
- also switch to using expansion instead of assignments to act after
- the conditional.
- (\if{set,clear}succeed): Call \conditionalsucceed.
- (\if{set,clear}fail): Call \nestedignore instead of \doignore.
+2003-11-28 Karl Berry <karl@gnu.org>
- * texinfo.tex (\clear): Don't insert a spurious space.
+ * doc/texinfo.txi (Abstract Objects): class names are no longer
+ printed in rm by default.
+ * doc/texinfo.tex (\cite): redefine to always use \sl, never \ttsl.
+ * doc/texinfo.tex (\ttslanted): new macro.
+ (\normaldefunargs): use it for @var; go back to
+ \sl by default.
- * texinfo.tex (\value): Put comment next to definition.
+ * doc/texinfo.txi: document @deftypecv.
- * texinfo.tex (\setyyy): Call \setzzz, and define the variable as
- simply the parameter, no \unskip.
- (\setzzz): New macro; do not globally define the variable.
+2003-11-28 Alper Ersoy <dirt@gtk.org>
-Thu Dec 3 17:24:05 1992 Roland H. Pesch (pesch@fowanton.cygnus.com)
+ * makeinfo/cmds.c (cm_comment): do not perform expansion.
- * texinfo.tex (croppageout): use same escape-char switching as
- default output routine. Permits using _ in TOC entries.
+2003-11-28 Alper Ersoy <dirt@gtk.org>
-Fri Nov 13 17:35:38 1992 Charles Hannum (mycroft@gnu.ai.mit.edu)
+ * makeinfo/cmds.c (cm_r): also set font-weight to normal in HTML.
- * texinfo.tex (indexing): Rewrote double-column mode to fix a
- rare breakage.
+2003-11-28 Alper Ersoy <dirt@gtk.org>
-Sun Oct 25 07:13:31 1992 Karl Berry (karl@cs.umb.edu)
+ * makeinfo/cmds.c (cm_comment): new function to output comments in
+ HTML, XML and Docbook outputs.
- * texinfo.tex (\obeyedspace): No need to define with \gdef, we're
- at the outer level.
+2003-11-28 Alper Ersoy <dirt@gtk.org>
-Fri Oct 16 18:04:40 1992 Roland McGrath (roland@geech.gnu.ai.mit.edu)
+ * makeinfo/index.c: new section and section_name properties in
+ index_elt struct.
- * lgpl.texinfo: Change "This program" to "This library" in example
- copying notice.
+ * makeinfo/index.c (index_add_arg): save current section number and
+ title for plain text output.
+ (cm_printindex): simplified printing with no_headers output.
-Sat Oct 10 09:43:45 1992 Karl Berry (karl@cs.umb.edu)
+2003-11-28 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\bullet, \minus): Use \implicitmath instead of $.
+ * makeinfo/float.h: new section and section_name properties in
+ float_elt struct.
-Fri Oct 2 08:35:51 1992 Karl Berry (karl@cs.umb.edu)
+ * makeinfo/float.c (add_new_float): save current section number and
+ title for plain text output.
+ (cm_listoffloats): list floats with no_headers too, following
+ printindex @example.
- * texinfo.tex (\Egroup): Don't do the \strut and \nointerlineskip.
+2003-11-28 Alper Ersoy <dirt@gtk.org>
-Sat Sep 26 09:08:59 1992 Karl Berry (karl@cs.umb.edu)
+ * makeinfo/sectioning.h:
+ * makeinfo/sectioning.c (current_sectioning_number)
+ (current_sectioning_title): new functions.
- * texinfo.tex (\doignore, \enddoignore): New macros.
- (\ifinfo): Call \doignore.
- (\ifxinfoxxx): Deleted.
- (\ignore, \ifsetfail, \ifclearfail): use \doignore.
+ * makeinfo/sectioning.c (get_sectioning_number): moved space char at
+ the end of numbers to ...
+ (insert_and_underscore, sectioning_html): here.
+ (get_sectioning_number, insert_and_underscore): keep track of the last
+ number/title to be used by @float, @cindex like commands that need to
+ know in which section they are used.
- * texinfo.tex (\unnumbered): Expand the arg only once for the \message.
+2003-11-27 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\deftpparsebody, \parsetpheaderline): New macros.
- (\deftp): Call \deftpparsebody.
+ * makeinfo/cmds.c (cm_math): new function that encloses @math
+ statements in a math element in XML.
-Thu Sep 24 10:12:45 1992 Karl Berry (karl@cs.umb.edu)
+ * makeinfo/xml.c:
+ * makeinfo/xml.h: new element math.
- * texinfo.tex (\entry): Do \par first; add comments.
- (\short{chap,unnumbered}entry,\do{chap,sec,subsec,subsubsec}entry):
- Call \tocentry, instead of using \vbox.
- (\tocentry): New macro.
+2003-11-27 Alper Ersoy <dirt@gtk.org>
-Sat Sep 19 14:36:11 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * makeinfo/float.c (cm_listoffloats): made the layout in Info output
+ the same with indices.
- * texinfo.tex (\`, \'): Definitions deleted.
+2003-11-25 Alper Ersoy <dirt@gtk.org>
-Fri Sep 18 14:33:09 1992 Roland H. Pesch (pesch@cygnus.com)
+ * makeinfo/float.c (cm_listoffloats): generate a menu for Info, with
+ automatically shortened captions.
- * texinfo.tex (\ifset, \ifclear): Standardize catcode of space as
- for \ignore.
+2003-11-25 Alper Ersoy <dirt@gtk.org>
-Fri Sep 11 15:25:01 1992 Karl Berry (karl@hayley)
+ * makeinfo/cmds.c (cm_acronym): use acronym element for HTML.
+ Report from: Torsten Bronger <bronger@physik.rwth-aachen.de>
+ Tue, 25 Nov 2003 10:30:52 +0100.
- * texinfo.tex (\finalout): Move out of final section of file,
- which claims not to define new control words.
+2003-11-25 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\setleading): New macro.
- (outer level, @smallbook, @afourpaper): Call it, instead of
- setting \baselineskip directly.
+ * makeinfo/sectioning.c (cm_appendix): reset numbers only when
+ changing enum_marker.
- * texinfo.tex (\|): New definition for changebars.
+2003-11-25 Alper Ersoy <dirt@gtk.org>
-Tue Sep 1 17:32:48 1992 Karl Berry (karl@hayley)
+ * makeinfo/index.c (cm_printindex): made Appendix matching locale
+ aware.
- * texinfo.tex (\begindoublecolumns): Exactly double \vsize.
+2003-11-24 Alper Ersoy <dirt@gtk.org>
-Sat Aug 29 10:12:16 1992 Karl Berry (karl@hayley)
+ * makeinfo/index.c (cm_printindex): also catch Appendix and A.1 kind
+ of numbers with --no-headers Info output.
- * texinfo.tex (\group): Define \Egroup to use struts instead of
- letting TeX do its own interline spacing.
+2003-11-24 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\{remove,ignore}activespaces): New macros.
- (\end): Call \removeactivespaces; give the correct error messages;
- don't try to expand a nonexistent \E... macro.
+ * makeinfo/insertion.c (cm_example):
+ * makeinfo/xml.c (xml_insert_docbook_image, xml_begin_multitable):
+ moved common floatenv handling to ...
+ (xml_begin_docbook_float): here.
- * texinfo.tex (\EMsimple): End the help message with a period.
+ * makeinfo/insertion.c (end_insertion, cm_smallexample, cm_lisp)
+ (cm_smalllisp): insert FLOATEXAMPLE for Docbook if inside @float.
- * texinfo.tex (\gobble): New macro.
- (\lisp): Call it (instead of defining it every time).
- (\example, \smallexample): Define \E... within the macro.
+2003-11-24 Alper Ersoy <dirt@gtk.org>
-Tue Aug 25 11:56:26 1992 Roland H. Pesch (pesch@fowanton.cygnus.com)
+ * makeinfo/insertion.c (is_in_insertion_of_type): don't return the
+ level, as it is not useful.
+ (begin_insertion): instead of is_in_insertion_of_type, use
+ float_active.
- * texinfo.tex (\readauxfile): Make + normal while reading aux file.
+ * makeinfo/insertion.c (cm_example):
+ * makeinfo/xml.c (xml_insert_docbook_image, xml_begin_multitable):
+ insert empty label for @floats with no @anchor.
-Thu Aug 20 21:32:34 1992 Karl Berry (karl@hayley)
+2003-11-24 Karl Berry <karl@gnu.org>
- * texinfo.tex (\doublecolumnhsize): Compute value in
- \begindoublecolumns.
- (\afourpaper, \smallbook, <outer level>): Remove these (virtually
- identical) computations.
+ * doc/Makefile.am (EXTRA_DIST): remove no-longer-defined
+ noinst_SCRIPTS.
- * texinfo.tex (\doublecolumnvsize): Deleted.
- (\afourpaper, \smallbook): Don't compute it.
- (\begindoublecolumns): Just double \vsize here (thus decreasing
- the value considerably from the old value of 19.1in, which was far
- too large.)
+2003-11-24 Akim Demaille <akim@epita.fr>
-Fri Aug 14 10:16:42 1992 Karl Berry (karl@hayley)
+ * configure.ac (HELP2MAN): Look for it.
+ * doc/help2man: Remove.
+ * doc/Makefile.am (HELP2MAN, noinst_SCRIPT): Remove.
+ (common_mandeps): Don't depend on HELP2MAN which can be a complex
+ command such as "missing --run help2man.
- * texinfo.tex (\parseargx): Use \expandafter instead of
- \aftergroup to continue the processing.
- (\parsearglinex): Renamed to \parseargline, since the former
- \parseargline is no longer needed.
+2003-11-24 Karl Berry <karl@gnu.org>
- * texinfo.tex (\parseargline) Remove a trailing @c or @comment.
- (\argremovec, \argremovecomment): New macros.
+ * doc/texinfo.tex: doc/\global fixes.
-Thu Aug 6 11:28:55 1992 Roland H. Pesch (pesch@fowanton.cygnus.com)
+2003-11-24 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex: extended @set to define expandable vars;
- @value expands same. Auxiliary macros \setxxx, \setyyy
- used for @set.
+ * makeinfo/cmds.c: new command @listoffloats.
-Sun Aug 2 14:34:48 1992 Karl Berry (karl@hayley)
+ * makeinfo/float.c (count_floats_of_type_in_chapter): only count
+ floats with @anchors.
+ (cm_listoffloats): new function.
- * texinfo.tex (\entry): do line-breaking on the index entry.
+ * makeinfo/insertion.c (end_insertion): do not prepend float type and
+ number if no @anchors.
-Wed Jul 1 17:05:26 1992 Karl Berry (karl@claude.cs.umb.edu)
+2003-11-24 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\lparen, \rparen): new definitions.
- ((,[,],)): new global definitions for these four active
- characters, so parens and brackets can be used in @deffn names.
+ * makeinfo/xml.c:
+ * makeinfo/xml.h: new element listoffloats.
-Sat Jun 27 11:32:58 1992 Karl Berry (karl@hayley)
+2003-11-24 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\shortchaplabel): new macro to align chapter and
- appendix labels.
- (\shortchapentry): call it.
- (\shortappendixwidth): new dimen register.
+ * makeinfo/makeinfo.h: number sections by default.
-Wed Jun 24 09:45:34 1992 Karl Berry (karl@hayley)
+2003-11-24 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\afterenvbreak): make the same as \aboveenvbreak,
- so space below environments doesn't get lost.
- (\aboveenvskipamount): rename to \envskipamount, since it's used
- both above and below.
+ * makeinfo/makeinfo.c (cm_xref): if a reference is being made to a
+ float with only one parameter, use the float number in HTML, and
+ prepend it to the link in Info outputs.
-Wed Jun 24 09:45:34 1992 Karl Berry (karl@hayley)
+2003-11-24 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\group): do @comment at the end, to avoid excessive
- white space when called inside @group.
+ * makeinfo/float.h:
+ * makeinfo/float.c (get_float_ref): new function to retrieve a float's
+ number by its id.
-Wed Jun 24 16:36:04 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+2003-11-24 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\startcontents): End page before setting pageno.
+ * makeinfo/insertion.c (end_insertion): indent the first paragraph
+ after @float.
-Thu May 28 20:27:25 1992 Robert J. Chassell (bob@hill.gnu.ai.mit.edu)
+2003-11-24 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\vtable): Like @ftable, but for variables.
+ * makeinfo/cmds.c: new commands @float and @caption.
-Fri May 22 07:04:32 1992 Karl Berry (karl@hayley)
+ * makeinfo/insertion.h: new environment floatenv.
- * texinfo.tex (\w): do \leavevmode before the \hbox.
+ * makeinfo/insertion.c (cm_float, cm_caption): new functions.
+ (begin_insertion, end_insertion): handle floatenv.
-Sat May 16 11:16:27 1992 Karl Berry (karl@hayley)
+ * makeinfo/xml.c:
+ * makeinfo/xml.h: new elements float, floattype, caption, floattable,
+ floatfigure, floatexample.
- * texinfo.tex (\smallbook): decrease \topskip somewhat.
+ * makeinfo/insertion.c (cm_example):
+ * makeinfo/xml.c (xml_insert_docbook_image, xml_begin_multitable):
+ insert label and id attributes, title element for docbook if used
+ inside @float.
+
+ * makeinfo/xml.c: replacements for multitable and informalfigure.
+ (xml_insert_element_with_attribute): special-cased float element for
+ docbook to make it appear in element stack and thus enable element
+ replacements inside floatenv.
+
+2003-11-24 Alper Ersoy <dirt@gtk.org>
+
+ * makeinfo/float.c:
+ * makeinfo/float.h: new files for float environment functions.
+
+ * makeinfo/Makefile.am: added new files to makeinfo_SOURCES.
+
+2003-11-24 Alper Ersoy <dirt@gtk.org>
+
+ * makeinfo/makeinfo.c (cm_xref): xstrdup the result from
+ xml_get_assoc_for_id, as it gets freed later.
+
+ * makeinfo/xml.c (xml_get_assoc_for_id, xml_associate_title_with_id):
+ reimplemented unnumbered_labels handling.
+ (xml_insert_docbook_image): Docbook expects format attribute values to
+ be uppercase.
+
+2003-11-23 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex: doc fix for multitable.
+ * util/gendocs.sh: docbook support, from Simon Josefsson.
+
+ * doc/texinfo.tex (\defttsl): new font.
+ (\df): set ttsl too.
+ (\deffngeneral,\deftypefngeneral,\deftypecvgeneral,
+ \deftypheader): call \ampdefunargs or \normaldefunargs.
+ (\normaldefunargs): new macro, typesetting defun
+ args in ttsl (instead of sl).
+ (\ampdefunargs): treat & specially and then call \normaldefunargs.
+ (\defname): typeset defun name in tt (instead of bf).
+
+ * doc/texinfo.tex: uniformly comment out eol with {% at macro
+ starts.
+
+2003-11-23 Alper Ersoy <dirt@gtk.org>
+
+ * makeinfo/insertion.c (is_in_insertion_of_type): return the level
+ where the insertion is found.
+
+ * makeinfo/makeinfo.c (search_forward_until_pos): new function that
+ sets search_forward boundary.
+ (text_expansion): also reset docbook.
+
+ * makeinfo/sectioning.h:
+ * makeinfo/sectioning.c (current_chapter_number): new function that
+ returns top level chapter numbers.
+ (handle_enum_increment): always do the incrementation. but return
+ strings conditionally.
+
+ * makeinfo/xml.c: changed screen element's contained_in_para to 0 for
+ Docbook. @lisp/@smalllisp create programlisting.
+ (xml_insert_quotation): reimplemented quotation_stack handling.
+
+2003-11-22 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.tex (\tocentry): same as \entry, no second 1pt of
+ stretch. And a couple doc fixes.
+
+ * doc/texinfo.txi (Conventions): finally, get rid of @vskip
+ -@baselineskip kludge, we handle index entries after @item's now.
+
+2003-11-22 Stepan Kasal <kasal@ucw.cz>
+
+ * doc/texinfo.txi: use new @quotation feature.
+
+ * texinfo.tex (\putwordDeftypevar, \putwordDeftypefun): Remove.
+ * txi-cs.tex, txi-de.tex, txi-en.tex, txi-es.tex, txi-fr.tex,
+ txi-it.tex. txi-nl.tex, txi-no.tex, txi-pl.tex, txi-pt.tex,
+ txi-tr.tex: The same.
+ [texinfo-20031120-deftype-del.patch]
+
+ * doc/texinfo.tex (\verbatim,\Everbatim): remove one extra level
+ of grouping; move two lines of code ...
+ (\setupverbatim): ... here.
+ (\doverbatiminclude): just call the new \setupverbatim.
+ (\setupverbatiminclude): remove.
+ [texinfo-20031121-verbatim2.patch]
+
+ * doc/texinfo.tex (\math): no need for \mathcode, and we actually
+ can use $ not \implicitmath.
+ [texinfo-20031121-math.patch]
+
+ * doc/texinfo.tex (\zeroskipmacro): new macro, so we can
+ check for true zero skip.
+ (\dosubindsanitize): use it.
+ [texinfo-20031120-zeroskip.patch]
+
+ * doc/texinfo.tex (\doignore): scan in verbatim mode. Without this,
+ if the last line of ignored text ended with ``@'', the ``@end ifxxx''
+ tag was missed.
+ (\dodoignore): use \_STOP_ instead of \ST@P.
+ [texinfo-20031120-ignore-at.patch]
+
+ * doc/texinfo.tex (\defparsearg): new macro, to simplify places
+ where the user macro just calls \parsearg. Use it in many places.
+ [texinfo-20031121-defparsearg.patch]
+
+ * doc/texinfo.tex (\begin): remove, this is undocumented
+ and unused.
+ [texinfo-20031121-begin.patch]
+
+ * doc/texinfo.tex (\title,\subtitle,\author,...): move to outer
+ level (was inside \titlepage), it's more readable than nested
+ definitions.
+ [texinfo-20031116-titlepage1.patch]
+
+ * doc/texinfo.tex (\evenheadingxxx,\oddfootingyyy): might as well
+ use \ and avoid changing catcode of @.
+ [texinfo-20031116-catofat.patch]
+
+ * doc/texinfo.tex (\set): use new macros: \parseargusing and
+ \makecsname.
+ [texinfo-20031116-set.patch]
+
+ * doc/texinfo.tex (\cartouche): avoid \par if we are already in
+ vertical mode, in case it has an effect, eg. in an @example;
+ avoid extra space from the @cartouche line itself.
+ (\Ecartouche): force vertical mode, so that the \kern has the desired
+ effect.
+ [texinfo-20031120-cart.patch]
+
+ * doc/texinfo.tex (\ptexfootnote,\ptexinsert): save orig definitions.
+ (\startsavinginserts): new macro (with relatives), call from
+ \cartouche, \group, \table.
+ [texinfo-20031118-saveins.patch]
+
+ * doc/texinfo.tex (\table, \ftable, \vtable, \tablex, \tabley,
+ \tablez): Cleaned up indentation, etc.
+ (\kitem, \kitemx, \xitem, \xtemx, \description): Removed; they
+ didn't look as if they would work in their present state, anyway.
+ [texinfo-20031114-table.patch]
+
+ * doc/texinfo.tex (\filenamecatcodes): new macro.
+ (\include,\verbatiminclude): use it, with new \parseargusing.
+ (\pushthisfilestack,etc.): implement our own stack of filenames
+ instead of reading the @include argument in a group.
+ [texinfo-20031109-include.patch]
+
+ * doc/texinfo.tex (\indexbreaks): remove, and remove call.
+ (\entry): read arguments on the fly, to avoid fixing catcodes.
+ [texinfo-20031121-indexbreaks.patch]
+
+ * doc/texinfo.tex (\makevalueexpandable): new macro.
+ Change occurrences of \let\value=\expandablevalue to use it,
+ to reduce code duplication.
+ [texinfo-20031121-value.patch]
+
+ * doc/texinfo.tex (\parsedefunlineX,\defunchkspace,defunchktab,
+ \defunloop,\defunchkfinish,\replaceeols): New macros.
+ (\parsedefunline): start them off. This is to support continuations
+ lines for @defun headers.
+ [texinfo-20031108-defun-cont.patch]
+
+ * doc/texinfo.tex (\defun and all related commands):
+ rewrite to use \parsearg and uniform command generation.
+ (\makecsname): New macro, to be used within \edef's only.
+ [texinfo-20031120-defun.patch]
+
+ * doc/texinfo.tex (=, \equalChar): remove active definition of =
+ and hacks that printed = in \tt sometimes. We want to print
+ everything in \tt anyway, ultimately.
+ [texinfo-20031120-defun-pres3.patch]
+
+ * doc/texinfo.tex (\defopheader,\defcvarheader,defivarheader):
+ use \code for the class name.
+ [texinfo-defun-pres2.patch]
+
+ * doc/texinfo.tex (\parsearg): Reset the catcode of space before
+ we scan the argument; so we don't have to worry about
+ obeyed spaces before and after the argument.
+ (\parseargx, \parseargy): Nuke, it was wrong anyway--\obeyedspace,
+ which is a macro, was compared with \temp which could have been let
+ to an obeyed space, but it couldn't be a macro.
+ (\removeactivespaces,\removeactivespacesX,\removeactivespacesY): Nuke.
+ (\argremovespace): If the argument scanned by \parsearg ends with
+ a space, remove it.
+ [texinfo-20031108-parsearg-space.patch]
+
+ * doc/texinfo.tex: use \other, for clarity and efficiency;
+ use `\^^M instead of raw number 13.
+ [texinfo-20031108-other.patch]
+
+ * doc/texinfo.tex (\doverbatim): \xdef and \gobble, to avoid
+ the active space between `\end' and `verbatim'.
+ [texinfo-20031120-verbatim.patch]
+
+ * doc/texinfo.tex (\quotationlabel): new macro to print label,
+ with a \bf space.
+ (\quotation): change call so \parsearg is at the end.
+ [texinfo-20031118-quot.patch]
+
+2003-11-21 Alper Ersoy <dirt@gtk.org>
+
+ * makeinfo/makeinfo.c (cm_xref): removed the warning about
+ @xrefs to @unnumbered sections, as there are many situations where
+ there is no way to fix them.
+
+ * makeinfo/insertion.c: removed lingering titlepage_cmd_present
+ declaration.
- * texinfo.tex (\group): use \vtop instead of \vbox.
+2003-11-21 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\newlinechar): define for use in help strings.
- (\groupinvalidhelp): define this for use with \errhelp.
- (\group): set \errhelp to above.
+ * makeinfo/cmds.c (cm_titlepage, cm_titlepage_cmds): moved to ...
+ * makeinfo/insertion.c: here.
-Thu Apr 30 16:19:17 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * makeinfo/cmds.h (titlepage_cmd_present): moved to ...
+ * makeinfo/makeinfo.h: here.
- * texinfo.tex (\need): Rewritten by karl.
+ * makeinfo/insertion.c (is_in_insertion_of_type): new function to
+ query insertion_stack to see if we are inside a given insertion type.
-Sat Apr 18 16:24:00 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * makeinfo/makeinfo.h:
+ * makeinfo/insertion.c (begin_insertion, end_insertion):
+ * makeinfo/xml.c (xml_add_char):
+ * makeinfo/xml.h: removed xml_in_copying and inside_titlepage_cmd
+ global variables in favor of the new query function.
- * texinfo.tex (\exdentamount): New var, set by environments.
- (\exdent, \exdentyyy): Define suitably for filled environments.
- Always exdent by innermost indentation step.
- (\nofillexdent, \nofillexdentyyy): Alternates for nofill envs.
- (\lisp, \smalllispx, \display): Set \exdent to \nofillexdent.
+2003-11-21 Alper Ersoy <dirt@gtk.org>
-Thu Apr 2 15:04:15 1992 Robert J. Chassell (bob@kropotkin.gnu.ai.mit.edu)
+ * makeinfo/makeinfo.c (discard_until, execute_string): reworded
+ multiline related error messages.
+ (discard_until): rollback input_text_offset only if not dealing with a
+ multiline error, otherwise the same block gets in the way repeatedly.
- * texinfo.tex (\Esmalllisp): Smaller baseline skip for smallexamples.
+2003-11-21 Alper Ersoy <dirt@gtk.org>
-Sun Mar 29 20:44:49 1992 Brendan Kehoe (brendan@cs.widener.edu)
+ * makeinfo/xml.h:
+ * makeinfo/xml.c (xml_get_assoc_for_id, xml_associate_title_with_id):
+ new functions.
+ (xml_insert_indexentry): call execute_string(xref) instead of creating
+ references directly.
- * texinfo.tex (\startcontents): Always close contentsfile and
- adjust the page.
+ * makeinfo/makeinfo.c (cm_xref): check to see if xref is being made to
+ an @unnumbered, and only one argument is given. issue a warning, use
+ @unnumbered's title as the third argument.
-Fri Mar 27 17:41:52 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * makeinfo/sectioning.c (sectioning_underscore): keep track of
+ unnumbered sections, and their node names.
- * texinfo.tex (\chapternofonts): Deal with \result, \equiv, etc.
+2003-11-21 Alper Ersoy <dirt@gtk.org>
-Sat Mar 21 08:22:29 1992 Karl Berry (karl at hayley)
+ * makeinfo/sectioning.c (sectioning_underscore): for Docbook, always
+ provide label attribute for chapter and unnumbered.
+ (handle_enum_increment): simplified enumeration constraints, and
+ changed to follow TeX way. Moved marker handling to ...
+ (cm_chapter, cm_unnumbered, cm_appendix): here.
+ (cm_appendix): restart numbering.
- * texinfo.tex (\entry): format entries better if the page number
- and entry text don't fit on one line.
+2003-11-21 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\loggingall, \gloggingall): new macros to help with
- debugging.
+ * makeinfo/insertion.h:
+ * makeinfo/insertion.c: new rawdocbook and rawxml insertion types to
+ provide better block names in error messages (instead of "rawhtml" for
+ everything.)
+ (current_item_function, insertion_type_pname, find_type_from_name)
+ (begin_insertion, end_insertion, discard_insertions, cm_docbook)
+ (cm_xml, cm_item): honor new types.
-Fri Mar 20 15:35:42 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+2003-11-21 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\result, \expansion, \print, \equiv):
- Don't copy prefabricated boxes; must adapt to current font.
- (\dblarrowbox, \longdblarrowbox, \pushcharbox, \equivbox): Deleted.
- (\bullbox): Deleted.
+ * makeinfo/makeinfo.c (cm_image): issue only a warning instead of an
+ error when .txt file is unreadable, to better comply with the manual.
-Thu Mar 19 22:17:14 1992 Robert J. Chassell (bob@kropotkin.gnu.ai.mit.edu)
+2003-11-21 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\widowpenalty, \clubpenalty): Set them to 10000, since
- 8000 did not work.
+ * makeinfo/sectioning.c (sectioning_underscore): insert label="" only
+ when the output format is Docbook.
-Fri Mar 6 13:26:36 1992 Robert J. Chassell (bob@kropotkin.gnu.ai.mit.edu)
+2003-11-21 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\widowpenalty, \clubpenalty): Set them to 8000, since
- 2000 did not work (but \widowpenalty at 20000 did work).
+ * makeinfo/insertion.c (cm_end): get rest of the line before returning
+ in case of error, so the parameter to @end does not get leaked into
+ the output document.
-Thu Feb 27 12:27:14 1992 Karl Berry (karl@wombat.gnu.ai.mit.edu)
+ * makeinfo/makeinfo.c (discard_until): when the expected string is not
+ found, check to see if we are looking for @end, and if so issue a more
+ descriptive error message.
+ (execute_string): keep track of insertion stack to catch multiline
+ commands where they are not allowed.
+ Report from: Dumas Patrice <dumas@centre-cired.fr>, Wed, 18 Jun 2003
+ 09:41:56 +0200.
- * texinfo.tex (\widowpenalty): set to 2000, not 20000.
+2003-11-21 Alper Ersoy <dirt@gtk.org>
-Sat Feb 8 14:34:45 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * makeinfo/multi.c (multitable_item): start <tbody> immediately if
+ this a regular @item, and first in the table
- * texinfo.tex (\widowpenalty, \clubpenalty): Set them to 2000.
- (\itemizeitem): Use penalty 1200.
- (\itemzzz): Add \nobreak near beginning.
+2003-11-19 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\quotation): Increase right margin, instead of
- left margin twice.
+ * makeinfo/footnote.c (output_pending_notes): always output footnotes
+ with in_fixed_width_font = 0, so entity substitutions can take place.
-Wed Feb 5 12:08:30 1992 Karl Berry (karl at hayley)
+2003-11-19 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\alphaenumerate, \capsenumerate): redefine as a call
- to \enumerate.
- (\{lower,upper}caseenumerate): Rename from \{alpha,caps}enumerate.
+ * makeinfo/footnote.c (cm_footnote, output_pending_notes): provide
+ back link from footnote marker.
-Sun Feb 2 21:07:19 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+2003-11-19 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\itemzzz): Compensate in line-by-itself case for
- a table that is indented.
+ * makeinfo/insertion.c (cm_insert_copying): remove blockquote from
+ copying_text when inside bookinfo and the output format is Docbook.
-Mon Jan 13 21:04:07 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+2003-11-19 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex: Use 26 instead of control-z as character constant.
+ * makeinfo/makeinfo.c (cm_value): return immediately instead of
+ just suppressing bogus warnings.
-Sat Jan 11 02:20:58 1992 Roland McGrath (roland@albert.gnu.ai.mit.edu)
+2003-11-19 Alper Ersoy <dirt@gtk.org>
- * gpl.texinfo: Unfilled Yoyodyne example.
+ * makeinfo/makeinfo.c (cm_value): do not issue bogus warnings about
+ undefined values when @value is used inside a @menu environment, and
+ the output format is Docbook.
-Sat Dec 7 16:16:54 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+2003-11-19 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\cartouche): Set \nonarrowing.
- (\lisp, \smalllisp, \quotation, \display): If set, don't narrow.
+ * makeinfo/sectioning.c (sectioning_underscore): use @settitle value
+ if @top parameter is empty.
-Mon Dec 2 08:15:08 1991 Karl Berry (karl at hayley)
+2003-11-19 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\itemzzz): don't start a paragraph if the item text
- is on a line by itself; don't allow a page break after that
- line; always do \par before typesetting anything.
+ * makeinfo/xml.c (xml_begin_index): make sure we are removing the
+ label attribute and not something else.
-Tue Nov 26 15:13:13 1991 Roland McGrath (roland@albert.gnu.ai.mit.edu)
+2003-11-19 Alper Ersoy <dirt@gtk.org>
- * lgpl.texinfo: @ifset lgpl-appendix, use @appendix instead of
- @unnumbered.
+ * makeinfo/sectioning.c (get_sectioning_number): do not append space
+ with Docbook.
+ (sectioning_underscore): insert label attribute to make
+ distinction between chapter and unnumbered in Docbook.
+ (handle_enum_increment): also increment for Docbook.
-Sun Nov 10 12:00:06 1991 Karl Berry (karl at hayley)
+ * makeinfo/xml.c (xml_begin_index): remove label attribute from index
+ element.
- * texinfo.tex (\doprintindex): only \read if the file existed;
- \closein the test stream in all cases.
- (\initial, \entry): do not \outer, so that \read does not get an
- error if the index exists.
+2003-11-18 Karl Berry <karl@gnu.org>
-Fri Nov 8 18:13:28 1991 Michael Bushnell (roland@churchy.gnu.ai.mit.edu)
+ * cmds.c (command_table): new commands @deftypecv, @deftypecvx.
+ * defun.c, insertion.[ch], xml.c: implement them.
- * texinfo.tex (\itemizey): missing %'s in macro defn.
- Also, add \begingroup; accidentally deleted by Karl Berry.
+2003-11-18 Alper Ersoy <dirt@gtk.org>
-Thu Nov 7 11:41:25 1991 Karl Berry (karl at hayley)
+ * makeinfo/makeinfo.c (execute_string): better para handling in case
+ of nested executions.
- * texinfo.tex (\doprintindex): \read from the index file to make
- \ifeof true when the file exists but is empty.
+2003-11-18 Karl Berry <karl@gnu.org>
-Tue Nov 5 08:29:13 1991 Robert J. Chassell (bob at grackle)
+ * doc/texinfo.txi (Multi-column Tables): include cmd name in
+ section name.
+ (Multitable Rows): use @headitem in example.
- * texinfo.tex (@thischaptername): Provide default value for when
- @chapter not defined.
+2003-11-17 Alper Ersoy <dirt@gtk.org>
-Sat Nov 2 17:59:02 1991 Karl Berry (karl at hayley)
+ * makeinfo/xml.c (xml_begin_document): upgraded docbook DTD to Docbook
+ XML 4.2.
- * texinfo.tex (\itemizezzz): do \begingroup here, since \itemizey
- can't any longer.
+ * makeinfo/makeinfo.c (cm_xref):
+ * makeinfo/xml.c (xml_insert_docbook_image, xml_insert_indexentry)
+ (xml_begin_multitable): close previously open-tag-only elements.
-Tue Oct 29 12:17:41 1991 Robert J. Chassell (bob at grackle)
+2003-11-17 Karl Berry <karl@gnu.org>
- * texinfo.tex: @paragraphindent defined as a no op.
+ * bootstrap: honor environment variables.
-Fri Oct 25 15:19:47 1991 Karl Berry (karl at hayley)
+2003-11-17 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\enumeratey): allow any lowercase letter, uppercase
- letter, or number as argument; initialize \itemno and begin the
- environment's group here.
- (\itemizey): don't initialize \itemno here.
- (\numericenumerate, \startenumeration): new macro.
+ * makeinfo/makeinfo.c (execute_string): end paragraphs if
+ executing @copying text with xml.
-Wed Oct 23 16:26:30 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * makeinfo/xml.c: disallow nested quotations, legalnotice in abstract,
+ and samp in var with Docbook.
- * texinfo.tex (\ifclear, \ifset): Remove \outer.
+2003-11-17 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\afourpaper): Set various parameters.
+ * makeinfo/insertion.c (begin_insertion): keep @copying state.
+ use legalnotice instead of abstract for @copying.
+ (cm_insert_copying): removed redundant work arounds.
-Tue Oct 22 18:42:31 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+ * makeinfo/makeinfo.c (execute_string): try to keep tags balanced with
+ Docbook and xml.
- * texinfo.tex (\alphaenumerate, \capsenumerate):
- Let @end enumerate end these.
- (\Ealphaenumerate, \Ecapsenumerate): Aliases for \Eenumerate.
+ * makeinfo/xml.c
+ (xml_current_stack_index, xml_end_current_element): new functions.
+ (xml_add_char): enclose @copying text in a quotation element with
+ Docbook.
-Sun Oct 20 18:23:18 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+2003-11-17 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\mainmagstep): New parameter macro.
- (Defining fonts): Use that parameter to scale them.
- If \bigger is defined, use 12 point fonts.
+ * makeinfo/cmds.c (cm_settitle): do not automatically start bookinfo
+ element after settitle.
-Tue Sep 24 00:30:07 1991 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
+2003-11-17 Alper Ersoy <dirt@gtk.org>
- * texi2dvi: Iterate over the right variable to look for new idx files.
+ * makeinfo/xml.c (xml_synindex): new function to keep track of index
+ redirections.
+ (xml_insert_indexterm): added a check to see if any index
+ redirections are made.
- * texi2dvi: GPL 2.
+ * makeinfo/index.c (cm_synindex): let xml_synindex() handle xml part.
- * texi2dvi: Fix 2nd invocation of texindex to pass right args.
+2003-11-17 Alper Ersoy <dirt@gtk.org>
-Wed Sep 11 20:52:42 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+ * makeinfo/makeinfo.c (cm_uref):
+ * makeinfo/xml.c: use ulink for @uref with Docbook.
- * texinfo.tex (\cartouche): New macro.
+2003-11-16 Karl Berry <karl@gnu.org>
-Fri Aug 23 16:13:46 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+ * util/install-info.c: protoize.
+ * util/texindex.c: protoize.
+ * util/dir-example (protoize,unprotoize): add.
- * texinfo.tex (\section, \subsection, \subsubsection):
- Initially define for numbered chapters.
+ * doc/texinfo.tex (\everytab): new \toks.
+ (\headitem): use it to typeset in bold.
+ (\item): reset it.
-Fri Aug 2 01:46:09 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+2003-11-15 Karl Berry <karl@gnu.org>
- * texinfo.tex (\footnote): Use \unskip instead of \removelastskip.
+ * doc/texinfo.txi (quotation): document it.
+ * doc/texinfo.tex (\quotation): accept optional argument.
+ (\doquotation): new macro to test for and typeset it.
-Mon Jul 29 14:06:54 1991 Roland H. Pesch (pesch at cygint.cygnus.com)
+ * doc/texinfo.txi (Multitable Rows): document @headitem.
- * texinfo.tex (\majorheadingzzz, \chapheadingzzz, \chfplain,
- \unnchfplain, \unnchfopen, \secheadingi, \subsecheadingi,
- \subsubsecheadingi): allow line breaks in headings.
- (\shortchapentry, \shortunnumberedentry, \dochapentry, \dosecentry,
- \dosubsecentry, \dosubsubsecentry): allow line breaks in table of
- contents entries.
+ * doc/texinfo.tex (\headitem): error by default, redefine inside
+ @multitable (= \dotable). New command suggested by Arnold.
-Thu Jul 18 19:01:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+2003-11-15 Akim Demaille <akim@epita.fr>
- * texinfo.tex (\secfonts, \indexfonts): Fix typos.
+ * util/texi2dvi (fatal): New function. Use it.
+ (txiversion): Be robust to broken texinfo.tex.
-Sun Jul 7 16:36:28 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+ * doc/texinfo.txi (example): mention use of @r for annotations.
- * texinfo.tex (\afourpaper): New command.
+2003-11-15 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\numberedsec): Renamed from \section.
- (\numberedsubsec): Renamed from \subsection.
- (\numberedsubsubsec): Renamed from \subsubsection.
- (\chapter, \appendix, \unnumbered): Define \section, \subsection,
- and \subsubsection here according to type of chapter.
+ * makeinfo/cmds.c: new command @headitem.
-Thu Jul 4 14:19:32 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+ * makeinfo/insertion.c (cm_headitem): new function.
- * texinfo.tex (\defvarparsebody, \defvrparsebody, \defopvarparsebody):
- New functions.
- (\defvar, \defvr, \defopt, \defcv, \defivar): Use them.
- (\deftypevar, \deftypevr): Likewise.
+ * makeinfo/insertion.h: new variables to keep head item state.
-Mon Jul 1 13:49:25 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+ * makeinfo/multi.c (multitable_item, end_multitable):
+ * makeinfo/xml.c (xml_end_multitable_row, xml_end_multitable):
+ insert thead element if @headitem is used.
+
+ * makeinfo/xml.h: new element THEAD.
- * texinfo.tex (\group): Report error if used outside @example, etc.
+ * makeinfo/texinfo.dtd: updated multitable structure.
- * texinfo.tex (\defname): Reduce \leftskip
- to cancel temporarily the increase made in \defparsebody.
+ * NEWS: announced @headitem.
- * texinfo.tex (\enumerate): Allow optional arg to specify type
- of counting.
+2003-11-14 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\set, \clear): New commands.
+ * makeinfo/makeinfo.c (cm_xref): make use of third and fifth arguments
+ of @xref with Docbook.
-Mon Jun 24 12:22:44 1991 Roland McGrath (roland@albert.gnu.ai.mit.edu)
+ * makeinfo/xml.c: use Docbook citetitle for @cite.
- * texinfo.tex (\eleterate): Renamed to \alphaenumerate. Sigh.
- (\ecapitate): Likewise \capsenumerate.
+2003-11-13 Karl Berry <karl@gnu.org>
-Thu Jun 6 20:02:48 1991 Roland McGrath (roland@geech.gnu.ai.mit.edu)
+ * doc/texinfo.tex: doc fixes.
- * lgpl.texinfo: Created from /fsf/rms/gnuorg/lgpl.text.
+ * configure.ac, NEWS: autoconf 2.59.
- * gpl.texinfo: Created from /fsf/rms/gnuorg/gpl.text (GPL v2).
+2003-11-13 Akim Demaille <akim@epita.fr>
- * texinfo.tex (\eleterate, \ecapitate): New commands, like @itemize,
- but with [a..z] or [A..Z] instead of [1..n].
+ * configure.ac: Use AC_CHECK_DECLS, not txi_CHECK_DECLS.
+ Also use # instead of dnl for comments.
+ * acinclude.m4: Remove.
-Tue May 21 15:46:32 1991 Karl Berry (karl at hayley)
+2003-11-14 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\dmn): new command to typeset a dimension.
+ * makeinfo/cmds.c (cm_noindent): output continued paragraphs with
+ docbook and xml only when @noindent command is used.
+ (cm_noindent_cmd): new function. Patch from Arnold Robbins
+ <arnold@skeeve.com>, 13 Nov 2003 15:43:02 +0200.
-Tue May 21 20:58:22 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+2003-11-11 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\doind, \dosubind): Make new group around \indexdummies
- and most of body, excluding the \penalty commands.
+ * makeinfo/cmds.c (cm_i, cm_b, cm_r): do not use lineannotation if we
+ are printing indices.
-Mon May 20 21:16:32 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+ * makeinfo/insertion.c (cm_insert_copying): removed unnecessary xml
+ fix.
- * texinfo.tex (\tex): Typo in redefining \@.
+ * makeinfo/texinfo.dtd: added OElig and oelig entities.
- * texinfo.tex (\_): Use \lvvmode, not \leavevmode.
- (\lvvmode): New macro.
+2003-11-11 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\authorrm, \titlerm): Move to after section fonts.
+ * makeinfo/cmds.c (cm_sp): disabled parameter expansion.
-Tue May 14 21:13:29 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+2003-11-10 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\defunargs): Set \hyphenchar in \tensl, not \sl.
+ * makeinfo/cmds.c:
+ * makeinfo/insertion.c (cm_html): do not process @xml blocks.
+ (cm_xml): new function to process @xml.
-Thu May 9 17:07:08 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+ * makeinfo/xml.c (xml_start_para, xml_end_para): skip para handling in
+ footnote.
+ (xml_insert_footnote): keep state in xml_in_footnote variable.
- * texinfo.tex (\ignore): Standardize catcode of space.
+ * makeinfo/texinfo.dtd: updated settitle definition.
-Wed May 8 13:49:45 1991 Karl Berry (karl at hayley)
+2003-11-10 Karl Berry <karl@gnu.org>
- * texinfo.tex (\sffam, \sf): New macros; support sans serif
- type style in math.
- (top level): Set up \textfonts early on, so we can create boxes w/ it.
- (\tenrm...\tensf): Define these to be \textrm...\textsf instead.
- (\df, \textfonts, \chapfonts, \secfonts, \subsecfonts):
- (\indexfonts): Redefine \tenrm (etc.) instead of just \rm, so that
- the math family assignment doesn't get lost; call \resetmathfonts.
- (\resetmathfonts): New macro; redefines \textfont of each math family.
- (\indsc, \indi, \indsy \chapsc, \chapi, \chapsy, \secsc, \seci):
- (\secsy, \ssecsc, \sseci, \ssecsy): New font definitions.
+ * doc/texinfo.txi (Output Formats): rewrite to fix underfull
+ boxes.
-Mon May 6 21:30:19 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+2003-11-10 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\indexdummies): Write \_ when an _ is seen.
+ * doc/texinfo.tex (\commondummies): added registeredsymbol.
-Mon Apr 29 01:41:44 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+2003-11-09 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\defname): Use \dimen2, \dimen3 for outer margins.
- Use outer margins for influencing \rightline.
- (\tclose, \key, \t): Turn off line breaks at hyphens.
+ * makeinfo/makeinfo.c (main): fixed a segfault with --html
+ --no-header.
-Fri Apr 12 03:12:14 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+2003-11-09 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\authorrm): Move definition to top level; copy \secrm.
+ * makeinfo/html.c (html_output_head): output node name in title first.
-Tue Apr 2 22:48:39 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+2003-11-09 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\defname): Adjust size of \rlap box, not \dimen0
- or \dimen1, for current width.
+ * makeinfo/xml.c:
+ * makeinfo/xml.h: new Docbook elements for quotation: tip, note,
+ important, warning, caution.
- * texinfo.tex (\Yappendixletterandtype): End with {}.
+ * makeinfo/xml.c: better font tags for Docbook.
+ (xml_insert_quotation): new function that is aware of specialized
+ Docbook elements for quotation.
+ (xml_insert_entity): use add_char() instead of insert() for correct
+ paragraph handling.
-Sat Mar 30 16:13:25 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+ * makeinfo/insertion.c (begin_insertion, end_insertion): use
+ xml_insert_quotation() for quotations.
+ (cm_quotation): removed quotation element insertion.
+ (cm_insert_copying): also work around xml tags.
- * texinfo.tex (\xrefX): Really use \cite.
- (\inforefzzz): Use \samp for node name.
+ * makeinfo/cmds.c (cm_b): really use bold with Docbook.
- * texinfo.tex (\defname): Use current width for \dimen0, \dimen1.
+ * NEWS: @quotation changes.
- * texinfo.tex (\doprintindex): Put lots of whitespace before index.
+2003-11-08 Karl Berry <karl@gnu.org>
-Fri Mar 29 17:00:58 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+ * doc/texinfo.txi (registeredsymbol): new node.
- * texinfo.tex (\xrdef): Take out last change.
+ * doc/Makefile.am (HELP2MAN): invoke explicitly from $(srcdir), in
+ case . is not in PATH.
- * texinfo.tex (\needx): Turn off \baselineskip. Use kern, and no glue.
+ * configure.ac (AC_CONFIG_HEADERS): apparent AM_CONFIG_HEADERS is
+ obsolete now, and we get to use AC_CONFIG_HEADERS again.
- * texinfo.tex (\shortcontrm): Renamed from \truesecrm.
- (\shortcontbf, \shortcontsl): New fonts for short contents lines.
- (\summarycontents): Use them.
+ * doc/texinfo.txi (Fonts): mention <lineannotation> feature in
+ Docbook feature.
- * texinfo.tex (\defname): Don't set \leftskip to 0; just decrease by
- one indent level.
- (\defparsebody, \def*parsebody): Increment both margins by one level.
+ * doc/texinfo.txi (itemx): warn not to use blank lines between
+ @itemx's.
-Tue Mar 26 22:41:38 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+2003-11-08 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\xrdef): Change catcode before reading args.
+ * makeinfo/cmds.c (cm_i, cm_b, cm_r): for Docbook, use <lineannotation>
+ in @example-like environments.
+ (cm_r): For HTML use <span> to make sure we always get roman text.
-Wed Mar 20 14:21:57 1991 Roland McGrath (roland at geech.gnu.ai.mit.edu)
+ * makeinfo/xml.c:
+ * makeinfo/xml.h: new docbook element <lineannotation>. Added also to
+ replace_elements to avoid nesting.
- * texi2dvi: Use p modifier in sed -n command, so it works.
- Duplicate code to find the index files, instead of being smart in
- one place and dumb in another.
+2003-11-08 Alper Ersoy <dirt@gtk.org>
-Thu Mar 7 17:08:32 1991 Richard Stallman (rms at mole.ai.mit.edu)
+ * doc/texinfo.txi (Custom Headings): removed a newline that broke
+ Docbook output.
- * texinfo.tex (\defaultparindent): New variable.
- (\footnotezzz): Reset \parindent to default.
- (\xrefX): Use \cite for printed manual and node names.
+ * NEWS:
+ * makeinfo/cmds.c: new command @registeredsymbol
-Tue Mar 5 13:39:34 1991 Richard Stallman (rms at mole.ai.mit.edu)
+ * makeinfo/cmds.c (cm_registeredsymbol): new function.
+ (cm_code): fixed in_fixed_width_font adjustment for XML and Docbook
+ outputs.
+ (cm_noindent, cm_indent): set xml_no_indent as well.
- * texinfo.tex (\emergencystretch feature): Use \thisisundefined.
+ * makeinfo/makeinfo.c (reader_loop): use entities for double quotes
+ and dashes in HTML, XML and Docbook outputs.
-Mon Mar 4 00:35:57 1991 Richard Stallman (rms at mole.ai.mit.edu)
+ * makeinfo/multi.c (setup_multitable_parameters): convert
+ @columnfractions to integer percentages (original code from Arnold
+ Robbins <arnold@skeeve.com>.)
+ (multitable_item, cm_tab): add width attribute to <td> element if
+ @columnfractions is used.
- * texinfo.tex (\ftablex): Define \Eftable; undefine \Etable.
+ * makeinfo/texinfo.dtd: added an optional role attribute to para
+ element (used for @noindent.) New attributes ldquo, rdquo, ndash,
+ mdash, registered.
- * texinfo.tex (\footnote): Discard preceding whitespace.
+ * makeinfo/xml.c: replaced repeated command element with more
+ appropriate Docbook elements in docbook_element_list.
+ (xml_start_para, xml_end_para): new functions to centralize paragraph
+ handling.
- * texinfo.tex: Use the \emergencystretch feature if available.
+ * makeinfo/xml.h: new variable xml_no_indent.
-Fri Feb 22 03:50:58 1991 Richard Stallman (rms at mole.ai.mit.edu)
+2003-11-07 Karl Berry <karl@gnu.org>
- * texinfo.tex (\tex): Make + not active.
+ * bootstrap: run the various auto* tools we need instead of
+ autoreconf, which copies in older versions of files.
-Fri Feb 15 10:05:24 1991 Roland McGrath (mcgrath at cygint.cygnus.com)
+ * doc/Makefile.am (texinfo): remove the special rule, it seems to
+ be fixed.
- * texi2dvi: Use $TEXINFO in place of $TEX (falling back to $TEX
- if $TEXINFO is undefined).
+ * Makefile.am (AUTOMAKE_OPTIONS): bump to 1.7.8.
+ * doc/version.texi, doc/version-stnd.texi: cvs add these again,
+ because with AM_MAINTAINER_MODE they are not created
+ (unless --enable-maintainer-mode is given).
- * texi2dvi: Renamed from texinfo. Bob (I believe) did this at some
- point at and didn't make a ChangeLog entry. I'd shoot him myself if
- he weren't the person who signs my paychecks.
+ * doc/Makefile.am (*.1) [MAINTAINER_MODE]: use this conditional
+ instead of TEXINFO_MAINT, now that we have it.
+ * configure.ac (TEXINFO_MAINT): no longer needed, since we call
+ AM_MAINTAINER_MODE.
-Sun Feb 10 22:51:52 1991 Richard Stallman (rms at mole.ai.mit.edu)
+2003-11-06 Karl Berry <karl@gnu.org>
- * texinfo.tex (\doprintindex): If index is empty, print a dummy.
- (\need): Use vskips and penalties; don't use \pagetotal.
+ * bootstrap: ok, restore --force since it doesn't help Alper
+ anyway.
-Fri Feb 8 17:36:53 1991 Richard Stallman (rms at mole.ai.mit.edu)
+ * AUTHORS: Silly syntax.
+ * bootstrap: no --force, everything is considered obsolete then
+ (thanks Alper).
- * texinfo.tex (\ignoresections):
- Turn off \contents, \smallbook and \titlepage.
+2003-11-06 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (\Etitlepage): Do a page break before ending the group.
+ * makeinfo/html.c (html_output_head): add <link> elements pointing to
+ top, up, next, prev nodes when splitting output, and to top when not
+ splitting. Also provide a link to Texinfo homepage.
+ (add_link): use nodename as title attribute.
- * texinfo.tex (\setref, \unnumbsetref, \appendixsetref):
- Comment out recording the chapter title.
+2003-11-05 Alper Ersoy <dirt@gtk.org>
-Thu Jan 24 23:28:41 1991 Richard Stallman (rms at mole.ai.mit.edu)
+ * makeinfo/html.c (html_output_head): append node name to title if
+ splitting. Escape special chars in title.
- * texinfo.tex (\top): Synonym for \unnumbered.
- (\infotop): Synonym for \infounnumbered.
- (\ignoresections): Handle \top.
+ * makeinfo/node.c (cm_node): removed <link> elements from HTML node
+ navigation <div> as they are only allowed in <head>.
-Thu Jan 24 12:41:33 1991 Richard Stallman (rms at mole.ai.mit.edu)
+2003-11-05 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex: Delete spurious character at beginning.
+ * doc/texinfo.txi (Installing Dir Entries): fixed @uref for Free
+ Software Directory.
+ (Command List): Escaped @/.
-Thu Jan 17 16:34:25 1991 Roland McGrath (roland at cygint.cygnus.com)
+ * info/display.c (handle_tag, handle_tag_start, handle_tag_end): new
+ functions.
+ (display_update_one_window): ignore the text between magic
+ tags/cookies.
- * texinfo: Check the exit status of tex and texindex. Don't procede
- after a failing run.
+ * makeinfo/cmds.c (cm_dots, cm_enddots): use insert_string() for HTML
+ to avoid escaping.
+ (cm_bullet): use entity name (bull) instead of number (149).
-Thu Jan 10 15:16:47 1991 Richard Stallman (rms at mole.ai.mit.edu)
+ * makeinfo/index.c (cm_printindex): escape expanded_index.
- * texinfo.tex (\xrefX): Get rid of blank line.
+ * makeinfo/lang.c (cm_accent_generic_html): handle @dotless{i}
+ correctly.
+ (cm_special_char): use entity names for @OE (OElig) and @oe (oelig)
+ instead of numbers.
-Wed Jan 9 18:06:20 1991 Richard Stallman (rms at mole.ai.mit.edu)
+ * makeinfo/node.c (cm_node): escape node names in HTML output.
- * texinfo.tex (\entry, \secondary): Use \indexdotfill.
- (\indexdotfill): New macro.
+ * makeinfo/xml.c (xml_id): check to see if the character is allowed.
+
+ * makeinfo/tests/accent-text.txi: new @dotless{j} lines.
-Tue Jan 8 17:44:01 1991 Richard Stallman (rms at mole.ai.mit.edu)
+ * makeinfo/tests/accent: look for &acute;j instead of &acute;i.
- * texinfo.tex (\donoderef): Define a ...-title cross-reference.
- (Ytitle): Subroutine for that.
- (xrefX): Use the real title by default (but this is commented out).
+ * TODO: removed item about @dotless in HTML output.
-Tue Jan 1 23:18:21 1991 Richard Stallman (rms at mole.ai.mit.edu)
+2003-11-04 Karl Berry <karl@gnu.org>
- * texinfo.tex (\indexnofonts): Delete troublemaking blank line.
+ * util/Makefile.am (EXTRA_DIST): spurious space after trailing
+ backslash.
-Sat Dec 22 00:47:21 1990 Richard Stallman (rms at mole.ai.mit.edu)
+ * configure.ac (AC_PREREQ): 2.58.
- * texinfo.tex (\xrefX): Prevent extra space.
+2003-11-03 Karl Berry <karl@gnu.org>
-Fri Dec 21 21:14:50 1990 Richard Stallman (rms at mole.ai.mit.edu)
+ * util/Makefile.am (EXTRA_DIST): add gdoc.
- * texinfo.tex (\comment, \commentxxx): Ignore @ in comment.
+2003-11-02 Karl Berry <karl@gnu.org>
-Thu Dec 13 22:38:31 1990 Chris Hanson (cph at kleph)
+ * util/gendocs.sh: doc fix.
- * texinfo.tex (\defivarheader): Capitalize "Variable".
+ * doc/texinfo.txi (Using Texinfo): merge most details into ...
+ (Output Formats): ... this section.
-Sun Dec 2 01:46:04 1990 Richard Stallman (rms at mole.ai.mit.edu)
+ * util/dir-example (VM): add.
- * texinfo.tex (\indexdummies, \indexnofonts): Handle \t like \r.
+2003-11-01 Alper Ersoy <dirt@gtk.org>
- * texinfo.tex (heading fonts): New fonts based on cm...12.
+ * doc/texinfo.txi (Conditional Commands): Docbook text should
+ really use @ifdocbook.
-Tue Nov 27 16:59:35 1990 Richard Stallman (rms at mole.ai.mit.edu)
+ * info/info.c (raw_escapes_p): 1 by default.
+ (long_options): new option no-raw-escapes.
+ * doc/info-stnd.texi (Invoking Info): document it.
- * texinfo.tex (\indexnofonts): Also supersede \TeX and \dots.
+2003-10-31 Alper Ersoy <dirt@gtk.org>
-Sun Nov 18 16:18:14 1990 Richard Stallman (rms at mole.ai.mit.edu)
+ * makeinfo/xml.c:
+ * makeinfo/xml.h:
+ * makeinfo/insertion.c (handle_verbatim_environment): use
+ <![[CDATA...]]> for @verbatim in docbook output too.
- * texinfo.tex (\*): End with \ignorespaces.
+2003-10-31 Karl Berry <karl@gnu.org>
+
+ * TODO: image scaling in html needed.
+ * makeinfo/cmds.c (cm_strong): only give the warning if we're
+ actually producing Info output.
+
+ * makeinfo/cmds.c (cm_strong): reword message and check for only
+ *Note:, not *Note:*. From: Kevin Ryde <user42@zip.com.au>, 31 Oct
+ 2003 06:19:05 +1000.
+
+2003-10-29 Karl Berry <karl@gnu.org>
-Fri Nov 2 17:41:48 1990 Richard Stallman (rms at mole.ai.mit.edu)
+ * doc/texinfo.txi (Def Cmd Template): shorten.
+ * makeinfo/makeinfo.c: help message.
+ * doc/texinfo.tex: version update.
+ * makeinfo/texinfo.dtd: update copyright.
+
+2003-10-28 Alper Ersoy <dirt@gtk.org>
+
+ * makeinfo/cmds.c: output correct elements for @command,
+ @env, @file, @option and @samp commands, and also handle
+ @titlepage in xml output. New commands: @docbook,
+ @ifdocbook and @ifnotdocbook for conditional docbook output.
+
+ * makeinfo/defun.c (args_from_string): allow comma to be
+ recognized as a separate token to help XML side of things.
+ (process_defun_args): let xml.c handle xml output.
+
+ * makeinfo/insertion.c: handle @verbatim properly when
+ outputting xml. This means: surround data with a <verbatim>
+ block, use <![[CDATA ... ]]> and disable escaping.
+ Recognize @titlepage, @docbook, @ifdocbook and
+ @ifnotdocbook.
+ (cm_insert_copying): do not trust the consistency of
+ copying_text, because full_expansion doesn't let open
+ docbook elements to be closed.
+ (cm_item): generate correct index entries in xml output.
+
+ * makeinfo/insertion.h: new insertion types: ifdocbook,
+ ifnotdocbook, titlepage.
+
+ * makeinfo/lang.c: notify language changes with
+ @documentlanguage in xml output, using <documentlanguage
+ xml:lang=".." /> elements.
+
+ * makeinfo/makeinfo.c: trailing encoding settings in html
+ output are commented. Do not append any encoding settings
+ to xml and docbook outputs. Set process_docbook variable
+ for @docbook, etc. and updated --help about it.
+ (set):
+ (clear): Output @set and @clear in xml so it's possible to
+ pass variables to further processors.
+
+ * makeinfo/makeinfo.h: process_docbook and
+ inside_titlepage_cmd (to check validity of @author, @title,
+ @subtitle, etc.)
+
+ * makeinfo/sectioning.c: heading-only commands (@chaphading,
+ etc.) do not start/end sections in xml output. They are now
+ equivalents of the title element.
+
+ * makeinfo/toc.c: @contents and @shortcontents now appear in
+ the output.
+
+ * makeinfo/xml.c: changed element_list typedefs to also note
+ whether an element is filled. Prefilled elements get
+ xml:space="preserve" attribute. Added xml prolog. Root element
+ in xml output gets the document language like it does in
+ docbook, but with xml:lang. Removed indentation for xml
+ output. Also lines in paragraphs are joined.
+ (xml_process_defun_args):
+ (xml_begin_definition):
+ (xml_end_definition):
+ (xml_begin_def_term):
+ (xml_end_def_term): functions to handle @def environments.
+
+ * makeinfo/xml.h: new elements in xml_element enum:
+ TITLEPAGE, AUTHOR, BOOKTITLE, BOOKSUBTITLE, COMMAND_TAG,
+ ENV, FILE_TAG, OPTION, SAMP, CONTENTS, SHORTCONTENTS,
+ DOCUMENTLANGUAGE, VERBATIM, SETVALUE, CLEARVALUE, DEF*.
+ (Suffices of COMMAND_TAG and FILE_TAG are to avoid variable
+ name clashes.)
+
+ * makeinfo/texinfo.dtd: updated to reflect changes.
+
+ * doc/texinfo.tex: skip @docbook and @ifdocbook.
+
+2003-10-28 Karl Berry <karl@gnu.org>
+
+ * util/gendocs.sh: new -o option to specify output directory.
+
+2003-10-27 Karl Berry <karl@gnu.org>
+
+ * lib/system.h (LC_MESSAGES): no longer needed according to
+ Bruno, libintl.h defines it.
+ Message of 16 Jul 2003 18:17:23 +0200.
+
+2003-10-27 Stepan Kasal <kasal@ucw.cz>
+
+ * doc/texinfo.tex (\defname): be sure to declare the space
+ we get from \rightskip in the first line.
+ (\parsebodycommon): Be careful not to issue \medbreak after
+ \penalty 2000.
+ (\defxbodycommon): The penalty changed from 2000 to 3000;
+ it should be higher that the one in \parsebodycommon.
+ -- added "@c vim:sw=2:" near the end, for my comfort.
+
+2003-10-27 Stepan Kasal <kasal@ucw.cz>
+
+ More cleanup of active chars in @defxx arguments:
+
+ * doc/texinfo.tex (\opnr, \clnr): Reimplemented, ...
+ (\oprm, \clrm, \opnested, \ampnr): ... nuking these, and using ...
+ (\parenfont, \infirstlevel, \bfafterword): ... 3 new macros, ...
+ (\ifampseen): ... and a new \if.
+ (\brackcount): New count, to count also square braces, ...
+ (\lbrb, \rbrb): ... here.
+ (\checkparencounts): Macros to check whether both counts get back
+ to 0; ...
+ (\badparencount, \badbrackcount): ... if not, issue an error
+ message and reset the respective count.
+ (\deftypefnheaderx): Don't call \normalparens, it has no effect.
+ (\defvarargs): Call \boldbrax instead of \normalparens.
+ (\normalparens): Nuked.
+
+2003-10-26 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/session.c (info_menu_or_ref_item): If point is before all
+ the cross-references, use the first one as the default, instead of
+ setting which to -1 and crashing. (Patch originally sent 2000-10-09.)
+ Debian bug 74278, reported from: Josip Rodin <joy@cibalia.gkvk.hr>,
+ 7 Oct 2000 19:44:24 +0200.
+
+2003-10-26 Karl Berry <karl@gnu.org>
+
+ * configure.ac (AM_MAINTAINER_MODE): enable, to avoid lossage
+ when Texinfo sources are imported into other
+ repositories (NetBSD, TeX Live).
+ Most recently suggested by Thomas Klausner
+ <wiz@danbala.ifoer.tuwien.ac.at>, 9 Sep 2003 14:57:09 +0200.
+
+ * makeinfo/node.c (validate_file): ensure tem1 && tem2 before
+ running STREQ. Report from: Akim Demaille <akim@epita.fr>,
+ 13 Oct 2003 10:43:10 +0200.
+
+ * doc/Makefile.am (infokey.1): new target.
+ (man_MANS): include infokey.1.
+ Noticed this in Debian diff.
+
+ * util/texi2dvi: check for tex up front; inspired by Debian diff.
+
+ * TODO: makeinfo -E should do simple macro expansion, not
+ validity checking (even syntax, for @tex processing).
+
+ From: Stepan Kasal <kasal@ucw.cz>, 24 Oct 2003 19:10:02 +0200.
+ Start at making makeinfo -E behave more like a macro preprocessor,
+ avoiding consistency checks.
+ * makeinfo/insertion.c (cm_menu,cm_detailmenu): avoid checks if
+ macro_expansion_output_stream.
+ * makeinfo/makeinfo.c (main): set validating=0 if
+ macro_expansion_output_stream.
+
+ * util/texi2dvi (comment_iftex_sed): don't think we need to
+ comment out @ifhtml sections here, makeinfo will not expand them
+ by default.
+
+2003-10-25 Karl Berry <karl@gnu.org>
+
+ * info/info.c: --raw-escapes affects Info files, not just man
+ pages.
- * texinfo.tex (\*): Output empty hbox to avoid losing whitespace.
- (\deftypevarheader, \deftypevrheader): End the paragraph
- with suitable penalties.
- (\deftypevrheader): Do print the data type.
+ * doc/texinfo.tex: novalis doesn't like my clarification, so make
+ it a special exception instead.
-Thu Nov 1 12:04:52 1990 Richard Stallman (rms at mole.ai.mit.edu)
+2003-10-24 Stepan Kasal <kasal@ucw.cz>
- * texinfo.tex (\defmethodheader): Print `method', not `operation'.
+ * doc/texinfo.tex (\defname): Cleanup of this macro.
+ (\boldbraxnoamp): Nuked, it's equivalent to \boldbrax;
+ the caller changed.
+ Other minor cleanups around active paretheses.
+ (\defunargs): After reporting the "Unbalanced paretheses" error,
+ reset the count.
-Fri Oct 26 17:11:08 1990 Richard Stallman (rms at mole.ai.mit.edu)
+2003-10-24 Karl Berry <karl@gnu.org>
- * texinfo.tex (\indexdummies): Temporarily redefine \_.
- (\ptexdots): Copy of plain tex \dots.
- (\tex): Temporarily reinstall that.
+ * doc/texinfo.txi (makeinfo advantages): mention that plain text
+ --no-headers does --enable-encoding.
-Fri Oct 19 16:57:48 1990 Richard Stallman (rms at mole.ai.mit.edu)
+2003-10-23 Karl Berry <karl@gnu.org>
+
+ * makeinfo/macro.c (define_macro): write the macro definition
+ itself to the output stream, to give texinfo.tex a chance at it.
+ Report from: Akim Demaille <akim@epita.fr>, 22 Oct 2003 17:15:34
+ +0200.
- * texinfo.tex (\subsubsecheadingi, \subsecheadingi): New subroutines.
+ * doc/texinfo.tex (\readauxfile): make the \openout\auxfile be
+ \immediate, to avoid spurious terminal output from the
+ \immediate's in \setref.
+
+2003-10-23 Stepan Kasal <kasal@ucw.cz>
-Mon Oct 8 13:34:19 1990 Richard Stallman (rms at mole.ai.mit.edu)
+ Rewrite \parsearg:
+ * doc/texinfo.tex (\parsearg, \parseargusing): \parseargusing is
+ a new macro which works just like good old \parsearg but takes
+ one more parameter which contains code to be performed within
+ a group just before we slurp the rest of the line---typically,
+ some catcode chages go here.
+ (\parseargx): Insert an \empty token before the arg to be read,
+ to prevent loosing of braces. (Thus @end{foo} no longer works.)
+ (\parseargline, \argremovecomment, \argremovec): Change the way
+ comments are stripped; do not use \toks0.
+ (\removeactivespaces): is now called directly from \parsearg (via
+ \parseargusing and \argremovec), and stripps only the trainling
+ active spaces, doesn't perform expansion.
+ (\finishparsearg): New macro, finishes \parsearg by nuking the
+ added \empty token.
+ (\end, \endxxx): Don't call \removeactivespaces, don't use \toks0;
+ because of efficiency, move the error handling to ...
+ (\badenderror): ... a new macro.
+ (\doverbatim): ``\end{verbatim}'' changed to ``\end verbatim.''
- * texinfo.tex (active _): Use \normalunderscore.
+ Cleanup of various details with active spaces.
+ (\parseargx): Do the \futurelet and move the rest ...
+ (\parseargy): ... to a new macro;
+ (\parseargusing): caller changed;
+ (\parseargdiscardspace): the other caller nuked.
+ (\obeyedspace, \sepspaces, \unsepspaces): Move near to \parsearg.
+ (\obeyedspace): Is now a macro containing the active space.
+ (\unsepspaces): No longer makes spaces active.
+ (\ignoreactivespaces): Nuked, it's only appearance in ...
+ (\aliasxxx): ... replaced by direct code.
-Tue Sep 25 22:32:55 1990 Richard Stallman (rms at mole.ai.mit.edu)
+2003-10-23 Karl Berry <karl@gnu.org>
- * texinfo.tex (\deftypefn, \deftypevar, \deftypevr): New macros.
- Their subroutines also new.
+ * doc/texinfo.tex: comments at top.
-Tue Sep 25 16:42:52 1990 Roland McGrath (roland at geech.ai.mit.edu)
+ * AUTHORS: add kama. (kama's address is now khmarbaise@gmx.de.)
- * texinfo: Recognize `.tex' as a suffix.
+2003-10-21 Karl Berry <karl@gnu.org>
-Tue Sep 25 01:46:54 1990 Richard Stallman (rms at mole.ai.mit.edu)
+ * util/gendocs.sh: revision of mohit's original.
+ * util/Makefile.am (EXTRA_DIST): add gendocs.sh and
+ gendocs_template.
- * texinfo.tex (\deftypefun): New macro.
- (\deftypefunheader, \deftypefunheaderx, \deftypefunargs): Also new.
+2003-10-20 Karl Berry <karl@gnu.org>
-Fri Sep 14 00:38:28 1990 Roland McGrath (roland at churchy.ai.mit.edu)
+ * makeinfo/cmds.c (handle_include): only close_paragraph if
+ !insertion_stack, else we get extra blank lines when
+ used inside @example.
+ * makeinfo/insertion.c (handle_verbatim_include): likewise, plus
+ move the indentation around.
+ Report from: Brian Gough <bjg@network-theory.co.uk>,
+ 20 Oct 2003 14:36:49 +0100.
- * texinfo: Weed out files that have two-letter extensions but don't
- start with a backslash, and therefore aren't index files.
+ * makeinfo/makeinfo.c (close_paragraph): formatting changes to
+ minimize lines.
- * texinfo: Handle index files that have any two-letter extension,
- rather than using a static list of extensions.
+ * makeinfo/insertion.c (end_insertion): for html output in the
+ example/etc. case, kill_self_indent to get rid of
+ leading whitespace.
+ Report from: Brian Gough <bjg@network-theory.co.uk>,
+ 20 Oct 2003 14:36:49 +0100.
- * texinfo: Handle .texi extension as well as .texinfo.
+2003-10-16 Karl Berry <karl@gnu.org>
- * texinfo: New file, a sh script to do .texinfo -> .dvi.
+ * doc/texinfo.tex (\shortcontbf): cmb10 scaled \magstep1, not cmb12,
+ since cmb12 is not a standard font.
+ Report from: Staszek Wawrykiewicz <staw@gust.org.pl>,
+ 16 Oct 2003 06:44:40 +0200.
-Mon Sep 10 13:14:39 1990 Richard Stallman (rms at mole.ai.mit.edu)
+2003-10-14 Karl Berry <karl@gnu.org>
- * texinfo.tex (\math): New macro.
+ * lib/xstrdup.c: put old version back, we're not ready for gnulib
+ xmalloc yet.
-Tue Sep 4 07:43:33 1990 Karl Berry (karl at hayley)
+ * makeinfo/insertion.c: undo xml_no_para change, it causes more
+ problems than it solves, according to Alper (Ersoy, <dirt@gtk.org>).
- * texinfo.tex (\chfplain): Do not print a period after the chapter
- number, for consistency with sections et al.
+2003-10-12 Karl Berry <karl@gnu.org>
- * texinfo.tex (\refX): hyphenate `undefined' so that the ligature
- is not lost.
+ * makeinfo/insertion.c (begin_insertion,end_insertion): in rawhtml
+ case (also used for rawxml), increment and decrement xml_no_para.
- * texinfo.tex (_): use \_ unless we're in tt.
- (\ifusingtt): new macro for such conditionalization.
+ * makeinfo/lang.c (cm_documentencoding): force the normal (info)
+ expansion when reading the arg, even when parsing xml/html/docbook.
+ Report from: Kevin Ryde <user42@zip.com.au>,
+ 13 Oct 2003 10:02:23 +1000.
- * texinfo.tex (\xrefX): don't use \unhbox to print the node names,
- since that loses on hyphens.
- Use \ignorespaces rather than \losespace.
+2003-10-09 Karl Berry <karl@gnu.org>
-Thu Aug 2 07:03:26 1990 Karl Berry (karl at hayley)
+ * doc/texinfo.tex (\chapterzzz,...,\unnumberedsubsubseczzz): make
+ section number settings \global. Otherwise, when chapters are
+ @included, they are ineffective and every chapter is numbered 1.
+ For instance, the Emacs and Elisp manuals. Thanks to Stepan for
+ analysis.
- * texinfo.tex (\linenumber): new macro.
- (\refx): give the line number in the message.
+ * doc/texinfo.tex: add arch-tag for miles.
-Tue Jul 31 09:13:32 1990 Karl Berry (karl at hayley)
+2003-10-08 Stepan Kasal <kasal@ucw.cz>
- * texinfo.tex (\refx): improve warning messages, remove
- unnecessary groups, and improve logic.
+ * doc/texinfo.tex (\onepageout): At the beginning of \shipout, call
+ \pdfdest directly, not via \pdfmkdest.
+ (\pdfmkdest): Call also \atdummies before \pdfdest.
+ (\donoderef): Remove the unsuccessful attempt to expand \lastnode
+ before passing it to \setref (it only expanded `{' twice);
+ things would screw up if \lastnode was expanded too much.
+ (\setref): Rewritten, don't call \atdummies, don't expand
+ \thissection.
+ (\dosetq, \internalsetq, \Ypagenumber, \Ytitle): Nuked.
+ (\chfplain): Remove referrence to \Ytitle from a comment.
-Thu Jul 26 20:53:38 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-10-08 Karl Berry <karl@gnu.org>
- * texinfo.tex (\subheading, \subsubheading): Missing macros defined.
+ * doc/texinfo.tex: spurious space and comment (from Stepan).
-Thu Jul 19 22:48:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * NEWS: automake 1.7.8.
+ * util/dir-example: include netpbm.
- * texinfo.tex (\titlepage): Don't print rule for \page unless already
- printed a rule.
- (\abstract): Deleted.
- (\direntry): New command, much like \ignore.
+2003-10-07 Karl Berry <karl@gnu.org>
-Sun Jul 15 16:28:42 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * doc/texinfo.tex (\defbf, shortcontbf): use \bfshape instead of
+ \bxshape, so we use cmb consistently instead of cmbx.
- * texinfo.tex (\abstract): New construct; trivial in tex.
+ * doc/texinfo.txi: more index entries for em/en dashes, fix
+ capitalizations of cindex entries.
-Sun Jun 17 01:03:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-10-07 Stepan Kasal <kasal@ucw.cz>
- * texinfo.tex (\defcv): Protect space before `of'.
- (\defspec): Capitalize `Form'.
+ * doc/texinfo.tex (\defname): Don't use \ifempty.
+ (\ifempty): Nuke.
-Sat Jun 16 19:36:56 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-10-06 Stepan Kasal <kasal@ucw.cz>
- * texinfo.tex (\kbd, \kbdfoo): Use \par to term. arg to \kbdfoo.
+ * doc/texinfo.tex (\dosubind, \doind): Cleanup, move code ...
+ (\dosubindwrite, \dosubindsanitize): ... to new macros,
+ (\emptymacro): and nuke this one.
-Fri Jun 15 10:47:12 1990 Robert J. Chassell (bob at pogo.ai.mit.edu)
+ * doc/texinfo.tex (\Ypagenumber): Add `\noexpand,' so that ...
+ (\dosetq): ... doesn't have to redefine \folio. Move \iflinks ...
+ (\setref): ... here.
- * texinfo.tex (\defcv): Use \defcvarheader instead of (undefined)
- \defcvheader.
+2003-10-06 Karl Berry <karl@gnu.org>
-Fri May 25 18:04:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * doc/texinfo.tex (\setdeffont): remove; this used DEF instead of
+ def, and thus had no effect for some years, so
+ clearly no one has been using it. Noticed by Stepan.
- * texinfo.tex (\xrefX): Use \turnoffactive.
+2003-10-04 Karl Berry <karl@gnu.org>
-Mon May 21 21:17:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * doc/texinfo.txi: document hyphen -> dash suppression in literal
+ contexts, and verbatim commands not working inside other commands.
+ Report from: Luc Teirlinck <teirllm@dms.auburn.edu>, 2 Oct 2003
+ 22:45:14 -0500,
- * texinfo.tex (\turnoffactive): New command.
- (\normaldoublequote, ...): New commands.
- (\dosetq): Use \turnoffactive.
+ * doc/texinfo.tex (\commondummies,\indexnofonts): no-op @verb; I
+ doubt this is sufficient to make @verb work in index entries etc.,
+ but it's a start. Analysis from: Andreas Schwab <schwab@suse.de>,
+ 02 Oct 2003 18:54:40 +0200.
-Sat May 19 12:31:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-09-28 Karl Berry <karl@gnu.org>
- * texinfo.tex (\indit): Use slanted font, not italic.
- (\smalllispx): Do \indexfonts.
+ * TODO: add item for conversion of non-texinfo manuals.
-Fri May 4 17:35:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-09-26 Karl Berry <karl@gnu.org>
- * texinfo.tex (\footnote, \footnotezzz): Make it \long.
+ * CVSROOT/loginfo: back to log_accum.
-Wed May 2 01:19:55 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * doc/texinfo.tex (\parsebodycommon): increase \penalty between
+ headers to 2000 from 0.
+ (\defxbodycommon): check for 10002, not 1000. We don't want to
+ allow a page break after a section heading. Hmm, but it seems
+ this should never be called next after a section heading?
- * texinfo.tex (\titlerm): Go back to cmbx10 scaled \magstep5.
- (\hsize): Don't set it, use the default.
+2003-09-25 Karl Berry <karl@gnu.org>
-Fri Mar 23 21:07:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * makeinfo/cmds.c (cm_strong): warn if argument is exactly
+ "Note:", since that conflicts with Info usage. Suggestion from
+ rms.
- * texinfo.tex (\footnote): Read arg in braces, not as a line.
+2003-09-24 Karl Berry <karl@gnu.org>
-Mon Mar 19 19:30:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * doc/texinfo.tex (\dosubind): must propagate penalty after all,
+ because we insert a non-discardable item (the whatsit), which
+ makes following glue a breakpoint. Now I understand (maybe).
+ (\sectionheading): must end with \nobreak after
+ all, purely to make \lastpenalty 10000 so future code can check
+ that and avoid breaks.
+ (\parsebodycommon): such as this code; don't do a
+ \medbreak if lastpenalty >=10000.
- * texinfo.tex (\unnumbsubsubsecentry): Typo in name being defined.
+ * doc/texinfo.tex (\tocindent): decrease to 2pc.
+ (\{app,unn}sub{sub,}secentry): redefine so that they
+ indent properly.
-Tue Mar 13 18:49:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-09-23 Karl Berry <karl@gnu.org>
- * texinfo.tex (\defvarargs): Add penalty at end.
+ * doc/texinfo.tex (\dosubind): remove my misbegotten idea of
+ propagating the penalty; all that did was increase the chance of a
+ valid breakpoint. Bug report from: Werner LEMBERG <wl@gnu.org>,
+ 23 Sep 2003 15:47:31 +0200.
+ (\numhead,\apphead,\unnmhead): avoid spurious
+ blank spaces, for cleanliness.
- * texinfo.tex (\synindex, \syncodeindex): Copy one index file name
- into the other.
+ * CVSROOT/loginfo: syncmail instead of external log_accum.
+ * doc/texinfo.tex (\sectionheading): remove extraneous \nobreak,
+ found by Stepan (of course).
-Tue Mar 6 16:58:54 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-09-22 Stepan Kasal <kasal@ucw.cz>
- * texinfo.tex (\deftt): Make this a distinct font.
+ * doc/texinfo.tex (\sectionheading): the space below a section
+ heading should have fixed size; \nobreak after a \vskip is
+ redundant.
- * texinfo.tex (\initial): Define \tt like \tentt.
+2003-09-21 Karl Berry <karl@gnu.org>
- * texinfo.tex (\ifinfo): End with \losespace.
- (\ignore, \ifsetfailxxx, \ifclearfailxxx): Likewise.
+ * doc/texinfo.tex (\sectionheading): make space below be half of
+ space above, and don't add \parskip to space above. Suggestion
+ from Han-Wen Nienhuys <hanwen@cs.uu.nl>, implementation ideas from
+ Stepan Kasal <kasal@math.cas.cz>, 16 Sep 2003 11:30:43 +0200.
-Sun Mar 4 19:55:57 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-09-21 Stepan Kasal <kasal@ucw.cz>
- * texinfo.tex (\lbrb, \rbrb): Use \bf.
+ * doc/texinfo.tex (\dosuppressfirstparagraphindent): change the
+ redefinition of \indent and \noindent and factor out common
+ parts of all redefinitions to ...
+ (\restorefirstparagraphindent): ... a new macro.
-Sat Mar 3 17:53:22 1990 Richard Stallman (rms at geech)
+2003-09-20 Karl Berry <karl@gnu.org>
- * texinfo.tex (\onepageout): Set \escapechar here.
+ * makeinfo/macro.c (cm_alias): do not expand when calling
+ get_until_in_line, since xml/docbook expansion is empty.
+ Report from: Richard Kreuter <kreuter@anduril.rutgers.edu>,
+ 17 Sep 2003 17:59:58 -0400.
- * texinfo.tex (\rawbackslash): Define using \chardef.
+ * info/signals.c: Clear the screen when exiting from a SIGQUIT.
+ From: Wojciech Polak <polak@gnu.org>, 19 Sep 2003 10:27:28 +0200.
- * texinfo.tex (\@): Use ttfont.
+2003-09-16 Stepan Kasal <kasal@ucw.cz>
-Thu Mar 1 16:37:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * doc/texinfo.tex (\sectionheading): there is no need to insert
+ \nobreak before a kern which is not followed by
+ a glue. Such a kern is not a permissible breakpoint.
- * texinfo.tex (Ysectionnumberandtype, Yappendixletterandtype):
- Capitalize "chapter", "appendix" and "section".
+2003-09-16 Simon Law <sfllaw@uwaterloo.ca>
-Mon Feb 19 20:26:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * doc/texinfo.tex (\dosuppressfirstparagraph): Gobble \noindent
+ if it occurs in the first paragraph.
+ (\ptexnoindent): for saving/restoring \noindent in @tex.
+ (\footnote): Neutralise the effect of @noindent within a footnote.
- * texinfo.tex (\xkey): Attempt to eliminate spurious space from
- output. Look at y-or-n-p.
+2003-09-16 Karl Berry <karl@gnu.org>
-Mon Feb 12 16:34:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * doc/texinfo.tex: Changes to make pdf references go to the correct
+ place on the page. This is most easily testable
+ at high magnifications (I used 400% and 800%).
+ (\output): put \the\pageno pdfdest at very
+ beginning of \shipout.(\dopdfoutline): new macro.
+ (\pdfmakeoutlines): recompute all section numbers.
+ (\unnumberedno): \newcount.
+ (\chapterzzz,\appendixzzz,\unnumberedzzz,
+ ..., \unnumberedsubsubseczzz): abstract common
+ elements, keep track of numbering for everything.
+ (\doheading,\dosubheading,\dosubsubheading): call
+ \sectionheading directly instead of \plain*secheading.
+ (\chfplain, \sectionheading): take additional section type
+ argument; call \writetocentry and \donoderef.
+ (\unnchfopen): mention this is deprecated.
+ (\writetocentry): handle "omit" case, and
+ \global\pdfmakepagedesttrue.
+ (\startcontents, \summarycontents): sectioning
+ commands take an extra arg.
+ (\dosub*secentry): take extra arg with section
+ number; change callers.
+ (\pdfcatalog): move this call to the opening PDF
+ commands, for clarity.
+ (\unnumbnoderef): no longer needed, collapsed into
+ \donoderef.(\Yomitfromtoc): new xref constant.
+ (\Ynumbered,\Yappendix): renamed from
+ \Ysectionnumberedandtype and
+ \Yappendixletterandtype, for clarity.
- * texinfo.tex (\errorbox): Get \dimen0 from \tentt.
+ * doc/texinfo.txi (cartouche): omit invalid @group.
-Sun Feb 11 15:11:57 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * makeinfo/node.c (cm_node): restore accesskey= on the <link>s.
+ From hanwen.
- * texinfo.tex (\defunargs): Use ragged right for args.
- Add large penalty at end.
+2003-09-15 Karl Berry <karl@gnu.org>
- * texinfo.tex: Make active definition for = using \tt, but disable.
- (\defparsebody): Make = active.
- (\defunheader, etc.): Make inactive again.
+ * util/dir-example: add guile-tut.
- * texinfo.tex (\errorbox): Try to equalize outside space to both sides.
+ * info/session.c (info_follow_menus): take the first best_guess
+ rather than the last.
+ From: Rob Browning <rlb@defaultvalue.org>,
+ 15 Sep 2003 01:26:17 -0500.
-Fri Feb 2 14:47:21 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-09-13 Karl Berry <karl@gnu.org>
- * texinfo.tex (\appendix): Don't use \the before \appendixletter.
+ * automake 1.7.7.
-Sat Dec 16 14:02:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * makeinfo/insertion.c (begin_insertion): start cartouche html output
+ with <p>. @cartouche can't be used meaningfully
+ within a paragraph.
+ Report from: Simon Josefsson <jas@extundo.com>,
+ 11 Sep 2003 19:25:20 +0200.
- * texinfo.tex (\chapter, \appendix): Make defn of \thischapter
- refer to \thischaptername, and store actual name there.
- (\chapternofonts): Turn off more macros.
- (\indexdummies): Likewise.
+2003-09-12 Karl Berry <karl@gnu.org>
-Sun Nov 19 15:29:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * makeinfo/tests/html-manuals: include -I../../doc for case when
+ version-stnd.texi is in build tree.
+ From: ezra peisach <epeisach@med-xtal.bu.edu>,
+ 12 Sep 2003 13:53:32 -0400.
- * texinfo.tex (\titlerm): There were two definitions of this command.
- Put them together and commented out one of them.
- (\subtitlerm): Was same as \tenrm, so just copy that.
- (\ninett): Always define this.
- (\indtt): Copy from \ninett.
+2003-09-11 Karl Berry <karl@gnu.org>
-Sat Nov 18 22:57:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * doc/texinfo.txi (Cartouche): document that @cartouche needs to
+ be outside the @example for HTML output to work. This
+ is painful to fix in the current makeinfo.
+ Report from: Simon Josefsson <jas@extundo.com>,
+ 11 Sep 2003 15:21:44 +0200.
- * texinfo.tex (\ssecrm, etc.): Scale by 1315, rather than to 13pt.
+2003-09-10 Karl Berry <karl@gnu.org>
-Wed Nov 8 18:38:33 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * makeinfo/sectioning.c (section_alist): add entry for centerchap,
+ so at least makeinfo does not bomb out. (No centering is actually
+ done.) From: Denys Duchier <duchier@ps.uni-sb.de>, 10 Sep 2003
+ 21:35:24 +0200.
- * texinfo.tex (\titlepage): Turn on iffinishedtitlepage so
- bottom rule is not printed.
- (\titlezzz): Turn it off, so bottom rule is printed.
+ * lib/system.h: __CYGWIN__ in comments, too.
-Mon Nov 6 09:23:29 1989 Karl Berry (karl at hayley)
+2003-09-09 Karl Berry <karl@gnu.org>
- * texinfo.tex (\chapterzzz, \appendixzzz): include `Chapter
- \the\chapno' and `Appendix \appendixletter' in \thischapter; use
- \xdef instead of \gdef to define \thischapter, to avoid timing
- problems with \chapno or \appendixletter.
- (\startcontents): don't bother putting `Table of Contents' or
- `Short Contents' in the headline.
+ * bootstrap: --include=m4. From Werner.
-Fri Oct 20 09:11:35 1989 Karl Berry (karl at hayley)
+2003-09-08 Karl Berry <karl@gnu.org>
- * texinfo.tex (\titlepage): remove obsolete code for subtitles.
- (\titlezzz): end with \relax, to avoid misinterpretation of a
- following `plus' or `minus'
- (\page (inside \titlepage)): call \finishtitlepage.
- (\Etitlepage): call \finishtitlepage, if it hasn't been.
- (\finishtitlepage): new macro to print a rule and leave some space
- at the bottom of the title page.
- (\iffinishedtitlepage): new; says whether \finishtitlepage has been
- called.
+ * lib/system.h: make that __CYGWIN__, not __unix__. From Eli.
+ * lib/system.h (DEFAULT_TMPDIR,PATH_SEP) [O_BINARY && !__unix__]:
+ new case for cygwin, from: Thomas Klausner
+ <wiz@danbala.ifoer.tuwien.ac.at>, 8 Sep 2003 13:43:29 +0200
+ (for cross-building netbsd).
-Mon Nov 6 21:35:34 1989 Robert J. Chassell (bob at rice-chex)
+2003-09-04 Karl Berry <karl@gnu.org>
- * texinfo.tex: Replaced `GNU CC' in the copyleft of this file with
- the phrase `this texinfo.tex file'.
+ * texinfo.txi (Conventions): say more about quotations and dashes,
+ based on a report to help-texinfo from
+ David.Billinghurst@riotinto.com, 18 Jul 2003 16:07:00 +1000.
-Fri Oct 27 10:36:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * NEWS: mention @tex/@iftex are executed in a group.
- * texinfo.tex (\setfilename): Do nothing except 1st time used.
- (\titlepage): Brace misplaced in \titlezzz.
- (\indexdummies, \indexnofonts): Handle @w.
+2003-09-03 Karl Berry <karl@gnu.org>
- (\readauxfile): Set \ifhavexrefs true.
- (\refX): Warn for every use of an undefined xref,
- but if no xref values are known, warn just once that none are known.
+ * doc/texinfo.txi (Macro Details): mention some makeinfo
+ limitations too, from recent bug reports by Patrice Dumas
+ <dumas@centre-cired.fr> and (16 Jul 2003 17:21:56 +0200) Jesper
+ Harder <harder@ifa.au.dk>.
+ * makeinfo/macro.c (define_macro): "end rmacro" is 10 chars long.
-Tue Sep 19 04:12:51 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-08-29 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * makeinfo/lang.c (encoding_table): Downcase coding system
+ names, since Emacs does not recognize the uppercase names.
- * texinfo.tex (\xrefX): Go back to `section N [Foo], page M'.
- (\exp): Delete it.
+ * makeinfo/lang.h: doc fixes.
-Mon Sep 18 15:29:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-08-28 Karl Berry <karl@gnu.org>
- * texinfo.tex (\chapentryfonts): Try using \rm for chap title.
+ * bootstrap: new file (cvs only).
+ * README.dev: mention it.
+ Report from hanwen@cs.uu.nl, sample script from
+ Akim Demaille <akim@epita.fr>.
+ * aclocal.m4: remove from cvs repository.
-Tue Sep 12 03:41:10 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-08-26 Karl Berry <karl@gnu.org>
- * texinfo.tex (\titlepage): Missing closeparen after \title.
- Delete excess paren after \page.
+ * makeinfo/node.c (cm_node): add <LINK> tags. This will produce a
+ navigation bar in Mozilla 1.4 (and perhaps earlier). Original
+ code from Han-Wen Nienhuys <hanwen@cs.uu.nl>.
- * texinfo.tex (\samp): Use \tclose.
+2003-08-23 Karl Berry <karl@gnu.org>
-Mon Sep 11 23:28:04 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * util/texi2dvi: Run tex --help in $tmpdir, to avoid leaving
+ texput.log for old TeX versions. Report from Patrick Welche
+ <prlw1@newn.cam.ac.uk>, patch from Akim.
- * texinfo.tex (\tclose): Make `@ ' a full-width space.
+2003-08-20 Karl Berry <karl@gnu.org>
-Sat Sep 9 20:11:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * makeinfo/defun.c (cm_defun): skip @ifset/@ifclear insertions
+ when looking for the @defun going with this @defunx. Report from:
+ Akim Demaille <akim@epita.fr>, 14 Aug 2003 12:10:37 +0200.
- * texinfo.tex (\balancecolumns): Handle properly the case where
- the index ends before one page is output, so \partialpage is nonempty.
- In this case we may need to output two pages if the data
- would just barely fit if not for \partialpage.
+ * makeinfo/insertion.c (cm_end): rewrite error message for
+ clarity.
-Wed Aug 30 22:45:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-08-13 Karl Berry <karl@gnu.org>
- * texinfo.tex (\refx): New 2nd operand, output if xref is non-null.
- (\xrefX): Use that to output the comma after the section number.
- (\appendixnoderef, \appendixsetref, \Yappendixletterandtype):
- Define xrefs for appendices that say "Appendix N".
- Used in \appendix, \appendixsec, etc.
+ * info/indices.c (info_index_apropos): correct typo, whoses ->
+ whose. From: Jesper Harder <harder@ifa.au.dk>, 13 Aug 2003
+ 14:49:26 +0200.
- * texinfo.tex (\smartitalic): The actual italic correction was omitted.
+2003-08-11 Karl Berry <karl@gnu.org>
-Mon Aug 28 00:21:33 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
+ * doc/texinfo.tex: excise spurious spaces, etc.
- * texinfo.tex (\ref): New kind of cross-reference.
- (\xrefX): Put single quotes around section name.
- (\refx): Allow hyphenation in `undefined'.
+2003-08-09 Karl Berry <karl@gnu.org>
- * texinfo.tex (+): Make it active.
- (Altmode): Delete active defn.
+ * doc/texinfo.txi: don't use @ifinfo/@heading construct to replace
+ @section any more, the XML output is wrong.
- * texinfo.tex (\defunargs): Prevent hyphenation at `-' in args.
- Move the penalty at the end so that it works.
- (\defvarargs): Move the penalty at the end so that it works.
+ * doc/texinfo.tex (\pdfmakeoutlines): doc fixes, and use \def once
+ instead of \let twice.
- * texinfo.tex (\defparsebody): Do increase right margin.
+ * doc/texinfo.txi: rewrite @ifinfo text sections to take better
+ account of HTML. Suggestion from: Dumas Patrice
+ <dumas@centre-cired.fr>, 8 Aug 2003 17:19:22 +0200.
- * texinfo.tex (\defbodyindent): Now .4 inch.
+2003-08-07 Derek Price <derek@ximbiot.com>
- * texinfo.tex (\point, \result, \expansion, \print, \equiv, \error):
- New macros for Lisp manual.
+ * makeinfo/insertion.c (cm_direntry): Skip @direntry in --no-headers
+ mode.
- * texinfo.tex (\tex): Set = to code 12.
+2003-08-05 Karl Berry <karl@gnu.org>
- * texinfo.tex (\entry): Hairier way to output dots.
+ * doc/texinfo.txi (Beginning a File, title, titlefont): more
+ clarifications. Suggestions from Patrice.
- * texinfo.tex (\kbd): If arg consists of one \key command, be a no op.
+ * doc/texinfo.txi (emph & strong): inconsistent source & example.
+ From Jesper Harder.
- * texinfo.tex (\sc): Delete spurious \.
+2003-08-04 Karl Berry <karl@gnu.org>
- * texinfo.tex (\smartitalic): New macro, does italic correction at end.
- (\i, \var, \dfn, \emph, \cite): Use that.
+ * doc/texinfo.txi (titlefont): discuss html output a bit.
+ Suggestion from Patrice.
- * texinfo.tex (\node): Do \ENVcheck.
+2003-07-31 Karl Berry <karl@gnu.org>
- * texinfo.tex (\initial): Infinite penalty at end.
+ * doc/texinfo.tex (\doignorecount): no need to initialize.
+ (\doignoreyyy): doc fix.
+ From Stepan.
- * texinfo.tex (\chapternofonts): New macro, sets \code, etc. to
- output selves into file. Also undef \frenchspacing and \rawbackslash.
- (\xhapterzzz, etc.): Call that. Make a group to undo it.
- (\indexdummies): Do like \chapternofonts.
+2003-07-29 Stepan Kasal <kasal@ucw.cz>
-Sun Aug 27 16:05:23 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
+ * doc/texinfo.tex (\doignorecount): No need to initialize the
+ count while reading texinfo.tex.
+ (\doignoreyyy): Tiny comment change.
- * texinfo.tex (\frenchspacing): Our own definition, using
- decimal numbers for all character codes. The standard one fails.
+2003-07-28 Karl Berry <karl@gnu.org>
- * texinfo.tex (\indexnofonts): Handle \file, \tt, and many more.
+ * makeinfo/html.c (process_css_file): @c (for @charset) should
+ also put us into import_state.
-Fri Aug 25 22:05:24 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
+ * doc/texinfo.txi (Conditional Nesting): new section; also change
+ other conditional sections slightly.
- * texinfo.tex (\chapter, etc.): Undefine \tclose around \edef\temp.
+ * doc/texinfo.tex (\doignoretext, \doignoretextyyy): Only look for
+ conditionals at the beginning of a line, to avoid problems with a
+ commented conditional. Fix from: Stepan Kasal
+ <kasal@math.cas.cz>, 28 Jul 2003 02:50:41 +0200.
-Mon Aug 21 15:42:47 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
+2003-07-27 Stepan Kasal <kasal@ucw.cz>
- * texinfo.tex (\tclose): Like \t but make space same width
- as in surrounding text.
- (\code, \kbd): Use \tclose.
+ * doc/texinfo.tex (\doignore): Rewritten to handle nesting.
+ (\ignoremorecommands, \obstexwarn, \ifwarnedobs): No longer needed.
+ (\nestedignore): No longer needed.
+ (\readauxfile): Remove reference to \warnedobstrue.
-Tue Jul 4 20:53:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-07-27 Karl Berry <karl@gnu.org>
- * texinfo.tex (titlepage): Don't set \everypar; start just one group.
- See comments in the code.
+ * util/dir-example: lowercase automake.
- * texinfo.tex (defop,defcv): Use defopparsebody.
- * texinfo.tex (defopparsebody): Like defmethparsebody but defines
- def...x for more arguments.
+2003-07-26 Karl Berry <karl@gnu.org>
-Sat Jun 17 13:49:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * makeinfo/html.c (process_css_file): in null_state, only consider
+ @i to be the start of an @import, since @media can get misparsed.
+ Report from: Dumas Patrice <dumas@centre-cired.fr>, 22 Jul 2003
+ 12:13:29 +0200.
- * texinfo.tex (\titlepage): Rename @subtext, etc., to @subtitle, etc.
+2003-07-25 <karl@gnu.org>
- * texinfo.tex (\titlepage): Don't print the title automatically.
- Define @title to print it, and the rule underneath it.
- This should make @titlepage upward compatible with the old one.
+ * doc/texinfo.txi (Raise/lower sections): mention difficulties with
+ node pointer creation and top nodes.
+ Report from: Dumas Patrice <dumas@centre-cired.fr>,
+ 22 Jul 2003 13:08:24 +0200.
- * texinfo.tex (\titlepage): Revert local definition of @page
- to previous. Don't print a rule.
+2003-07-24 <karl@gnu.org>
-Mon Jun 12 20:49:17 1989 Karl Berry. (karl at mote)
+ * makeinfo/sectioning.c (what_section): take additional SECNAME
+ argument; change callers.
+ * makeinfo/sectioning.h (what_section): remove redundant decl.
+ * makeinfo/node.c (cm_node): change what_section call here, too.
+ Report from: Dumas Patrice <dumas@centre-cired.fr>,
+ 22 Jul 2003 13:09:19 +0200.
- * texinfo.tex (\titlepage): allow intensional definition of the
- items on the title page. New control sequences (allowed only
- within the titlepage environment:)
- (@subtext): may take either a paragraph (e.g., a brief
- description of the program) or just a line (e.g., the date).
- May appear more than once.
- (@author): must come after all the @subtext's. Can appear more
- than once, also.
- Also, use the title defined by @settitle.
- (\subtextfont, \authorfont): switch to using the appropriate
- fonts with appropriate leading.
- (\titlepagetopglue, \titlepagebottomglue): define space that
- never stretches or shrinks.
- (\realeverypar): formatting for the @subtext's.
+ * doc/texinfo.tex (\doheading,\dosubheading,\dosubsubheading):
+ rationalize names.
+ (\heading,\subheading,\subsubheading): change
+ calls. (yesterday's patch called the undefined
+ \subsecheadingyyy, etc.)
-Sun Jun 4 15:04:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-07-23 Stepan Kasal <kasal@ucw.cz>
- * texinfo.tex (\shortchapentry, \shortunnumberedentry):
- Use dots, right justify page numbers. Don't use italics.
+ * doc/texinfo.tex (\heading, \subheading, \subsubheading): Call
+ \suppressfirstparagraphindent after setting the heading.
+ (\headingyyy, \subheadingyyy, \subsubheadingyyy): New macros.
+ (\chapheadingzzz): Call \suppressfirstparagraphindent at the end
+ and move \chapbreak ...
+ (\chapheading): ... here.
+ (\majorheading): Do a modified \chapbreak, then call \chapheadingzzz.
+ (\majorheadingzzz): Deleted.
-Fri Jun 2 14:40:28 1989 Karl Berry. (karl at mote)
+2003-07-16 <karl@gnu.org>
- * texinfo.tex (\entry, \secondary): use plain TeX \dotfill for
- better leaders than the homegrown one.
- (\Dotsbox): Deleted.
- (\dotfill): Deleted; use Plain TeX definition.
+ * doc/texinfo.txi (makeinfo Pointer Creation): must pxref Menus,
+ since Menu Location is not a valid xref point for
+ TeX, because of the special @heading stuff.
-Wed May 31 17:19:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * makeinfo/insertion.c (begin_insertion): lack of */ caused
+ display: and smalldisplay: cases to be ignored.
- * texinfo.tex (ignore): Undefine the chapter/section macros
- while reading the args, since they are \outer.
- (ifinfo): Likewise
- (ifsetxxx, ifclearxxx): Call another macro to parse the
- conditionalized text, and do to that macro as with \ignore.
+ * lib/system.h (LC_MESSAGES) [!defined (HAVE_LC_MESSAGES) &&
+ !defined (LC_MESSAGES)]: change conditional. Report from
+ Christian Krackowizer <ckrackowiz@std.schuler-ag.com>, 16 Jul 2003
+ 14:40:30 +0200.
-Tue May 30 15:04:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-07-14 <karl@gnu.org>
- * texinfo.tex (unnumbered): Change back from \long to \outer.
+ * util/install-info.c (ensure_dirfile_exists): replace literal ^_ with
+ \x1f. Report from Trond Endrestøl
+ <trond@ramstind.gtf.ol.no>, 14 Jul 2003 13:31:29 +0200.
- * texinfo.tex: Changes by Karl Berry for toc format.
- Rewrite the table of contents for appearance's sake. Add a
- synonym for \summarycontents, \shortcontents, since that is the
- traditional name. Two subroutines are now shared by \contents and
- \summarycontents: \prepareforcontents, to reset the page number
- and such; and \startcontents, which begins the \unnumbered and
- resets catcodes before \input \jobname.toc. Some other macros --
- \labelspace, \dopageno, \shortpageno -- are shared by the printing
- macros.
+ * makeinfo/sectioning.c (sectioning_html): forgot to change closing </hN>
+ to match opening <hN> (that is, maximum h3).
+ Report from: Jesper Harder <harder@ifa.au.dk>,
+ 14 Jul 2003 15:04:04 +0200.
- * texinfo.tex (\truesecrm): New font, section-size roman, used in the
- new toc. (cmr12)
+2003-07-03 <karl@gnu.org>
-Sun May 28 07:25:42 1989 Karl Berry. (karl at mote)
+ * doc/info.texi: copy from Emacs (with revisions by Luc).
- * texinfo.tex (\eatinput): Do not print the `\input texinfo' if a
- .fmt file is being used; ignore it, instead. This is the initial
- definition for `\' now.
- (\fixbackslash): on the other hand, subsequent backslashes should
- be printed, and if the file does not have an `\input texinfo', the
- first one should be printed. This new macro makes the definition
- for `\' be \normalbackslash, if it is \eatinput.
- (\setfilename): use \fixbackslash.
+2003-07-02 Akim Demaille <akim@epita.fr>
-Wed May 24 15:34:59 1989 Joseph Arceneaux (jla at apple-gunkies.ai.mit.edu)
+ * util/texi2dvi: Add thumbpdf support.
+ Use FD 6 instead of /dev/null so that when --debugging, the output
+ from auxiliary tools can be observed.
- * texinfo.tex: Changed def of unnumbered from \outer to \long.
+2003-07-02 <karl@gnu.org>
-Tue May 23 12:27:59 1989 Karl Berry. (karl at mote)
+ * doc/texinfo.txi (kbd): document actual makeinfo behavior.
- * texinfo.tex: Allow one to make a texinfo.fmt file (with the
- invocation:
- initex \&plain texinfo
- and then saying
- @dump
- after texinfo.tex has been read.
- Changes:
- (\setfilename): Instead of being a no-op, read the xref info, and
- open the contents and index files. These actions were done as
- texinfo.tex was read before.
- (\opencontents, \openindices): new macros to open those files.
- (\readauxfile): and one to read the aux file.
+2003-07-01 <karl@gnu.org>
-Sat Apr 29 22:28:02 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * doc/texinfo.txi (Menus): require that menus come at the end of the
+ node, since Info readers can't determine the end
+ of a menu.
+ Report from: Luc Teirlinck <teirllm@dms.auburn.edu>,
+ 29 Jun 2003 21:33:19 -0500.
- * texinfo.tex: `@headings on' no longer does a page break.
+ * makeinfo/insertion.c (begin_insertion): do not increment
+ in_fixed_width_font for @display or @format; this
+ incorrectly caused quotes to be omitted in @kbd
+ output in those environments.
+ Report from: Luc Teirlinck <teirllm@dms.auburn.edu>,
+ 26 Jun 2003 21:59:48 -0500.
-Sun Apr 2 11:22:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+2003-06-24 <karl@gnu.org>
- * texinfo.tex: Defined `@headings single' and `@headings double'.
- `@headings on' picks one of them: `@setchapternewpage odd'
- says `@headings on' means double; otherwise it means single.
+ * doc/texinfo.txi (tex): misplaced period.
+ From: Jesper Harder <harder@ifa.au.dk>.
+ (GNU Sample Texts): don't end the $Id index entries with a :.
+ Report from: Luc Teirlinck <teirllm@dms.auburn.edu>.
+
+2003-06-20 <karl@gnu.org>
-Mon Jan 30 22:00:35 1989 Robert J. Chassell (bob at rice-krispies.ai.mit.edu)
+ * makeinfo/defun.c (process_defun_args): only insert the HTML
+ start/end tags if we're actually generating html.
+ Report from: Shawn Betts <sabetts@sfu.ca>, 12 Jun 2003
+ 16:48:50 -0700.
- * texinfo.tex: Changed the size of the subsection fonts so they
- are scaled at13pt rather than at magstep 2. This makes them
- smaller than the section fonts, which are scaled at magstep 2.
- In addition, changed the ssecrm font from cmbx to cmb.
+ * TODO: support translated manuals, from polak@gnu.org.
-Fri Jan 6 15:00:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+ * doc/texinfo.txi: Edit Options node no longer exists in the Emacs
+ manual. From: Luc Teirlinck <teirllm@dms.auburn.edu>.
- * texinfo.tex: Changed @lisp, @smalllisp, @display not to change
- the right margin.
+2003-06-18 <karl@gnu.org>
-Mon Dec 5 22:01:49 1988 Robert J. Chassell (bob at rice-krispies.ai.mit.edu)
+ * config.{guess,sub}, install-sh, lib/xalloc.h: update from gnulib.
- * texinfo.tex: Tested the use of `cmbx10' vrs `cmb10' font and
- stayed with cmb10 font since cmb10 looks better when the bold face
- is part of a sentence although the cmbx10 font looks better on its own.
+2003-06-10 <karl@gnu.org>
-Mon Aug 15 14:33:51 1988 Robert J. Chassell (bob at spiff)
+ * version 4.6.
- * texinfo.tex: Changed the (undocumented) @today command from a
- Month Day, Year format to a Day Month Year format. Left old
- version commented out.
+Copyright (C) 2003, 2004 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/contrib/texinfo/ChangeLog.46 b/contrib/texinfo/ChangeLog.46
new file mode 100644
index 0000000..c495abf
--- /dev/null
+++ b/contrib/texinfo/ChangeLog.46
@@ -0,0 +1,12516 @@
+2003-06-10 <karl@gnu.org>
+
+ * version 4.6.
+
+2003-06-04 <karl@gnu.org>
+
+ * config.sub: update from gnulib.
+
+2003-06-03 <karl@gnu.org>
+
+ * mkinstalldirs: update from gnulib.
+
+2003-06-02 Akim Demaille <akim@epita.fr>
+
+ * util/texi2dvi (tex_envvars): New.
+ Use it to forward -I directories to BIBINPUTS and BSTINPUTS, in
+ addition of INDEXSTYLE and TEXINPUTS.
+
+2003-06-02 <karl@gnu.org>
+
+ * makeinfo/html.c (html_output_head): don't output the <link>, to
+ avoid having mozilla put up a document navigation bar when
+ we don't have anything else to support it yet. Report from:
+ Per Bothner.
+ * makeinfo/makeinfo.c: no need to declare add_link or
+ add_escaped_anchor_name, since they are not used.
+
+ * doc/texinfo.txi (Contents): recommend @contents at the beginning
+ more strongly. Suggestions from Kevin Ryde.
+
+2003-06-01 <karl@gnu.org>
+
+ * makeinfo/macro.c (apply): make \\ expand to \ even if the macro
+ has no arguments. Report from: Jesper Harder <harder@ifa.au.dk>,
+ 31 May 2003 02:56:20 +0200.
+
+2003-05-31 <karl@gnu.org>
+
+ * util/dir-example (C++ libraries): new category, suggested by Bruno.
+
+2003-05-29 <karl@gnu.org>
+
+ * configure.ac: pretest version 4.5.93.
+
+2003-05-29 gettextize <bug-gnu-gettext@gnu.org>
+
+ * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.12.1.
+
+2003-05-26 <karl@gnu.org>
+
+ * util/texi2dvi: spurious \ in tex_args assignment.
+
+ * doc/texinfo.txi (Contents): trim excess words.
+
+2003-05-25 <karl@gnu.org>
+
+ * util/texi2dvi: extra quotes for the tex_args assignment in
+ --batch mode.
+
+2003-05-19 <karl@gnu.org>
+
+ * lib/xexit.c: translate fflush error messages, add newlines
+ (report from Jim Meyering).
+ * util/{texindex.c,install-info.c},
+ * makeinfo/makeinfo.c,
+ * info/info.c: use xexit again, with redundant return to avoid
+ warnings.
+
+2003-05-18 <karl@gnu.org>
+
+ * lib/xexit.c (xexit): fputs not fprintf, so we get newline;
+ translate the messages, too. Report from Jim Meyering.
+
+ * util/dir-example: move gcc/automake entries.
+
+ * pretest version 4.5.92.
+
+ * update to automake 1.7.5.
+
+ * makeinfo/html.c (append_char): forgot to increment length, duh.
+ Report from: "Torsten Bronger" <bronger@physik.rwth-aachen.de>,
+ 18 May 2003 14:36:23 +0200.
+
+2003-05-17 <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (defining_copying): new fn.
+ (add_char): call it, when testing if we should
+ call html_output_head.
+ Report from: Torsten Bronger <bronger@physik.rwth-aachen.de>,
+ 17 May 2003 22:10:42 +0200.
+
+ * configure.ac: pretest version 4.5.91.
+
+2003-05-16 <karl@gnu.org>
+
+ * makeinfo/index.c (sort_index): don't deref NULL. Report from Jan.
+
+2003-05-13 <karl@gnu.org>
+
+ * makeinfo/html.c (append_char): appease sgi compiler.
+ * makeinfo/html.c (insert_html_tag): remove spurious arg to pop_tag,
+ From: ezra peisach <epeisach@med-xtal.bu.edu>, 13
+ May 2003 12:13:40 -0400.
+
+ Fix a few GCC warnings, reported by Jim Meyering:
+
+ * info/nodes.c: parenthesize assignment used as truth value.
+ * info/nodemenu.c (format_node_info): strcpy instead of sprintf,
+ since there's no format.
+ * makeinfo/makeinfo.c (isolate_nodename): remove spurious decl.
+ * makeinfo/xml.c (xml_insert_indexterm): declare as void.
+ * info/key.c: initialize with 0,0 at end.
+ * info/infokey.c (main): return instead of xexit, and remove
+ unused variable.
+ * makeinfo/html.c (init_buffer): forgot to return buf.
+ * info/info.c (remember_info_program_name): remove spurious
+ declaration.
+
+ * makeinfo/sectioning.c,
+ * info/infomap.c: remove unused variables.
+
+ * makeinfo/makeinfo.c (insert_toplevel_subdirectory),
+ * info/man.c,
+ * info/infodoc.c (info_find_or_create_help_window): parenthesize
+ && within ||.
+ * info/display.c (display_update_one_window): initialize rep to
+ NULL, parenthesize && within ||.
+
+ * util/install-info.c,
+ * info/info.c (main),
+ * info/makedoc.c (main): return instead of xexit.
+
+2003-05-13 Akim Demaille <akim@epita.fr>
+
+ * util/texi2dvi (get_xref_files): Pass --file-line-error-style
+ to TeX when supported.
+
+2003-05-12 <karl@gnu.org>
+
+ * configure.ac: pretest version 4.5.90.
+
+ * Makefile.am (EXTRA_DIST): add onceonly.m4.
+
+ * makeinfo/tests/accentenc: must discard stderr since we expect
+ two errors in this case.
+
+ * makeinfo/makeinfo.c (main): new option --css-include.
+ (usage): add to --help message.
+ * makeinfo/makeinfo.h (css_include): new global.
+ * makeinfo/html.c (append_char, process_css_file): new fns
+ implementing it.
+ (html_output_head): call it.
+ * doc/texinfo.txi (HTML CSS): new node describing it.
+ Also split up the Generating HTML node into subnodes.
+
+ * config.{guess,sub}: update from gnulib.
+
+2003-05-10 <karl@gnu.org>
+
+ * makeinfo/index.c (sort_index): allocate the sorted index in new
+ memory, and set the original index to that, to avoid problems with
+ @printindex being called twice on the same index.
+ (cm_printindex): do not free the returned index.
+ Report from: Dumas Patrice <dumas@centre-cired.fr>, 9 May 2003
+ 15:12:21 +0200.
+
+2003-05-09 <karl@gnu.org>
+
+ * makeinfo/defun.c (cm_defun): issue error message without extra
+ x's. Report from: Dumas Patrice <dumas@centre-cired.fr>, 9 May
+ 2003 17:24:25 +0200.
+
+2003-05-07 Akim Demaille <akim@epita.fr>
+
+ * util/texi2dvi (textra_cmd): New.
+ (textra): Escape escapes from sed's evaluation.
+ Use them to support additional TeX/LaTeX commands.
+ Support --command as a synonym for --texinfo.
+
+2003-05-06 <karl@gnu.org>
+
+ * util/dir-example: finish getting rid of GNU packages.
+
+2003-05-04 <karl@gnu.org>
+
+ * doc/texinfo.tex (\itemizey): if no arg to @itemize, default to
+ @bullet. Fix from: Stepan Kasal <kasal@math.cas.cz> 2 May 2003
+ 09:32:11 +0200, report from: Jesper Harder <harder@ifa.au.dk>.
+
+2003-04-30 <karl@gnu.org>
+
+ * makeinfo/.gdbinit: no colon on local variables.
+
+ * doc/texinfo.txi (documentencoding): Document new Info output feature.
+ makeinfo/lang.h (encoding_type): rename `ecname' member to `encname'.
+ makeinfo/html.c, lang.c: change usage.
+ makeinfo/lang.c (cm_documentencoding): fix typo in warning.
+ makeinfo/makeinfo.h (SPLIT_SIZE_THRESHOLD): remove.
+ (info_trailer): declare.
+ makeinfo/makeinfo.c (info_trailer): new fn to generate Local
+ Variables: section if --enable-encoding and
+ @documentencoding are given.
+ (convert_from_loaded_file): call it.
+ * makeinfo/node.c (split_file): write trailer into each split
+ file. Also, simply split files if file size is less than
+ --split-size, removing SPLIT_SIZE_THRESHOLD.
+
+ * doc/texinfo.tex: remove trailing whitespace.
+
+2003-04-29 <karl@gnu.org>
+
+ * makeinfo/node.c (cm_anchor): normalize_node_name so that an
+ anchor named "TOP" or "top" or whatever is not allowed. Report
+ from: Dumas Patrice <dumas@centre-cired.fr>, 29 Apr 2003 18:56:51
+ +0200.
+
+2003-04-28 <karl@gnu.org>
+
+ * makeinfo/makeinfo.c: whitespace cleanup.
+
+ * doc/texinfo.tex (\doprintindex): don't \kern-\parindent, it makes
+ the first index entry stick out to the left.
+ Report from: Jesper Harder <harder@ifa.au.dk>,
+ 28 Apr 2003 03:10:36 +0200.
+
+ From Akim Demaille <akim@epita.fr>:
+ * makeinfo/makeinfo.c (cm_value): Warn for undefined flags.
+
+2003-04-27 <karl@gnu.org>
+
+ * doc/texinfo.tex (\footnote, \smartitalicx): use \ptexslash
+ for italic correction instead of \/, since we've redefined \/ now.
+ Report from: Jesper Harder <harder@ifa.au.dk>, 27 Apr 2003
+ 23:30:29 +0200.
+
+ * util/dir-example (mailutils): more from Wojciech Polak.
+ (autoconf): align/edit/sort entries.
+
+2003-04-26 <karl@gnu.org>
+
+ * doc/texinfo.txi (Image Syntax): second and following @image args
+ optional. Report from: Max Techter <mtechter@gmx.de>, 26 Apr 2003
+ 15:50:02 +0200.
+
+ * util/dir-example (anubis): request from Wojciech Polak.
+
+2003-04-25 <karl@gnu.org>
+
+ * makeinfo/defun.c (defun_internal): whitespace needed in docbook
+ output for deftype*. From: José Fonseca
+ <j_r_fonseca@yahoo.co.uk>, 25 Apr 2003 13:07:13 +0100.
+
+2003-04-21 <karl@gnu.org>
+
+ * doc/texinfo.tex (\dofirstparagraphindent): forgot to rename the
+ \...word's.
+ (\suppressfirstparagraphindent): forgot to rename
+ to \dosuppress... Reported by Simon.
+
+2003-04-20 <karl@gnu.org>
+
+ * Installed changes from Simon for suppressing indentation on the
+ first paragraph after section headings, and for new @indent command:
+
+ 2003-04-12 Simon Law <sfllaw@engmail.uwaterloo.ca>
+ * doc/texinfo.tex (\firstparagraphindent): implement suppression
+ of the indentation of the first paragraph.
+ (\dofirstparagraphindent): for parsing arguments.
+ (\suppressfirstparagraphindent): suppress, or don't suppress.
+ (\dosuppressfirstparagraphindent): the actual gobbling of indentation.
+ (\footnote): Compensate for the hanging-indent side-effect.
+ (\numhead, \apphead, \unnmhead): call \dosuppress...
+ * makeinfo/cmds.c (command_table): add "firstparagraphindent"
+ (as cm_firstparagraphindent)
+ (set_firstparagraphindent, cm_firstparagraphindent): implement
+ @firstparagraphindent parsing of options.
+ * makeinfo/makeinfo.h: declare "do_first_par_indent".
+ * makeinfo/sectioning.c (sectioning_underscore): suppress
+ indentation if requested.
+ * doc/texinfo.txi: document it.
+
+ * doc/texinfo.tex (\indent): override \indent primitive to
+ clear \everypar.
+ (\ptexindent): for saving/restoring \indent in @tex.
+ (\footnote): Neutralise the effect of @indent
+ within a footnote.
+ * makeinfo/cmds.c (command_table): add "indent" (as cm_indent).
+ (cm_indent): un-inhibit_paragraph_indentation.
+ * doc/texinfo.txi: document it.
+
+ * doc/texinfo.txi (Conventions): remove spurious extra vertical space
+ from bulleted itemize which starts with a quote.
+
+ * makeinfo/cmds.c (command_table): fix @novalidate definition.
+
+
+ * Installed changes from Jan for @image support in Info format:
+
+ 2003-04-14 Jan Nieuwenhuizen <janneke@gnu.org>
+ * info/display.c (display_update_one_window): Skip new style
+ image tag/cookie.
+
+ 2003-04-09 Jan Nieuwenhuizen <janneke@gnu.org>
+ * makeinfo/makeinfo.c (cm_image): Write ^@^H[image ...^@^H] tag.
+
+
+ * makeinfo/html.c (html_output_head): use <style> to get the
+ regular roman font instead of typewriter for @format and @display;
+ likewise to reduce the font size for @small*. Suggestion from:
+ "Torsten Bronger" <bronger@physik.rwth-aachen.de>, 20 Apr 2003
+ 11:03:59 +0200.
+
+2003-04-18 <karl@gnu.org>
+
+ * configure.ac (ncurses/termcap.h): move test to after termlib's
+ definition, of course. Reported by Norton Allen
+ <allen@huarp.harvard.edu>, 18 Apr 2003 13:31:35 -0400.
+
+ * configure.ac: remove comma from comment in AC_TRY_LINK program,
+ to avoid spurious misinterpretation as an argument delimiter.
+
+2003-04-08 <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (usage): avoid double blank line.
+
+2003-04-05 <karl@gnu.org>
+
+ * Makefile.am (all of them): use $(VAR) instead of @VAR@, since
+ automake now emits definitions for all substituted variables.
+
+ * makeinfo/makeinfo.h (DEFAULT_SPLIT_SIZE): increase to 300,000.
+ (SPLIT_SIZE_THRESHOLD): increase to 500,000.
+ Implicit suggestion via Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>.
+
+2003-04-04 <karl@gnu.org>
+
+ * util/texi2dvi (replace_empty): new variable to do the empty path
+ element detection; don't hardwire path separator as :.
+
+2003-04-02 <karl@gnu.org>
+
+ * doc/txi-pl.tex: new file, from polak@gnu.org.
+ * doc/Makefile.am (TXI_XLATE): add it.
+
+2003-04-01 <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (main): correct wording of html/no-headers/split
+ error message, and don't complain if output is to stdout.
+
+ * makeinfo/insertion.c (end_insertion): for @end menu html output,
+ don't output </ul> if no_headers. Report from: Jesper
+ Harder <harder@ifa.au.dk>, 01 Apr 2003 00:00:37 +0200.
+
+ * info/infomap.c (fetch_user_maps): don't complain if .info
+ doesn't exist.
+
+2003-03-31 <karl@gnu.org>
+
+ * makeinfo/lang.c (iso8859_2_map): new encoding map.
+ (encoding_table): enable it.
+
+ * info/pcterm.c (pc_up_line): use MAX instead of max (no longer
+ defined). Reported by Richard Dawes.
+
+ * doc/texinfo.txi (documentencoding): mention that all processors
+ recognize the command.
+
+2003-03-30 <karl@gnu.org>
+
+ * makeinfo/lang.c (cm_special_character): incorrectly added html
+ sequences for @oe and @OE even in info output.
+
+2003-03-25 <karl@gnu.org>
+
+ * util/srclist.txt (COPYING): get from gnulib/doc, not gnulib.
+
+2003-03-24 <karl@gnu.org>
+
+ * TODO: need to write real definition of Info format.
+
+ * makeinfo/node.c (cm_node): use &nbsp; instead of ` ', to avoid
+ line breaks.
+
+2003-03-22 <karl@gnu.org>
+
+ * makeinfo/node.c (cm_node): output a space after the Node: and
+ similar headers, since Bob wants one.
+
+ * info/pcterm.c (MIN,MAX): moved to system.h.
+ * info/session.c (MIN): moved to system.h.
+ * makeinfo/sectioning.c (MIN): move to system.h.
+ * lib/system.h (MIN,MAX): define here.
+
+ * makeinfo/sectioning.c (sectioning_html): don't go smaller than <h3>.
+ Reported by Bob.
+ (MIN): new macro.
+
+ * info/session.c (MIN) [MIN]: #undef first if already #define'd.
+
+ * doc/texinfo.tex (\nodexxx): use a control sequence instead of
+ brackets to parse the parts of @node. Otherwise node names with
+ brackets cause spurious output. Reported by Bob.
+ (\xrefprintnodename): separate this out from
+ \xrefX, for easier redefining by Bob.
+
+2003-03-18 <karl@gnu.org>
+
+ * makeinfo/insertion.c (cm_item): ensure we don't go off the end
+ of the string when using strncmp. From: Peter N Lewis
+ <peter@stairways.com.au>, 13 Mar 2003 16:08:27 +0800.
+
+ * doc/texinfo.txi (Raw Formatter Commands): mention using \gdef
+ within @tex, not \def.
+
+2003-03-12 <karl@gnu.org>
+
+ * doc/texinfo.txi (Preparing for TeX): mention extra colons.
+
+2003-03-07 <karl@gnu.org>
+
+ * doc/texinfo.tex (\/): new command to allow a line break.
+ (\ptexslash): for saving/restoring primitive \/ in @tex.
+ * makeinfo/cmds.c (command_table): add "/" (as cm_no_op).
+ * makeinfo/makeinfo.c (self_delimiting): add /.
+ * doc/texinfo.txi (Line Breaks, Command Summary): document it.
+ Suggestion from wl.
+
+ * doc/texinfo.tex (\hyphenation): time-stamp.
+
+2003-03-06 <karl@gnu.org>
+
+ * info/session.c (nearest_xref): new fn.
+ (info_menu_or_ref_item): call it when we are
+ searching for xrefs, instead of just looking on
+ the current line.
+ * info/info-utils.c (info_copy_reference): new fn.
+ * info/info-utils.h (info_copy_reference): declare.
+ Bug report from: rich@phekda.freeserve.co.uk,
+ 04 Mar 2003 17:51:47 +0000.
+
+ * */.gdbinit: set env MALLOC_CHECK_.
+
+ 2003-03-06 Ralph Schleicher <rs@nunatak.allgaeu.org>
+ * makeinfo/files.h (get_file_info_in_path): Declare function.
+ * makeinfo/files.c (get_file_info_in_path): Remove static keyword.
+ * makeinfo/makeinfo.c (cm_image): Lookup image file name in the
+ search path for include files.
+
+2003-03-05 <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (insert_toplevel_subdirectory): always make
+ subdirectory for html. Before, if the current directory happened
+ to be named `foo' and the @setfilename was foo.info, we would
+ write the split html files into the current directory. Reported
+ by rich@phekda.freeserve.co.uk, 01 Mar 2003 12:03:13 +0000.
+
+ * makeinfo/files.c (filename_part): simplify assignment.
+
+2003-02-24 <karl@gnu.org>
+
+ * makeinfo/insertion.c (get_item_function): check for @item in
+ argument to @itemize. Report from: Dumas Patrice
+ <dumas@centre-cired.fr>, 24 Feb 2003 13:13:52 +0100.
+
+ * makeinfo/makeinfo.c (remember_brace): say `braces' instead of
+ `{...}', since often we don't actually expect text inside the
+ braces.
+
+2003-02-21 <karl@gnu.org>
+
+ * aclocal.m4: automake 1.7.3.
+
+2003-02-19 <karl@gnu.org>
+
+ * doc/info-stnd.texi: omit all node pointers.
+
+2003-02-18 <karl@gnu.org>
+
+ * util/texindex.c (maketempname): use already-set `tempdir' instead
+ of half-redoing the logic.
+ (concat): only need two args, not three; change callers.
+ (perror_with_name): really call perror, putting
+ the name first a la gcc.
+ (pfatal_with_name): call perror_with_name.
+
+ * util/texi2dvi (get_xref_files): a file whose first line is
+ \input texinfo is not an index file. Report from: Anton Ertl
+ <anton@a0.complang.tuwien.ac.at>, 18 Feb 2003 14:41:47 +0100.
+
+2003-02-16 <karl@gnu.org>
+
+ * makeinfo/index.c (init_indices): don't try to free indexes that
+ undefindex already freed. Report from: Arkadiusz
+ Miskiewicz <misiek@pld.ORG.PL>,
+ 15 Feb 2003 13:22:49 +0100.
+
+ * configure.ac (curses): forgot to quote arg to AC_TRY_LINK.
+ From vojta and te, 16 Feb 2003 01:37:09 +0100.
+
+2003-02-13 <karl@gnu.org>
+
+ * makeinfo/insertion.c (begin_insertion): for html cartouche
+ output, add class="cartouche". Suggestion from Stephen.
+
+2003-02-11 <karl@gnu.org>
+
+ * Installed patch:
+ 2003-02-10 Peter Breitenlohner <peb@mppmu.mpg.de>
+ * info/indices.c, info/info.c, info/info.h, info/nodemenu.c,
+ info/session.c, info/window.c, makeinfo/defun.c, makeinfo/html.c,
+ makeinfo/index.c, makeinfo/insertion.c, makeinfo/makeinfo.c,
+ makeinfo/makeinfo.h, makeinfo/node.c: declare all constant
+ strings as such in order to avoid lots of gcc warnings (for
+ --disable-nls and maybe without that as well).
+
+ * doc/texinfo.tex (\registeredsymbol): new command for Arnold.
+
+ * util/dir-example: dc to basics.
+
+ * doc/texinfo.txi (Defining Macros): document new requirements on
+ macro names. Report from: Alper Ersoy
+ <dirt@gtk.org>, 11 Feb 2003 05:11:35 +0200.
+
+2003-02-07 <karl@gnu.org>
+
+ * makeinfo/insertion.c (begin_insertion): output a table with a border
+ for @cartouche.
+ (end_insertion): end the table.
+ From: Joshua N Pritikin <vishnu@pobox.com>,
+ 7 Feb 2003 21:59:49 +0530.
+
+2003-02-05 <karl@gnu.org>
+
+ * info/info.c (short_options): add h.
+ (main): treat -h same as --help.
+ From: rwhron@earthlink.net, 31 Aug 2002 19:56:57 -0400.
+
+ * info/session.c (show_isearch_prompt): compute length of
+ translated "Failing ", don't assume 20 is enough.
+ (It's 21 bytes in UTF-8 Russian.)
+ Report from: varg@thsun1.jinr.ru,
+ 25 Jul 2002 15:26:42 +0400.
+
+ * info/display.c (display_update_one_window): don't derefence null
+ `entry' (if the screen is very small).
+ From: Danny Yoo <dyoo@hkn.eecs.berkeley.edu>,
+ 8 Jul 2002 15:21:14 -0700.
+
+ * doc/.cvsignore: ignore *.info and texput.log.
+
+2003-02-04 <karl@gnu.org>
+
+ * Version 4.5 (that info bug was a killer).
+
+ * configure.ac (AC_CHECK_HEADERS): test for sys/stream.h.
+ (sys/ptem.h): write separate test since it needs
+ sys/stream.h on Solaris. From: Lars Hecking
+ <lhecking@nmrc.ucc.ie>, 4 Feb 2003 19:47:54 +0000.
+
+ * doc/texinfo.txi: comment about using @example instead of
+ @verbatim due to automake doesn't apply any more.
+
+2003-02-03 <karl@gnu.org>
+
+ * doc/texinfo.tex (\verbatiminclude): use \other instead of 12.
+
+2003-02-02 <karl@gnu.org>
+
+ * doc/texinfo.tex (\cartouche): explicit \par, as @cartouche does
+ not work inside a paragraph.
+ Bug report from: Stephen Gildea <gildea@intouchsys.com>,
+ 15 Oct 1999 09:25:31 EDT.
+
+2003-02-01 <karl@gnu.org>
+
+ * util/fix-info-dir, util/gen-dir-node, util/install-info-html,
+ util/tex3patch, util/txitextest: test && test instead of test -a, etc.
+ From: Paul Eggert <eggert@twinsun.com>,
+ 31 Jan 2003 22:59:35 -0800.
+
+2003-01-31 <karl@gnu.org>
+
+ * doc/texinfo.tex (\groupbox): \newbox.
+ (\vfilllimit): new \def.
+ (\group): insert an explicit \page if the group is
+ big, and doesn't fit on the current page.
+ Otherwise, the previous page gets stretched unreasonably.
+ From: Werner LEMBERG <wl@gnu.org>,
+ 31 Jan 2003 19:19:33 +0100.
+
+ * doc/texinfo.tex (\defargscommonending): insert \penalty10002.
+ (\parsebodycommon): check for \penalty10002 to
+ allow a breakpoint between @def's, not 10000.
+
+ * doc/texinfo.tex (\defargscommonending): new macro.
+ (\defunargs, etc.): call it, instead of repeating code.
+ (No functional change.)
+
+ * info/filesys.c (extract_colon_unit): return last colon unit
+ before claiming we're done. Report from: Alexandre Duret-Lutz
+ <duret_g@lrde.epita.fr>, 31 Jan 2003 18:18:22 +0100.
+
+ * Version 4.4.
+
+2003-01-30 <karl@gnu.org>
+
+ * doc/texinfo.tex (\dosubind): need full expansion of the index
+ sort string.
+
+ * doc/texinfo.tex (\startcontents,\contents,\shortcontents):
+ assignments to \pageno must be \global; otherwise
+ if it's run inside a group, as in
+ @ifnothtml
+ @contents
+ @end ifnothtml
+ the rest of the pages in the document get roman numerals.
+ Reported by rlp.
+
+ * doc/texinfo.tex (\dosubind): need space between entry and
+ subentry in printed output. Bug report from: Robin Lee Powell
+ <rlpowell@digitalkingdom.org>, 30 Jan 2003 15:13:48 -0800.
+ (\defophead, \defcvarhead, \defivarheader): show
+ method name in \code.
+
+ * doc/texinfo.tex (\dosubind): need to \vskip-\skip0, not
+ -\lastskip, since \lastskip gets cleared by the \nobreak. Bug
+ report from: Werner LEMBERG <wl@gnu.org>, 29 Jan 2003 09:18:16
+ +0100.
+
+2003-01-29 <karl@gnu.org>
+
+ * info/signals.c (initialize_info_signal_handler): initialize the
+ sigaction struct here, not statically, since we can't rely on the
+ ordering of the elements; it's different on IRIX and FreeBSD, at
+ least. Patch from: ezra peisach <epeisach@med-xtal.bu.edu>, 28
+ Jan 2003 13:09:18 -0500 (EST).
+
+2003-01-28 <karl@gnu.org>
+
+ * util/dir-example: bring emacs section up to date.
+
+2003-01-27 <karl@gnu.org>
+
+ * configure.ac: pretest version 4.3d.
+
+ More changes to use @ fully in the .aux file, otherwise something
+ as simple as:
+ @node foo
+ @section @code{foo}
+ was broken.
+ * doc/texinfo.tex (\setref): call \atdummies.
+ (\atdummies): new macro, based on \indexdummies.
+ (\commondummies): separate out common redefinitions.
+ (\lbraceatcmd,\rbraceatcmd): @{ and @}, as strings.
+
+ * configure.ac (AC_CHECK_FUNCS): add sigaction.
+ * info/signals.c (set_termsig) [HAVE_SIGACTION]: second arg to
+ sigaction is a pointer, not a struct.
+
+ From: AIDA Shinra <aida-s@jcom.home.ne.jp>, 25 Jan 2003 18:53:19 +0900:
+ * info/signals.c (mask_termsig,set_termsig,restore_termsig): new fns.
+ (initialize_info_signal_handler): use sigaction if we have it.
+ (info_signal_proc): reread window size in case it has changed
+ while we were suspended.
+
+ Mon Jan 27 08:09:07 CET 2003 Stepan Kasal <kasal@math.cas.cz>
+ * doc/texinfo.tex (\acuteaccent): the workaround is no longer needed.
+ (\xrefX): \normalturnoffactive changed to \turnoffactive, since
+ we \otherbackslash right afterwards anyway.
+
+2003-01-24 <karl@gnu.org>
+
+ * doc/texinfo.tex: These changes allow ' in node and anchor names:
+ (\internalsetq): use @ instead of ' as the escape
+ character for .aux files.
+ (\xrdef): don't need to play games with \ now.
+ (\readauxfile): don't set catcode' to 0, and do
+ set catcode@ to 0.
+
+ These changes allow \ in node and anchor names
+ (this worked once, but we broke it somewhere along the line):
+ (\setref, \xrefX, \dosetq, \refx): call \otherbackslash.
+ (\otherbackslash): new macro to make an active
+ backslash expand to a literal `\' character with
+ catcode other.
+
+
+ * configure.ac: pretest version 4.3c.
+
+ * doc/texinfo.tex (\smallenvironments): remove, and change callers.
+ (\small...x): rename to just \small...
+ (\smallexamplefonts): set to \smallfonts, not
+ \smallerfonts, at least until people complain again.
+
+ The effect of these changes is to make the
+ @small... commands print in a smaller font (9pt)
+ for all formats, not just @smallbook and @afivepaper.
+
+
+ * info/filesys.c (extract_colon_unit): rewrite so that an empty
+ unit does not stop us from processing the rest. Report from:
+ Werner LEMBERG <wl@gnu.org>, 24 Jan 2003 07:01:09 +0100.
+
+
+ Date: Mon, 02 Dec 2002 01:06:37 +0900
+ From: AIDA Shinra <aida-s@jcom.home.ne.jp>
+
+ * "info infokey" says key bindings in .info take precedence over
+ the default mapping, but this is not true. Only bindings to
+ undefined keys take effects.
+ * Binding to "invalid" action results crash.
+ * No code to disable prefix keys. Some users might want to bind
+ escape or C-x to a non-prefix key, but this does not allowed.
+ ... It always allows '^h' in incremental
+ search. Some terminals map 'backspace' to '^h' by default.
+
+ These are the changes:
+ * info/session.c (incremental_search): check for Control('h') as
+ well as DEL.
+ * info/infomap.c (find_function_keyseq, add_function_keyseq,
+ remove_function_keyseq): new fns.
+ (keymap_copy_keymap, keymap_discard_keymap): take
+ rootmap arg.
+
+Wed Jan 22 14:25:39 CET 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * doc/texinfo.tex (\footnotezzz): the very beginning was moved
+ to \startfootins;
+ (\startfootins): new macro;
+ (\multitable, \dotable): redefine \startfootins to get footnotes
+ saved, use \crcrwithfootnotes;
+ (\crcrwithfootnotes): check for postponed footnotes each time a row
+ of a multitable is finished;
+ (\tab): no longer defined globally, just \let to & inside
+ @multitable.
+
+2003-01-22 <karl@gnu.org>
+
+ * doc/texinfo.tex: doc fix.
+ * doc/texinfo.tex (\dofootnote): rename from \footnotezzz.
+
+ Wed Jan 22 14:23:51 CET 2003 Stepan Kasal <kasal@math.cas.cz>
+ * doc/texinfo.tex (\cartouche, \footnotezzz): removed \long, it
+ has no effect for macros without a parameter;
+ (\fo@t, \f@@t, \f@t, \@foot): removed, local \def has no effect.
+
+2003-01-21 <karl@gnu.org>
+
+ * doc/texinfo.txi (Output Formats): new section.
+
+2003-01-19 <karl@gnu.org>
+
+ * configure.ac: pretest version 4.3b.
+
+ * makeinfo/tests/include-value: need -I $srcdir.
+
+ * util/texindex.c:
+ * util/install-info.c:
+ * info/infokey.c:
+ * info/info.c:
+ * makeinfo/makeinfo.c:
+ * util/texi2dvi: 2003.
+
+2003-01-18 <karl@gnu.org>
+
+ * makeinfo/node.c: add `(perhaps incorrect sectioning?)' to some of
+ the error messages. Unfortunately we can't easily
+ determine when the error stems from actual
+ mistyped node pointers, and when from incorrect
+ menus causing the implicit pointer creation to fail.
+
+2003-01-17 <karl@gnu.org>
+
+ Thu Jan 16 10:28:32 CET 2003 Stepan Kasal <kasal@math.cas.cz>
+ * doc/texinfo.tex (\refx): Set locally \indexdummies before expanding
+ the \csname, in case there are macros; foreign accents, for example.
+ Bug report from Dumas Patrice <dumas@centre-cired.fr>.
+
+ * makeinfo/makeinfo.c (COMMAND_CHAR): new macro, and exclude ^ and
+ _ from command names.
+ (read_token): call it.
+
+ * makeinfo/makeinfo.h (command_char): move to makeinfo.c, since
+ it's only used in one place.
+
+2003-01-16 <karl@gnu.org>
+
+ * TODO: @else
+
+2003-01-12 <karl@gnu.org>
+
+ * doc/texinfo.tex (\dounmacro): simplify method for removing from
+ macro list. From Stepan. (Also rename from \unmacroxxx.)
+ (\unmacrodo): new macro, called with new method.
+
+ * doc/texinfo.tex (\dotChar, questChar, exclamChar, colonChar,
+ semiChar, commaChar, underChar): names for catcode chars, defined using
+ \chardef. From Stepan.
+
+ * doc/texinfo.tex (\conditionalsucceed): back to the easy
+ definition, since @set is global now. From Stepan.
+
+ * doc/texinfo.tex (\doifclear,\doifset): use \let\next instead of
+ \expandafter, so that we'll succeed on no
+ conditional text. From Stepan.
+ Also rename from \ifclearxxx and \ifsetxxx.
+
+ * doc/texinfo.tex (\expandablevalue): give a \message if the
+ variable is not set. Based on patch from Stepan.
+
+ * doc/texinfo.tex (\setuptable): insert an actual \space after
+ \unskip. From Stepan.
+
+ * doc/texinfo.tex (\kbdinputstyle): give error if unknown argument,
+ and call the macro to set the default. From Stepan.
+
+ * doc/texinfo.tex: typo from Stepan.
+
+ * doc/texinfo.tex (\docenter): rename from \centerzzz and do \hfil
+ instead of using plain's \centerline and \hss. Also force line
+ breaks before and after in horizontal mode.
+ Based on patch from Stepan, 11 Apr 2000 19:44:31 +0200.
+
+ * doc/texinfo.tex: use \other and \active consistently.
+ From: Stepan Kasal <kasal@suse.cz>, 11 Apr 2000 19:44:31 +0200.
+
+ * makeinfo/cmds.c (handle_include): call text_expansion on the
+ filename, so @value constructs are expanded.
+
+ * doc/texinfo.txi (verbatiminclude, Using Include Files): mention
+ @value expansion.
+ Also, update samples to be copyright 2003.
+
+ * doc/texinfo.tex (\doverbatiminclude, \verbatimzzz): expand
+ @value(but nothing else).
+ Bug from: Alper Ersoy <aersoy@tfz.net>,
+ 6 Jan 2003 13:14:28 +0200.
+
+2003-01-11 <karl@gnu.org>
+
+ * doc/texinfo.tex (\definedummyword): new macro.
+ (\indexdummies): call it, instead of defining each
+ command separately; many trailing spaces had been omitted.
+ Alternate implementation of a patch from: Stepan
+ Kasal <kasal@math.cas.cz>, 10 Jan 2003 22:42:05 +0100.
+
+ * doc/texinfo.tex (\acuteaccent): new defn.
+ (\indexdummies): use it instead of \' in the aux file.
+ Variation of a patch from: Stepan Kasal <kasal@math.cas.cz>,
+ 10 Jan 2003 21:28:40 +0100.
+
+ * doc/texinfo.tex: doc fix.
+
+2003-01-10 <karl@gnu.org>
+
+ * doc/texinfo.tex (\indexnofonts, \indexdummies): handle more
+ accent commands.
+ (\indexdummyfont): not needed, use \asis instead.
+
+ * doc/texinfo.tex (\indexdummies,\indexnofonts): indent, no other
+ changes.
+
+ * doc/texinfo.tex (\chapter .. \subsubsection): indent the
+ definitions; no other change.
+
+ * doc/texinfo.txi (Macro details): no multiple-line args is
+ another limitation.
+
+ Fri Jan 10 07:12:23 CET 2003 Stepan Kasal <kasal@math.cas.cz>
+ * texinfo.tex (\writetocentry): The
+ common work on building the line for \write\tocfile was
+ moved into the macro itself and thus all callers has been changed.
+
+2003-01-09 <karl@gnu.org>
+
+ * info/session.c (incremental_search): don't interpret the
+ `function' element as an InfoCommand when it's really a Keymap.
+ This caused arrow keys to be inserted literally under Solaris, but
+ not GNU/Linux. Bug report from: Jeremy Lin
+ <jjlin@OCF.Berkeley.EDU>, 5 Jan 2003 01:59:29 -0800.
+
+ * info/infomap.c: add comment about strange pointer cast.
+
+2003-01-08 <karl@gnu.org>
+
+ * doc/texinfo.tex (\ignoremorecommands): define \Edef... and
+ \def...x for all @def... commands, and use \empty
+ instead of \relax. Bug report from Paul Eggert
+ <eggert@twinsun.com>, 7 Jan 2003 22:29:07 -0800.
+
+2003-01-06 <karl@gnu.org>
+
+ * doc/texinfo.txi (table): mention @option as a useful indicating
+ command, and need for blank lines before and
+ after. Suggestion from: Kevin Ryde
+ <user42@zip.com.au>, 03 Jan 2003 10:02:55 +1000.
+
+2003-01-05 <karl@gnu.org>
+
+ * util/texi2dvi: make egrep a variable (EGREP). Suggestion from:
+ Kurt Hornik <hornik@ci.tuwien.ac.at>.
+ Also, replace fgrep with grep.
+
+ * doc/Makefile.am (TXI_XLATE): include txi-tr.tex from Alper Ersoy
+ <dirt@gtk.org>.
+
+2003-01-02 <karl@gnu.org>
+
+ * makeinfo/insertion.c (end_insertion): in table case, call
+ close_insertion_paragraph. Bug report from: Kevin
+ Ryde <user42@zip.com.au>, 03 Jan 2003 08:09:54 +1000.
+
+ * doc/texinfo.tex: remove spurious CTRL-G.
+
+ * util/srclist.txt: more m4 files from gnulib now.
+
+2003-01-01 <karl@gnu.org>
+
+ * doc/texinfo.tex (\_): more space afterwards, so __ comes out
+ better. Noticed in the gcc manual.
+
+2002-12-31 <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (usage): omit all the help message when something
+ goes wrong in argument parsing, as intended.
+
+2002-12-26 <karl@gnu.org>
+
+ * doc/texinfo.tex (\insertcopying): ignore @c, @comment, and
+ @ignore...@end ignore as best we can. Report from
+ "Joseph S. Myers" <jsm28@cam.ac.uk>, 24 Dec 2002
+ 18:08:10 +0000 (GMT), for the gcc manual, which
+ uses these constructs for automatic man page generation.
+
+2002-12-23 <karl@gnu.org>
+
+ * doc/texinfo.txi (example): note that Texinfo commands are
+ expanded, plus other changes. Suggestion from Nelson Beebe.
+
+2002-12-20 <karl@gnu.org>
+
+ * config.guess: update from prep.
+
+2002-12-17 <karl@gnu.org>
+
+ * makeinfo/texinfo.dtd (indexterm): index not INDEX.
+ (node): only any block, not just para|menu.
+ * makeinfo/xml.c (texinfoml_element_list): format and like can
+ contain para.
+ From: Alper Ersoy <aersoy@tfz.net>.
+
+2002-12-14 <karl@gnu.org>
+
+ * doc/texinfo.txi (makeinfo in Emacs): does not prompt for
+ filename.
+ From: Kevin Ryde <user42@zip.com.au>.
+
+2002-12-13 <karl@gnu.org>
+
+ * doc/texinfo.txi: short sample needs @top (from jas), gnu sample
+ can use @verbatim (automake fix).
+
+2002-12-11 <karl@gnu.org>
+
+ * doc/texinfo.txi: typos.
+
+2002-12-07 <karl@gnu.org>
+
+ * makeinfo/xml.c: use lowercase, allow more chars in id's. From:
+ Jaime Davila <jdavila@engr.uconn.edu>, 6 Dec 2002 11:00:25 -0500.
+
+2002-12-05 <karl@gnu.org>
+
+ * util/dir-example: alphabetize make.
+
+ * NEWS: change texinfo.tex url.
+
+ * doc/texinfo.tex (\obstexwarn): fix url's to TeX.README and
+ texinfo.tex.
+
+2002-12-02 <karl@gnu.org>
+
+ * doc/texinfo.txi (Line Breaks): fixes.
+
+2002-12-01 <karl@gnu.org>
+
+ * configure.ac: pretest version 4.3a.
+
+2002-11-30 <karl@gnu.org>
+
+ * doc/Makefile.am (texinfo): restore rule since this won't quite
+ be fixed until automake 1.7.2 or later.
+
+2002-11-29 19:19 feloy
+
+ * makeinfo/xml.c: Fix the <para>&lt; bug in XML, reported by K.
+ Ryde
+
+2002-11-29 <karl@gnu.org>
+
+ * lib/strdup.c: gnulib update.
+
+2002-11-29 Alexandre Duret-Lutz <adl@gnu.org>
+
+ * doc/Makefile.am (.texi.info, texinfo): Remove. Automake 1.7+
+ no longer output info files in the source tree.
+
+2002-11-26 <karl@gnu.org>
+
+ * makeinfo/insertion.c (cm_insertion_copying): flush_output, so that
+ output_position gets updated, which in turn makes
+ the tag table positions reflect the copying text.
+ Report from: "W. L. Estes" <wlestes@uncg.edu>, 15
+ Nov 2002 15:57:04 -0500.
+
+ * makeinfo/index.c (init_indices): undefindex after we know
+ name_index_alist[i] is not null.
+ From: "Ronald F. Guilmette" <rfg@monkeys.com>, 26 Nov 2002
+ 01:08:04 -0800.
+
+ * doc/Makefile.am (texinfo): depend on version
+ files. Report from: Kevin Ryde
+ <user42@zip.com.au>, 27 Nov 2002 07:52:57 +1000.
+
+2002-11-25 <karl@gnu.org>
+
+ * makeinfo/cmds.c (cm_verb): use <tt> not <pre>, as this is an
+ inline construct. Also, decrement
+ in_fixed_width_font, else the next paragraph does
+ not get a <p>.
+ Report from: Torsten Bronger <bronger@physik.rwth-aachen.de>
+ 26 Nov 2002 00:37:35 +0100.
+
+ * doc/texinfo.tex (\dospecials): must include all other characters
+ that we set active, namely <>|_", or they got
+ mysteriously lost as the first character on a
+ verbatim line.
+ Report from: Torsten Bronger <bronger@physik.rwth-aachen.de>
+ 25 Nov 2002 18:26:12 +0100.
+
+ (\doverbatim): ignore everything up to the first
+ ^^M, to avoid an extra blank line in the output.
+
+ * lib/getopt*, strdup.c, tempname.c: update from gnulib (bruno
+ changes + gpl).
+
+2002-11-24 <karl@gnu.org>
+
+ * doc/texinfo.txi (Multiple Spaces): xref tie rather w for
+ unbreakable spaces.
+
+2002-11-22 <karl@gnu.org>
+
+ * doc/texinfo.txi: editorial changes from Max's editor.
+
+2002-11-21 <karl@gnu.org>
+
+ * doc/texinfo.txi (Conventions): add item for blank lines as
+ paragraph separator. Report from: Maxim Masiutin
+ <max@ritlabs.com>, 21 Nov 2002 00:03:07 +0200.
+
+2002-11-19 <karl@gnu.org>
+
+ * util/install-info.c (ensure_dirfile_exists): don't translate the `*
+ Menu' keyword. Report from: Ingo Krabbe
+ <i.krabbe@dokom.net>, 19 Nov 2002 09:24:45 +0100.
+
+2002-11-18 <karl@gnu.org>
+
+ * po/.cvsignore: exclude *.gmo instead of listing each individually.
+ From: Frédéric L. W. Meunier <0@pervalidus.net>,
+ 15 Nov 2002 20:16:09 -0200 (BRST).
+
+ * configure.ac (--enable-multiplatform): new option for teTeX and
+ TeX Live. From te.
+
+2002-11-14 <karl@gnu.org>
+
+ * configure.ac, util/texi2dvi, NEWS: release version 4.3.
+
+ * util/texi2dvi, mkinstalldirs: use `for var<newline>do"' instead
+ of `for var; do', for Solaris.
+
+ * doc/texinfo.txi (math): emphasize that makeinfo does not interpret
+ the arg.
+
+ * config.{guess,sub}: update from prep.
+
+2002-11-13 <karl@gnu.org>
+
+ * configure.ac: pretest version 4.2f.
+
+ * makeinfo/xml.c (INDEX_SEP): define as a string that will never
+ appear, so that we don't try to break index terms
+ at commas. Idea from: Stepan Kasal
+ <kasal@math.cas.cz>, problem reported by José
+ Fonseca <j_r_fonseca@yahoo.co.uk>.
+
+2002-11-12 <karl@gnu.org>
+
+ * makeinfo/makeinfo.c: make sure command is non-null, for sake of bogus
+ input (\def\x{}). Report from
+ Neil.Turton@broadcom.com, debian bug#168689.
+
+ * makeinfo/Makefile.am (makeinfo_SOURCES): remove docbook.[ch],
+ per feloy the docbook stuff is in xml.[ch] now.
+
+2002-11-12 19:48 feloy
+
+ * makeinfo/: lang.c, makeinfo.c: (docbook) Entities for accented
+ characters are written correctly
+
+2002-11-12 19:34 feloy
+
+ * makeinfo/xml.c: (docbook) Do not expand @set contents
+
+2002-11-11 18:14 feloy
+
+ * makeinfo/xml.c: Better <bookinfo> support
+
+2002-11-11 13:37 feloy
+
+ * makeinfo/: cmds.c, insertion.c, xml.c, xml.h: Better use of
+ <bookinfo> and <abstract> with docbook output
+
+2002-11-11 01:57 feloy
+
+ * makeinfo/: defun.c, xml.c, xml.h: Removed all references to
+ docbook.[ch] which was the old sources for docbook output, replaced
+ by xml.[ch]
+
+2002-11-10 23:31 feloy
+
+ * makeinfo/: insertion.c, xml.c, xml.h: Some bugfixes in docbook
+ output
+
+2002-11-09 18:47 feloy
+
+ * makeinfo/insertion.c: In Docbook, Copying paragraph is not
+ inserted at @copying/@end copying point.
+
+2002-11-08 21:01 feloy
+
+ * makeinfo/xml.c: take care of indexterm at beginning of table
+
+2002-11-08 20:52 feloy
+
+ * makeinfo/xml.c: Text before first @item in @table is inserted as
+ the <title> of <variablelist>
+
+2002-11-08 20:24 feloy
+
+ * makeinfo/xml.c: subsubheading is simplesect and not sect3
+
+2002-11-08 19:13 feloy
+
+ * makeinfo/: makeinfo.c, xml.c, xml.h: makeinfo/xml.c (xml_id):
+ Added more forbidden characters makeinfo/{xml.c,xml.h,makeinfo.c}:
+ Defined xml_in_xref_token variable
+
+2002-11-07 <karl@gnu.org>
+
+ * makeinfo/sectioning.c: doc.
+ * makeinfo/sectioning.c: revert last change, it breaks gcc.
+
+ * makeinfo/xml.c (xml-add_char): don't insert BOOKINFO and ABSTRACT
+ if executing_string. From Jos? Fonseca.
+
+ * configure.ac: pretest version 4.2e.
+
+ From: José Fonseca <j_r_fonseca@yahoo.co.uk>,
+ 7 Nov 2002 00:31:28 +0000.
+ * makeinfo/index.c (cm_printindex): in docbook case, pass the
+ unexpanded index term.
+ * makeinfo/xml.c (xml_insert_indexterm): execute_string instead of
+ insert_string.
+ (Otherwise, <>& are not escaped in the docbook index output.)
+
+ * util/dir-example: sed.
+
+ * makeinfo/lang.c: copyright.
+ * makeinfo/lang.h: copyright.
+
+2002-11-07 Stephen Gildea
+
+ * makeinfo/sectioning.c (sectioning_html): have A tag enclose
+ section name rather than preceding it.
+
+ * makeinfo/toc.c (contents_update_html): put name attribute into
+ existing A tag rather than making a separate tag for it.
+
+2002-11-07 Stephen Gildea
+
+ * makeinfo/lang.c: support @documentencoding US-ASCII:
+ Put NULL at end of map tables so they can be of varying lengths.
+ (us_ascii_map): new iso_map_type table.
+ (encoding_table): add US_ASCII.
+ (cm_search_iso_map): don't assume all maps are the same length.
+ (cm_documentencoding): don't assume ISO_8859_1 is first table entry.
+ * makeinfo/lang.h (encoding_code_type): add US_ASCII.
+
+2002-11-05 <karl@gnu.org>
+
+ * doc/info-stnd.texi: untabify.
+ * doc/info-stnd.texi: document that.
+ * info/footnotes.c (auto_footnotes_p): turn off by default.
+
+ * info/infodoc.c (info_internal_help_text): had
+ scroll-{forward,backward} twice instead of {next,prev}-line.
+ * info/infodoc.c: untabify.
+
+ * util/texi2dvi: untabify.
+ * doc/texinfo.tex: untabify.
+ * util/texindex.c: untabify.
+ * util/install-info.c: untabify.
+ * makeinfo/makeinfo.c: indentation fix.
+ * makeinfo/cmds.c: doc fix.
+
+2002-11-04 <karl@gnu.org>
+
+ * configure.ac: pretest version 4.2d.
+ * doc/fdl.texi: better line break to avoid overfull hbox.
+
+2002-11-04 Stephen Gildea
+
+ * makeinfo/{footnote.c,cmds.c,html.c,index.c,insertion.c,
+ makeinfo.c,node.c,toc.c,sectioning.c}: add a class attribute
+ to tags generated in special circumstances that wouldn't be
+ obvious to a user agent.
+
+ Quote all attribute values (for XHTML).
+
+2002-11-04 <karl@gnu.org>
+
+ * doc/texinfo.txi (File End): grammar.
+
+ These changes from gildea:
+ * makeinfo/cmds.c (cm_titlepage): new fn, and use it for @titlepage.
+
+ * makeinfo/cmds.h (titlepage_cmd_present): new global.
+ * makeinfo/html.c (html_output_head): check titlepage_cmd_present
+ before outputting the <h1>.
+
+ * makeinfo/html.c (html_output_head): put a class on the <h1> from
+ settitle.
+
+ * makeinfo/cmds.c (cm_titlefont): put the class directly on the h1
+ rather than a separate <span> element.
+
+2002-10-31 <karl@gnu.org>
+
+ * doc/texinfo.tex (\mathactive): new fn.
+ (\math): call it, to change definitions of active characters.
+ (\ptex{gtr,hat,less,plus}): save original characters.
+ Report from wl.
+
+ * doc/texinfo.tex (\itemzzz): \penalty10001 instead of 10000
+ before the putative \parskip.
+ (\aboveenvbreak): insert \parskip if penalty!=10000,
+ rather than <10000. Otherwise, @item some long item label /
+ @example has too little spacing.
+ Report from: Werner LEMBERG <wl@gnu.org>,
+ 26 Apr 2002 08:37:41 +0200 (CEST).
+
+ * makeinfo/makeinfo.c (executing_macro): new static.
+ (read_command): set it, if we execute a macro.
+ (add_char): if it is set, call html_output_head.
+ This is so if a macro expansion is first in the document body, the
+ html head gets written before the macro body.
+ Report from: Stephen Gildea <gildea@stop.mail-abuse.org>,
+ 10 Jul 2002 13:35:13 -0400.
+
+ * makeinfo/html.c (html_title_written),
+ * makeinfo/html.h (html_title_written): make available.
+ * makeinfo/cmds.c (cm_titlefont): set html_title_written for html
+ output.
+
+ * util/texindex.c: texindex.c (need_initials, first_initial): New
+ globals.
+ (main): Clear them for each index.
+ (parsefile): Set need_initials when there is more than one
+ initial in this index.
+ (indexify): Do not emit \initial commands unless need_initials
+ is set. Use toupper.
+
+ From: Zack Weinberg <zack@codesourcery.com>
+ Date: Tue, 26 Mar 2002 17:20:06 -0800
+
+ * lib/system.h: doc fix from gildea.
+
+2002-10-30 <karl@gnu.org>
+
+ (Following reported by Bob Wilson.)
+
+ * doc/texinfo.tex (\sectionheading): add either
+ \normalbaselineskip or \parskip after the heading, whichever is
+ larger, instead of hardwiring 10pt.
+
+ * doc/texinfo.tex (\defxbodycommon): new defn, including a
+ potential breakpoint if we have multiple consecutive @def...x commands.
+ (\def*parsebody): use it.
+
+ * doc/texinfo.tex (\singlespace): remove, since we fixed the
+ regular line spacing a long time ago to not be double-spaced.
+ In @smallbook mode, it ironically caused excessive line spacing.
+ (\nonfillstart, \quotation): don't call it.
+
+ * doc/texinfo.tex (\smartslanted, \smartitalic): use \ttsl if in
+ typewriter.
+ From: Bob Wilson <bwilson@tensilica.com>.
+
+ * doc/texinfo.tex (\defmethparsebody): pass \empty to \smallsplit
+ to keep a brace-delimited argument to @deffn from having the braces
+ stripped.
+ (Report from: Han-Wen Nienhuys <hanwen@cs.uu.nl>.)
+
+2002-10-28 <karl@gnu.org>
+
+ * doc/texinfo.tex (\loggingall): rewrite to minimize log file
+ output (ideas from Frank Mittelbach's trace.sty) and explicitly
+ show the etex changes.
+
+ * configure.ac: pretest version 4.2c.
+
+ * NEWS: mention Werner's fixes.
+
+2002-10-27 Werner Lemberg <wl@gnu.org>
+
+ * makeinfo/html.c (insert_html_tag): Fix handling of nested,
+ identical tags.
+
+2002-10-27 <karl@gnu.org>
+
+ * configure.ac (AM_INIT_AUTOMAKE): add dist-bzip2 option.
+
+2002-10-26 <karl@gnu.org>
+
+ * 2002-10-24 Werner Lemberg <wl@gnu.org>
+ Fix html font tags, i.e., make the output similar to
+ texinfo.tex. The main idea is to avoid nested font tags.
+
+ * makeinfo/html.c (push_tag, pop_tag): New functions.
+ (insert_html_tag): Use them.
+ Don't emit more than a single font attribute.
+
+ * makeinfo/html.h (HSTACK): New structure.
+
+ * makeinfo/defun.c: Include cmds.h and html.h.
+ (process_defun_args): Don't apply <i>...</i> to parentheses
+ and brackets.
+ (defun_internal): Use insert_html_tag for emitting font tags.
+
+ * makeinfo/cmds.c (cm_url): Use insert_html_tag for emitting
+ font tag.
+ (cm_r): Simplify.
+
+2002-10-25 Alexandre Duret-Lutz <adl@gnu.org>
+
+ * util/texi2dvi: Preserve empty components when expansing
+ TEXINPUTS and INDEXSTYLE.
+
+2002-10-24 <karl@gnu.org>
+
+ * doc/info-stnd.texi: missing period.
+
+ * m4/{check-decl.m4,mkstemp.m4,prereq.m4}: new files from gnulib.
+ * lib/mkstemp.c, lib/tempname.c: likewise.
+ * aclocal.m4, configure.ac: support for mkstemp instead of mktemp.
+ * util/texindex.c: use mkstemp instead of mktemp.
+
+ 2002-10-24 Alexandre Duret-Lutz <adl@gnu.org>
+ * util/texi2dvi: Turn relative entries $TEXINPUTS and $INDEXSTYLE
+ into absolute paths. (Allows --clean to work with relative dirs
+ in TEXINPUTS, etc.)
+
+ * doc/texinfo.tex: update \texinfoversion timestamp.
+
+2002-10-22 <karl@gnu.org>
+
+ 2002-10-16 Werner Lemberg <wl@gnu.org>
+
+ * texinfo.tex (\appendixbox): New macro to compute a
+ fixed-width box for the appendix entry in the TOC.
+ (\appendixzzz, \appendixentry): Use it.
+
+ (\shortconttt): New font.
+ (\summarycontents): Use it to set the font size of the \tt
+ font properly.
+
+ (\authortt): New macro.
+ (\authorfont): Use it to provide a proper font size for
+ @email used within @author.
+
+2002-10-21 <karl@gnu.org>
+
+ * automake 1.7.1.
+
+2002-10-18 <karl@gnu.org>
+
+ * doc/texinfo.tex (\defname): get rid of the unused
+ \deftypemargin; typeset the function type word flush right, in
+ brackets. Partially suggested by bob.
+
+2002-10-16 <karl@gnu.org>
+
+ * makeinfo/html.c: Just > after all on <meta> and <link> to
+ appease HTML 4.01 (and break XHTML). From Janis.
+
+2002-10-15 <karl@gnu.org>
+
+ * configure.ac: pretest version 4.2b.
+
+ * makeinfo/cmds.c (cm_dots, cm_enddots): don't use small if
+ in_fixed_width_fonts; this violates the html specs, which don't
+ want you to change fonts within <pre>. (Argh.)
+ Report from: Janis Johnson <janis187@us.ibm.com>,
+ 14 Oct 2002 15:59:16 -0700.
+
+2002-10-14 Alexandre Duret-Lutz <adl@gnu.org>
+ * util/texi2dvi (common, txincludes): Fix definitions so that
+ an empty $txincludes doesn't result in a empty path element
+ in TEXINPUTS.
+
+2002-10-14 <karl@gnu.org>
+
+ * info/infokey.c: copyright 2002 not 02.
+ * makeinfo/lang.c: copyright 2001 not 01.
+
+ * makeinfo/insertion.c (begin_insertion): for enumerate, set
+ in_paragraph=0 as we do for itemize.
+ Otherwise a </p> gets inserted at the next @item, which is wrong.
+
+ Report from: Janis Johnson <janis187@us.ibm.com>, 14 Oct 2002
+ 12:35:30 -0700.
+
+2002-10-13 <karl@gnu.org>
+
+ * util/install-info.c (longopts): make --infodir a synonym for
+ --info-dir, for some compatibility with the Debian install-info.
+ Reported by Bob Chassell, Yves Codet <ycodet@club-internet.fr>,
+ and many others.
+
+ * doc/texinfo.txi (makeinfo advantages): document various options
+ that have crept in to the source. (Werner Lemberg noted that
+ --iftex and companions were missing.)
+
+2002-10-10 <karl@gnu.org>
+
+ * makeinfo/cmds.c (cm_tie): new fn for new cmd @tie{}.
+ * doc/texinfo.txi: document it.
+
+2002-10-09 <karl@gnu.org>
+
+ * doc/texinfo.txi: recommend free software directory categories
+ (suggestion from rms),
+ more info about @noindent (fut_nis@d3.dion.ne.jp and ryk@dspwiz.com),
+ version specification (spectorhome@rcn.com).
+
+ * makeinfo/{cmds,footnote,html,insertion,makeinfo,multi,node}.c:
+ use <br /> instead of plain <br>, for the sake of XHTML. Likewise
+ with <hr /> and <meta />, and quote all <meta> values.
+ Suggestion (and assurance of compatibility) from
+ Janis Johnson <janis187@us.ibm.com>
+ and Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+ (the gcc web page maintainers).
+
+ * util/infosrch: new contrib script.
+ * util/Makefile.am (EXTRA_DIST): add infosrch.
+
+2002-10-04 <karl@gnu.org>
+
+ * configure.ac: pretest version 4.2a.
+
+ * TODO: more info on dir categories.
+
+2002-10-02 <karl@gnu.org>
+
+ * doc/.cvsignore: ignore tex output files.
+
+ * util/dir-example: remove unused categories, etc.
+
+2002-10-01 <karl@gnu.org>
+
+ * doc/texinfo.tex (\xml,\ifxml): more \doignore's.
+ (\copying,\insertcopying): new implementation to save the uninterpreted
+ tokens instead of typesetting a box, so that the page size, fonts,
+ etc., don't have to be defined before @copying is run.
+
+ These changes from Werner Lemberg <wl@gnu.org>:
+ (\internalpagesizes): take two new arguments for the physical paper
+ height and width.
+ (\smallbook,\afourpaper,\afivepaper,\letterpaper,\afourwide,
+ \pagesizes): pass them.
+
+2002-09-30 <karl@gnu.org>
+
+ * util/texi2dvi: doc fixes.
+
+ * README: mention autoreconf.
+
+2002-09-29 <karl@gnu.org>
+
+ * doc/texinfo.tex (\pdfmakeoutlines): call \turnoffactive to handle all special characters
+ except \{}.
+ (\normalturnoffactive): call \turnoffactive instead of repeating all the
+ redefinitions.
+
+ * doc/texinfo.tex (\afourpaper, \afourlatex, \afourwide): new
+ formatting values.
+ From: Eric.Belpaire@equant.com, 30 Aug 2002 19:03:30 +0200.
+
+ * aclocal.m4: $Id now omitted.
+
+ * doc/texinfo.txi: document @xml and @ifxml.
+
+ * makeinfo/makeinfo.c (usage): mention the new options.
+ * info/Makefile.am (BUILT_SOURCES): define this unconditionally,
+ no more TEXINFO_MAINT. We handle it in the top-level
+ Makefile.am by defining distcleancheck_listfiles.
+
+ * acinclude.m4: can't have $Id, then it gets propagated to
+ aclocal.m4.
+
+ From: Philippe Martin <feloy@free.fr>, 11 Aug 2002 20:17:44 +0200.
+ * makeinfo/cmds.c: new commands @ifnotxml, @ifxml, @xml.
+ * insertion.c: likewise.
+ (cm_ifxml, cm_ifnotxml): new functions.
+ * insertion.h: likewise.
+ * makeinfo.c: new options --ifxml, --no-ifxml.
+ (cm_image): better xml output.
+ * makeinfo.h (process_xml): new global.
+ * xml.c: call xml_close_sections.
+
+2002-09-28 <karl@gnu.org>
+
+ * makeinfo/insertion.c (begin_insertion): only do <pre>, not
+ <br><pre>; suggestion from Werner.
+
+ * info/infodoc.c: document the bug regarding where_is_rep_index,
+ but don't fix it since it's in the [!INFOKEY] code.
+
+ 2002-05-18 Eli Zaretskii <eliz@is.elta.co.il>
+ These changes make @example be indented in HTML output, and make
+ @exdent work inside an @example in HTML.
+
+ * makeinfo/insertion.c (begin_insertion) <example>: Insert spaces
+ after <pre> to produce indentation of the first line in HTML mode.
+
+ * makeinfo/makeinfo.c (indent): Do indent even in HTML mode.
+
+ These patches from: Thierry Vignaud <tvignaud@mandrakesoft.com>,
+ 24 Apr 2002 20:52:37 +0200.
+
+ * makeinfo/insertion.c: doc fix.
+
+ * info/infomap.c: had h and l functions reversed in vi mode.
+
+ * util/install-info.c: bzip2 support.
+
+ * util/texi2dvi: don't allow whitespace as one of the ?'s around
+ the o in foo.?o?, that could lead to misparsing.
+
+2002-09-27 <karl@gnu.org>
+
+ * doc/Makefile.am (*.1): call the binary, not the source file.
+
+ * util/texindex.c (sort_in_core): int not off_t.
+ (main): cast argument to sort_in_core to int.
+ (sort_offline): nfiles parameter is not actually passed (or used);
+ need to pass &tempfiles[i] to sort_in_core.
+ From: Christopher League <league@contrapunctus.net>,
+ 26 Apr 2002 22:45:45 -0400.
+
+ * doc/texinfo.tex (\unnumb...entry): make analogous to \...entry
+ (except when actually outputting the text, of course), so pdf
+ bookmarks can go to the right level.
+ From: Christopher League <league@contrapunctus.net>,
+ 25 Apr 2002 15:29:24 -0400.
+
+ * install-sh: update from gnulib.
+
+ * makeinfo/insertion.c (handle_verbatim_environment): need to
+ quote & and <.
+ From: Philippe Martin <feloy@free.fr>, 18 Aug 2002 15:39:10 +0200.
+
+ 2002-06-04 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/cmds.c (cm_exdent): Call start_paragraph to restore
+ previous indentation of text. (exponent.tex test.)
+
+ 2002-05-11 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/node.c (remember_node): If the argument FNAME is NULL,
+ as it happens for "Top", use the basename of current_output_filename.
+
+2002-09-26 <karl@gnu.org>
+
+ * lib/system.h [MIKTEX]: include gnu-miktex.h, define S_ISDIR.
+ [! MIKTEX]: declare substring.
+ From: Stephen Gildea <gildea@stop.mail-abuse.org>,
+ 08 May 2002 18:12:58 -0400.
+
+ * doc/texinfo.tex: spurious \let when setting \mainmagstep.
+ From: Stephen Gildea <gildea@stop.mail-abuse.org>,
+ 08 May 2002 08:38:39 -0400.
+
+ * doc/texinfo.txi: copyright symbol: use @code{@copyright@{@}},
+ with the braces in the @code.
+ From: Paul Eggert <eggert@twinsun.com>, 1 Apr 2002 11:37:52 -0800.
+
+ * info/infodoc.c (replace_in_documentation): always allocate at
+ least one byte for replen, otherwise things crash when MALLOC_CHECK_=2.
+ From: "Andreas Herrmann" <AHERRMAN@de.ibm.com>.
+
+ * lib/Makefile.am (libtxi_a_SOURCES): include xalloc.h.
+
+ * doc/Makefile.am (EXTRA_DIST): skip macro.texi and userdoc.texi now.
+ (common_mandeps): new var.
+ (*.1): use that, and depend on the source files with the version strings
+ instead of the binaries. Suggestion from Alexandre.
+
+ * util/Makefile.am (bin_PROGRAMS, ginstall_info_SOURCES,
+ transform): build as ginstall-info, to avoid clashing with the
+ install-info target inserted by Automake. (Suggestion from Akim.)
+
+ * Makefile.am (distcleancheck_listfiles): new definition so
+ distcheck doesn't complain about our generated files in info/,
+ which are conditionalized on TEXINFO_MAINT.
+
+ * lib/gettext.h: update from gettext 0.11.5.
+
+2002-09-24 <karl@gnu.org>
+
+ * util/srclist.txt: m4 files from aclocal rather than gnulib.
+
+ * Makefile.am, util/Makefile.am, dir-example: move dir-example to util.
+
+2002-09-23 <karl@gnu.org>
+
+ * INSTALL.generic: update from autoconf 2.54.
+
+2002-09-20 gettextize <bug-gnu-gettext@gnu.org>
+
+ * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.11.5.
+
+2002-09-12 <karl@gnu.org>
+
+ * util/srclist.txt: INSTALL to INSTALL.generic.
+
+2002-08-04 <karl@gnu.org>
+
+ * doc/texinfo.5:
+ * lib/system.h:
+ * doc/texinfo.tex:
+ * doc/info-fr.texi:
+ * configure.ac: non-copyright notice.
+ * doc/info-fr.texi:
+ * doc/info-stnd.texi:
+ * doc/texinfo.txi: copyright years should be written out in full.
+
+2002-07-23 <karl@gnu.org>
+
+ * doc/texinfo.txi: verbatim license sample per rms and chassell.
+
+2002-07-19 <karl@gnu.org>
+
+ * doc/texinfo.txi:
+
+2002-06-05 <karl@gnu.org>
+
+ * doc/Makefile.am (TXI_XLATE): txi-it.tex from Paolo Bonzini
+ <bonzini@gnu.org>.
+
+2002-06-04 <karl@gnu.org>
+
+ * doc/texinfo.tex (\defparsebodycommon): do \penalty0 if the last
+ item was a \nobreak, since that means we have two function headers
+ in a row. Report from: Brian Gough <bjg@network-theory.co.uk>.
+
+ (\defparsebody,...): use \defparsebodycommon instead of repeating code.
+
+2002-05-09 <karl@gnu.org>
+
+ * doc/texinfo.5: lowercase NAME to `texinfo' for Solaris man.
+ From gildea.
+
+2002-04-29 <karl@gnu.org>
+
+ * doc/texinfo.txi: mention it.
+ * util/texi2dvi: allow -E as well as -e.
+
+2002-04-10 <karl@gnu.org>
+
+ * doc/texinfo.txi:
+
+2002-04-01 <karl@gnu.org>
+
+ * configure.ac: version 4.2.
+ * util/texi2dvi: 4.2
+
+ * makeinfo/toc.c: doc fix.
+ * util/install-info-html:
+ * makeinfo/texinfo.xsl: Fixes From: Ville Skyttä
+ <ville.skytta@iki.fi>.
+
+ * makeinfo/insertion.c (begin_insertion): (copying case) omit
+ cm_insert_copying if no_headers.
+ Bug report from Stephen Gildea.
+
+2002-03-28 <karl@gnu.org>
+
+ * configure.ac: pretest 4.1d.
+
+ * doc/texinfo.txi:
+ * makeinfo/cmds.c: ignore headings commands. From Stephen Gildea.
+
+ * doc/texinfo.txi: @ifplaintext
+
+2002-03-26 <karl@gnu.org>
+
+ * doc/texinfo.tex (\ifplaintext,\ifnotplaintext): new output
+ format conditional.
+
+ * makeinfo/cmds.c (cm_settitle):
+ * makeinfo/node.c (cm_node): need to pass output filename arg to
+ * xml_begin_document.
+
+ * makeinfo/cmds.c (cm_sp): need close_single_paragraph instead of
+ close_paragraph to avoid an extra blank line. Bug report from Stephen Gildea.
+
+ * doc/texinfo.tex (\doignore): can't do c kludge for
+ documentdescription. Bug report from Stephen Gildea.
+
+ * doc/texinfo.txi: missing t in documentdescription example, from
+ Stephen Gildea.
+
+2002-03-24 <karl@gnu.org>
+
+ * doc/texinfo.txi: invar sec
+
+2002-03-23 <karl@gnu.org>
+
+ * configure.ac: pretest 4.1c.
+
+2002-03-23 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/search.c (skip_non_whitespace): Don't go beyond the
+ terminating null character.
+
+ * info/filesys.c (filesys_read_info_file)
+ (filesys_read_compressed): Null-terminate the contents of the file
+ we've read, so it could be used as a C string.
+
+2002-03-23 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (insert_toplevel_subdirectory): Fix
+ computation of output_filename's length, to avoid overrunning
+ malloc'ed buffer. If mkdir returns with EEXIST, assume we can use
+ an existing directory only if the existing file is indeed a
+ directory. On MS-DOS, allow for EACCES in addition to EEXIST.
+ <max_name_len>: Remove this variable.
+
+ * makeinfo/makeinfo.c (expansion): Protect execute_string from too
+ long strings.
+ (EXECUTE_STRING_MAX): New macro.
+ (execute_string): Use EXECUTE_STRING_MAX, not 4000.
+
+2002-03-23 <karl@gnu.org>
+
+ * doc/texinfo.txi:
+ * makeinfo/insertion.h:
+ * makeinfo/texinfo.dtd:
+ * makeinfo/xml.h:
+ * makeinfo/xml.c:
+ * makeinfo/makeinfo.h:
+ * makeinfo/insertion.c:
+ * makeinfo/html.c:
+ * makeinfo/cmds.c:
+ * doc/info-stnd.texi: @permissions -> @copying.
+ * doc/texinfo.tex: permissions -> copying.
+
+2002-03-22 <karl@gnu.org>
+
+ * configure.ac: pretest 4.1b.
+
+ * info/Makefile.am (BUILT_SOURCES): conditionalize on
+ TEXINFO_MAINT, to appease distcheck.
+
+ * From: Matthew Woodcraft <mattheww@chiark.greenend.org.uk>:
+ * makeinfo/makeinfo.h (next_menu_item_number): New global.
+ * makeinfo/insertion.c (begin_insertion): Initialise it.
+ * makeinfo/makeinfo.c (handle_menu_entry): Emit accesskey attribute
+ in html output, according to next_menu_item_number.
+ * makeinfo/node.c (cm_node): Emit accesskey attributes in html output.
+
+ * doc/texinfo.txi: GNU texts.
+
+ * doc/info-stnd.texi: @syncodeindex, not @synindex.
+
+2002-03-21 <karl@gnu.org>
+
+ * doc/texinfo.txi: @permissions.
+
+2002-03-20 <karl@gnu.org>
+
+ * doc/texinfo.txi: document --no-headers a bit better.
+ * makeinfo/makeinfo.c: better description of --no-headers,
+ suggested by Stephen Gildea.
+
+ * makeinfo/makeinfo.c (insert_toplevel_subdirectory): use
+ command-line specified output name unchanged.
+
+ * makeinfo/makeinfo.c (full_expansion): new routine, separated
+ from expansion, that does not tamper with the formatting parameters.
+ * makeinfo/insertion.c: copying -> permissions.
+ (cm_insert_permissions): insert rather than add.
+ * makeinfo/texinfo.dtd:
+ * makeinfo/xml.h:
+ * makeinfo/xml.c:
+ * makeinfo/cmds.c: copying -> permissions.
+ * makeinfo/makeinfo.h: copying -> permissions.
+ (full_expansion): declare.
+
+ * doc/texinfo.txi: @copying -> @permissions, @include fdl.texi.
+ * doc/info-stnd.texi: @copying -> @permissions, always include the FDL.
+
+ * makeinfo/html.c (html_output_head): copying -> permissions, use
+ insert_string.
+ * makeinfo/insertion.h: copying -> permissions.
+ * doc/texinfo.tex: \copying -> \permissions.
+
+ * doc/Makefile.am (EXTRA_DIST): include fdl.texi.
+
+2002-03-19 <karl@gnu.org>
+
+ * makeinfo/insertion.c (cm_insert_copying): use insert_string in
+ the xml case, sigh.
+
+ * doc/info-stnd.texi: copying
+
+ * dir-example: info standalone.
+
+ * makeinfo/html.c: copyright_text -> copying_text.
+ * makeinfo/texinfo.dtd:
+ * makeinfo/insertion.c:
+ * makeinfo/insertion.h:
+ * makeinfo/makeinfo.h:
+ * makeinfo/xml.c:
+ * makeinfo/xml.h:
+ * makeinfo/cmds.c: copyrighttext -> copying.
+ * doc/info-stnd.texi: copyrighttext -> copying.
+ * doc/texinfo.tex (\copying, \insertcopying): rename from
+ copyrighttext per rms.
+
+ * makeinfo/index.c (index_add_arg): don't emit warning for index
+ entries containing : after all.
+
+ * info/infokey.c: remove non-ansi trailing commas from last items
+ of enums. From: Albert Chin-A-Young <china@thewrittenword.com>.
+
+2002-03-18 <karl@gnu.org>
+
+ * doc/info-stnd.texi: @include after @setfilename.
+ * doc/texinfo.txi: @insertcopyrighttext, @settitle GNU ...
+
+ * doc/texinfo.txi: mention @setfilename and source filename
+ exceptions at the top.
+
+ * makeinfo/defun.c (scan_group_in_string): handle escaped @{ and @}.
+ Bug report from Werner Lemberg.
+
+ * doc/info-stnd.texi: add version number to title a la Texinfo.
+ * doc/info-stnd.texi: file -> manual.
+ * doc/info-stnd.texi: use @copyrighttext.
+
+ * makeinfo/insertion.c (begin_insertion, end_insertion):
+ copyrighttext case.
+ * makeinfo/makeinfo.h (copyright_text): declare/define.
+ * makeinfo/html.c (html_output_head): output copyrighttext.
+ * makeinfo/texinfo.dtd: Add copyrighttext.
+ * makeinfo/xml.h (xml_element): add COPYRIGHTTEXT.
+ * makeinfo/xml.c (texinfoml_element_list, docbook_element_list):
+ copyrighttext case.
+
+2002-03-17 <karl@gnu.org>
+
+ * makeinfo/insertion.h (insertion_type): include copyrighttext.
+ * makeinfo/cmds.c (command_table): new command copyrighttext.
+
+ * doc/texinfo.tex (\copyrighttext, \insertcopyrighttext): new
+ Texinfo commands to handle the copyright and permission text cleanly.
+ (\dblarrowbox,\longdblarrowbox,\pushcharbox,\equivbox,\bullbox):
+ remove these definitions that have not been used for ages.
+
+ * configure.ac: call AC_CANONICAL_BUILD before the termcap
+ checking. Bug report from Eli.
+
+2002-03-16 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/node.c (cm_anchor): When recording the anchor position,
+ account for output_paragraph_offset, since the current paragraph
+ might not be closed yet (happens inside a menu, for example).
+
+ * djgpp/config.sed: Tweak to adapt to the new Automake/Autoconf.
+
+ * djgpp/README: Update.
+
+2002-03-15 <karl@gnu.org>
+
+ * dir-example: GNU organization.
+
+2002-03-14 <karl@gnu.org>
+
+ * makeinfo/cmds.c (cm_titlepage): do not declare nonexistent
+ function.
+
+2002-03-14 <karl@gnu.org>
+
+ * doc/texinfo.txi: don't say specifically html 3.2, since <html
+ lang=...> is not 3.2.
+ Bug reprt from: Matthew Woodcraft <mattheww@chiark.greenend.org.uk>.
+
+2002-03-13 <karl@gnu.org>
+
+ * doc/texinfo.tex (\writetocentry): set \pdfmakepagedesttrue here.
+ (\Etitlepage): instead of here. In case the document has no
+ @titlepage. Bug report from Stephen Gildea.
+
+ * util/texi2dvi: be verbose after the definition of cmd, not
+ before. From Andreas Schwab.
+
+2002-03-12 <karl@gnu.org>
+
+ * pretest 4.1a.
+ * doc/info-stnd.texi: update to FDL.
+
+2002-03-11 <karl@gnu.org>
+
+ * util/texi2dvi:
+ * util/texindex.c:
+ * util/install-info.c:
+ * makeinfo/makeinfo.c:
+ * info/infokey.c:
+ * info/info.c: home page and help message.
+
+ * doc/texinfo.txi (math): document @\ (aka \\) for literal \.
+ regularize index entries.
+ * makeinfo/cmds.c (command_table): \\ -> insert_self.
+
+ * doc/texinfo.tex (\mathbackslash): new definition.
+ (\math): handle \\ too.
+ (\codeunder): handle @code{\} in mmode.
+
+ * makeinfo/html.c: make home page be gnu's.
+
+ * doc/texinfo.txi (Conventions): rewrite description of quotes so
+ as to work in all formats; there was no output for HTML.
+ Report from: David Merrill <david@lupercalia.net>.
+
+2002-03-10 <karl@gnu.org>
+
+ * doc/texinfo.txi (Texinfo Copying Conditions): mention this
+ manual's license specifically.
+
+2002-03-09 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/indices.c (add_index_to_index_nodenames): Fix an off-by-one
+ error when computing the number of the last index entry.
+
+2002-03-08 <karl@gnu.org>
+
+ * doc/texinfo.tex: Rewrite unnumbered toc handling to keep track
+ of their sequence, so they can be handled correctly in
+ the PDF toc (= bookmarks).
+ From: Werner LEMBERG <wl@gnu.org>.
+
+ * configure.ac: AC_MSG_WARN if can't find a term library. From:
+ Marc.Herbert@ens-lyon.fr.
+
+ * info/info.c: alphabetize.
+ * info/info.c: include short option names.
+
+2002-03-08 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/display.c (display_update_one_window): Dynamically reallocate
+ printed_line[] as needed. When under -R, ignore ANSI escapes for
+ the purposes of line wrap display. Clear the line to EOL if it
+ used escape sequences. Reallocate entry->text if the new
+ printed_line is longer than screenwidth.
+
+ * info/window.c (string_width): Don't count ANSI escape sequences
+ in string width, when under -R..
+ (calculate_line_starts): Don't count ANSI escape sequences in line
+ width, when under -R.
+ (window_get_cursor_column, window_chars_to_goal): When under -R,
+ ANSI escapes don't affect the horizontal position.
+
+ * info/info-utils.c (printed_representation): If -R is in effect,
+ treat ESC as a normal character.
+
+2002-03-08 <karl@gnu.org>
+
+ * util/Makefile.am:
+ * info/Makefile.am:
+ * makeinfo/Makefile.am:
+ * lib/Makefile.am: doc fix.
+
+ * doc/Makefile.am (install-tex): prefix the install directories
+ with $(DESTDIR), because that is what automake does for all
+ generated install rules. The file pdfcolor.tex should be
+ installed as such (and not as epsf.tex).
+ From: Peter Breitenlohner <peb@mppmu.mpg.de>.
+
+ * configure.ac (AC_INIT): now pass [GNU Texinfo].
+ (AM_INIT_AUTOMAKE): now no args, for automake 1.6.
+
+2002-03-05 <karl@gnu.org>
+
+ * doc/texinfo.txi: history
+
+2002-03-04 <karl@gnu.org>
+
+ * configure.ac: version 4.1.
+ * util/texi2dvi: version.
+
+ * doc/texinfo.txi: @settitle is used in html output (from Eli),
+ various underfull hbox fixes.
+
+2002-03-02 <karl@gnu.org>
+
+ * configure.ac: pretest 4.0k
+
+ * info/info.c: declare add_file_to_directory to avoid warning.
+
+ * doc/info-stnd.texi: info standalone so as not to collide with
+ `standards' in dir.
+
+2002-03-01 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/insertion.c (end_insertion): Insert the /td and /tr
+ directives in lower case. From Per Bothner <per@bothner.com>.
+
+ * makeinfo/macro.c (cm_alias): Ignore whitespace around the alias
+ name, like the manual promises.
+
+ * doc/texinfo.txi (Invoking Macros, Macro Details): Document that
+ commas in macro arguments don't work in TeX. Advise texi2dvi -e
+ when macros don't work with TeX.
+
+ * doc/texinfo.txi (Node Line Requirements): Add restrictions about
+ parens and some punctuation characters in node names.
+ (Def Cmd Template): Document that macros are not expanded.
+
+ The following two changes allow to say "info foo" if there's an
+ Info file `foo' somewhere along INFOPATH.
+
+ * info/info.c (add_file_directory_to_path): New function, code
+ moved from `main'.
+ (main): Use add_file_directory_to_path.
+
+ * info/session.c (info_follow_menus): If the first menu entry
+ couldn't be found as an item in DIR's menu, try it as a file name.
+
+ 2001-06-19 Mark Montague <markmont@umich.edu>
+
+ * info/filesys.c: Fix for sparc64 (offsets should be "long"s).
+
+ * info/session.c: Fix typos in function calls.
+
+ 2001-08-23 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/footnote.c (cm_footnote): Don't allow footnotes inside
+ footnotes.
+ (output_pending_notes): Increment already_outputting_pending_notes
+ in the HTML case as well, to protect execute_string from
+ recursively entering output_pending_notes.
+
+2002-03-01 <karl@gnu.org>
+
+ * doc/texinfo.tex: fix mismatched $'s for sake of emacs font-lock.
+ From: Stephen Gildea <gildea@stop.mail-abuse.org>.
+
+2002-02-27 <karl@gnu.org>
+
+ * configure.ac: pretest 4.0j.
+
+ * info/infodoc.c: 1scroll-forward typo.
+
+2002-02-26 <karl@gnu.org>
+
+ * lib/system.h [! ENABLE_NLS]: let's not go const.
+
+2002-02-26 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * djgpp/config.sed: Add tweaking of file names in "install-info"
+ and "uninstall-info" targets.
+
+ * doc/inf-stnd.texi (Custom Key Bindings, Invoking infokey):
+ Add footnotes about DOS file names.
+
+ * info/infokey.c (main) [__MSDOS__]: If HOME is not defined,
+ default to the current directory.
+
+2002-02-26 <karl@gnu.org>
+
+ * lib/system.h (LC_MESSAGES) [! LC_MESSAGES]: need this after all.
+
+2002-02-25 <karl@gnu.org>
+
+ * doc/info-stnd.texi: contents at top, avoid overfull hbox.
+ * lib/Makefile.am (libtxi_a_sources): include gettext.h.
+
+ * lib/system.h (LC_MESSAGES): don't need conditional, Bruno says
+ that locale.h or libintl.h does so.
+
+ * configure.ac: pretest 4.0i.
+
+ * dir-example: infokey.
+ * doc/info-stnd.texi: invoking infokey.
+ * info/infokey.c (short_help): reorganize slightly.
+
+ * lib/system.h: use "gettext.h" instead of <libintl.h> per gettext
+ 0.11 recommendation.
+
+2002-02-25 gettextize <bug-gnu-gettext@gnu.org>
+
+ * Makefile.am (SUBDIRS): Add intl.
+ * configure.ac (AC_CONFIG_FILES): Add intl/Makefile.
+
+2002-02-25 <karl@gnu.org>
+
+ * util/Makefile.am (LDADD):
+ * makeinfo/Makefile.am (LDADD):
+ * info/Makefile.am (LDADD): @LIBINTL@ per gettextize.
+
+ * configure.ac: gettextize changes.
+ * Makefile.am: gettextize changes.
+
+2002-02-25 gettextize <bug-gnu-gettext@gnu.org>
+
+ * Makefile.am (SUBDIRS): Add m4.
+ (SUBDIRS): Remove intl.
+ (ACLOCAL_AMFLAGS): New variable.
+ (EXTRA_DIST): Add config.rpath.
+ * configure.ac (AC_CONFIG_FILES): Add m4/Makefile.
+ (AC_CONFIG_FILES): Remove intl/Makefile.
+
+2002-02-23 <karl@gnu.org>
+
+ * pretest 4.0h.
+
+ * 2002-02-23 Eli Zaretskii <eliz@is.elta.co.il>
+ * doc/info-stnd.texi (Invoking Info): Add a reference to the
+ description of index-apropos and index-search. Document the
+ --raw-escapes option.
+ (Searching Commands): Describe index-search and index-apropos.
+
+ * info/man.c (clean_manpage): If raw_escapes_p is not set, remove
+ ANSI escape sequences from the man page.
+
+ * info/info.h: Declare raw_escapes_p.
+
+ * info/info.c: <raw_escapes_p>: New variable.
+ New option --raw-escapes or -R.
+ (main): Handle it.
+ (info_short_help): Document it.
+ (main): Honor --output together with --usage, by dumping the node
+ we found to the named file.
+
+ 2002-02-23 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/html.c (nodename_to_filename): Call
+ nodename_to_filename_1 with the last argument 1, not 0.
+
+ * makeinfo/toc.c (shortcontents_update_html)
+ (contents_update_html): Don't omit the entry for the Top node.
+
+ * 2002-01-30 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/node.c (cm_node): Don't condition splitting on
+ top_node_seen being non-zero. If current_node is NULL, use the
+ current output file name to get at the file name for the previous
+ node. Don't compute a new file name for a node if we didn't close
+ the current file.
+
+ 2002-02-01 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/node.c (cm_node): Call html_output_head whenever we
+ create a new split-HTML file.
+
+ * makeinfo/html.c (html_output_head): Make html_title static.
+ Compute it only once, and don't free it. Output the <h1> title
+ header only once per run.
+
+ 2002-02-02 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/toc.c (contents_update_html): Fix the condition for
+ omitting duplicate TOC entries. Fix comparison with the TOC entry
+ for "Top".
+
+2002-02-14 <karl@gnu.org>
+
+ * doc/Makefile.am (DISTCLEANFILES): use this variable instead of
+ the distclean-aminfo target, which apparently is no longer used.
+
+ * pretest 4.0g.
+
+ * doc/texinfo.tex (\appendixentry): new macro for typesetting
+ appendix toc entries.
+ (\appendixzzz, \summarycontents, \pdfoutlines): use it, instead of
+ usurping \chapentry. This allows the bookmarks in the pdf output
+ to come out right. Report from: Kurt Hornik
+ <Kurt.Hornik@ci.tuwien.ac.at>.
+
+2002-02-13 <karl@gnu.org>
+
+ * configure.ac: ALL_LINGUAS is deprecated as of gettext 0.11.
+ * doc/texinfo.tex (\image): remove spurious \loggingall.
+
+ * doc/texinfo.txi: @math now implies @tex.
+ * doc/texinfo.tex (\math): imply @tex.
+
+2002-02-11 <karl@gnu.org>
+
+ * makeinfo/insertion.c (handle_verbatim_environment): save and
+ restore filling_enabled and inhibit_paragraph_indentation. Bug
+ report from: Alexandre Duret-Lutz <duret_g@lrde.epita.fr>.
+
+ * makeinfo/makeinfo.c (reader_loop): don't worry about bare braces
+ inside @math.
+
+2002-02-08 <karl@gnu.org>
+
+ * info/infodoc.c: keep underlines with the text they refer to, for
+ translation purposes.
+ Pointed out by Christian Rose <menthos@menthos.com>, 20 nov 2001.
+
+ * doc/info.texi: recommend setting INFOPATH.
+
+ * doc/Makefile.am (install-tex): need $(srcdir) for install.
+ From: istry <istry@mail.ru>.
+
+ * doc/texinfo.tex: replace $$$ delimiter with $.$, for sake of
+ font-lock in Emacs 21.1. Suggestion from: Stephen Gildea
+ <gildea@stop.mail-abuse.org>.
+
+ 2002-01-26 Eli Zaretskii <eliz@is.elta.co.il>
+ * info/infomap.c (default_emacs_like_info_keys)
+ (default_emacs_like_ea_keys, default_vi_like_info_keys)
+ (default_vi_like_ea_keys): Fix default keybindings to be
+ consistent with non-INFOKEY branch. Add bindings for Home, End,
+ and Delete keys.
+
+ 2002-01-23 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/toc.h <TOC_ENTRY_ELT>: New member html_file.
+
+ * makeinfo/toc.c (toc_add_entry): Compute and set the html_file
+ member.
+ (shortcontents_update_html): Produce the toc_* links correctly,
+ without duplicating the link text. Fix comparison with "Top".
+ Handle the case when there's @shortcontents, but no @contents.
+ (contents_update_html): Fix the way toc_* anchors are produced
+ from toc_entry_alist[i]->name: take only the node name from the
+ string in toc_entry_alist[i]->name. Fix comparison with "Top".
+
+ * makeinfo/sectioning.c (sectioning_html): Take the toc_anchor
+ substring before closing the anchor with </a>. Fix the closing
+ </hN> tag--add 2 to level, not 1. Use sizeof instead of a magic
+ value of 9.
+
+ * makeinfo/cmds.c: Make @summarycontents call cm_shortcontents, as
+ promised by the docs.
+
+ 2002-01-19 Eli Zaretskii <eliz@is.elta.co.il>
+ * djgpp/config.sed: Fix a problem with AC_CONFIG_LINKS that
+ prevented building from a directory on another drive.
+
+ * djgpp/config.bat: Fix problems with long --srcdir diectory names.
+
+ * djgpp/README: Update.
+
+2002-01-31 <karl@gnu.org>
+
+ * doc/texinfo.txi: mention dvips
+
+2002-01-28 <karl@gnu.org>
+
+ * configure.ac (ALL_LINGUAS): add hr.
+
+2002-01-22 <karl@gnu.org>
+
+ * makeinfo/defun.c (defun.c): only warn about ( immediately
+ following a defun name, since the groff manual needs other
+ characters there where whitespace is incorrect.
+ Reported by Werner Lemberg <wl@gnu.org>.
+
+ * doc/info-stnd.texi: alphabetize variable list.
+
+ * doc/texinfo.txi: no :'s in index entries, index @page/@group
+ some more.
+
+ * makeinfo/index.c (index_add_arg): warn if index entry contains a
+ colon. From: Kenneth Lorber <keni@his.com>.
+
+2002-01-21 <karl@gnu.org>
+
+ * makeinfo/insertion.c: </pre not /<pre, reported by Mike
+ Benefield <mike@duckbrain.com>.
+
+2002-01-18 <karl@gnu.org>
+
+ * configure.ac: pretest 4.0f.
+
+ * util/texindex.c:
+ * util/install-info.c:
+ * makeinfo/makeinfo.c:
+ * info/info.c: it's 2002.
+
+ * info/session.c: pass right args to info_scroll_half_screen_up.
+ From Eli.
+
+2002-01-18 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/multi.c (multitable_item): Always return a value.
+
+ * util/install-info.c (xmalloc, xrealloc, pfatal_with_name)
+ (open_possibly_compressed_file, parse_input): Call `fatal' with 3
+ arguments, to avoid compiler warnings.
+ (main): Call `fatal', `error', and `warning' with the right number
+ of arguments.
+
+ * makeinfo/makeinfo.c (main): Remove extraneous first arg of
+ usage().
+
+ * info/window.c (build_message_node): Supply a 4th argument to
+ build_message_buffer.
+
+
+2002-01-18 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/sectioning.c (sectioning_html): End the anchor properly
+ with a </a>.
+
+ * info/session.c (info_menu_or_ref_item): If we didn't find a
+ cross-reference on this line, try the one before.
+
+ * info/infomap.c (fetch_user_maps): Provide two different
+ translations for ``file too small'' and ``file too big'' error.
+
+ * info/info.c (info_short_help): Print the --speech-friendly
+ option together with the other options, not at the end of the help
+ screen.
+
+2002-01-18 Andreas Schwab <schwab@suse.de>
+
+ * makeinfo/html.c (escape_string): When string is empty don't read
+ past end of it.
+
+2002-01-17 <karl@gnu.org>
+
+ * doc/info-stnd.texi: overfull box in table.
+
+2002-01-16 <karl@gnu.org>
+
+ * configure.ac: pretest 4.0e.
+
+ * doc/info.texi: update from emacs.
+
+2002-01-03 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (file_line_error): New function.
+
+ * makeinfo/insertion.c (discard_insertions): Call file_line_error
+ instead of changing global variables.
+
+ * makeinfo/sectioning.c (cm_top): Ditto.
+
+ * makeinfo/node.c (validate_file): Ditto.
+
+ * makeinfo/makeinfo.c (discard_braces, handle_variable_internal):
+ Ditto.
+
+ * makeinfo/macro.c (define_macro): Ditto.
+
+ 2001-12-31 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/node.h (TAG_ENTRY): New struct member html_fname.
+
+ * makeinfo/node.c (find_node_by_fname): New function.
+ (remember_node): Accept an additional argument FNAME, the node's
+ file name, and record it in the list of nodes; callers changed.
+ (cm_node): Call find_node_by_fname to see if this node's file name
+ clashes with another node or anchor. If it clashes with another
+ node, append the new node to the same file instead of erasing the
+ other node. If it clashes with an anchor, print an error message
+ and overwrite the anchor's file.
+ (cm_anchor): If this anchor's file name clashes with another
+ anchor or node, print an error message and ignore the anchor.
+
+ * makeinfo/files.c (normalize_filename): New function.
+
+ * makeinfo/files.h <normalize_filename>: Add declaration.
+
+ * makeinfo/html.c (nodename_to_filename_1): Call
+ normalize_filename before returning the file name to the caller.
+ Disable the code which adds #Nodified-filename to the file name we
+ produce.
+
+ * makeinfo/makeinfo.c (add_char): Don't replace whitespace with
+ &nbsp; if we are producing an HTML directive.
+ (add_html_elt): New function.
+ (cm_xref, cm_inforef, cm_uref, cm_email, cm_image): Use
+ add_html_elt instead of add_word, where appropriate.
+
+ * makeinfo/html.c (add_link): Ditto.
+
+ * makeinfo/footnote.c (cm_footnote): Ditto.
+
+ * makeinfo/defun.c (defun_internal): Ditto.
+
+ 2001-12-27 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/node.c (cm_node): Don't omit links to (DIR) from the
+ navigation bar, add_anchor_name will DTRT now.
+
+ * makeinfo/makeinfo.c (cm_xref): Produce a split-HTML file name
+ from arg1, the node name, not from arg3 or arg2, which are the
+ reference name. Use arg2 or arg3 for the text to be displayed as
+ a link between ">" and "</a>". Use add_anchor_name instead of
+ add_nodename_to_filename.
+ (cm_inforef): Use add_anchor_name instead of
+ add_nodename_to_filename. Handle the case of a missing second
+ argument in @inforef.
+
+ * makeinfo/html.c (add_anchor_name): Always add # and the anchor
+ name, even if we are splitting. If the node is "(dir)", treat it
+ as if it were "dir".
+ (nodename_to_filename_1): Don't append #Top for the Top node.
+ (add_link): Don't punt if nodename is "(dir)". Output "</a>"
+ after the link.
+
+ 2001-12-25 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (cm_xref, cm_inforef): Output the target
+ file name via add_nodename_to_filename.
+
+ 2001-12-20 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/html.c (nodename_to_filename_1): Make references to Top
+ to refer to index.html#Top.
+ (add_nodename_to_filename): Accept additional argument HREF;
+ callers changed.
+
+ * makeinfo/toc.c (rewrite_top): If the filename to rewrite is
+ stdout or the null device, do nothing.
+
+ * makeinfo/makeinfo.c (insert_toplevel_subdirectory): Use
+ FILENAME_CMP instead of strcmp. Search for a period forward, not
+ backward. Make index_name[] a static const array, and its len
+ computed at compile time.
+ (convert_from_loaded_file): If output_filename is the null device,
+ turn off HTML splitting.
+ (cm_xref): Use add_anchor_name, rather than add_escaped_anchor_name,
+ in the 5-argument case in HTML mode.
+ (cm_inforef): Fix external references in HTML mode.
+
+ * makeinfo/node.c (cm_node): Use FILENAME_CMP instead of strcmp.
+ Don't open a new file if the new node's name is empty. Take the
+ directory part of split-HTML files from current_output_filename,
+ not from toplevel_output_filename (the latter doesn't include the
+ manual's subdirectory part).
+
+ * makeinfo/html.c (nodename_to_filename_1): Use FILENAME_CMPN
+ instead of strncmp. Support *.inf files in references.
+
+2001-12-11 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * djgpp/config.bat, djgpp/config.sed, djgpp/config.site: Update
+ for Texinfo 4.0d.
+
+ * makeinfo/makeinfo.c (insert_toplevel_subdirectory): Use IS_SLASH
+ instead of literal `/'.
+ (convert_from_loaded_file): Flush the output stream before
+ creating the TOC.
+
+
+2002-01-14 <karl@gnu.org>
+
+ * info/info.c: translate --speech-friendly (from Eli).
+ * makeinfo/index.c: formatting.
+
+ 2001-12-24 Eli Zaretskii <eliz@is.elta.co.il>
+ * info/infomap.c (initialize_info_keymaps): Bind the user-defined
+ keys on top of the default ones, not the other way around.
+
+2002-01-11 <karl@gnu.org>
+
+ * info/info.c: can't do #ifdef inside of printf any more.
+ From: Tyler <tyler@zerodivide.cx>
+
+ * configure.ac (ALL_LINGUAS): add he, from Eli.
+
+2002-01-09 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/window.c (calculate_line_starts): Cast node->contents[i] to
+ unsigned char.
+
+2002-01-04 <karl@gnu.org>
+
+ * doc/texinfo.tex (\footnotezzz): \noindent=\relax.
+
+2002-01-03 <karl@gnu.org>
+
+ * doc/texinfo.tex (\imagexxx): handle pdf and dvi cases the same.
+ (\dopdfimage): need \immediate to avoid seg fault when including the
+ same image twice.
+ Bug reports from Alexandre Duret-Lutz <duret_g@lrde.epita.fr>.
+
+2001-12-31 <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (cm_image): check *ext_arg as well as
+ ext_arg when computing length of fullname.
+
+ * makeinfo/defun.c: docbook changes.
+ * makeinfo/docbook.c (docbook_punctuation): remove deprecated
+ default: at end of statement.
+
+ * makeinfo/docbook.c: initial.
+ * makeinfo/docbook.h: initial.
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add docbook.[ch].
+ * makeinfo/makeinfo.c (add_char): use &nbsp; in docbook case.
+
+ * doc/texinfo.tex (\footnotezzz): use \everypar={\hang} instead of
+ just \hang in case a footnote extends for multiple paragraphs.
+
+2001-12-18 <karl@gnu.org>
+
+ * info/Makefile.am (BUILT_SOURCES): include $(EXEEXT) on makedoc
+ dependency since automake doesn't do it.
+
+ 2001-12-11 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * djgpp/config.bat, djgpp/config.sed, djgpp/config.site: Update
+ for Texinfo 4.0d.
+
+ * info/infomap.c (fetch_user_maps): Initialize `filename' to NULL
+ and don't try to call `open' if `filename' is NULL.
+ [__MSDOS__]: Try the current directory if neither $INFOKEY nor
+ $HOME are defined.
+
+ * makeinfo/makeinfo.c (insert_toplevel_subdirectory): Use IS_SLASH
+ instead of literal `/'.
+ (convert_from_loaded_file): Flush the output stream before
+ creating the TOC.
+
+ 2001-12-10 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/infokey.c (main): Use FOPEN_WBIN instead of "w".
+
+ * info/infokey.h (INFOKEY_SRCFILE, INFOKEY_FILE) [__MSDOS__]:
+ Special definitions for MS-DOS.
+
+ 2001-12-09 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * lib/system.h: Condition inclusion of libintl.h on ENABLE_NLS.
+ (gettext, bindtextdomain, textdomain) [!ENABLE_NLS]: Provide
+ trivial definitions for when NLS is not used.
+ (LC_MESSAGES) [!ENABLE_NLS]: Define if undefined by locale.h.
+
+2001-12-18 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/infomap.c (decode_keys): Change the return type to int;
+ callers changed. Return zero if some of the special keys in SRC
+ are not defined by the terminal; return non-zero otherwise.
+ (section_to_keymaps): If decode_keys returns zero, don't bind the
+ key sequence.
+
+2001-12-18 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/xml.c (xml_insert_element_with_attribute)
+ (xml_insert_element): Rename the argument `element' to `elt'.
+
+ * info/infokey.c (compile): Use \033 instead of (non-standard) \e.
+
+2001-12-17 <karl@gnu.org>
+
+ 2001-12-16 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/pcterm.c (pc_initialize_terminal) [INFOKEY]: Store term_kh,
+ term_ke, term_ki, and term_kx sequences.
+ (DJGPP_keytab): Map Home, End, and Insert to escape sequences, not
+ to C-a, C-e, etc.
+
+ * info/infomap.c (default_emacs_like_info_keys)
+ (default_emacs_like_ea_keys, default_vi_like_info_keys)
+ (default_vi_like_ea_keys): Add the leading suppress-default flag,
+ to be consistent with the table which comes from a file.
+
+ * info/session.c (info_do_lowercase_version): Add a doc string.
+
+ * info/infodoc.c (describe_key) [INFOKEY]: If keystroke is bound
+ to do-lowercase-version, but its lower-case variant is undefined,
+ say that keystroke is also undefined.
+
+
+2001-12-12 <karl@gnu.org>
+
+ * makeinfo/files.c (find_and_load): remove conditionals on
+ VMS|O_BINARY, always just read as many bytes as we can.
+
+ 2001-12-11 Eli Zaretskii <eliz@is.elta.co.il>
+ * new files for djgpp/.
+
+ 2001-09-09 Eli Zaretskii <eliz@is.elta.co.il>
+ * info/echo-area.c (build_completions): Look for a candidate
+ completion which matches user's request including the letter-case,
+ use that as the value of LCD_completion.
+
+ 2001-12-06 Eli Zaretskii <eliz@is.elta.co.il>
+ * info/echo-area.c (build_completions): When looking for the best
+ completion candidate, only compare as much characters as the user
+ typed.
+
+
+2001-12-04 <karl@gnu.org>
+
+ * doc/texinfo.tex (\pdfmkpgn): remove trailing @ in link names
+ again. Also from Kurt.
+
+ * doc/texinfo.tex (\image): need five commas to ignore additional
+ optional args to @image. From Kurt.Hornik@ci.tuwien.ac.at.
+
+ * doc/texinfo.tex (\afourlatex): reset \globaldefs=0 explicitly.
+ From Trond Endrestøl <trond@ramstind.gtf.ol.no>.
+
+2001-12-01 <karl@gnu.org>
+
+ * makeinfo/files.c (find_and_load): remove O_BINARY from open
+ call, this messes up under Windows. From eli.
+
+2001-11-20 <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (cm_image): reword error messages.
+
+2001-11-19 <karl@gnu.org>
+
+ * Pretest 4.0d.
+ * doc/texinfo.txi: index ragged right/left.
+
+ * info/window.c (build_message_buffer): handle %1$s as used in
+ ja.po. From Fumitoshi UKAI <ukai@debian.or.jp>.
+
+ * configure.ac (ALL_LINGUAS): add sv.
+
+2001-11-16 <karl@gnu.org>
+
+ * Makefile.am (EXTRA_DIST): add COPYING.DOC.
+
+ 1999-10-30 Andrew Bettison <andrewb@zip.com.au>
+
+ All these changes are to implement user-configurable key mapping
+ using the new 'infokey' program. For the time being, the new
+ code is conditional on [INFOKEY] and the old code is still there
+ in case we want to revert.
+
+ * info/session.c (incremental_search): test for printable chars
+ _before_ isearch command keys -- makes a difference if the
+ isearch commands are bound to printable chars.
+
+ * info/doc.h,
+ * info/infodoc.c,
+ * info/infomap.c,
+ * info/m-x.c,
+ * info/session.c: New typedef InfoCommand, plus a bunch of
+ supporting macros, to abstract a "command" away from being a
+ function pointer.
+
+ * info/doc.h (pretty_keyseq),
+ * info/infodoc.c (pretty_keyseq),
+ * info/session.c (pretty_keyseq): Moved definition from
+ session.c into infodoc.c, and rewrote to recognise special
+ terminal sequences (PgUp, PgDn, etc.).
+
+ * info/infodoc.c (create_internal_info_help_node,
+ replace_in_documentation, info_where_is),
+ * info/m-x.c (info_execute_command): Cleaned up references to
+ hardwired keystrokes.
+
+ * info/infodoc.c (replace_in_documentation):
+ Extended the \\[foo] syntax to recognise \\%-X.Y[foo], which
+ causes the replacement text to be inserted using sprintf("%-X.Ys").
+
+ * info/session.c (_scroll_forward, _scroll_backward,
+ scroll_forward_page_only, scroll_backward_page_only,
+ scroll_forward_page_only_set_window,
+ scroll_backward_page_only_set_window): New functions, eliminating
+ need for SPC and DEL hack.
+
+ * info/session.c (scroll_forward, scroll_backward,
+ scroll_forward_set_window, scroll_backward_set_window): Call
+ _scroll_forward and _scroll_backward to do all the work.
+
+ * info/infomap.c (initialize_info_keymaps)[!INFOKEY]: set 'v'
+ and Control('v') key bindings to info_scroll_backward_page_only
+ and info_scroll_forward_page_only respectively.
+
+ * info/Makefile.am (bin_PROGRAMS): Added new executable `infokey'.
+ (infokey_SOURCES): Defined.
+ (EXTRA_DIST): Added `sample_infokey'.
+ (BUILT_SOURCES): Added `key.c'.
+
+ * info/infokey.h,
+ * info/infokey.c: Created, for new program `infokey' which
+ creates a $HOME/.info file by compiling a text source file with
+ syntax very similar to that used by `lesskey' in less 3.4.0.
+
+ * info/makedoc.c: Generate new file `key.c' defining an array to
+ map command names to codes.
+
+ * info/key.h: Created, to define contents of new `key.c' now
+ created by makedoc.
+
+ * info/info.h (INFOKEY): Define, to enable all following changes.
+ (set_variable_to_value)[INFOKEY]: Declare new function.
+
+ * info/makedoc.c [INFOKEY]: Write '#define A_' numeric command
+ code definitions into `funs.h' to support new key binding system.
+
+ * info/session.c (info_dispatch_on_key, info_numeric_arg_digit_loop)
+ [INFOKEY],
+ * info/infomap.c [INFOKEY],
+ * info/infodoc.c (function_documentation, function_name,
+ describe_key, pretty_keyname, pretty_keyseq_internal,
+ where_is_internal)[INFOKEY],
+ * info/terminal.h (term_kh, term_ke, term_kx, term_ki)[INFOKEY],
+ * info/terminal.c (term_kh, term_ke, term_kx, term_ki,
+ terminal_initialize_terminal)[INFOKEY],
+ * info/variables.c (set_variable_to_value)[INFOKEY],
+ * info/sample_infokey: Added infokey functionality, copied more
+ or less wholesale from 'lesskey' in GNU Less 3.4.0. Added a new
+ typedef struct FUNCTION_KEYSEQ, and a new element `keys' to
+ typedef struct FUNCTION_DOC, to give the user some control over
+ the keystrokes that appear in the documentation node generated
+ by get-help-window, and to improve efficiency a little.
+
+ * info/infodoc.c (info_internal_help_text,
+ create_internal_info_help_node)[INFOKEY]: Rewrote all code that
+ assumes fixed keystrokes, replacing %10s sequences with \\%10[foo]
+ sequences instead.
+
+ * doc/info-stnd.texi: Documented above changes.
+
+2001-09-19 <karl@gnu.org>
+
+ * makeinfo/cmds.c: </ not /<, duh :). From janneke.
+
+2001-09-12 <karl@gnu.org>
+
+ * configure.ac (AC_SYS_POSIX_TERMIOS, AC_HEADER_TIOCGWINSZ): use
+ these new autoconf macros instead of the old automake ones.
+
+ * info/terminal.c: remove unconditional include of sys/ioctl.h.
+ * info/termdep.h: <sys/ioctl.h> [GWINSZ_IN_SYS_IOCTL]: include outside of HAVE_TERMIOS_H,
+ per autoconf manual.
+
+ * doc/Makefile.am (install-info-am): remove override of automake's
+ target, instead enable looking in . for info files within automake.
+
+ * doc/info-stnd.texi: include separate version-stnd.texi
+ * configure.ac: autoconf 2.52, and rename to configure.ac.
+
+2001-09-11 <karl@gnu.org>
+
+ * doc/texinfo.txi: recommend against using - and _ in @set names,
+ * and rearrange that section.
+
+ * info/infodoc.c (replace_in_documentation): free fun_name to fix
+ memory leak.
+ From: "Art Haas" <ahaas@neosoft.com>, Sat, 4 Aug 2001 08:34:31 -0500.
+
+ * makeinfo/lang.c: encoding support for info output from kama.
+ * makeinfo/lang.h: encoding support for info output from kama.
+
+ * makeinfo/html.c: include document encoding code unless
+ no_encoding.
+ * makeinfo/insertion.c (cm_direntry): don't call begin_insertion
+ if ignoring.
+ (cm_documentdescription): moved here, and likewise.
+ (begin_insertion): don't need output format conditionals here.
+
+ * makeinfo/cmds.c (cm_documentdescription): move to insertion.c.
+ * makeinfo/makeinfo.h (enable_encoding): new global.
+ * makeinfo/makeinfo.c: new option --enable-encoding, rearrange help.
+
+ Sun Oct 31 18:44:24 UTC 1999 Karl Heinz Marbaise <kama@hippo.fido.de>
+
+ - lang.{c,h}:
+ o added translation map between HTML markups and 8-Bit
+ (ISO-8859-1 codes; supplemental is Unicode for the future).
+ o added cm_search_iso_map:
+ search for characters based on HTML markup names for
+ translation 8-Bit code.
+ o recognizing of @documentencoding improved.
+ now we can recognize things like ISO-8859-{1...15}
+
+ - makeinfo.{c,h}:
+ o added two command line switches.
+ + info-encoding to activate the encoding for info output
+ which is correctly shown by info. Default is NOT to
+ encode the output to be compatible with earlier versions.
+ + no-encoding to suppress encoding e.g. while producing
+ ASCII output (--no-headers) results in that you get
+ "A for &Auml; as before.
+ o help output changed to document the switches.
+
+ - html.c:
+ charset encoding in html based on @documentencoding.
+
+
+2001-07-31 <karl@gnu.org>
+
+ * doc/texinfo.txi: mention pdfcolor.tex.
+ * doc/texinfo.tex: doc.
+ * doc/Makefile.am (install-tex): install pdfcolor.tex too.
+ * doc/pdfcolor.tex: new file, since Kurt.Hornik@ci.tuwien.ac.at
+ reports that not all pdftex installations include it.
+
+2001-07-25 <karl@gnu.org>
+
+ * doc/texinfo.tex (\Etitlepage): need \HEADINGSon before the
+ \...aftertitlepage checks to get page numbers. Report from
+ 3diff@gnu.org.
+
+2001-07-06 <karl@gnu.org>
+
+ * doc/texinfo.txi: mention http://docbook2X.sourceforge.net/.
+
+2001-06-29 <karl@gnu.org>
+
+ * makeinfo/makeinfo.c: make output to stdout imply --no-split for
+ HTML, too.
+
+ * makeinfo/html.c (html_output_head): use documentdescription if set.
+ * makeinfo/insertion.h (insertion_type): new case documentdescription.
+ * makeinfo/insertion.c (begin_insertion, end_insertion,
+ insertion_type_names): new case for documentdescription.
+ * makeinfo/cmds.c (cm_documentdescription): new fn.
+ * makeinfo/makeinfo.h (document_description): new global.
+ * doc/texinfo.txi: @documentdescription.
+ @documentdescription implementation from patches by Will Estes.
+
+2001-06-26 <karl@gnu.org>
+
+ * doc/texinfo.txi: documentdescription
+ * doc/texinfo.tex: Ignore @documentdescription ... @end
+ documentdescription.
+
+ * doc/texinfo.txi: document sequential punctuation in @footnote is
+ normal, suggested by rms.
+
+2001-06-21 <karl@gnu.org>
+
+ * doc/texinfo.tex (\textfonts): call \setleading here, so that we can
+ switch font sizes back and forth inside @tex with \globaldefs=1
+ and not lose the leading.
+
+ * doc/texinfo.txi: allow @smallbook to run without overfull or
+ underfull boxes.
+
+2001-06-19 <karl@gnu.org>
+
+ * doc/texinfo.tex (\imagexxx): ignore new optional args to @image.
+
+ * makeinfo/html.c (html_output_head): include <h1>title</h1> at
+ beginning of document.
+ * makeinfo/sectioning.c (cm_top): don't include explicit links in
+ HTML output, the regular code for @node will do it.
+ (sectioning_html): use <h2> for chapter instead of <h1>, etc.
+ * makeinfo/node.c (cm_node): do not include code to output the
+ HTML <head>, we do that elsewhere now.
+
+ 1999-11-26 W. L. Estes <will@fumblers.org>
+ * makeinfo/insertion.c (begin_insertion): add an explicit <br>
+ before beginning a <pre> block. for flushleft and flushright, use
+ <div> tag with an align attribute set.
+ * makeinfo/insertion.c (end_insertion): for flushleft and
+ flushright, end the </div> block.
+
+ * makeinfo/makeinfo.c (cm_image): new variable, alt_arg now allows
+ user-supplied alt attribute value and
+ ext_arg allows user-supplied extension for image files.
+
+ * makeinfo/toc.c (contents_update_html): add anchors at chapter
+ level entries
+ (shortcontents_update_html): hrefs in shortcontents point to the
+ above anchors in the detailed contents
+
+ * doc/texinfo.txi: document changes to @image and the new behavior
+ of shortcontents entries
+
+2001-06-14 <karl@gnu.org>
+
+ * makeinfo/node.c: no need for size_t.
+
+2001-06-13 <karl@gnu.org>
+
+ * texinfo.tex (\pdfmkdest): \normalturnoffactive, so refs and
+ defs match.
+ (\xrefX): pdf link defs no longer use @, so link refs shouldn't use @
+ either. (All xrefs in pdf were failing.)
+ (\mkpgn): remove redundant second definition.
+
+ * texinfo.tex (\smallerfonts): new font size.
+ (\smallexample, et al.): use it, in all cases, not just @smallbook.
+
+ 1999-11-30 Andreas Schwab <schwab@suse.de>
+ * doc/texinfo.tex (\xrefX): Turn off active characters when writing
+ out the link name for pdf.
+
+2001-06-13 <karl@gnu.org>
+
+ * doc/texinfo.txi: document that @smallexample is smaller in all
+ page formats now.
+
+2001-06-11 <karl@gnu.org>
+
+ * 4.0c.
+ * util/Makefile.am: Don't need automake patch any more, with
+ automake 1.4p4.
+
+ * configure.in (AC_FUNC_SETVBUF_REVERSED): only needed on
+ pre-sysvr3 systems that nobody has anymore? Or so Russ Allbery
+ informs me ...
+
+2001-06-08 <karl@gnu.org>
+
+ * makeinfo/Makefile.am (EXTRA_DIST): include texinfo.{dtd,xsl}.
+
+ * util/Makefile.am: automake-1.4p3 now.
+
+2001-06-07 <karl@gnu.org>
+
+ * util/texi2dvi: comment out conditional text, from Werner LEMBERG
+ <wl@gnu.org>.
+
+ 2001-06-02 Eli Zaretskii <eliz@is.elta.co.il>
+ * info/echo-area.c (info_read_completing_internal): If there are
+ no completions, say that instead of "Not complete".
+
+ * configure.in (ALL_LINGUAS): add da
+
+ * makeinfo/Makefile.am (pkgdata_DATA): include texinfo.xsl.
+
+ * configure.in: update for autoconf 2.50.
+
+2001-06-04 <karl@gnu.org>
+
+ * util/Makefile.am (EXTRA_DIST): automake-14p2.patch now.
+ * util/automake-14p2.patch: rename from 14p1.
+
+2001-05-22 <karl@gnu.org>
+
+ * changes from feloy for lowercase xml names, etc.
+
+2001-05-21 <karl@gnu.org>
+
+ * util/Makefile.am (EXTRA_DIST): add automake-14p1.patch.
+ * makeinfo/Makefile.am (pkgdata_DATA): define to install
+ texinfo.dtd.
+
+ 2001-05-17 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/makeinfo.c (cm_xref, cm_inforef): Don't allow empty
+ first arguments in cross references.
+
+ * makeinfo/makeinfo.c: redo --help, basic patch from ke@suse.de.
+
+2001-05-03 <karl@gnu.org>
+
+ * doc/info.texi: move help-cross to be subnode of cross-refs,
+ instead dangling out in space.
+ * doc/info.texi: update from eli
+
+2001-05-02 <karl@gnu.org>
+
+ * makeinfo/xml.c (xml_push_current_element): need to select the
+ `name' member.
+
+2001-05-01 <karl@gnu.org>
+
+ * configure.in: 4.0b
+
+ * doc/info.texi (Help-Cross): subsection of Cross-refs.
+
+ * lib/system.h (va_alist, etc.): moved from makeinfo.c.
+ * makeinfo/makeinfo.c (va_alist, etc.): move to system.h
+
+ * makeinfo/xml.[ch]: new files from Philippe Martin <feloy@free.fr>.
+ * pretty much all files also modified for XML/DocBook output.
+ * doc/texinfo.txi: minimally mention --xml and --docbook.
+ * makeinfo/xml.c: convert to K&R until we can do ansi2knr.
+
+ * util/texindex.c,
+ * util/install-info.c,
+ * info/info.c: it's 2001.
+
+2001-04-15 <karl@gnu.org>
+
+ * doc/info.texi: major update from eli.
+
+2001-04-13 <karl@gnu.org>
+
+ 1999-10-16 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/node.c (cm_node): Don't generate cross-references to
+ "(DIR)".
+ * makeinfo/html.c (add_link): Likewise.
+
+ 1999-10-16 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/makeinfo.c (insert): Don't call html_output_head here.
+ (add_char): Call html_output_head here...
+ * makeinfo/cmds.c (cm_sp): ...and here...
+ * makeinfo/toc.c (cm_contents, cm_shortcontents): ...and here...
+ * makeinfo/node.c (cm_anchor): ...and here.
+
+ * makeinfo/html.c (html_output_head): `free' html_title if
+ expanded. Make <head> and <body> stand out.
+
+2001-04-12 <karl@gnu.org>
+
+ 1999-12-26 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/defun.c (defun_internal): Use execute_string instead
+ add_word_args to expand defined_name, type_name and category (in
+ HTML mode).
+
+2001-03-29 <karl@gnu.org>
+
+ * Makefile.am: simple license.
+
+2001-02-27 <karl@gnu.org>
+
+ 1999-12-17 Yoshiki Hayashi <t90553@mail.ecc.u-tokyo.ac.jp>
+ * info/terminal.h, info/terminal.c (term_kh, term_ke, term_kD):
+ New variables to hold Home, End, Delete key sequences.
+ * info/infomap.c (initialize_emacs_like_keymaps,
+ initialize_vi_like_keymaps): Set them.
+
+ * makeinfo/makeinfo.h,
+ * makeinfo/makeinfo.c: --split-size option from Yoshiki:
+ 1999-12-09 Yoshiki Hayashi <t90553@mail.ecc.u-tokyo.ac.jp>
+ * makeinfo/makeinfo.h (split_size): New option.
+ * makeinfo/makeinfo.c (long_options): Add split_size.
+ (usage): Ditto. Suggested by Richard Y. Kim.
+
+ * util/texi2dvi: -o support from Akim.
+
+2001-02-02 <karl@gnu.org>
+
+ * dir-example: don't need zsh twice.
+
+ From: Nishio Futoshi <fut_nis@d3.dion.ne.jp>, 02 Apr 2000.
+ * doc/texinfo.txi: capitalization fixes.
+ * doc/info.texi: up pointer fixes.
+ * doc/texinfo.txi: installing an info file.
+
+ * makeinfo/makeinfo.c: --output is for split html, not non-split.
+ From: Karl Eichwalder <keichwa@gmx.net>
+
+2001-01-12 <karl@gnu.org>
+
+ 1999-10-15 Eli Zaretskii <eliz@is.elta.co.il>
+ * makeinfo/cmds.c (cm_sc): Don't print the warning about
+ all-uppercase argument in menus under --no-headers.
+
+ * makeinfo/files.c: pass O_BINARY flag to open, suggested by bfox.
+
+2001-01-11 <karl@gnu.org>
+
+ * info/terminal.c [HAVE_TERMIOS_H && TCOON]: tcflow TCOOFF/TCCON
+ to resume output if user presses CTRL-S at the beginning of
+ things.
+ [HAVE_TERMIO_H && TCXONC]: ditto.
+ From Kevin Ryde <user42@zip.com.au>, 16jun2000;
+ cf. emacs/src/sysdep.c.
+
+2001-01-08 <karl@gnu.org>
+
+ * makeinfo/cmds.c: afivepaper, afourwide, afourlatex.
+ * doc/texinfo.txi: afivepaper
+
+2001-01-05 <karl@gnu.org>
+
+ * doc/info.texi: typo from: Martin Buchholz <martin@xemacs.org>.
+ * doc/info.texi: typo fixes from meyering.
+
+2001-01-02 <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (remember_brace_1): don't assume command is
+ non-null, an (erroneous) input line like \hbox to7in{ passes in a
+ null.
+
+ * makeinfo/toc.c: fix from jan
+ * makeinfo/html.c: fix from jan for top-level references.
+
+2000-12-22 <karl@gnu.org>
+
+ * makeinfo/makeinfo.c: --help changes.
+ * doc/texinfo.txi: -o means the directory name for HTML output.
+
+2000-12-21 <karl@gnu.org>
+
+ * doc/texinfo.txi: switch to fdl
+
+ * makeinfo/html.c: doc fix.
+ * makeinfo/insertion.c: no space after _ I guess.
+ * makeinfo/cmds.c: no space after _ I guess.
+
+ * makeinfo/html.c (nodename_to_filename_1): fix up external
+ * top-node references.
+
+2000-12-20 <karl@gnu.org>
+
+* HTML table patch from Jan:
+ 2000-12-19 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * makeinfo/multi.c (multitable_item),
+ (cm_tab): close html table columns. Also, align cell contents to
+ top, which is probably the most sensible thing to do for text.
+
+
+2000-12-19 <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (insert_toplevel_subdirectory): try
+ name.html if just name doesn't work.
+
+ * doc/texinfo.txi: document html output in .html directory
+ sometimes.
+
+ * util/Makefile.am (EXTRA_DIST): add install-info-html.
+
+ * util/texindex.c: 2000
+ * util/install-info.c: 2000
+ * info/info.c: 2000
+ * configure.in: 4.0a
+
+ * lib/system.h: include limits.h
+
+ * Applied HTML splitting changes from Jan:
+ 2000-11-10 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * makeinfo: removed code for numbered split HTML output, removed
+ SPLIT_JCN conditional.
+
+ 2000-11-09 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * makeinfo/html.c: prepared nodifying filename functions for
+ linking not non-spit HTML documents, by adding ``#anchor'' to
+ external refernces.
+
+ * doc/texinfo.txi (Installing HTML info): updated doco for --html
+ option, added node Installing HTML info.
+
+ * util/install-info-html.in: new script. The bare minimum
+ required for generating HTML index.
+
+ * lib/system.h: compilation fix.
+
+ 2000-11-08 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * makeinfo/makeinfo.c (convert_from_loaded_file): [SPLIT_JCN]:
+ overloaded already way too hairy function with logic to put split
+ html output into subdirectory with basename of toplevel output
+ file.
+
+ * makeinfo/html.c (fix_filename): new function.
+
+ 2000-11-07 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * toc.c (toc_add_entry):
+ (contents_update_html):
+ (shortcontents_update_html): [SPLIT_JCN]: use hrefs for nodename based
+ html files.
+
+ * node.c (cm_node): [SPLIT_JCN]: create html filename based on
+ nodename (instead of a numbered node<num>.html filename).
+
+ * makeinfo/makeinfo.c (main): [SPLIT_JCN]: enable splitting of
+ html output.
+
+ * makeinfo/html.c
+ (add_url_name,add_nodename_to_filename,nodename_to_filename): new
+ functions.
+
+2000-12-15 <karl@gnu.org>
+
+ * configure.in (AC_CHECK_HEADERS): add limits.h explicitly.
+
+2000-11-10 <karl@gnu.org>
+
+ * dir-example: update
+ * info/nodes.c: doc fixes, etc.
+
+ * incorporated verbatim patch from janneke:
+ 2000-04-14 <janneke@gnu.org>
+
+ * applied texinfo-3.12s.jcn4 patch
+
+ 1999-09-02 <janneke@gnu.org>
+
+ * makeinfo/cmds.c,
+ * makeinfo/insertion.c: @verbatiminclude file
+ * doc/texinfo.tex: @verbatiminclude file
+ * doc/texinfo.txi: @vebatiminclude file doco
+ * NEWS: added @verbatiminclude to Language section
+
+ 1999-09-01 <janneke@gnu.org>
+
+ * makeinfo/makeinfo.c: bf: @exdent (urg6.texi) -- Rolled into 4.0
+ * NEWS: added verb* to Language section
+ * doc/texinfo.txi: @verb, @verbatim doco
+ * doc/texinfo.tex: tricky tex-fix for @verb{<char>..<char>}
+ * doc/texinfo.tex: real tab expansion for @verbatim mode
+ * doc/texinfo.tex: proper start of environment, no indentation
+
+ 1999-08-31 <janneke@gnu.org>
+
+ * makeinfo/cmds.c:
+ * makeinfo/insertion.{c,h},
+ * makeinfo/makeinfo.{c,h}: redo of @verbatim, @verb{<char>..<char>}
+ * doc/texinfo.tex: fixed @verb{<char>..<char>}
+
+ 1999-08-30 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * makeinfo/cmds.c,
+ * makeinfo/insertion.{c,h},
+ * makeinfo/makeinfo.{c,h}: added @verbatim (and preliminary @verb)
+ support
+ * doc/texinfo.tex: added @verbatim (and preliminary @verb) support
+
+ 1999-08-24 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * bf: empty node: makeinfo/node.c:cm_node () -- Rolled into 4.0
+
+
+2000-10-18 <karl@gnu.org>
+
+ * doc/info.texi: eli update
+
+2000-09-22 <karl@gnu.org>
+
+ * makeinfo/defun.c: warn if non-whitespace follows @defun'd name
+ (suggestion from Akim).
+
+ Installed some patches:
+
+ 2000-08-04 Paul Eggert <eggert@twinsun.com>
+ * makeinfo/multi.c (find_template_width):
+ Don't access before start of *PARAMS.
+
+ 2000-08-21 Eli Zaretskii <eliz@is.elta.co.il>
+ * info/filesys.c (info_file_in_path): Reject FILENAME if it is
+ empty, or ".", or "..".
+
+ 2000-08-23 Eli Zaretskii <eliz@is.elta.co.il>
+ * info/session.c (info_menu_or_ref_item): If the user have chosen
+ menu item or xref that's identical to defentry's label, use
+ defentry instead of looking for its label. Otherwise, select the
+ entry whose position is the closest to the window's point, in
+ case there's more than a single entry with that label.
+
+2000-09-12 <karl@gnu.org>
+
+ * doc/texinfo.txi: it's 2000 now.
+ * doc/texinfo.txi: document the only real (and rare) reason for not using implicit pointer
+ creation.
+
+2000-09-06 <karl@gnu.org>
+
+ * configure.in: test all termcap variables for existence. From
+ andy@rz.uni-karlsruhe.de.
+
+ * configure.in (ALL_LINGUAS): include ja.
+ * lib/system.h [HAVE_IO_H]: make #include <io.h> conditional for
+ BeOS. Reported by Dan Moore, dan@moore.cx.
+ * configure.in (AC_CHECK_HEADERS): add io.h.
+
+2000-06-05 <karl@gnu.org>
+
+ * doc/texinfo.txi: forgot to escape {}.
+
+2000-05-30 <karl@gnu.org>
+
+ * info/filesys.c (is_dir_name): check all info suffixes as well as
+ the compression suffixes. Fixes segmentation fault on a dir.info
+ file ending after the * Menu.
+
+2000-05-28 <karl@gnu.org>
+
+ * doc/texinfo.txi: Forgot {arg} in @rmacro example. From Olaf B.
+
+2000-05-27 <karl@gnu.org>
+
+ * doc/txi-cs.tex: update from: Stepan Kasal <kasal@suse.cz>.
+
+ * doc/Makefile.am (install-data-local): reformat warning per
+ François to hopefully make it more noticeable.
+
+ 2000-02-08 Eli Zaretskii <eliz@is.elta.co.il>
+ * info/session.c (incremental_search): Don't retain RET when
+ exiting isearch. Suggested by Hrvoje Niksic <hniksic@iskon.hr>.
+
+2000-05-22 <karl@gnu.org>
+
+ * doc/texinfo.txi: pageparams -> pagesizes
+
+2000-05-18 <karl@gnu.org>
+
+ * makeinfo/lang.c (cm_accent_tilde): need N in list.
+ From: kama@hippo.fido.de (Karl Heinz Marbaise)
+
+ * makeinfo/files.c (find_and_load): read only the number of bytes
+ available in the buffer. Also, remove one-byte-at-a-time reading
+ in the WIN32 case.
+ From: "J. David Bryan" <dbryan@bcpl.net>
+
+ * info/man.c: use eli's patch after all, we re-increment j at the
+ top of the loop.
+
+2000-05-16 <karl@gnu.org>
+
+ * info/man.c (clean_manpage): don't write before the beginning of
+ newpage.
+ (based on patch from Eli).
+
+2000-02-03 <karl@gnu.org>
+
+ * doc/texinfo.txi: remove spurious space. from kaja.
+
+1999-10-12 Karl Berry <karl@gnu.org>
+
+ * doc/Makefile.am (install-tex): install all txi-?? files.
+
+1999-10-01 W. L. Estes <will@fumblers.org>
+
+ * makeinfo/cmds.c: dont treat @center as separate paragraph,
+ use div element to output center
+
+1999-09-29 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * djgpp/README: Say `dir-example', not DIR.
+
+ * lib/system.h (DEFAULT_INFOPATH) [__DJGPP__]: Define.
+
+1999-09-28 Karl Berry <karl@gnu.org>
+
+ * configure.in,
+ util/texi2dvi: version 4.0.
+ * doc/texinfo.txi: New isbn.
+
+1999-09-24 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Fixes from Oleg.
+
+1999-09-20 Karl Berry <karl@gnu.org>
+
+ * makeinfo/node.c: Don't write region at an anchor.
+ From: Thomas Esken <esken@nmlab.informatik.fh-dortmund.de>
+
+ * info/terminal.c: Only set dumb terminal if tgetent returns < 0,
+ not 0.
+ For HP-UP 11.
+ From jeff.hull@state.co.us.
+
+ * makeinfo/footnote.c: Don't translate the `Footnotes' string
+ according to LANG, it should be according to
+ @documentlanguage, which isn't implemented yet.
+ From: Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * doc/texinfo.txi: @end direntry from kama.
+
+1999-09-19 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: \ninett is now \smalltt.
+
+ * doc/texinfo.txi: arnold changes
+
+ 1999-09-03 Akim Demaille <akim@epita.fr>
+ * texi2dvi (getopt): batch has to be assigned `eval', not `echo'.
+ (bibtex): Launch BibTeX also when the LOG file complains that
+ there are no BBL file.
+
+ * doc/texinfo.txi: Document that @anchor ignores spaces.
+
+ * makeinfo/cmds.c (cm_shyph): remove, &shy; is not supported in
+ browsers.
+ From: Thomas Esken <esken@nmlab.informatik.fh-dortmund.de>
+
+ * makeinfo/makeinfo.c: Don't crash if current_indent = 0.
+ From: Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * makeinfo/makeinfo.c: Avoid blank lines between @menu entries.
+ * configure.in: 3.12t
+
+ 1999-08-31 Eli Zaretskii <eliz@is.elta.co.il>
+ * info/info.c (info_short_help): Document --apropos.
+
+1999-09-18 Karl Berry <karl@gnu.org>
+
+ * makeinfo/html.c (html_output_head): use text for <title>, not
+ html markup. From François.
+ * makeinfo/makeinfo.c (text_expansion): new routine.
+ * makeinfo/cmds.c (cm_settitle): don't expand the title here,
+ we'll do it later.
+
+ * makeinfo/makeinfo.h (text_expansion): declare.
+
+ * info/indices.c,
+ * info/infodoc.c,
+ * info/session.c,
+ * info/footnotes.c: translate errors.
+ * info/info.h: Use `' instead of "" in errors.
+
+1999-09-06 Karl Berry <karl@gnu.org>
+
+ +1999-08-24 Jan Nieuwenhuizen <janneke@gnu.org>
+ * makeinfo/node.c:cm_node: don't compare current_node when null.
+
+ 1999-08-23 W. L. Estes <will@fumblers.org>
+ * makeinfo/node.c (cm_node): write <a name=> tags even
+ ifusing --no-headers
+
+ * configure.in: ospeedlib -> trylib
+ From: Andreas Schwab <schwab@suse.de>
+
+ * makeinfo/makeinfo.c (read_command): add explicit 0 to return if
+ enclosure command. From: Andreas Jaeger <aj@arthur.rhein-neckar.de>.
+
+1999-08-19 Karl Berry <karl@gnu.org>
+
+ * configure.in: add missing quotes, logic in new termcap library
+ check.
+
+1999-08-17 Karl Berry <karl@gnu.org>
+
+ * makeinfo/multi.c,
+ * makeinfo/sectioning.c,
+ * makeinfo/node.c,
+ * makeinfo/macro.c: omit unused vars
+ * info/session.c (info_goto_invocation_node): omit unused decl.
+
+ * configure.in: Check for extra termlib variable necessary on
+ HP-UX 9.
+ From: Olaf Bachmann <obachman@mathematik.uni-kl.de>
+
+ 1999-08-16 Andreas Schwab <schwab@suse.de>
+ * info/terminal.c (terminal_initialize_terminal): Try tcgetattr
+ and cfgetospeed in preference to TIOCGETP.
+ (original_tchars, original_ltchars): Define them only if needed.
+
+1999-08-16 Karl Berry <karl@gnu.org>
+
+ * info/infodoc.c (create_internal_info_help_node): rename arg.
+ (info_find_or_create_help_window): avoid deref of null eligible.
+
+ * info/terminal.c (TIOCGETP, TIOCGETC, TIOCGLTC) [alpha && linux]:
+ #undef. Useless stubs are present.
+
+1999-08-15 Karl Berry <karl@gnu.org>
+
+ * info/nodes.c: Remove reference to nonexistent RFC for Info
+ files.
+
+1999-08-11 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/nodes.c (info_find_file_internal): If the file's contents
+ were gc'ed since last time it was loaded, reload the file.
+
+Wed Aug 11 06:42:47 1999 Karl Berry <karl@gnu.org>
+
+ * doc/Makefile.am (EXTRA_DIST): add txi-pt.tex from Lalo.
+
+Mon Aug 9 16:28:18 1999 Karl Berry <karl@gnu.org>
+
+ * util/texi2dvi: Support preloaded texinfo.tex, from Stephen.
+
+ * makeinfo/makeinfo.c (add_char): restore ugly check for first
+ character being <.
+
+ * makeinfo/cmds.c (cm_kbd): Increment in_fixed_width_font for
+ html.
+
+ * doc/texinfo.txi: effect not affect
+
+ * makeinfo/makeinfo.c: Rearrange help.
+
+ * makeinfo/toc.c: Cast %* arguments to (int) to placate gcc
+ -Wformat.
+
+Fri Aug 6 13:03:14 1999 Karl Berry <karl@gnu.org>
+
+ * util/install-info.c: Hardwire the File: dir, Node: top part of
+ the skeleton dir file.
+ Report from: Stanislav Brabec <utx@k332.feld.cvut.cz>
+
+ * info/Makefile.am (BUILT_SOURCES): rm -f $(BUILT_SOURCES), a
+ kludge.
+
+ 1999-07-28 Karl Eichwalder <ke@gnu.franken.de>
+
+ * makeinfo/makeinfo.c: Fix help string (-o).
+
+ 1999-07-30 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (cm_uref, cm_email): Don't collapse -- and
+ `` in the URL part of the reference.
+
+ 1999-08-03 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * util/install-info.c (main): For entries given on command line,
+ set entry_sections and entry_sections_tail members to NULL, and
+ set text_len member to the entry length. After processing the
+ Info file, update the entry_sections pointers of all entries that
+ came from the command line.
+
+ * util/texindex.c (sort_offline, sort_in_core): use off_t rather
+ than long.
+ Found on FreedBSD 2.2.8 by "Trond Endrestol" <endrestol@hotmail.com>.
+
+Mon Jul 19 17:16:46 1999 Karl Berry <karl@gnu.org>
+
+ * configure.in: 3.12n
+
+ * makeinfo/makeinfo.c (add_char): Don't insert <p> if we're in
+ @html.
+
+ * makeinfo/html.c (add_escaped_anchor_name),
+ * makeinfo/toc.c (toc_add_entry): use URL_SAFE_CHAR.
+ * makeinfo/makeinfo.h (HTML_SAFE, URL_SAFE_CHAR): new macros.
+
+Sun Jul 18 14:47:40 1999 Karl Berry <karl@gnu.org>
+
+ * dir-example: Add bzip2.
+
+ * configure.in: 3.12m.
+
+ * doc/texinfo.txi (@afourlatex,@afourwide): add to command list.
+
+1999-07-17 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (cm_xref): Don't collapse `` and -- while
+ expanding node names. Generate a terminating period for
+ @pxref, when it has more than a single argument.
+
+ * makeinfo/index.c (cm_printindex): Don't collapse `` and -- while
+ expanding node names.
+
+Sat Jul 17 16:33:45 1999 Karl Berry <karl@gnu.org>
+
+ * 3.12l.
+
+ * doc/texinfo.txi: @alias, @definfoenclose, etc.
+
+ * util/texindex.c (indexify): error message instead of abort(2)
+ when no page number.
+
+Fri Jul 16 18:00:26 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Overfull boxes, help2man, etc.
+
+ * util/Makefile.am (EXTRA_DIST): texi-outline.gawk is really
+ outline.gawk, add fixref.gawk and prepinfo.awk and
+ texi-docstring-magic.el.
+
+Thu Jul 15 18:57:54 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: .fmt, etc.
+ * doc/texinfo.txi: More macro docs, etc.
+
+Wed Jul 14 19:58:47 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Give good quote.
+
+ * util/Makefile.am (EXTRA_DIST): add texi-outline.gawk.
+
+ From: kama@hippo.fido.de (Karl Heinz Marbaise)
+ * makeinfo/toc.c (contents_update_html): go back to start level.
+ * doc/texinfo.txi: deftypeop
+
+ From: "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu>
+ * makeinfo/toc.c (toc_add_entry): don't assume sprintf return type
+ is int.
+ * makeinfo/sectioning.c (insert_and_underscore): declare more
+ unsigned char *.
+ * makeinfo/macro.h (itext_info, itext_size): remove declarations,
+ they're defined static.
+ * makeinfo/makeinfo.c: Split up help string even more.
+
+Tue Jul 13 17:16:18 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Document @rmacro.
+ * makeinfo/macro.c (cm_rmacro): new command to do @allow-recursion
+ by default.
+ (define_macro): split off from cm_macro.
+
+ * makeinfo/macro.h (cm_rmacro): declare.
+ * makeinfo/macro.h (delete_macro): do not need to export.
+ * makeinfo/cmds.c (rmacro): new command.
+
+ * makeinfo/html.c,
+ * makeinfo/toc.c,
+ * makeinfo/lang.c,
+ * makeinfo/makeinfo.c: Use strchr instead of member.
+
+Mon Jul 12 08:01:19 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: document this.
+ * makeinfo/macro.c (apply): warn if \ in macro body is not
+ followed by a parameter name or \, instead of silently
+ accepting it, for compatibility with TeX.
+
+ * makeinfo/macro.c: Doc fix.
+
+Sun Jul 11 12:49:50 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/macro.c (cm_macro): do @quote-arg implicitly if single
+ argument to macro.
+ * doc/texinfo.txi: Document this.
+
+ * doc/texinfo.txi (Smallcaps): Document makeinfo warning if arg is
+ all uppercase.
+ * makeinfo/cmds.c (cm_sc): warn if arg is all upper (suggested by
+ Jim Meyering).
+
+ * makeinfo/cmds.c (cm_var): warn if argument contains any of ,[]()
+ which are unlikely to be allowable in real variable names.
+ Suggested by rms.
+
+ * makeinfo/makeinfo.h (member): remove weird masking macro.
+
+ * doc/texinfo.txi: Probably ok to indent @example.
+
+ * configure.in: 3.12k.
+
+ * makeinfo/html.c (add_escaped_anchor_name): Cast to unsigned char
+ for 8-bit chars. From Yoshiki.
+
+ * makeinfo/makeinfo.c: complain -> warn for sake of <80 chars.
+
+1999-07-09 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/multi.c (multitable_item): Quote the value of align=
+ property.
+
+ * makeinfo/defun.c (defun_internal): Ditto.
+
+ * makeinfo/cmds.c (cm_center): Ditto.
+
+ * makeinfo/toc.c (toc_add_entry): New argument ANCHOR; all callers
+ changed. In HTML mode, expand NODE_NAME, or use ANCHOR, if
+ non-NULL, and save it together with the TOC name in the name
+ member of the TOC entry.
+ (toc_add_entry, toc_find_section_of_node): Add a warning in a
+ comment that the NODE argument must be unexpanded.
+ (contents_update_html): Terminate the TOC entry with </a>.
+
+ * makeinfo/sectioning.c (sectioning_html): If the sectioning
+ command is outside any node, generate explicit anchor and pass it
+ to toc_add_entry.
+
+ * makeinfo/node.c (expand_node_name): Now external instead of
+ static.
+ (cm_node): Output expanded node name in the navigation bar.
+
+ * makeinfo/node.h: Declare expand_node_name.
+
+ * makeinfo/index.c (cm_printindex): Produce valid HTML links, even
+ if index->node is NULL or empty. Fix format of index under
+ --no-headers.
+
+Fri Jul 9 18:09:28 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Pair @end html properly. From Olaf B.
+
+ * doc/Makefile.am (EXTRA_DIST): add txi-nl.tex from Marcel van der Boom
+ <marcel@virtualprojects.org>.
+
+ * doc/txi-en.tex: Doc fix.
+
+Wed Jul 7 16:07:44 1999 Karl Berry <karl@gnu.org>
+
+ * doc/Makefile.am: Doc fix.
+
+ * configure.in (txi_CHECK_DECLS): call this new macro (in
+ acinclude.m4).
+ * acinclude.m4: new file.
+
+Tue Jul 6 19:12:37 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/insertion.h,
+ * makeinfo/insertion.c,
+ * makeinfo/cmds.c,
+ * makeinfo/defun.c: new command @deftypeop.
+ Suggestion from: booth@us.ibm.com.
+
+1999-07-05 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (cm_value): Don't convert quotes and dashes
+ in the argument of @value, since @set doesn't.
+
+Mon Jul 5 16:43:23 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/insertion.c (get_item_function): return "@ " rather
+ than "@". (command_needs_braces): new fn.
+ (cm_item): handle @itemize markers that don't take braces.
+ Bug reported by Stephen, prototype fix from Yoshiki.
+
+ * doc/texinfo.txi (Contents): @contents ignored at beginning when
+ outputting to stdout.
+ Installed this.
+>1999-05-02 Eli Zaretskii <eliz@is.elta.co.il>
+> * makeinfo/toc.c (cm_contents, cm_shortcontents): If writing to
+> stdout, output the contents and short contents immediately, and
+> assign NULL to contents_filename and shortcontents_filename, so
+> that toc_update won't try to rewrite stdout.
+
+
+ * makeinfo/sectioning.c (sectioning_html): declare starting_pos
+ and ending_pos as unsigned char * since they're based on
+ output_paragraph.
+
+ * makeinfo/insertion.c: Cast output_paragraph to char * for sake
+ of strncmp prototype (on IRIX 4).
+ From: "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu>
+
+
+ * info/man.c (get_manpage_contents): restore previous (default)
+ SIGCHLD handler so the pclose when gunzipping info files
+ doesn't fail with `No child processes' (because
+ reap_children reaped it).
+ From: Josip Rodin <jrodin@public.srce.hr>
+ njs@uclink4.berkeley.edu, 38063-forwarded@bugs.debian.org
+
+Fri Jul 2 14:26:22 1999 Karl Berry <karl@gnu.org>
+
+ From gildea:
+ * info/terminal.c (TIOCGETC) [M_XENIX && TIOCGETC]: #undef.
+ * info/session.c (strncasecmp) [M_XENIX]: declare.
+
+Thu Jul 1 19:25:12 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (cm_value): erroneous capitalization in
+ error message.
+
+ * makeinfo/insertion.c (end_insertion): @end html should turn html
+ escaping back on. From esr.
+
+ * makeinfo/makeinfo.c (cm_pxref): No period needed to terminate
+ cross-reference.
+
+Sun Jun 13 16:12:41 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Remove some more node links.
+
+Sat May 1 16:01:36 1999 Karl Berry <karl@gnu.org>
+
+ * info/info.c: Single space for option indent to match others.
+
+ * makeinfo/makeinfo.c,
+ * util/texindex.c,
+ * util/install-info.c: Must indent option list for help2man.
+
+ * info/infodoc.c [HELP_NODE_GETS_REGENERATED]: set to true.
+ (info_internal_help_text): put moving cmds first so they know how to go
+ forward in the help window.
+ (create_internal_info_help_node): can't always quit help with C-x 0.
+ (info_find_or_create_help_window): pass !one_window_p.
+
+1999-04-29 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+ * makeinfo/makeinfo.c (cm_xref): Don't collapse --- to -- etc.,
+ in references.
+
+Mon Apr 26 16:41:55 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/node.c (validate): arrange to translate the reference type.
+ Report from Sergio.
+
+ * makeinfo/makeinfo.c (validate): should not be declared here.
+
+ * makeinfo/index.c (cm_printindex): <ul compact> is not
+ translatable. From Yoshiki.
+
+ * doc/Makefile.am (EXTRA_DIST): include new txi-es.tex from Adrian
+ Perez Jorge <alu1415@csi.ull.es>. And new txi-en.tex.
+
+Sun Apr 25 16:08:27 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/cmds.c (cm_settitle): don't output html head here.
+
+ * makeinfo/makeinfo.c: Move html routines to html.c.
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add html.[ch].
+ * makeinfo/html.[ch]: new files.
+
+ * makeinfo/makeinfo.c: Restore -- in --output line. From Sergio.
+
+1999-04-23 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+ * makeinfo/cmds.c (cm_center): Recover the previous state when
+ called with --html.
+
+1999-04-24 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/cmds.c (cm_bye): Flush the output, in case some command
+ produced it immediately before @bye.
+
+ * makeinfo/toc.h (TOC_ENTRY_ELT): New member: containing_node.
+
+ * makeinfo/toc.c (lots_of_stars): New variable.
+ (toc_add_entry): Add a new parameter node_name; all callers
+ changed. Record the name of the node containing the section.
+ (toc_find_section_of_node): New function.
+ (toc_free): Free the new containing_node member.
+ (contents_update_info, shortcontents_update_info): Underline the
+ title with stars. Output two empty lines after the TOC.
+ (contents_update): Fix off-by-one error in writing the rest of the
+ file after updating the TOC.
+
+ * makeinfo/index.c (cm_printindex): Save and restore line_number
+ and input_filename. Don't output the "* Menu" header when
+ --no-headers is in effect. Make the fake node name for index
+ entries that are outside any node be more explanatory, and emit an
+ error for such index entries. Under --no-headers, output a
+ reference to the section name, as returned by a call to
+ toc_find_section_of_node, instead of a node name.
+
+1999-04-24 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/index.c (struct index_elt): Add a new member
+ entry_text.
+ (free_index, make_index_entries_unique): Free the entry_text
+ member.
+ (index_add_arg): Don't HTML-escape the index entry here.
+ (index_add_arg): Initialize the entry member to NULL. Put the
+ entry text into the entry_text member.
+ (sort_index): Expand the index entries as if in non-HTML mode.
+ Put the expansion into the entry member of struct index_elt.
+ (cm_printindex): Allocate the line[] array in Info mode only.
+ In HTML mode, escape and expand the original index entry text,
+ don't use the results of expansion inside sort_index.
+
+ * makeinfo/cmds.c (cm_r): Undo the effect of @code while printing
+ one of the "code"-style indices in HTML mode.
+
+1999-04-23 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/infomap.c (initialize_vi_like_keymaps): Bind DEL in echo
+ area to ea_rubout, except for __MSDOS__.
+
+ * doc/info-stnd.texi (Node Commands): Document that `I' only
+ produces its effect for programs documented in the current Info
+ file. Tell them to invoke `I' from DIR if it doesn't work from
+ current place.
+
+Thu Apr 22 09:59:02 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c,
+ * info/info.c: Rewrite help string a little more.
+
+ * doc/info-stnd.texi: Change chapter name to match node name,
+ * other changes.
+
+ * makeinfo/cmds.c (cm_bye): call discard_braces.
+
+ * makeinfo/cmds.c (cm_settitle): output more meta and link tags.
+
+ * configure.in (ALL_LINGUAS): add eo.
+
+ * util/install-info.c [STRIP_DOT_EXE]: #if not #ifdef
+
+Wed Apr 21 19:40:51 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c: Doc fix.
+
+ * makeinfo/sectioning.c (insert_and_underscore): do not output
+ html anchor here.
+ * makeinfo/node.c (cm_node): do anchor at node name not sectioning
+ title.
+
+ * makeinfo/node.c: Newlines on node lines.
+
+Tue Apr 20 13:02:46 1999 Karl Berry <karl@gnu.org>
+
+ * info/man.c (get_manpage_contents): freopen stdin and stderr to
+ /dev/null rather than closing them. http://bugs.debian.org/14787
+
+Mon Apr 19 14:12:09 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Document possibility of `titlepage' stuff for
+ plain text output using @ifinfo.
+ Report from: Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at>.
+
+ * makeinfo/cmds.c: Screw that.
+ * doc/texinfo.txi: Fix up frontmatter a bit.
+
+ * dir-example: Spaces not tabs.
+ * dir-example (R FAQ): add.
+
+ * makeinfo/makeinfo.c: Lowercase makeinfo in first line.
+
+ * doc/info.texi (The node reached...): is a @subsection not a
+ @subsub.
+
+ * doc/texinfo.txi: Document option rename.
+ * makeinfo/makeinfo.c: Rename option to commands-in-node-names.
+
+ * makeinfo/index.h (index_compare_fn): declare.
+ * makeinfo/index.c (index_element_compare): call through new
+ variable index_compare_fn, and set it to strcoll if
+ @documentlanguage was used and LANG != en.
+ #include lang.h.
+
+Sat Apr 17 14:46:47 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/insertion.c (current_item_function, cm_item): rewrite
+ to skip all conditionals.
+ (cm_item): use current_item_function rather than current_insertion_type
+ to check what to use for @item, so @ifset etc. can be used around
+ @items.
+ Report from: "W. L. Estes" <wlestes@br20920.uncg.edu>.
+
+ * makeinfo/makeinfo.c (current_insertion_type): no need to
+ declare.
+
+ * makeinfo/makeinfo.c: Add examples to help message.
+
+ * util/texindex.c (usage): Rearrange --help, avoid extra newline.
+
+ * info/info.c: Sort --help in the usual place.
+
+ * makeinfo/makeinfo.c: Reindent help message, rename
+ --expensive-validation to --commands-in-nodes.
+
+Fri Apr 16 17:53:48 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/cmds.c (cm_ignore_arg): new routine.
+ (cm_ignore_line_no_op): remove, can use cm_ignore_line.
+
+Tue Apr 13 16:45:39 1999 Karl Berry <karl@gnu.org>
+
+ * doc/info-stnd.texi: Frontmatter changes.
+
+ * doc/info.texi: Remove advanced remark in first node.
+
+ * doc/texinfo.txi: Texinfo.tex does macros now. From Eli.
+
+ * doc/texinfo.txi: Document @w{ } to produce an unbreakable space.
+
+ * util/texi2dvi: Update from Akim, avoid Solaris ucb echo weirdness.
+
+ * info/infodoc.c: Parenthesize function calls, don't depend on
+ gettext being there. Report from: Doug Semler
+ <doug@seaspace.com>.
+
+1999-04-12 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/infomap.c (initialize_vi_like_keymaps): Initialize the echo
+ are keymap *before* it is filled up with keys.
+
+1999-04-10 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/macro.c (execute_macro): Reset the line number to where
+ the macro argumenst begin, before executing its expansion.
+
+ * makeinfo/makeinfo.c (cm_xref): Expand the name of arguments
+ before writing them in HTML mode.
+ (handle_menu_entry): Expand the name of the gleaned node before
+ writing it in HTML mode.
+
+ * makeinfo/sectioning.c (sectioning_html): Expand the name of the
+ current node when producing the <a name=... anchor.
+
+ * makeinfo/node.c (cm_node): Expand the name of node and its links
+ before outputting them in HTML mode.
+
+ * makeinfo/index.c (cm_printindex): Expand node names to which the
+ index points.
+
+ * makeinfo/footnote.c (cm_footnote): Call execute_string instead
+ of add_word_args, since current_node needs to be expanded. Expand
+ the name of the Footnotes node before calling
+ remember_node_reference.
+
+ * makeinfo/tests/node-expand.txi: New test, for testing how node
+ names are expanded in @node, @menu, cross-references, and
+ indices.
+
+ * makeinfo/makeinfo.c (add_char): If we output <p>, adjust the
+ affected brace positions by 3, so cm_xxx functions get what they
+ expect in START and END.
+ (insert_html_tag): Likewise.
+
+ * makeinfo/cmds.c (cm_sc): Remove the kludge that looks for the
+ beginning of <small>, it is no longer needed.
+
+ * makeinfo/macro.c (cm_definfoenclose): Don't stop at the first
+ blank after the second comma: the blank may belong to the second
+ delimiter.
+
+ * makeinfo/tests/htmlpara.txi: New test, for the commands affected
+ by the <p> output at paragraph beginning.
+
+ * makeinfo/makeinfo.h (expensive_validation): New option.
+
+ * makeinfo/makeinfo.c (long_options): Add expensive_validation.
+ (usage): Likewise.
+
+ * makeinfo/node.c (find_node): If NAME isn't found verbatim, try
+ expanding it and every node name in tag table, before comparing
+ them, but only if expensive_validation is non-zero.
+ (find_node_reference): Likewise.
+ (cm_node): Don't expand node name and its links here.
+ (validate_file): If direct comparisons fail, try expanding the
+ comparees before giving up, unless expensive_validation is zero.
+ Switch the order of NODE and UP in error message about a lacking
+ menu item.
+
+1999-04-07 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/index.c (cm_printindex): Don't output "Menu" header.
+
+ * makeinfo/node.c (get_node_token): Collapse whitespace in node
+ names.
+ (glean_node_from_menu, expand_node_name): Likewise.
+
+ * info/infomap.c (initialize_vi_like_keymaps): Bind all the 256
+ keys to ea_insert, like the Emacs-like case does.
+
+ * doc/info-stnd.texi (Invoking Info): Document support for files
+ compessed with bzip2, and the --vi-keys option.
+ (Many places): Document key bindings under --vi-keys.
+
+1999-04-06 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/session.c (info_last_node, info_first_node): With a numeric
+ argument, go to ARGth node counting from the beginning. Skip
+ anchor tags when looking for the target node--the last tag can be
+ an anchor, for example.
+ (last_search_direction, last_search_case_sensitive): New
+ variables.
+ (last_search_for_string): Remove variable.
+ (info_search_internal): Always move point by one notch before
+ beginning the search, to avoid complications in repeated search
+ commands. When looking for the next node tag, skip any anchor
+ tags.
+ (info_search_1): Accept a 5th argument ASK_FOR_STRING, and only
+ prompt for search string if it's non-zero. All callers changed.
+ Look for the COUNTth occurence of the string.
+ (info_search, info_search_backward, info_search_case_sensitively):
+ Set last_search_direction and last_search_case_sensitive.
+ (info_search_next, info_search_previous): New commands, repeat
+ last search in the same or reverse direction without prompting the
+ user for the string.
+
+ * info/infomap.c (initialize_emacs_like_keymaps): Bind `C-x n' to
+ info_search_next and `C-x N' to info_search_previous.
+ (initialize_vi_like_keymaps): Bind `n' to info_search_next and `N'
+ to info_search_previous.
+
+1999-04-04 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (get_rest_of_line): Don't expand non-macros,
+ so that macro-expanded output will still have them.
+
+1999-04-03 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/node.c (cm_node): Expand the node name and its links
+ completely before using them, so that they could use e.g. @value{}
+ etc.
+
+ * makeinfo/makeinfo.c (replace_with_expansion): Don't
+ remember_itext if we are executing_string.
+
+ * makeinfo/sectioning.c (sectioning_html): Remove #ifdef
+ HAVE_MACROS. Don't call me_execute_string if already
+ executing_string.
+
+ * makeinfo/toc.c (toc_add_entry): Expand macros in TOCNAME right
+ here, since the macro can be later redefined.
+ (contents_update_html, contents_update_info,
+ shortcontents_update_html, shortcontents_update_info): Use stdio
+ functions for output instead of add_word etc.
+ (rewrite_top, contents_update, shortcontents_update, toc_update):
+ New functions, replace the TOC placebo with the actual TOC.
+ (cm_contents): Output a placebo instead of writing the TOC.
+ (cm_shortcontents): Output a placebo instead of writing the short
+ TOC.
+
+ * makeinfo/makeinfo.c (convert_from_loaded_file): Call toc_update
+ if appropriate.
+
+ * makeinfo/sectioning.c (cm_top): Don't output the HTML header
+ here, since the Top node might be preceeded by other commands,
+ like @contents.
+
+ * makeinfo/cmds.c (cm_settitle): Output the HTML header here.
+
+ * makeinfo/node.c (set_current_output_filename): New function,
+ saves the name of the actual file we are now writing, including in
+ the case of split-HTML output.
+ (cm_node): Call it to record the name of output file.
+
+ * makeinfo/footnote.c (free_pending_notes): Re-initialize
+ current_footnote_number to 1.
+
+ * makeinfo/index.c (index_add_arg): Remove redundant xstrdup.
+ (cm_printindex): Don't free index->entry: it is freed in
+ free_index, if, e.g., there's more than one file to convert.
+
+ * makeinfo/makeinfo.c (init_internals): Call toc_free.
+
+Mon Apr 5 16:53:33 1999 Karl Berry <karl@gnu.org>
+
+ * doc/Makefile.am: Texmf_{texinfo,dvips}: dirs not files. From
+ Kurt Hornik.
+
+Wed Mar 31 13:50:09 1999 Karl Berry <karl@gnu.org>
+
+ * Pretest 3.12h.
+
+ * makeinfo/node.c (last_node_p): new fn.
+ (split_file): call it, instead of assuming no more entries means
+ no more nodes. (Loses with anchors.)
+ Report from: "Oleg S. Tihonov" <ost@benetnash.ffke-campus.mipt.ru>.
+
+ * makeinfo/index.c (sort_index): whether an entry is @code or not
+ depends on the element, not the index, because of synindex.
+
+ * doc/Makefile.am (install-tex): Must use $(TEXMF), do
+ $(mkinstalldirs) on tex dirs.
+ From: Nathan Sidwell <nathan@acm.org>.
+
+ * doc/texinfo.txi: Document need for blank line before @image if
+ you want space.
+
+ * Install changes from Eli:
+
+ 1999-03-09 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/infodoc.c (info_internal_help_text): Remove hard-wired key
+ names, use %-10s instead.
+ (info_help_keys_text): New variable, holds two variants of keys
+ that invoke basic commands, indexed by vi_keys_p.
+ (create_internal_info_help_node): Use info_help_keys_text[].
+
+ * info/window.c (build_message_buffer): Support more general
+ format strings, like %-10.15s, %+4d etc.
+
+ * info/infomap.c (initialize_vi_like_keymaps): Bind ESC-h, ESC-t,
+ C-x LFD and C-x RET.
+
+ 1999-03-08 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * util/install-info.c (output_dirfile): Sort the entries and
+ output them in alphabetic order. Output each entry only in those
+ sections where it belongs.
+ (parse_input): New function, code moved from main. Process
+ sections and entries in a single loop, and record with each entry
+ the list of sections where that entry belongs. Record each entry
+ separately, not all of them together as a single block.
+ (parse_dir_file): New function, code moved from main.
+ (main): Move code to parse_input and parse_dir_file. Put the new
+ entries only into sections where they belong.
+ (compare_entries_text): New function, called when sorting new
+ entries.
+
+ * info/infomap.c (initialize_vi_like_keymaps): New function. Bind
+ keys a-la Less, including new functions from session.c below.
+ (initialize_emacs_like_keymaps): New function, with the guts of
+ initialize_info_keymaps.
+
+ * info/session.c (info_scroll_forward, info_scroll_backward): If
+ default_window_size is non-negative, use it as the default number
+ of lines to scroll.
+ (info_scroll_forward_set_window, info_scroll_backward_set_window,
+ info_down_line, info_up_line, info_scroll_half_screen_down,
+ info_scroll_half_screen_up, info_search_backward): New functions,
+ for Less-like look and feel.
+
+Tue Mar 30 16:44:53 UTC 1999 Karl Heinz Marbaise <kama@hippo.fido.de>
+
+ * doc/txi-de.tex:
+ - added additional putwordin
+ * doc/texinfo.txi:
+ - changed defivar into deftypeivar
+ * makeinfo/sectioning.c:
+ - changed output of anchors based on problems with ie.
+ * makeinfo/defun.c:
+ - output in HTML mode changed to be on previous state.
+ * makeinfo/insertion.c:
+ - fixed up HTML output for deftypeivar.
+
+1999-03-30 Akim Demaille <demaille@inf.enst.fr>
+
+ * texi2dvi ($tmpdir): Avoid security holes.
+
+Fri Mar 26 17:06:55 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/cmds.c (cm_exdent): rewrite to preserve blank lines.
+ Bug from: "Oleg S. Tihonov" <ost@benetnash.ffke-campus.mipt.ru>.
+
+ * makeinfo/cmds.c (cm_exdent): arg is in `roman'.
+
+Thu Mar 25 16:21:27 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/insertion.c,
+ * makeinfo/defun.c,
+ * makeinfo/insertion.h (insertion_type): add deftypeivar.
+ * makeinfo/defun.h (cm_defun): declare here.
+ * makeinfo/cmds.c (defun.h): include.
+ * doc/texinfo.txi (deftypeivar[x]): new commands.
+ * makeinfo/cmds.c (deftypeivar[x]): new commands.
+
+ * makeinfo/cmds.c (cm_exdent): save, set and restore
+ in_fixed_width_font.
+
+ * doc/texinfo.txi (uref): rewrite.
+
+ * info/info.c (info_short_help): more spaces for new help2man.
+
+ * makeinfo/node.c (cm_node): output node name in html, change
+ navbar punctuation.
+
+ * doc/texinfo.5: Fix URL.
+
+ * Finally installed this:
+ 1998-05-01 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+ * makeinfo/makeinfo.c (convert_from_loaded_file): When the file
+ contains no @setfilename then always look for \input (not
+ \include) in the first line and skip that. Don't skip the first
+ line if no \input was found.
+
+1999-03-24 Akim Demaille <demaille@inf.enst.fr>
+
+ * configure.in (AC_HEADER_STAT): Added.
+ * util/texindex.c (main): Check infiles are not directories.
+
+1999-03-24 Akim Demaille <demaille@inf.enst.fr>
+
+ * texi2dvi (index_files): Don't use `!' to run sed -e "s!foo$!!"
+ since the shell will interpret `$!'.
+
+Tue Mar 23 16:41:08 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi (uref): rewrite to make HTML output read more
+ nicely. From Tim S.
+
+ * info/info.c (info_short_help): include examples.
+
+ * makeinfo/makeinfo.c (close_paragraph_with_lines): move earlier
+ so can be static.
+
+ * makeinfo/sectioning.c,
+ * makeinfo/node.c,
+ * makeinfo/makeinfo.h,
+ * makeinfo/makeinfo.c,
+ * makeinfo/macro.c,
+ * makeinfo/insertion.c,
+ * makeinfo/cmds.c,
+ * makeinfo/files.c,
+ * makeinfo/footnote.c (size_of_input_text): rename to
+ input_text_length.
+
+ * makeinfo/makeinfo.c (cm_xref): make wrong-char-following a warning.
+ (replace_with_expansion): remove bogus conditional that was duplicated
+ unconditionally.
+ From: Hans-Bernhard Broeker <broeker@physik.rwth-aachen.de>
+
+Mon Mar 22 14:39:59 1999 Karl Berry <karl@gnu.org>
+
+ * doc/Makefile.am (install-tex): parenthesize.
+
+ * Makefile.am (dist-hook): remove, it uses hard links so we chmod
+ all our sources.
+
+ * makeinfo/toc.c,
+ * makeinfo/defun.c,
+ * makeinfo/sectioning.c: Use _, not N_.
+
+ * info/Makefile.am (ginfo_SOURCES): include $(BUILT_SOURCES)
+ explicitly.
+
+ * makeinfo/lang.c,
+ * makeinfo/lang.h: ISO-639 updates.
+
+ * makeinfo/cmds.c: exampleindent changes.
+
+ * info/info.c (info_short_help): reformat somewhat, and don't say
+ info info options any more.
+
+ * doc/info-stnd.texi (Invoking): make description format somewhat
+ more standard.
+
+ * info/infomap.c (Initialize_info_keymaps): do ea_insert bindings
+ first so subsequent bindings (e.g., for ESC) override.
+
+Sun Mar 21 17:31:00 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/multi.c (output_multitable_row): remove unnecessary
+ trailing whitespace from output, output blank row for blank @item.
+
+ * doc/texinfo.txi: Remove extra @item in language multitable.
+
+Sat Mar 20 12:30:25 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Update language table from ISO 639:
+ http://www.iro.umontreal.ca/contrib/po/iso-639. From kama.
+
+ * doc/texinfo.txi (exampleindent): document.
+
+ * doc/texinfo.txi (Creating an Info File): use this for the node name.
+
+ * doc/info.texi: Make Texinfo references consistent, etc.
+
+1999-03-18 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+ * makeinfo/makeinfo.c (set_default_indentation_increment): new
+ routine.
+ * makeinfo/insertion.c (cm_exampleindent): new routine.
+ Call set_default_indentation_increment.
+
+Mon Mar 15 17:06:15 1999 Karl Berry <karl@gnu.org>
+
+ * info/Makefile.am (ginfo_SOURCES): Remove doc.c and funs.h in
+ hopes they then won't be distributed. Report from Andreas.
+
+ * makeinfo/cmds.c (cm_sp): close paragraph and disable filling to
+ produce blank lines in info.
+ Report from: Michael Vanier <mvanier@bbb.caltech.edu>.
+
+ * doc/texinfo.txi: Attempt to get Edition info on one line.
+
+ * makeinfo/makeinfo.h (cr_or_whitespace): use whitespace and check
+ for \r. (skip_whitespace_and_newlines, command_char): use it.
+ Report from bonzini@gnu.org.
+
+ * makeinfo/cmds.c (cm_center): save and restore filling_enabled,
+ so @center can be used inside an @example. Bug from kama.
+
+1999-03-13 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/footnote.c (cm_footnote): In separate footnote style,
+ generate a reference to "foo-Footnote-NN" for each footnote.
+ (output_pending_notes): In separate footnote style, generate an
+ anchor "foo-Footnote-NN" for each footnote, so that the link in
+ the parent node would lead directly to the footnote.
+
+ * info/footnotes.c (make_footnotes_node): Recognize the new
+ "foo-Footnote-NN" style of footnote references.
+
+1999-03-09 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * configure.in (AC_OUTPUT): Remove command to create po/Makefile,
+ already done by AM_GNU_GETTEXT.
+
+Tue Mar 9 17:48:46 1999 Karl Berry <karl@gnu.org>
+
+ * Makefile.am (dist-hook): make distribution directory writable.
+
+ * Installed these changes:
+
+ 1999-03-04 Akim Demaille <demaille@inf.enst.fr>
+
+ * texi2dvi (bibtex): Allow several runs of bibtex, this can be
+ used if bibentries reference other bibentries. Moreover, looking
+ for `Citation' in the LOG should be enough to avoid uneless runs.
+
+ Sun Mar 7 15:15:00 1999 UTC Karl Heinz Marbaise <kama@hippo.fido.de>
+
+ * makeinfo/sectioning.{c,h}:
+ - using defines instead of literals.
+ - cleaned up some stylistic matters like Karl Berry
+ suggested. Handling of things like:
+ @unnumbered ..
+ @section ...
+ now it works correct.
+
+ * makeinfo/toc.{c,h}
+ - addTocEntry, freeToc changed into toc_add_entry
+ toc_free. stylistics changed.
+
+ * makeinfo/iso2cht.pl,iso-639: script, table from the web.
+ - perl script converting the iso-639 table from the web
+ into the appropiate files (isoenum.h, isotab.c and
+ iso.texi) which can be inserted directly into
+ lang.c, lang.h and texinfo.txi.
+
+Tue Mar 9 17:47:59 1999 Karl Berry <karl@gnu.org>
+
+ * configure.in: Bump to 3.12g.
+
+Sun Mar 7 07:01:19 1999 Karl Berry <karl@gnu.org>
+
+ * info/infomap.c: Don't do isprint, just bind everything.
+
+Fri Mar 5 14:31:42 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi,
+ * makeinfo/makeinfo.c: Document that --no-headers writes to stdout
+ by default.
+
+ * doc/texinfo.txi: @setchapternewpage doesn't change
+ \bindingoffset, just headers. Recommend not including it in the
+ manual source at all.
+
+ * makeinfo/node.c (write_tag_table_internal): set
+ in_fixed_width_font while constructing this so --- doesn't
+ collapse to --, etc. Bug report from Sergio.
+
+ * dir-example: Add a2ps stuff.
+
+ * info/session.c: Allow any character in search string.
+
+ * info/infodoc.c (describe_key): don't assume non-latin1
+ characters are undefined.
+
+ * info/infomap.c (initialize_info_keymaps): make all characters
+ insertable by default in echo area. From Eli.
+
+ * Installed these changes:
+
+ Wed Feb 23 22:00:00 1999 Karl Heinz Marbaise <kama@hippo.fido.de>
+
+ * makeinfo/sectioning.{c,h}:
+ - added to hold complete handling of sectioning
+ a little step towards modularization ;-)
+
+ * makeinfo/cmds.c:
+ - sectioning_alist moved to sectioning.c and
+ added information about enumerated chapter,
+ section ..., appendix or not. Everything
+ which has any relationship with sectioning
+ moved to sectioning.{c,h} I hope I have found
+ all.
+
+ * makeinfo/toc.{c,h}:
+ - added for complete handling of "table of contents"
+ "short contents". Better ASCII only support
+ (--no-headers) so no Text "Menu" is printed.
+ May be we can do more.
+
+ * makeinfo/makeinfo.{c,h}:
+ - added new command line switch --number to enumerate
+ chapter, sections etc.
+
+ * doc/texinfo.txi:
+ - --number option documented.
+
+ 1999-02-28 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+ * makeinfo/insertion.c (in_paragraph): New variable.
+ (cm_item): Add </p> only if <p> is open.
+ * makeinfo/makeinfo.c (handle_menu_entry): Ditto.
+
+ * makeinfo/insertion.c (begin_insertion),
+ * makeinfo/makeinfo.c (handle_menu_entry): If commentary
+ precedes first menu item, put them outside of <ul>.
+ Put <p> and </p> correctly.
+
+ 1999-02-27 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/info.c (info_short_help): Document --show-options and
+ --usage.
+
+ 1999-02-26 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/makedoc.c (main) [STRIP_DOT_EXE]: Strip the .exe suffix, so
+ that doc.c says "./makedoc.c", not "./makedoc.exe.c".
+
+ * info/info.c (goto_invocation_p): New variable.
+ (long_options): New options --show-options and its alias --usage.
+ (main): Don't update the display until we find the first node to
+ be displayed, to avoid flushing incorrect display. If user wants
+ to see the command-line options node right away, display whatever
+ info_intuit_options_node finds.
+
+ * info/session.c (info_intuit_options_node): New function, uses
+ heuristics to find the node which describes program's invocation.
+ (info_goto_invocation_node): New command, asks for a program's
+ name and displays the invocation node of that program.
+ (entry_in_menu): New function, fuzzily looks for a menu entry in a
+ node's menu.
+ (program_name_from_file_name): New function, suggests a program
+ name given a name of its Info file.
+ (info_search_in_node): Accept an additional argument: a flag to
+ search case-sensitively; all callers changed. If case-sensitive
+ search is required, don't turn on the case-fold flag in the search
+ binding.
+ (info_search_internal): Accept an additional argument: a flag to
+ search case-sensitively; all callers changed. Share the last
+ search string between normal and case-sensitive search commands.
+ (info_search_1): New function, with the guts that previously
+ belonged to info_search. If the search is case-sensitive,
+ mentions that in the prompt for the search string. If the search
+ string includes upper-case characters, searches case-sensitively.
+ (info_search): Calls info_search_1 with zero case-sensitivity
+ flag.
+ (info_search_case_sensitively): New command, calls info_search_1
+ with non-zero case-sensitivity flag.
+ (incremental_search): If the search
+ string includes upper-case characters, searches case-sensitively.
+
+ * info/search.c (search_backward): Fix bug in case-sensitive
+ search.
+
+ * info/infomap.c (initialize_info_keymaps): `-' in info window map
+ produces negative arguments. `S' invokes case-sensitive search.
+ `O' and `I' invoke goto-invocation.
+
+ * doc/info-stnd.texi (Invoking Info): Document --show-options.
+ (Node Commands): Document `O', goto-invocation.
+ (Searching Commands): Document `S' and the case-sensitive search
+ when the search string includes upper-case letters. Document `/'
+ as a synonym for `s'.
+ (Miscellaneous Commands): Document `M--' and `-'.
+
+ 1999-02-25 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/info.c (main): Under --index-search, search indices *after*
+ following menus, so that we don't look for an index in DIR.
+
+
+Wed Mar 3 17:20:07 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/cmds.c: Do not output <small> in info mode.
+ From: Eli Zaretskii <eliz@is.elta.co.il>.
+
+ * makeinfo/insertion.c (enum_html): Remove unused var temp.
+ From: Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+ * info/infodoc.c: Avoid translation of blank lines.
+
+ * info/tilde.c,
+ * info/man.c,
+ * makeinfo/index.c (index_add_arg): avoid use of alloca.
+
+ * info/echo-area.c: Don't pause for an additional 75 microseconds.
+ Noted by Eli.
+
+ * configure.in: Bump to 3.12f.
+
+ * doc/texinfo.txi: findex enddots. From Eli.
+
+1999-03-01 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+ * makeinfo/makeinfo.c (insert_html_tag): Add <p> when
+ paragraph is not opened.
+ (sectioning_html): Call close_paragraph so that paragraph
+ will be started.
+
+1999-02-26 Akim Demaille <demaille@inf.enst.fr>
+
+ * texi2dvi (get_xref_files): Take $filename_noext as $1.
+ (get_xref_files): Look for $1.idx only, not *.idx.
+ (get_xref_files): Look for $1.cb files (\usepackage{changebar}).
+ * texi2dvi: Look for rerun requests in LOG files in addition to
+ xref files comparison.
+ (bibtex): Remove useless `./' (already added in
+ command_line_filename).
+ (filename_dir): Smarter sed expression that handles file names
+ with no directory part.
+ (txiversion): Removed useless () (`` already guarantee a subshell).
+
+1999-02-25 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * makeinfo/multi.c (find_template_width): Fix operator precedence.
+
+Tue Feb 23 10:35:53 1999 Karl Berry <karl@gnu.org>
+
+ * dir-example: ccmode not cc-mode. From hds.
+
+Mon Feb 22 07:34:00 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/lang.c,
+ * doc/texinfo.txi: Fix kazakhkh typo.
+
+1999-02-21 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * djgpp/config.sed: Add pcterm.c to terminal.o dependencies.
+
+1999-02-21 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * makeinfo/lang.c (cm_accent_generic): Emit the accent character
+ only once, after the argument.
+
+Sun Feb 21 16:36:14 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (handle_menu_entry): new routine.
+ (reader_loop): call it, allowing for comments in menus.
+
+ * makeinfo/node.c: Rearrange functions to make static, etc.
+
+ * doc/Makefile.am (EXTRA_DIST, install-tex): Add txi-cs and txi-no.
+
+1999-02-20 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * util/install-info.c (open_possibly_compressed_file): Output
+ explicit message about empty input files.
+ (insert_entry_here): Insert multiple entries in alphabetical order.
+
+Fri Feb 19 09:13:28 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/insertion.c (enum_html): new routine.
+ (begin_insertion): call it.
+ Based on code from: Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>.
+
+ * lib/xexit.c (EXIT_FAILURE) [!defined EXIT_SUCCESS && VMS]: weird
+ long value.
+ From: Lars Hecking <lhecking@nmrc.ucc.ie>
+
+Thu Feb 18 16:42:10 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/node.h (remember_node_reference): decl.
+ * makeinfo/makeinfo.c (find_unused_reference): dump unused decl.
+
+1999-02-18 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/cmds.c (cm_dots, cm_enddots): Don't produce &#133; for
+ HTML, as too many browsers don't support it; use "..." in a
+ smaller font (with <small>).
+ (cm_top): Output the lang= attribute inside <html>.
+
+ * makeinfo/node.c (cm_node): Output the lang= attribute inside
+ <html>.
+
+ * makeinfo/footnote.c (output_pending_notes): Generate <ol>
+ instead of <dl compact>. Make the text of each footnote start a
+ new paragraph.
+
+1999-02-17 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/insertion.c (cm_item): Remove <dd> when immediately
+ followed by a <dt>. Add a <br> before every <dt>, except if we
+ are converting @itemx, or in the first item after <dl>.
+ (begin_insertion): Use <dl> for tables, to make it look closer to
+ the Info output. Don't output a newline after a <pre>.
+
+1999-02-17 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (handle_variable): Don't backup input
+ pointer if we hit the end of text (usually, inside
+ execute_string).
+ * makeinfo/insertion.c (get_item_function): Likewise.
+
+Wed Feb 17 15:09:06 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Better indexing of space entries.
+
+ * makeinfo/multi.c (find_template_width): new routine to really
+ parse @multitable {...} templates.
+ (setup_multitable_parameters): call it.
+ Bug report from: Sergio Pokrovskij <pok@nbsp.nsk.su>.
+
+ * lib/system.h (substring): declare.
+
+ * lib/Makefile.am (libtxi_a_SOURCES): add substring.c.
+
+ * makeinfo/defun.c: Move substring to lib.
+
+ * util/texindex.c (tempcopy): no longer used.
+ (maketempname): make static.
+
+ * Installed these changes:
+
+1999-02-13 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/cmds.c (cm_acronym): New function, makes @acronym
+ produce a smaller font size in HTML mode.
+ (cm_sc): Produce smaller font size in HTML mode.
+
+ * makeinfo/footnote.c (cm_footnote): In HTML output, make the
+ footnote number be a superscript; remove [] around the link.
+
+ * makeinfo/cmds.c (cm_var_sc): Separated into two functions:
+ cm_var and cm_sc, since @var and @sc have different effects in
+ HTML output.
+
+ * makeinfo/makeinfo.c (cm_xref, cm_inforef): Don't put "[]" around
+ HTML links.
+
+ * info/pcterm.c (DJGPP_keytab): Add translation for Alt-PgUp and
+ Alt-PgDn, to support the new M-prior key.
+
+Wed Feb 17 11:50:46 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Don't mention texi2roff so prominently.
+
+ * makeinfo/makeinfo.c: Pass enclose_expand to remember_brace
+ rather than enclose_command. From Eli.
+
+ * makeinfo/macro.c (cm_alias, cm_definfoenclose): Expand macros in
+ first call to get_until_in_line. From Eli.
+
+ * info/makedoc.c,
+ * info/session.c,
+ * info/man.c,
+ * info/tilde.c,
+ * info/info.c,
+ * makeinfo/files.c,
+ * makeinfo/multi.c,
+ * makeinfo/node.c,
+ * makeinfo/makeinfo.c: Use xexit.
+ * makeinfo/makeinfo.h (NO_ERROR, FATAL, SYNTAX): remove.
+
+ * info/terminal.c: Avoid sleep unless on sun-cmd terminal.
+
+ * lib/xexit.c (EXIT_FAILURE) [!EXIT_FAILURE]: #define to 1 to fix
+ Sony NEWS-OS 4.0C lossage. From Akim.
+
+ * info/infodoc.c: Translate where is doc string, underline lines
+ in help.
+ From: Trond Endrestol <trond@agamemnon.gtf.ol.no>
+
+ * makeinfo/cmds.c (cm_dots, cm_enddots): go back to ... and ....,
+ &#133; apparently doesn't work widely enough.
+
+Tue Feb 16 07:37:54 1999 Karl Berry <karl@gnu.org>
+
+ * configure.in (ALL_LINGUAS): add de_AT.
+
+ * util/texi2dvi: Redirect cd output to /dev/null when determining
+ txiversion.
+
+Mon Feb 15 13:43:37 1999 Karl Berry <karl@gnu.org>
+
+ * util/install-info.c,
+ * util/texindex.c: Call xexit instead of exit.
+
+ * lib/system.h (xexit): Declare.
+
+ * lib/Makefile.am (libtxi_a_SOURCES): Add xexit.c.
+
+ * doc/texinfo.txi: Document that @documentencoding is used in the
+ HTML output.
+
+ * makeinfo/cmds.c (cm_top): use document_encoding if set.
+ (command_table): call cm_documentencoding instead of no-op.
+ * makeinfo/lang.c (document_encoding, cm_documentencoding): define.
+ * makeinfo/lang.h (document_encoding, cm_documentencoding): declare.
+
+ * makeinfo/insertion.c: Restore </p> before <li>.
+
+ * util/texi2dvi: If texinfo.tex version is too low for macros, use
+ makeinfo.
+
+ * makeinfo/cmds.c (cm_center): save and restore value of
+ indented_fill, otherwise @center within an @enumerate (say)
+ also closes the indentation.
+ Bug from: Sergio Pokrovskij <pok@nbsp.nsk.su>.
+
+Sun Feb 14 15:25:02 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c: Doc fix.
+
+ * doc/texinfo.txi: Be enthusiastic if people want to implement
+ more output formats, but use makeinfo to do the job.
+
+ * makeinfo/index.c (index_element_compare): Use strcoll if it's
+ available.
+ * configure.in: Call AC_FUNC_STRCOLL.
+ * makeinfo/makeinfo.c (main): Use LC_CTYPE and LC_COLLATE
+ categories. Suggestion from Oleg.
+
+ * lib/system.h (setlocale) [!HAVE_SETLOCALE]: #define away.
+ Suggestion from Akim.
+
+ * doc/texinfo.txi: Document @paragraphindent working in TeX now.
+
+ * doc/texinfo.txi,
+ * makeinfo/lang.c,
+ * makeinfo/lang.h (language_code_type): abbrev changes from Oleg.
+
+ * makeinfo/cmds.c,
+ * makeinfo/node.c: Only translate `Next:', `Previous:', and `Up:',
+ not the whole href. From Eli.
+
+ * doc/texinfo.txi: Document that only unsplit html output is
+ supported in this release.
+
+Sat Feb 13 17:55:30 1999 Karl Berry <karl@gnu.org>
+
+ * configure.in: Check for termlib before termcap for sake of
+ Solaris (judging from less-332 configure.in) and maybe
+ HP-UX 11.
+
+ * doc/texinfo.txi (Footnote commands): incoherency reported by Aharon.
+ Language vs country fixes from Oleg.
+
+1999-02-13 Karl Eichwalder <ke@gnu.franken.de>
+
+ * makeinfo/node.c (cm_node): Tag navigation links as translatable.
+ * makeinfo/cmds.c (cm_top): Ditto.
+
+Wed Feb 10 22:00:00 1999 Karl Heinz Marbaise <kama@hippo.fido.de>
+
+ * makeinfo/defun.h:
+ - new because we need get_base_type-function
+ accessible in insertion.c
+
+ * makeinfo/defun.c:
+ - complete HTML handling of the @def... things.
+
+ * makeinfo/Makefile.am:
+ - defun.h added as part of makeinfo.
+
+ * makeinfo/makeinfo.c:
+ - define looking_at moved into header-file, because
+ we need it in defun.c
+
+ * makeinfo/insertion.c:
+ - some minor changes made to support the @def...
+ things in HTML.
+
+ * makeinfo/lang.c: (cm_accent_generic)
+ - bug fixed. Using umlaut (accent ...)
+ would produce &A only if an umlaut follows
+ an empty line.
+ - bug fixed. Because things like &tilde; &grave;
+ and &circ; do not exist as standalone characters
+ in HTML.
+ - cm_special_char now produce correct HTML for
+ @O{} and @o{}.
+ - warning using _("Text") instead "Text" (gettext).
+
+ * makeinfo/cmds.c:
+ - @url fixed. Display the given Text.
+
+ * doc/texinfo.txi:
+ - corrected the references for @uref, because
+ they were given as "url" instead of "uref".
+ @uref has three arguments, so show them in
+ command list.
+
+Wed Feb 10 17:27:58 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Rewrite for overfull box.
+
+Tue Feb 9 19:03:16 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Document more HTML output stuff. Based on esr
+ changes.
+ * makeinfo/macro.c,
+ * makeinfo/macro.h,
+ * makeinfo/makeinfo.c: Do alias and definfoenclose expansion.
+ From esr.
+
+Mon Feb 8 14:41:07 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/cmds.c: New commands @alias and @definfoenclose.
+ From: "Eric S. Raymond" <esr@snark.thyrsus.com>.
+
+ * doc/texinfo.txi: Document @documentlanguage and
+ @documentencoding.
+
+ * makeinfo/cmds.c: Move accent support to lang.c.
+
+ * makeinfo/makeinfo.c (add_char): add &nbsp; rather than an 8-bit
+ char for html.
+
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add lang.[ch].
+
+ * doc/texinfo.txi: Be even more emphatic that @url is not
+ typically what you want.
+ * doc/texinfo.txi: Document that macro calls must use empty
+ braces.
+
+ * info/session.c: Do not translate node pointers. From Karl E.
+
+ * makeinfo/cmds.c (cm_dfn): Use <dfn>. Suggestion from Eli.
+
+Sun Feb 7 07:00:08 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c: Make --html imply --no-split.
+
+ * makeinfo/cmds.c (cm_top): don't core dump if the top node has no
+ next.
+
+ * makeinfo/makeinfo.c (replace_with_expansion): compare length
+ after expansion with length of full input text before
+ expansion, not just the length of the expanded text.
+ Bug (contents2) reported by kama.
+
+ * info/infodoc.c (create_internal_info_help_node): gettext calls
+ to help msg strings. From Ulrich.
+
+Fri Feb 5 17:35:13 1999 Karl Berry <karl@gnu.org>
+
+ * util/texi2dvi: set makeinfo= for latex case.
+
+ * doc/texinfo.txi (@deftp summary): ref Data Types node that
+ actually describes it. From kama.
+
+Thu Feb 4 07:39:10 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c: Take it back. Emacs info needs that text
+ before the CTRL-_.
+ * makeinfo/makeinfo.c: Don't bother to output the header (This is
+ -, produced ...) to stdout.
+
+ * doc/texinfo.txi (Other Info Directories): Mention that dir files
+ must be named dir.
+
+ * makeinfo/makeinfo.c (cm_uref): implement optional third
+ argument.
+ * doc/texinfo.txi (uref): document it.
+ Suggestion from: Charles Karney <karney@pppl.gov>
+
+ * doc/Makefile.am (info_TEXINFOS): put texinfo.txi first so
+ UPDATED reflects its modtime, rather than info-stnd's.
+
+ * makeinfo/files.c (full_pathname) [!WIN32]: #endif in wrong place.
+ From: Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+ * makeinfo/cmds.c (cm_url): Remove URL: from output. It's ugly.
+
+Wed Feb 3 16:05:03 1999 Karl Berry <karl@gnu.org>
+
+ * info/infodoc.c: Doc fix, zero not oh.
+
+ * makeinfo/makeinfo.c (add_char): don't ignore if
+ only_macro_expansion, even in no_headers case.
+ Otherwise menu items don't get remembered and defaulting
+ doesn't work. Macros suck!
+
+ * util/texi2dvi (common): include orig_pwd.
+ (language): reguess for each file if not explicitly set.
+
+Tue Feb 2 16:22:32 1999 Karl Berry <karl@gnu.org>
+
+ * configure.in: Bump to 3.12d now.
+
+Mon Feb 1 14:46:45 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/insertion.c (cm_item): For itemize and enumerate, do
+ </p> before the <li> for html. Bug from Eli.
+
+ * makeinfo/index.c: Installed change in index.c:
+ Mon Dec 28 12:50:14 1998 Matthew Fredette <fredette@mit.edu>
+ * makeinfo.c (index_add_arg): Use xstrdup on input_filename
+ when saving it in the new index entry.
+
+ * util/texi2dvi: cd / before cd $orig_pwd in case of DOS drive
+ change.
+
+Sun Jan 31 16:39:01 1999 Karl Berry <karl@gnu.org>
+
+ * util/texi2dvi: Used sed to expand only the @{if,}tex parts of
+ the source since makeinfo's conditional options aren't ready yet
+ (from Akim).
+ Also use ${1+"$@"} for Digital Unix "$@" expansion bug (from Noah).
+
+ * util/install-info.c: Doc fix from Eli.
+
+ * doc/texinfo.txi: Oops, said we looked for .png twice.
+
+Sat Jan 30 17:18:14 1999 Karl Berry <karl@gnu.org>
+
+ * info/session.c (forward_move_node_structure): remove tangled
+ code to merely print words instead of numbers; too hard to translate.
+
+ * info/session.c: Missing _'s for more i18n. From Trond.
+
+ * doc/Makefile.am (EXTRA_DIST): Include txi-no.tex from Trond.
+
+Sun Jan 24 09:28:12 1999 Karl Berry <karl@gnu.org>
+
+ * Makefile.am (EXTRA_DIST): Use djgpp by itself instead of listing
+ each file separately (new feature in automake 1.4).
+
+ * makeinfo/insertion.c (begin_insertion): for quotation, always
+ increment current_indent even if html output, why not.
+ (Otherwise must not decrement current_indent in end_insertion.)
+
+ * doc/texinfo.txi: More overfull box fixes.
+
+ * makeinfo/insertion.c: Add some assertions and the beginnings of
+ handling @tex.
+
+ * doc/texinfo.txi: Fix overfull boxes, but tables of contents at
+ the front.
+
+ * util/texi2dvi: Can't pass --no-ifinfo --iftex to makeinfo yet,
+ it's not ready.
+
+Sat Jan 23 10:22:16 1999 Karl Berry <karl@gnu.org>
+
+ * util/texi2dvi: Pass --no-ifinfo --iftex to makeinfo.
+
+Fri Jan 22 19:09:49 1999 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Include version.texi before @settitle so
+ @value{VERSION} gets expanded in the html title. From kama.
+
+ * These patches from Tim Singletary <talon@clark.net>.
+ * makeinfo/makeinfo.c: Simplify and improve html menus.
+ * makeinfo/insertion.c (begin_insertion): simplify html menu case
+ and set had_menu_commentary.
+ * makeinfo/insertion.h (had_menu_commentary): declare new global.
+ * makeinfo/node.h (glean_node_from_menu): declare.
+ * makeinfo/node.c (glean_node_from_menu): new arg to specify what
+ type of reference to remember as.
+
+ Date: Sun, 29 Nov 1998 09:21:01 -0500 (EST)
+ From: Tim Singletary <tsingle@talon.clark.net>
+ To: texinfo-pretest@tug.org
+ Subject: explanation of previous patches
+
+ > These diffs introduce some non-trivial changes into very
+ > sensitive parts of makeinfo, and it is hard to judge them without
+ > knowing what exactly do they solve.
+
+ At a high level, these patches fix (or at least significantly improve)
+ the html conversion of menus. Specifically, they fix bugs in the
+ conversion of menu commentary and detailmenu entries.
+
+ The menu commentary fixes require some justification: The unpatched
+ makeinfo attempts, with many bugs, to place menu commentary outside
+ the <menu> by adding </ul> and <ul> tags. While I understand the
+ motivation for this, that there might be browsers that don't support
+ <p> within <menu>, I'm not aware of any such browser and don't see any
+ compelling reason to continue the </ul> kludge.
+
+ Certainly
+ <menu>
+ <li>First paragraph.
+ <p>Second paragraph.
+ <li>Second item.
+ </menu>
+ is valid html!
+
+ Anyway, here's what my patches do:
+
+ 1) Deleted the `<h4>Menu</h4>' at the beginning of each menu. Using
+ `<h4>' is wrong since menus don't usually come after an `h3'
+ header. `<b>' looks the same on most browsers, but my opinion is
+ that there's no need for any header at all!
+
+ 2) Deleted the `<li>' kludge at the begining of each menu. It's no
+ longer needed since I'm deleting the </ul> kludge.
+
+ 3) Replace `in_menu_para', declared static in makeinfo.c:add_char()
+ with `had_menu_commentary', declared globally. Modified
+ insertion.c:begin_insertion() to initialize had_menu_commentary to
+ 1 when beginning a menu. Now there's enough state information for
+ menu commentary to be processed within <menu> ... </menu>; the
+ commentary can be seperated from the rest of the menu by bracketing
+ it between <p>'s.
+
+ Note that the first patch had a bug initializing
+ had_menu_commentary; the second patch fixes this bug.
+
+ 4) Changed the semantics of the argument to
+ node.c:glean_node_from_menu(). Previously, glean_node_from_menu()
+ only called remember_node_reference() when the argument was
+ non-zero. But add_char() didn't call `glean_node_from_menu(1)'
+ when processing detailmenu entries. In other words, detailmenu
+ entries didn't get registered as references, which lead to the html
+ conversion of detailmenu entries not producing proper hrefs!
+
+ The new semantics are that glean_node_from_menu always calls
+ remember_node_reference(), but calls it with `menu_reference' when
+ the first arg to glean_node_from_menu() is 1 and with
+ `followed_reference' otherwise. Now, detailmenu entries get
+ registered as `followed_reference' (normal menu entries still get
+ registered as `menu_reference') and the html conversion produces
+ proper hrefs.
+
+ 5) The above changes made it possible to streamline the section of
+ add_char() that deals with html menu text.
+
+ 6) In an otherwise unrelated change, rewrote a section of
+ glean_node_from_menu to no longer use `goto save_node;'.
+
+
+Thu Jan 21 12:55:42 1999 Karl Berry <karl@gnu.org>
+
+ * doc/info-stnd.texi: OK, let's try restoring the @include
+ version.texi with the new automake.
+
+ * makeinfo/cmds.c: Improve HTML @pounds, @bullet, etc.
+
+ * doc/Makefile.am (install-tex): new target.
+ (EXTRA_DIST): Include txi-??.tex.
+ txi-de.tex: new file from kama.
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Bump to 1.4.
+ (install-tex): new target.
+
+ * util/texi2dvi: Restore "$@" for explicitness in main loop.
+
+ * doc/Makefile.am (*.1) [TEXINFO_MAINT]: Conditionalize.
+
+ * configure.in (AC_PREREQ): Bump to 2.13.
+ (TEXINFO_MAINT): Define this AM_CONDITIONAL.
+
+ * doc/texinfo.txi: Document that the HTML output name is derived
+ from @setfilename.
+
+ * makeinfo/makeinfo.c (convert_from_loaded_file): Use @setfilename
+ for basename of html output.
+
+ * doc/texinfo.txi (url): Use example.org for the example.
+
+ * makeinfo/cmds.c (cm_url): @url should not produce a link, sorry
+ to say.
+
+Wed Jan 20 16:31:55 1999 Karl Berry <karl@gnu.org>
+
+ * util/texindex.c,
+ * util/install-info.c,
+ * makeinfo/makeinfo.c,
+ * info/info.c: It's 1999.
+
+ * doc/info.texi (Advanced info commands): Fix typos from Gildea.
+
+ * makeinfo/makeinfo.c (end_of_sentence_p): don't check negative
+ array offset.
+ From: Enrico Scholz <enrico.scholz@wirtschaft.tu-chemnitz.de>
+
+Sun Jan 17 16:42:16 1999 Karl Berry <karl@gnu.org>
+
+ * util/texi2dvi: Restore --batch, handle changing escape character
+ more cleanly. From Akim (as always).
+
+Thu Jan 14 16:47:41 1999 Karl Berry <karl@gnu.org>
+
+ * configure.in (ALL_LINGUAS): Add no.
+ From: Trond Endrestol <trond@agamemnon.gtf.ol.no>
+
+ * util/texi2dvi: Doc fix from Akim and do not always exit 1 from trap.
+ And it's 1999.
+
+ * doc/texinfo.txi (image): Document imagename.pdf.
+
+ * Apply this change from Eli:
+
+ 1998-11-20 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.h (meta_char_pos): New variable.
+ * makeinfo/makeinfo.c (init_paragraph): Initialize it.
+ (add_char): Use META to create a non-breakable space character.
+ (add_meta_char): New function.
+ (end_of_sentence_p): Don't handle characters at meta_char_pos as
+ normal sentence enders.
+ (flush_output): Only unMETA the non-breaking space character.
+ Reset meta_char_pos to zero.
+ (do_flush_right_indentation): Call adjust_braces_following.
+ (indent): Likewise.
+ (cm_value): Save and restore the value of meta_char_pos.
+ (expansion): Likewise.
+ * makeinfo/macro.c (me_execute_string_keep_state): Save and
+ restore the value of meta_char_pos.
+ * makeinfo/node.c (cm_node): Save and restore the value of
+ meta_char_pos.
+ * makeinfo/cmds.c (cm_accent): Make the dot we add due to
+ @dotaccent be a meta-character.
+ (cm_code, cm_dfn): Call add_meta_char to insert the closing
+ quote.
+ (cm_cite): Call add_char instead of add_word.
+
+Thu Jan 7 18:04:26 1999 Karl Berry <karl@gnu.org>
+
+ * util/texi2dvi: Handle pdf files more cleanly. From Akim.
+
+Wed Jan 6 17:49:11 1999 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (cm_image): Check for .png also.
+
+Sun Dec 20 07:54:47 1998 Karl Berry <karl@gnu.org>
+
+ * util/texi2dvi: Add --pdf.
+
+ * util/texi2dvi: New option -@ to use @input and @nonstopmode, in
+ case texinfo is preloaded.
+ From: Khimenko Victor <khim@sch57.msk.ru>
+ Date: Sun, 20 Dec 1998 02:04:12 +0300 (EET)
+
+Sat Dec 19 17:37:37 1998 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi (Multitable Column Widths): leading zero ok for
+ @columnfractions.
+
+ * util/texi2dvi: New version from Akim, plus --quiet is like
+ --batch, etc.
+
+Fri Dec 18 17:22:44 1998 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Document that the Texinfo source can't be
+ arbitrarily ordered (for print) even if all pointers are supplied.
+
+ * makeinfo/insertion.c (end_insertion): In itemize case,
+ close_insertion_paragraph so @end itemize cause a line break.
+ Report from: Sergei Pokrovsky <pok@nbsp.nsk.su>
+ Date: Sun, 22 Nov 1998 19:45:21 +0700 (GMT)
+
+Tue Dec 15 16:21:51 1998 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: More fixes from Oleg.
+
+ * configure.in: Bump version to 3.12c for next pretest.
+
+ * util/install-info.c (open_possibly_compressed_file)
+ [STRIP_DOT_EXE]: logic for compression_program assignment
+ was reversed.
+ From: wlestes@wlestes.uncg.edu
+
+Sat Dec 12 18:02:48 1998 Karl Berry <karl@gnu.org>
+
+ * Merged these changes from Andreas:
+
+1998-12-06 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * makeinfo/node.c (cm_node): When searching for @menu don't
+ require a space after it.
+
+1998-12-06 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * makeinfo/cmds.c (cm_top): free top_name only after done using it.
+
+Sat Dec 12 15:40:13 1998 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Various typos and fixes from Oleg.
+
+ * doc/texinfo.txi: Move @node's outside of @ifinfo for the sake of
+ HTML processing.
+
+ * doc/texinfo.txi (titlepage): @pxref was not in parens. From Oleg.
+
+Sun Dec 6 16:49:09 1998 Karl Berry <karl@gnu.org>
+
+ * dir-example: Amd is now am-utils.
+
+ * doc/Makefile.am: Reinstate help2man invocations for development.
+
+ * doc/texinfo.txi: Document @set...contentsaftertitlepage (from kama).
+ Fix incorrect sense for @image and Hungariam typo (from Oleg).
+
+ * lib/system.h: #include libintl.h here instead of acconfig.h, so
+ the system include files have a chance to #define NULL
+ before it does.
+ * acconfig.h: Remove libintl.h and #defines from here.
+ From: "Philippe De Muyter" <phdm@macqel.be>
+ Date: Fri, 4 Dec 1998 00:56:25 +0100 (CET)
+
+ * info/signals.c: Start #ifdef's in column one for cc on sysv68
+ (m68k-motorola-sysv).
+ From: "Philippe De Muyter" <phdm@macqel.be>
+ Date: Fri, 4 Dec 1998 00:56:25 +0100 (CET)
+
+ * info/filesys.c (is_dir_name): use strcpy instead of automatic
+ array initialization.
+ From: "Philippe De Muyter" <phdm@macqel.be>
+ Date: Fri, 4 Dec 1998 00:56:25 +0100 (CET)
+
+ * configure.in (ALL_LINGUAS): add ru.
+
+Fri Dec 4 08:12:11 1998 Karl Berry <karl@gnu.org>
+
+ * info/infodoc.c: Gettextize the help buffer string.
+
+Sun Nov 29 17:12:35 1998 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Use @ifnottex rather than @ifinfo for @top.
+ (makeinfo top): document this.
+
+ * doc/info-stnd.texi,
+ * doc/info.texi: Use @ifnottex rather than @ifinfo for @top.
+
+ * makeinfo/insertion.c (cm_menu): Implicitly insert @top command
+ so we can construct the node tree as usual when we see @menu
+ before @node. Probably this is when the input uses
+ @ifinfo instead of @ifnottex, as virtually all existing
+ manuals do.
+
+ * makeinfo/insertion.c (discard_insertions): Let any conditional
+ cross node boundary. (So the @top node can be wrapped
+ in @ifnottex, for example.)
+
+ * Installed these:
+
+1998-11-21 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (expansion): Save and restore
+ last_inserted_character and last_char_was_newline.
+
+ * makeinfo/cmds.c (cm_dircategory): Kill any indentation before
+ INFO-DIR-SECTION. install-info relies on this.
+
+1998-11-20 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/multi.c (struct env): Add meta_char_pos member.
+ (select_output_environment): Save and restore meta_char_pos.
+ (out_char): Output characters by switching environment to #0 and
+ calling insert. Call flush_output when a newline is output.
+ (output_multitable_row): Update the current environment's
+ output_paragraph_offset as well, after removing trailing
+ whitespace. Fix typo in loop index.
+ (do_multitable): Call close_single_paragraph.
+ (end_multitable): Call close_insertion_paragraph. Don't output
+ an extra newline.
+
+1998-11-20 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.h (meta_char_pos): New variable.
+ * makeinfo/makeinfo.c (init_paragraph): Initialize it.
+ (add_char): Use META to create a non-breakable space character.
+ (add_meta_char): New function.
+ (end_of_sentence_p): Don't handle characters at meta_char_pos as
+ normal sentence enders.
+ (flush_output): Only unMETA the non-breaking space character.
+ Reset meta_char_pos to zero.
+ (do_flush_right_indentation): Call adjust_braces_following.
+ (indent): Likewise.
+ (cm_value): Save and restore the value of meta_char_pos.
+ (expansion): Likewise.
+ * makeinfo/macro.c (me_execute_string_keep_state): Save and
+ restore the value of meta_char_pos.
+ * makeinfo/node.c (cm_node): Save and restore the value of
+ meta_char_pos.
+ * makeinfo/cmds.c (cm_accent): Make the dot we add due to
+ @dotaccent be a meta-character.
+ (cm_code, cm_dfn): Call add_meta_char to insert the closing
+ quote.
+ (cm_cite): Call add_char instead of add_word.
+
+Sun Nov 29 16:30:06 1998 Karl Berry <karl@gnu.org>
+
+ * info/info.h,
+ * info/footnotes.h (FOOTNOTE_LABEL),
+ * info/indices.c (APROPOS_NONE): Use N_ rather than _.
+
+ * info/infodoc.c (create_internal_info_help_node,
+ function_documentation): Do not translate the empty string.
+ Date: Fri, 25 Sep 1998 15:09:42 +0400
+ From: "Oleg S. Tihonov" <tihonov@ffke-campus.mipt.ru>
+
+ * doc/info-stnd.texi: Mention PRIOR as another alias for
+ PREVIOUS/PageUp.
+
+ * doc/texinfo.txi: @emph produces _emph_ not *emph*. Spurious
+ junk before makeinfo bison example.
+ From: tihonov@ffke-campus.mipt.ru.
+
+1998-11-16 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/defun.c (defun_internal): Don't expand the arguments to
+ @defun and its ilk.
+
+ * makeinfo/makeinfo.c (expansion): Copy the name of the currently-
+ executing command and restore it after expansion.
+
+Sun Nov 15 17:40:51 1998 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c: Rearrange usage, allow -v for verbose, only
+ output `Making' line when verbose.
+ * makeinfo/makeinfo.h (process_html, process_info, process_tex):
+ declare.
+ * makeinfo/cmds.c: Use conditional commands.
+ * makeinfo/insertion.c (find_type_from_name): Handle rawhtml and
+ rawtex.
+ (conditional commands): Allow individual switching on and off.
+
+ * makeinfo/insertion.h: Declare conditionals.
+
+1998-11-14 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/insertion.c (begin_insertion, end_insertion): Use <pre>
+ to convert @display and @smalldisplay into HTML.
+
+ * makeinfo/cmds.c (cm_asterisk): Don't insert an extra newline in
+ HTML mode, since input includes a newline right after the @*.
+ (cm_sp): Output "<br><p>\n" as many times as the argument says.
+ (cm_url): Don't include "<a href=" in the anchor text in HTML
+ output.
+
+ * makeinfo/makeinfo.c (cm_pxref): Don't add a period after @pxref
+ if in HTML mode.
+ (get_rest_of_line): Accept an additional argument EXPAND, and
+ expand the rest of line if it's non-zero. All callers changed.
+ (close_paragraph): When in HTML mode, honor the formatting of the
+ source paragraphs by generating "<p>" for every closed paragraph;
+ follow it by as many "<p>"'s as paragraph_spacing specifies.
+
+Sat Nov 14 17:38:27 1998 Karl Berry <karl@gnu.org>
+
+ * makeinfo/insertion.c: Use <ul compact> instead of deprecated <menu>.
+ Omit extra <li> after the menu beginning.
+
+ * makeinfo/index.c: Use <ul compact> instead of deprecated <menu>.
+
+Thu Nov 12 16:33:09 1998 Karl Berry <karl@gnu.org>
+
+ * Makefile.am (EXTRA_DIST): add djgpp/config.sed.
+
+ * info/terminal.c: #include <sys/ioctl.h> to define TIOCGWINSZ
+ under LynxOS. From: Marius Groeger <mag@sysgo.de>.
+
+1998-11-06 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * makeinfo/insertion.c (begin_insertion): Correctly handle
+ ifnottex and ifnothtml.
+ (end_insertion): Likewise.
+
+Sun Nov 8 17:30:23 1998 Karl Berry <karl@gnu.org>
+
+ * makeinfo/index.c,
+ * makeinfo/insertion.c: Menu is special to Info.
+ * makeinfo/node.c: Top is a special name, don't translate it.
+ * info/session.c (info_top_node): Top is a special name, don't
+ translate it.
+ From: "Oleg S. Tihonov" <tihonov@ffke-campus.mipt.ru>.
+
+Fri Nov 6 17:18:43 1998 Karl Berry <karl@gnu.org>
+
+ * configure.in: Version 3.12b.
+
+ * util/texi2dvi: Fixes from Eli and Christoph Martin.
+
+ Mon Oct 5 13:58:53 1998 Dave Glowacki <dglo@ssec.wisc.edu>
+ * util/install-info.c: Fix off-by-one error in findlines()
+
+ * util/texindex.c (usage): avoid trigraph until Ulrich fixes
+ po2tbl.sed.in. From Paul Eggert.
+
+1998-11-03 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (cm_xref): Don't bypass the test that an
+ xref ends with a period or a comma if the reference has a single
+ argument.
+
+1998-10-31 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/insertion.c (end_insertion): Don't decrement
+ in_fixed_width_font when leaving a menu, the previous value is
+ restored by pop_insertion.
+
+ * makeinfo/makeinfo.c (add_char): Don't increment output_column
+ twice when a newline is inserted into the output.
+
+ * doc/texinfo.txi (emph & strong): Document the use of underscores
+ for @emph in the Info output.
+
+1998-10-30 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * djgpp/config.bat: Make sure intl/po2tblsed.in exists before we
+ begin the configure boogie.
+ * djgpp/config.sed: Sed script, to be run by config.bat.
+
+ * doc/info-stnd.texi (Node Commands): Document the new G command.
+
+ * info/session.c (info_follow_menus): Step over a possible leading
+ space in a menu entry in menus[].
+ (split_list_of_nodenames): Renamed from split_words. Split the
+ string on commas, not on spaces, since a menu entry can have
+ embedded whitespace. Get past the null byte after inserting it.
+ (info_menu_sequence): Don't crash if there's no DIR node; try
+ using Top of the current Info file, and if that doesn't work
+ either, throw an error.
+
+ * util/texi2dvi: Use $path_sep in TEXINPUTS. Don't include any
+ dots in $tmpdir, 8+3 filesystems won't like that.
+
+ * makeinfo/makeinfo.c (reader_loop): Expand any macros in a menu
+ entry when creating a <menu> item for HTML. Fix an off-by-one
+ error in counting input lines.
+
+ * makeinfo/files.c (expand_filename): Don't treat .foo/bar as
+ absolute file name.
+
+ * makeinfo/makeinfo.c (add_char): Use strncpy instead of memcpy,
+ since the buffers overlap. If the line being refilled includes
+ nothing but the indentation and the word being added, do NOT add
+ an extra newline.
+
+ * util/install-info.c (strip_info_suffix, menu_item_equal,
+ open_possibly_compressed_file) [__MSDOS__]: Allow .inz and .igz as
+ suffuxes for compressed files.
+ (open_possibly_compressed_file): Return an indication whether we
+ opened a file or a pipe. Use FOPEN_RBIN from system.h.
+ [STRIP_DOT_EXE]: Use gzip.exe with an explicit .exe extension.
+ [O_BINARY]: If the file is not compressed, switch its stream to
+ text mode.
+ (readfile): Close the file or the pipe.
+ (output_dirfile): Call pclose to actually run the compressor.
+
+Thu Nov 5 08:33:06 1998 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: effect -> affect
+ From: Eric Hanchrow <offby1@blarg.net>
+
+Tue Nov 3 14:26:59 1998 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c (cm_image): Allocate enough space for the
+ zero byte.
+
+ * doc/texinfo.txi: Document epsf.tex standard location.
+
+Tue Oct 27 10:45:47 1998 Karl Berry <karl@gnu.org>
+
+ * Makefile.am (TEXINFO_TEX): add definition.
+
+ * doc/info-stnd.texi: Avoid unnecessary overfull boxes from
+ examples.
+
+ * doc/Makefile.am (install-data-local): missing ".
+
+ * doc/Makefile.am: Don't try to run help2man in distribution.
+
+Mon Oct 26 13:43:53 1998 Karl Berry <karl@gnu.org>
+
+ * configure.in (TEXMF): lose this whole block. It is too painful
+ to maintain with the different tex installations out there.
+
+ * util/Makefile.am (EXTRA_DIST): update-info renamed to
+ fix-info-dir.
+
+ * makeinfo/footnote.h: Doc fix.
+
+ * makeinfo/multi.c: #include "insertion.h"
+ * makeinfo/cmds.c: #include "node.h"
+ * makeinfo/makeinfo.h,
+ * makeinfo/makeinfo.c: Move globals, functions for insertions and
+ nodes.
+ * makeinfo/defun.c: #include "insertion.h"
+ * makeinfo/Makefile.am: Add insertion.[ch], node.[ch].
+ * node.[ch], insertion.[ch]: New files.
+
+ * makeinfo/makeinfo.c,
+ * makeinfo/makeinfo.h: Move globals for cmds.h.
+ * makeinfo/index.h: Include cmds.h.
+ * makeinfo/Makefile.am (makeinfo_SOURCES): Add cmds.h, cmds.c.
+ * cmds.c, cmds.h: New files.
+
+Sat Oct 24 17:28:14 1998 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c,
+ * makeinfo/makeinfo.h: Globals for files.c.
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add files.[ch].
+
+Tue Oct 20 17:03:10 1998 Karl Berry <karl@gnu.org>
+
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add macro.c and
+ macro.h.
+ * makeinfo/makeinfo.c: Move macro code to macro.h and macro.c.
+ * makeinfo/makeinfo.h: Move macro stuff to macro.h, expose global
+ last_char_was_newline for macro.c.
+ * makeinfo/index.c,
+ * makeinfo/footnote.c: #include macro.h.
+
+Wed Oct 7 16:24:07 1998 Karl Berry <karl@gnu.org>
+
+ * doc/info-stnd.texi: For now don't include version.texi due to
+ automake error.
+
+ * makeinfo/index.h: #include makeinfo.h for sake of COMMAND type.
+ * makeinfo/index.c: No need to include makeinfo.h, index.h does
+ now.
+
+ * makeinfo/makeinfo.c: Move footnote code to footnote.c.
+ * makeinfo/makeinfo.h: Globals for footnote.c.
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add footnote.[ch].
+
+ * makeinfo/makeinfo.c: Move defun code to defun.c, necessary
+ global to makeinfo.h.
+ * makeinfo/makeinfo.h (default_indentation_increment): move here
+ for defun.c.
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add defun.c.
+
+ * Makefile.am: Doc fix.
+
+ * configure.in (AC_OUTPUT): generate makeinfo/tests/Makefile.
+
+ * makeinfo/makeinfo.c,
+ * makeinfo/makeinfo.h,
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add index.[ch].
+
+Fri Oct 2 17:42:26 1998 Karl Berry <karl@gnu.org>
+
+ * lib/system.h (STREQ): new macro.
+
+Thu Oct 1 09:26:57 1998 Karl Berry <karl@gnu.org>
+
+ * doc/texinfo.txi: Delete spare copy since out of date,
+ add makeinfo html to menu,
+ detailmenu doesn't take braces in summary.
+
+Wed Sep 30 14:38:21 1998 Karl Berry <karl@gnu.org>
+
+ * makeinfo/makeinfo.c: Remove != NULL comparisons,
+ xmalloc/xrealloc casts, assignments in if statements.
+
+Wed Sep 30 14:16:01 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c: Remove NULL casts and parentheses in return
+ statements.
+
+ * makeinfo/makeinfo.c (add_link): Don't add a link if the node is null.
+ (reader_loop): don't glean_node_from_menu if detailmenu, even if html.
+ Various formatting changes.
+
+ * doc/help2man: Always exit successfully.
+
+ * makeinfo/Makefile.am (SUBDIRS): add.
+ (makeinfo_SOURCES): no more html.h.
+
+Fri Sep 11 18:47:15 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c: Fiddle with html output.
+
+1998-09-07 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (maybe_update_execution_strings): Only
+ reallocate TEXT if the existing storage is too small, otherwise
+ leave TEXT alone.
+ (replace_with_expansion): Call maybe_update_execution_strings to
+ reallocate input_text if we are executing_string, since storage
+ for execution_string is assumed to be large enough to hold every
+ possible string.
+ (me_execute_string): xstrdup the argument, so callees could freely
+ relocate it as needed.
+
+1998-09-06 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (replace_with_expansion): Don't remember
+ macro-expansion pointers if we are executing_string.
+
+1998-09-05 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/filesys.c (info_suffixes): Put the empty suffix last in the
+ list, so that `foo.info' is found before `foo', if both exist.
+
+1998-09-05 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (maybe_update_execution_strings): New
+ function, updates an entry in execution_strings[] array after
+ input_text is relocated by replace_with_expansion.
+ (replace_with_expansion): Call it.
+
+1998-09-04 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (expand_macro): If a macro is called with
+ too many arguments, return NULL and print the line number where
+ the call begins.
+ (execute_macro): If expand_macro returns NULL, return
+ immediately.
+
+Sun Sep 6 19:11:28 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c,
+ * makeinfo/makeinfo.h,
+ * makeinfo/multi.c: Html output. Specifically, these changes:
+
+ Fri Jul 4 22:58:29 1997 Dave Love <d.love@dl.ac.uk>
+
+ * doc/makeinfo.texi: Document HTML output.
+
+ * makeinfo/makeinfo.c: Wrap strings in _() in bits changed for
+ HTML.
+ (cm_image): Generate <img> for HTML.
+
+ Sun Jun 22 22:50:07 1997 Dave Love <d.love@dl.ac.uk>
+
+ * makeinfo/makeinfo.c (NAMED_NODE_ANCHORS): New define.
+ (title, outstanding_node, node_number, node_node_references,
+ escape_html, ifinfo_as_html): New variables.
+ (tentry.number, node_ref.number, fn.number): New fields.
+ (CommandTable): Various additions and alterations for HTML.
+ (long_options): Add html and no-info-as-html.
+ (main): Extra code for HTML.
+ (usage): Add HTML stuff.
+ (expand_filename): Deal with .html.
+ (escape_string): New procedure.
+ (convert_from_loaded_file): Extra code for HTML.
+ (init_internals): Call free_node_references, initialize
+ node_number.
+ (reader_loop): Process menu items for HTML hyperlinks. Escape
+ HTML special characters.
+ (add_char): Code for line breaks and paragraph insertions in
+ HTML.
+ (flush_output): Don't UNMETA for HTML.
+ (indent): Do nothing for HTML.
+ (current_item_function): Case for ifhtml.
+ (begin_insertion): Deal with HTML in various cases.
+ (insert_html_tag): new procedure.
+ (cm_asterisk, cm_copyright, cm_accent, cm_code, cm_kbd,
+ cm_angle_brackets, cm_var, cm_defn, cm_var, cm_emph, cm_string,
+ cm_cite, cm_top, cm_xref, cm_inforef, cm_uref, cm_direntry,
+ cm_ifinfo, cm_item, process_defun_args, defun_internal, cm_sp,
+ cm_dircategory, cm_center, cm_result, cm_expansion, cm_error,
+ cm_exdent, index_add_arg, make_index_entries_unique,
+ cm_printindex, cm_footnote, output_pending_notes,
+ me_execute_string): Code for HTML.
+ (cm_shyph): New procedure.
+ (cm_special_char): Add start, end args. Code for HTML.
+ (cm_email, cm_url, cm_i, cm_b, cm_r): New procedures.
+ (sectioning_html): New procedure.
+ (sectioning_underscore): Use it.
+ (add_link): New procedure.
+ (remember_node): Add number field and update node_number. Note
+ next, etc. nodes for HTML.
+ (add_escaped_anchor_name, add_anchor_name): New procedures.
+ (cm_node): New code for HTML. Move some other code to more
+ useful place.
+ (remember_node_reference): Add number field and update
+ node_number.
+ (remember_node_node_reference, free_node_node_references,
+ number_of_node): New procedures.
+ (cm_ifhtml, cm_html): New procedures.
+ (expansion): Take care of HTML escaping.
+ (cm_settitle): New procedure.
+ (remember_note): Set number field.
+
+ Declare various procedures in advance.
+
+ * doc/texinfo.txi: Makeinfo --html documentation from Dave Love.
+ Typo fixes from: Paul DuBois <dubois@primate.wisc.edu>.
+
+Thu Sep 3 11:11:01 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/Makefile.am (makeinfo_SOURCES): add html.[ch].
+
+1998-08-28 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c (cm_uref, cm_email): Use get_xref_token to
+ gather arguments.
+ (get_xref_token): Keep track of input line number when expanding
+ xref arguments.
+
+Tue Aug 25 14:36:44 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/texi2dvi: Exit the script if TeX exits with bad status.
+
+1998-08-16 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/indices.c (info_index_apropos): In the *Apropos*
+ menu, print the label first, then the Info file name and
+ the node name. Make the Info file name part of the menu
+ entry, so that all entries are distinct.
+ (apropos_in_all_indices): Scan each Info file only once, thus
+ avoiding multiple identical entries in the *Apropos* menu.
+ Free xstrdup'ed buffer, to avoid leaking memory.
+
+Thu Aug 13 12:54:58 1998 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in: Set version to 3.12a.
+
+ * Makefile.am (AUTOMAKE_OPTIONS): bump required version to 1.3,
+ add readme-alpha option.
+
+ * util/texindex.c (program_name),
+ * util/install-info.c (progname),
+ * info/info.c (program_name),
+ * makeinfo/makeinfo.c (progname): hardwire per coding standards.
+ * doc/help2man: Remove ginfo special case.
+
+Tue Aug 11 17:41:15 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/gen-dir-node: New version from drk@sgi.com.
+
+Mon Aug 10 13:55:37 1998 Karl Berry <karl@cs.umb.edu>
+
+ * dir-example: Add entries from Linux.
+
+ * info/info-utils.c (get_window_of_node): New fn.
+ * info/info-utils.h (get_window_of_node): New fn.
+ * (strchr,...) [!HAVE_STRCHR]: remove these #defines.
+ * info/infodoc.c (info_find_or_create_help_window): Call
+ get_window_of_node instead of get_internal_info_window.
+ This is so pressing ? repeatedly will always get to the same Help
+ window instead of popping up new ones.
+ From: "Brian J. Fox" <bfox@prospero.datawave.net>
+
+ * info/signals.c: Ignore SIGWINCH if we're in the midst of it.
+ We might get a whole lot of them. Noticed on Afterstep.
+ From: "Brian J. Fox" <bfox@prospero.datawave.net>
+
+1998-07-25 Bruno Haible <bruno@linuix.math.u-bordeaux.fr>
+
+ * install-info.c (findlines): Allocate room for one more line,
+ to avoid crash if dir file has exactly 512 lines.
+
+Tue Aug 4 07:14:35 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/info.c: Improve help message.
+
+ * dir-example: Add mtools.
+
+Fri Jul 31 13:29:52 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/help2man: Various hacks for texinfo.
+
+ * doc/texinfo.txi: Make dir entries more consistent.
+
+ * doc/Makefile.am: Generate man pages with help2man.
+
+ * util/texi2dvi,
+ * util/install-info.c,
+ * makeinfo/makeinfo.c,
+ * util/texindex.c: Improve help message.
+
+ * doc/info.5: Initial.
+ * doc/texinfo.5: Section 5.
+
+Thu Jul 30 17:31:42 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/info-stnd.texi,
+ * doc/texinfo.txi: Use Automake-standard VERSION and UPDATED.
+
+Wed Jul 29 17:34:41 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Describe macro limitations a bit more.
+
+ * dir-example: Correct makeinfo link.
+
+Tue Jul 28 16:44:06 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (remember_brace_1): xstrdup command, since
+ we free it later.
+
+Mon Jul 27 16:27:30 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/session.c (node_printed_rep): New fn.
+ Change calls.
+
+ * info/session.c (info_set_node_of_window): Simplify by taking new
+ argument to say whether to call
+ set_remembered_pagetop_and_point. Change calls.
+ * info/indices.c: Change call.
+
+ * info/info.c: Rewrite initial menu-sequence following stuff as a
+ function in session.c, and call it.
+
+ * info/infomap.c: Define `G' as info_menu_sequence.
+ * info/session.h (info_menu_sequence, info_follow_menus): declare
+ new fns.
+ * info/session.c (info_follow_menus, split_words,
+ * info_menu_sequence): New functions for new command.
+
+Thu Jul 23 16:44:42 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/session.c (info_scroll_other_window_backward): new command.
+ * info/infomap.c (initialize_info_keymaps): bind M-DEL and M-prior to
+ scroll-other-window-backward.
+ Report from: Vladimir Alexiev <vladimir@cs.ualberta.ca>
+ Date: Tue, 2 Dec 1997 14:54:30 -0700
+
+ * info/info-utils.c (printed_representation): If ISO_Latin_p, show
+ characters as-is. Don't assume iscntrl(x) returns false
+ for meta characters.
+ Report from: Francois Pinard <pinard@iro.umontreal.ca>
+ Date: 15 Jan 1998 17:48:51 -0500
+
+ * info/pcterm.c (pc_initialize_terminal): now no need to set it
+ here.
+ * info/info-utils.c (ISO_Latin_p): set to 1 by default.
+
+ * doc/info-stnd.texi: Document SPC, add goto-node anchor.
+
+Wed Jul 22 18:58:38 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/window.c (message_buffer_to_node),
+ * info/session.c (kill_node),
+ * info/nodes.c (info_get_node_of_file_buffer,
+ info_node_of_file_buffer_tags),
+ * info/man.c (manpage_node_of_file_buffer),
+ * info/footnotes.c (make_footnotes_node): set display_pos member
+ in new node.
+
+Tue Jul 21 14:04:52 1998 Karl Berry <karl@cs.umb.edu>
+
+ (all of this is to make SPC/DEL not move outside the current
+ document, i.e., not up through dir)
+ * info/info-utils.h (info_label_was_found): Move from here.
+ * (info_prev_label_of_node): Don't use it any more.
+ * info/session.c (INFO_LABEL_WAS_FOUND): Move to here, add test
+ for filename not dir.
+ (forward_move_node_structure): Change calls, notice if no more nodes.
+ (backward_move_node_structure): Check for moving outside current
+ document to dir.
+ * info/filesys.c (compression_suffixes): Add bz2 for bunzip2.
+ (is_dir_name): New fn.
+ * info/filesys.h: Declare it.
+ * info/nodes.c (info_get_node, info_find_file_internal): Use it.
+
+ * makeinfo/makeinfo.c: Set in_fixed_width_font to avoid munging
+ node names.
+
+Sat Jul 18 17:14:10 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/man.c (reap_children): Call wait (NULL), since we don't
+ actually use the return status for anything. NEXTSTEP 3.3
+ doesn't like an int * even though that is the POSIX
+ specification.
+ Date: Fri, 22 Aug 1997 13:55:42 +0200
+ From: "Felix H. Gatzemeier" <fxg@imib.rwth-aachen.de>
+ Via: Thomas Esser <te@informatik.uni-hannover.de>
+
+ * info/session.c (kill_node): Restore point when we go back.
+
+Thu Jul 16 18:54:04 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (BRACE_ELEMENT): Add `command' to the save
+ stack.
+ (MAYBE_BRACE_ARGS): New possibility, somewhat like TeX's
+ next-token-as-argument.
+ (command_table): Use cm_accent and MAYBE_BRACE_ARGS for all accents.
+ (read_command): Implement MAYBE_BRACE_ARGS.
+ (init_brace_stack): save current command.
+ (pop_and_call_brace): restore current command.
+ (cm_accent): move almost all accent characters to after the argument.
+ Suggested by Fran,cois.
+
+ * info/info.c (version_string): Remove defn.
+ Change call for --version option.
+ * info/session.c (display_startup_message_and_start): Just use
+ VERSION.
+ * info/info.h (version_string): Remove decl.
+
+Tue Jul 14 16:46:58 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.h: Doc fix.
+
+ * makeinfo/makeinfo.c (validate_file): Don't complain about
+ unreferenced anchors.
+
+ * doc/texinfo.txi: Document @anchor.
+
+Sun Jul 12 14:14:50 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (remember_node): Only set `current_node' if
+ this is not an anchor.
+
+ * info/nodes.c (get_tags_of_indirect_tags_table): Don't set
+ nodelen to -1 when fixing up the subfile entries, it might be 0
+ from an anchor.
+
+ * info/nodes.c (find_node_of_anchor): Offset display_pos for
+ anchor tags by the amount that node references are off by (- 1).
+
+Sat Jul 11 17:37:18 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (cm_anchor): Add output_column for anchors
+ embedded in a line.
+
+Fri Jul 10 16:28:21 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/session.c (info_menu_or_ref_item): Don't search for the
+ xref text if it's an anchor.
+ * info/nodes.h (N_FromAnchor): New NODE flag.
+ * info/nodes.c (find_node_of_anchor): New fn.
+ (info_node_of_file_buffer_tags): Handle anchor case.
+
+Wed Jul 8 17:48:59 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/window.c (window_set_node_of_window): Set window->point to
+ node->display_pos.
+ Remove unneeded casts.
+
+Tue Jul 7 08:06:14 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (add_word_args) [!VA_SPRINTF]: Use buffer,
+ not the undeclared temp_string.
+ From: Tobias Naehring <naehring@eeetw3.et.tu-dresden.de>
+ To: egcs-bugs@cygnus.com
+ Date: Mon, 6 Jul 98 13:51:55 +0200
+
+Mon Jul 6 17:43:25 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/nodes.h (NODE): Add display_pos member.
+
+Sun Jul 5 08:17:43 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/nodes.h (INFO_REF_LABEL): Define.
+
+ * util/texi2dvi: Rationalize use of `index' vs. more general
+ `xref'.
+
+Thu Jul 2 18:53:43 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c: Don't translate -Footnotes, it's a magic
+ cookie. From Eli.
+
+Wed Jul 1 08:42:41 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi (url): Missing word `command'.
+
+Tue Jun 30 10:35:48 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/info.c: Missing \n in try --help msg.
+
+ * makeinfo/makeinfo.c (cm_anchor): New fn for new cmd.
+ (TAG_FLAG_ANCHOR): New flag for tag entries.
+ (write_tag_table_internal): Handle anchor case.
+ (TAG_FLAG_{{PREV,NEXT,UP}_ERROR,NO_WARN,IS_TOP}): Add TAG_FLAG_ prefix
+ for clarity, change uses.
+
+ * doc/texinfo.txi: Remove warning about footnotes with @item, that
+ works now.
+
+Mon Jun 29 10:17:50 1998 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in (AM_CONFIG_HEADER): Use second argument to be 8.3
+ compliant.
+ * config.h.in: Rename to config.in.
+
+ * info/Makefile.am (EXTRA_DIST),
+ * info/terminal.c [__MSDOS__]: Change #include to pcterm.c and
+ rename file.
+
+Sun Jun 28 14:29:27 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/Makefile.am (EXTRA_DIST): Add pc_term.c.
+
+ * makeinfo/makeinfo.c (HAVE_MACROS): Remove this conditional, we
+ always want macros now.
+
+ * info/indices.c: Copyright.
+
+1998-06-26 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * makeinfo/makeinfo.c: (only_macro_expansion): New variable,
+ suppresses all expansions except macros.
+ (replace_with_expansion): New function, replaces a portion of
+ input text with its expansion. Avoids moving the text around if
+ we are positive it will expand into itself. If the length of the
+ expanded text is the same as the length of the original text, just
+ replaces the original text without moving the rest. Resyncs the
+ remembered text pointers with the realloc'ed input_text, when it
+ is realloc'ed.
+ (reader_loop): When only_macro_expansion is non-zero, only handle
+ macros, but leave the rest of input intact.
+ (read_command): Now returns an int, zero means no known command or
+ macro is found after the prefix character; all callers changed.
+ Support operation under non-zero only_macro_expansion.
+ (cm_node): Expand only the macros in the @node line. Allocate and
+ generate the macro-expanded @node line in one swell whoop.
+ (glean_node_from_menu): Expand macros in menu entries.
+ (get_xref_token): A new argument EXPAND, when non-zero, means
+ expand macros in the entire brace-delimited argument before
+ looking for the next comma; all callers changed.
+ (expansion): Save and restore additional state variables important
+ for output generation machinery. Disable indentation and filling
+ during the recursive expansion, so that the output buffer offset
+ is not invalidated by filling.
+ (me_execute_string_keep_state): New function, calls
+ me_execute_string, but saves and restores state variables
+ important for output generation, so that -E doesn't change the
+ generated Info output.
+ (index_add_arg, cm_footnote): Call me_execute_string_keep_state.
+ (expand_macro): New function, returns the macro expansion as a
+ malloc'ed string.
+ (execute_macro): Call expand_macro.
+ (me_execute_string): Avoid memory leak by freeing input_filename.
+ (get_until_in_braces, replace_with_expansion, add_char,
+ cm_footnote, cm_macro, cm_unmacro, get_brace_args,
+ extract_colon_unit): Use the faster memcpy/memmove instead of
+ strncpy.
+
+Sat Jun 27 14:18:54 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/info.texi: Use @subsubsection instead of
+ @unnumberedsubsubsection, since it's in a numbered chapter.
+
+ * Started installation of following DOS patches from Eli.
+>1998-05-16 Eli Zaretskii <eliz@is.elta.co.il>
+>
+> * info/session.c (info_goto_node): Don't show the nodes of the
+> current Info file twice in *Completions*.
+> * info/echo-area.c (ea_possible_completions): Actually pass the
+> number of completions to printf_to_message_buffer.
+>
+> * info/man.c (manpage_node_of_file_buffer): xstrdup the nodename
+> member of manpage nodes, since the tags are freed and recomputed
+> when a new man page is added to *manpages* file_buffer.
+> (get_manpage_node): Recompute info_windows[]->nodes[] for all
+> windows showing the man pages after nodes[]->contents are
+> invalidated by reallocation of file_buffer->contents.
+>
+>1998-05-15 Eli Zaretskii <eliz@is.elta.co.il>
+>
+> * lib/system.h (DEFAULT_INFO_PRINT_COMMAND) [__MSDOS__]: Define to
+> ">PRN".
+> * info/session.c (print_node): Support ">printer" in
+> INFO_PRINT_COMMAND, to mean write to the named file/device insead
+> of piping to it as a program.
+> (kill_node): Compare window in addition to the nodename, when
+> looking for the node to kill.
+>
+>1998-05-09 Eli Zaretskii <eliz@is.elta.co.il>
+>
+> * lib/system.h (SET_SCREEN_SIZE_HELPER) [__MSDOS__]: Define a new
+> macro.
+> * info/m-x.c (set_screen_height): Use SET_SCREEN_SIZE_HELPER, if
+> defined. If the screen size did'n change, redisplay the previous
+> screen contents.
+>
+> * info/infomap.c (initialize_info_keymaps) [__MSDOS__]: Bind DEL
+> to ea_delete in the echo-area keymap.
+> * info/session.c (incremental_search): If the key is
+> isearch_terminate_search_key, but buffered input is pending, don't
+> gobble the ESC key.
+>
+> * info/info.c (main): Switch the order thet terminal_prep_terminal
+> and terminal_clear_screen are called, to make it consistent with
+> what initialize_info_session does when called with non-zero second
+> argument. Call terminal_unprep_terminal last, after moving the
+> cursor to the bottom of the screen. If user_filename is of the
+> form "d:foo", add "d:." to the INFOPATH, not "d:".
+>
+> * info/signals.c (initialize_info_signal_handler): Save old
+> SIGUSR1 handler.
+> (info_signal_handler): Handle SIGUSR1.
+>
+> * info/indices.c (info_apropos): Print the results to stdout.
+>
+>1998-05-02 Eli Zaretskii <eliz@is.elta.co.il>
+>
+> * makeinfo/makeinfo.c (ALSO_NULL_DEVICE): New macro, for alternate
+> null device name.
+>
+> * info/man.c (get_manpage_contents): Redirect stderr of the man
+> page formatter to the null device.
+> (executable_file_in_path): Use IS_SLASH.
+>
+> * info/session.c (info_gather_typeahead) [__DJGPP__]: Call
+> pc_term_chars_avail to get the number of pending characters.
+>
+> * info/filesys.c (convert_eols): New function, converts DOS-style
+> EOLs to a single Newline.
+> (filesys_read_info_file, filesys_read_compressed): Call it.
+> (filesys_read_compressed) [STRIP_DOT_EXE]: Use explicit .exe
+> suffix.
+> (filesys_read_compressed): Check return status of `pclose'.
+>
+>1998-05-01 Eli Zaretskii <eliz@is.elta.co.il>
+>
+> * info/filesys.c (filesys_read_info_file): Add additional
+> parameter: is_compressed. All callers changed.
+>
+> * makeinfo/makeinfo.c (convert_from_loaded_file): Compare file
+> names with FILENAME_CMP. Use NULL_DEVICE.
+> (cm_node): Compare file names with FILENAME_CMP.
+> * info/tilde.c (tilde_find_suffix, tilde_expand_word): Use
+> IS_SLASH.
+>
+> * info/pc_term.c: New file, handles the PC terminal on MS-DOS and
+> MS-Windows.
+> * info/terminal.c [__MSDOS__]: Include pc_term.c.
+> * info/Makefile.in (ginfo_SOURCES): Add pc_term.c
+> Add pc_term.c to dependencies of terminal.o.
+>
+> * info/session.c (info_get_input_char): Reassign tty after EOF
+> from a non-stdin input stream.
+>
+>1998-04-30 Eli Zaretskii <eliz@is.elta.co.il>
+>
+> * info/session.c (info_set_input_from_file): Use binary input.
+> (info_gc_file_buffers): Compare file names with FILENAME_CMP.
+> * info/search.c (skip_whitespace_and_newlines): Use
+> whitespace_or_newline macro instead of reinventing the wheel.
+> * info/nodes.c (info_find_file_internal): Use IS_ABSOLUTE and
+> FILENAME_CMP.
+> (info_load_file_internal): Call filename_non_directory to find out
+> where the basename begins.
+> (get_tags_of_indirect_tags_table): Call filename_non_directory.
+> containing_dir of "d:foo" is "d:.", not "d:".
+> (forget_info_file): Compare file names with FILENAME_CMP.
+> * info/nodemenu.c (get_visited_nodes): Use FILENAME_CMP to find
+> duplicate lines.
+>
+> * lib/system.h (PIPE_USE_FORK): New macro.
+> * info/man.c (get_manpage_contents): Use it to determine whether
+> to call pipe/fork/exec or popen/pclose to run the man page
+> formatter.
+> (executable_file_in_path): Search for the file with several known
+> extensions such as .exe, where appropriate.
+>
+> * lib/system.h (NULL_DEVICE): A new macro.
+> * info/makedoc.c (main): Use it.
+> (maybe_dump_tags): Switch output strem to binary mode when
+> appropriate.
+> (process_one_file): Update file_size after reading the file.
+>
+> * info/infodoc.c: Add TAB, RET, and `i' to the list of important
+> commands in info_internal_help_text.
+>
+> * info/info.c (main): Support the --speech-friendly option. Use
+> PATH_SEP to separate directories.
+> (info_short_help) [__MSDOS__]: Mention the --speech-friendly
+> option.
+>
+> * info/info-utils.c (filename_non_directory): Use HAVE_DRIVE and
+> IS_SLASH.
+> * info/indices.c (do_info_index_search, index_entry_exists): Use
+> FILENAME_CMP to compare file names.
+> * info/filesys.c: Add ".inf" to the list of known extensions.
+> Look for .z before .Z, for the sake of case-insensitive
+> filesystems. Add DOS-specific extensions to work around 8+3
+> namespace restrictions.
+> (info_absolute_file): New function.
+> (info_find_fullpath): Call it for candidates which are absolute
+> file names. Use IS_SLASH and IS_ABSOLUTE.
+> (info_file_in_path): Use IS_SLASH.
+> (extract_colon_unit, info_add_path): Use PATH_SEP instead of ":".
+> (lookup_info_filename): Compare file names with FILENAME_CMP.
+> (filesys_read_info_file): Read Info files in binary mode.
+> (filesys_decompressor_for_file): Read Info files in binary mode.
+> Compare file names with FILENAME_CMP. On MS-DOS, allow files
+> whose names end with a `z' be decompressed with gunzip.
+> * info/dribble.c (open_dribble_file): Open dribble file in
+> FOPEN_WBIN mode.
+> * info/dir.c (maybe_build_dir_node): Use IS_SLASH.
+> * util/texindex.c (maketempname): Put the numeric suffix after the
+> dot, to salvage 3 more characters on 8+3 filesystems.
+>
+>1998-04-29 Eli Zaretskii <eliz@is.elta.co.il>
+>
+> * util/texindex.c (main): Use IS_SLASH to find the basename of
+> argv[0]. Lose the .exe suffix, if any.
+> (decode_command): Look at $TEMP and $TMP in addition to $TMPDIR.
+> Use DEFAULT_TMPDIR.
+> * util/texi2dvi: Use either `:' or `;' as directory separator in
+> TEXINPUTS, computed at run time. Save previous versions of index
+> files in a separate backup directory.
+> * util/install-info.c (main): Support backslashes in file names by
+> using IS_SLASH. Avoid recomputing length of infile_basename
+> unnecessarily. Use FILENAME_CMP for comparing file names
+> case-insensitively, where appropriate. Allow foo.inf as well as
+> foo.info to be an Info file name.
+> * lib/system.h (PATH_SEP, STRIP_DOT_EXE, FILENAME_CMPN,
+> DEFAULT_TMPDIR): New macros.
+>
+>1998-04-25 Eli Zaretskii <eliz@is.elta.co.il>
+>
+> * lib/system.h (O_BINARY, SET_BINARY, FOPEN_RBIN, FOPEN_WBIN,
+> IS_SLASH, HAVE_DRIVE, IS_ABSOLUTE, FILENAME_CMP, PATH_SEP,
+> HAVE_LONG_FILENAMES): New macros.
+> * makeinfo/makeinfo.c (find_and_load): Use O_BINARY to decide when
+> read returning a value different from what st_size says is not an
+> error. Realloc the buffer after we've read the file.
+> (skip_directory_part): New function, skips leading directory in a
+> way that works on DOSISH systems.
+> (filename_non_directory, pathname_part): Call it.
+> (filename_part): Call filename_non_directory.
+> (expand_filename, full_pathname): Use IS_ABSOLUTE and IS_SLASH.
+> (convert_from_file): Check .txi extension first.
+> (split_file): Support splitting output files on 8+3 filesystems.
+> (main, extract_colon_unit): Use PATH_SEP instead of ':'.
+> (get_file_info_in_path): Use IS_ABSOLUTE and IS_SLASH.
+
+
+ * doc/texinfo.txi: Changes from Eli for MS-DOS stuff.
+ * doc/info-stnd.texi: Fixes from Eli: he documented all the
+ missing keys and command-line options, corrected
+ inaccuracies (probably left-overs from previous versions),
+ and added some clarifications where I thought the manual
+ was not clear enough.
+ * Makefile.am (EXTRA_DIST): Add djgpp files.
+
+ * makeinfo/makeinfo.c: New no-op commands @setcontentsaftertitlepage
+ and @setshortcontentsaftertitlepage.
+ * doc/texinfo.txi: Document the new @set{,short}contentsaftertitlepage
+ commands and the possibility of putting @contents and
+ @shortcontents after @end titlepage.
+
+ * util/texi2dvi: Check that the toc file has not changed (as well
+ as .aux and .??).
+
+Thu Jun 25 16:58:46 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Document new commands @env, @command, @option.
+
+ * makeinfo/makeinfo.c (option, command, env): New markup commands, same
+ as @code in info.
+
+Wed Jun 24 15:39:38 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c: New no-op command @acronym.
+
+ * doc/texinfo.txi: Document new command @acronym.
+
+ * util/install-info.c (strip_info_suffix, menu_item_equal): New fns.
+ (main): Call them instead of doing the filename test inline; all the
+ .info variations are too confusing to write out twice.
+
+Tue Jun 23 18:01:40 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Fix some overfull boxes.
+
+Mon Jun 22 19:22:17 1998 Karl Berry <karl@north>
+
+ * configure.in: Remove AC_LINK_FILES call, that was an old gettext
+ thing, no longer necessary, and causes problems with Autoconf.
+
+Sun Jun 14 07:00:15 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/texi2dvi: Indent options so help2man will work. From Akim.
+
+Sat Jun 13 10:45:25 1998 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in (ALL_LINGUAS): Add nl.
+
+ * util/texi2dvi: Avoid tabs.
+
+Wed Jun 10 17:38:21 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (gen_defindex): Use xmalloc instead of alloca.
+ This was our only use of alloca, so also remove all the #if junk
+ at the beginning to define it.
+
+ * makeinfo/makeinfo.c: Fix grammar in multiply-defined-node error
+ message.
+
+Tue Jun 9 17:53:54 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Document new commands @smallformat,
+ @smalldisplay.
+
+ * makeinfo/makeinfo.c: New commands @smalldisplay and @smallformat.
+ Suggestion from: Eli Zaretskii <eliz@is.elta.co.il>.
+
+ * makeinfo/makeinfo.h (insertion_type, insertion_type_names):
+ Declare smalldisplay and smallformat.
+
+Mon Jun 8 07:57:52 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Document possibility of combining @titlefont
+ and @title. From Eli.
+
+ * util/texi2dvi: Set verbose to : instead of false by default.
+
+ * util/texi2dvi: Missing \\ for sed with -t text. From Akim.
+
+Sun Jun 7 13:02:13 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Document @pagesizes and texidvi -t.
+
+ * makeinfo/makeinfo.c: Define no-op @pagesizes and @afourpaper.
+ (major_version, minor_version): Remove these globals, just use the
+ Texinfo package version.
+ (print_version_info): Ditto.
+
+Fri Jun 5 17:54:16 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Change texi2dvi documentation a bit.
+
+ * util/texi2dvi: Handle --option=argument style of specifying
+ arguments.
+
+Sat May 30 14:01:37 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: More.
+
+ * util/install-info.c (open_possibly_compressed_file): Finish
+ implementation.
+
+ * doc/texinfo.txi: Document install-info compression support.
+
+Fri May 29 08:01:43 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/install-info.c (open_possibly_compressed_file): Initial
+ implementation.
+
+ * util/install-info.c (output_dirfile): Attempt to write dir.gz if
+ that's what we read.
+ (readfile): Pass back the actual opened filename, too.
+
+ * info/indices.c: Check in Eli's patch.
+
+Thu May 28 17:09:45 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/install-info.c (readfile): Set up to handle compressed
+ input (and output) files. Change callers.
+ Rearrange function order to avoid forward declarations.
+
+ * configure.in: Remove check for libz, we'll fork gzip instead.
+
+Tue May 26 18:01:13 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/install-info.c (print_help): Missing \n\ in help string.
+
+ * makeinfo/makeinfo.c (POST_SENTENCE): Rename from post_sentence.
+ Change calls.
+ (flush_output): Strip 8th bit if post_sentence char as well as space.
+ (cm_code, etc.): Change add_char calls for post_sentence chars to set
+ 8th bit.
+
+1998-05-23 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * info/indices.c (info_next_index_match): Call
+ info_set_node_of_window to display the node, so that footnotes are
+ displayed as well.
+
+Thu May 21 11:05:50 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/install-info.c (output_dirfile): New function, extracted
+ from the end of main.
+
+ * makeinfo/makeinfo.c (begin_insertion): Ignore @group in all the
+ example-like environments, not just @example. Otherwise the first
+ line in the environment is not indented correctly. Reported by rms.
+
+Wed May 20 17:44:38 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/install-info.c: Doc fixes.
+
+ * util/install-info.c: Handle XEmacs-style dir entries:
+ * FILENAME::PROGRAM DESCRIPTION.
+ Date: Wed, 13 May 1998 13:58:28 +0900
+ From: KIRIYAMA Kazuhiko <kiri@kiri.toba-cmt.ac.jp>
+
+ Also, do not set something_deleted on continuation lines; they are only
+ deleted if the entry was deleted.
+
+Tue May 19 17:22:50 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/install-info.c: Do not read the dir file if we are only
+ deleting -- it might not exist, and we don't actually need it.
+ From: David Kaelbling <drk@sgi.com>
+ Date: Tue, 12 May 1998 11:05:26 -0400
+
+ * util/gen-dir-node:
+ From: David Kaelbling <drk@sgi.com>
+ Date: Tue, 12 May 1998 16:05:16 -0400 -
+ - The "dir" moobler header is slightly different from the default
+ dir file.
+ - If all files in ${infofiles} appear in the skeleton the last one
+ is processed twice.
+ - INFO-DIR-SECTION data is ignored.
+ - Don't generate entries for directories.
+
+Sat May 16 17:16:56 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (cm_novalidate): New fn for new command
+ @novalidate, like --no-validate.
+
+Thu May 14 18:02:31 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Document the @novalidate command.
+
+Wed May 13 17:47:20 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi: Document limitation on @set/@value names in
+ index commands.
+
+Fri May 1 14:12:15 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi (Command List): @deftypevar out of order.
+
+ * configure.in (ALL_LINGUAS): Add cs.
+
+Tue Apr 28 09:33:41 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (strcasecmp): This is in lib now.
+
+1998-04-26 Richard Stallman <rms@psilocin.gnu.org>
+
+ * util/install-info.c (print_help): Doc clarifications.
+
+Sun Apr 19 15:55:10 1998 Karl Berry <karl@cs.umb.edu>
+
+ * lib/system.h (strcasecmp, strncasecmp) [!HAVE_STR[N]CASECMP]:
+ Declare these.
+
+ * info/search.h (str[n]casecmp): Remove decl from here.
+
+ * configure.in (AC_REPLACE_FUNCS): Check for strcasecmp and
+ strncasecmp here.
+ (AC_CHECK_FUNCS): Instead of just strcasecmp here.
+
+ * configure.in (texconfig): Use TEXMFMAIN in preference to TEXMF
+ for post-0.4 teTeX.
+
+Wed Apr 15 17:20:31 1998 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.txi (Reporting Bugs): New section.
+ Suggestion from: Andrew Shapira <shapiraa@cs.rpi.edu>
+ Date: Mon, 4 Aug 1997 19:06:06 -0400 (EDT)
+
+ * info/infomap.c: Define / to be info_search.
+ Suggestion from: Egil Kvaleberg <egil@kvaleberg.no>
+ Date: Fri, 1 Aug 1997 08:16:45 +0200 (MET DST)
+
+ * doc/texinfo.txi (uref): Document reason for not using <URL: format.
+ Also use ftp.gnu.org instead of ftp.gnu.ai.mit.edu throughout.
+
+Tue Apr 14 10:43:39 1998 Karl Berry <karl@cs.umb.edu>
+
+ 1998-04-05 Karl Eichwalder <ke@suse.de>
+ * makeinfo/makeinfo.c (begin_insertion): No need to
+ gettext; it's a keyword. From carl-friedriech.spilcke-liss@ensae.fr.
+ (cm_printindex): ditto.
+
+ * util/texi2dvi: Always remove the $tmp_dir's.
+ From: Dean Gaudet <dgaudet@arctic.org>
+ Date: Tue, 14 Apr 1998 00:55:36 -0700 (PDT)
+
+Mon Apr 13 18:02:57 1998 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in: Include
+ AM_SYS_POSIX_TERMIOS
+ AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
+ to avoid window resizing being ignored under glibc2 systems,
+ e.g., Red Hat Linux 5.0. Actually any system where the ioctls are not
+ defined in <termios.h>.
+ See also http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl/full/206.
+ * acconfig.h (GWINSZ_IN_SYS_IOCTL): New #undef for autoheader.
+ * info/termdep.h [GWINSZ_IN_SYSIOCTL]: #include <sys/ioctl> if
+ this is defined.
+ From: Mark Jefferys <mjeffery@cse.ogi.edu>
+ Date: Thu, 9 Apr 1998 12:38:27 -0700 (PDT)
+
+Fri Apr 3 01:18:22 1998 Philippe De Muyter <phdm@macqel.be>
+
+ * info/info.c (main): Use 0, not NULL, as ? : alternative.
+
+Tue Mar 3 13:29:17 1998 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in: Version 3.12.
+
+ * po/de.po: New version.
+
+ * po/POTFILES.in: Do not include doc.c; that gets built at
+ runtime, thus causing texinfo.pot to try to get rebuilt. Besides,
+ it doesn't have any translatable strings.
+
+Sun Mar 1 10:38:47 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/install-info.c: No need for i18n on version message. From
+ ke@suse.de.
+
+Fri Feb 27 16:06:23 1998 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in: Run texconfig conf instead of confall.
+
+ * doc/Makefile.am (INSTALL_INFO): New variable.
+ (install-info-am): Use install-info from our distribution.
+
+ * info/info.c (info_minor_version): Increment.
+ * (info_patch_level),
+ * info/info.h (info_patch_level): Remove.
+
+ * info/info.c (program_name): Move decl.
+
+ * util/install-info.c (ensure_dirfile_exists): Use commas and \t
+ instead of an explicit tab, which make dist expands.
+
+ * doc/texinfo.txi: @prep.ai.mit.edu -> @gnu.org.
+
+ * info/info.c: Make help messages consistent with others.
+
+ * util/install-info.c (print_help): Format consistently.
+
+ (readfile): Support gzipped files via libz.
+ From: Elliot Lee <sopwith@redhat.com>
+ Date: Mon, 1 Sep 1997 23:37:14 -0400 (EDT)
+
+Thu Feb 26 16:13:14 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/echo-area.c: Whoops, _ might not start with parens.
+
+ * configure.in: Check for libz.
+ Do not output emacs/Makefile.
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Set to 1.2f.
+
+ * util/texi2dvi: Always remove temporary directories. (From Akim.)
+ Formatting changes.
+
+Wed Feb 25 15:26:26 1998 Karl Berry <karl@cs.umb.edu>
+
+ * util/texi2dvi: New options --batch, --clean.
+ From: Akim Demaille <demaille@inf.enst.fr>
+ Date: 15 Aug 1997 18:05:33 +0200
+ * doc/texinfo.txi (Format with texi2dvi): Mention --help.
+
+ Applied this:
+1997-08-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * makeinfo/makeinfo.c (me_executing_string): New variable.
+ (me_execute_string): Use it instead of executing_string.
+ (popfile): Check for me_executing_string as well as
+ executing_string.
+ (get_until_in_line): Likewise.
+ (insert_and_underscore): Do not write any expansion output if
+ executing a string.
+ (cm_node, cm_include, index_add_arg, cm_footnote, execute_macro,
+ cm_macro, cm_unmacro): Likewise.
+ (cm_footnote): Include the footnote marker in the expansion
+ output.
+ (append_to_expansion_output): Do nothing if the input_text wasn't
+ a remembered text.
+ (defun_internal): Make the index entry even if expanding macros.
+ (expansion): Don't reset macro_expansion_output_stream around call
+ to execute_string.
+ (apply): Fix typo.
+
+Tue Feb 24 17:33:44 1998 Karl Berry <karl@cs.umb.edu>
+
+ 1997-11-10 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+ * makeinfo/makeinfo.c (get_until_in_line): Don't use xstrdup on
+ the unterminated input_text.
+
+ * makeinfo/makeinfo.c: Don't assume all \'s in macro bodies are
+ arguments.
+ From: Mathias.Herberts@irisa.fr (Mathias Herberts)
+ Date: Tue, 6 Jan 1998 18:54:26 +0100
+
+ * configure.in: Check for sigblock in libc before libbsd.
+ * From: hjl@lucon.org (H.J. Lu)
+ * Date: Fri, 23 Jan 1998 21:50:25 -0800 (PST)
+
+Mon Feb 23 16:26:31 1998 Karl Berry <karl@cs.umb.edu>
+
+ * info/window.c (character_width): If ISO_Latin_p is set, make
+ printable_limit 255, not 160. ISO Latin 1 uses
+ essentially all of the 256 characters.
+ Reported by: Marius Groeger <mag@sysgo.de>
+ Date: Wed, 17 Dec 1997 16:05:27 +0100
+
+ * info/info.c: Improve help message.
+
+Sun Feb 22 17:38:32 1998 Karl Berry <karl@cs.umb.edu>
+
+ * Makefile.am (SUBDIRS): Remove emacs; we'll just distribute the
+ Elisp files with Emacs.
+
+ * doc/Makefile.am (info_TEXINFOS, texinfo): Rename manual to
+ texinfo.txi to avoid DOS filename clash with texinfo.tex.
+
+ * info/tilde.c: Copy slightly updated alloca stuff from makeinfo.
+
+ * util/texindex.c (main): Declare as returning int to placate
+ warnings.
+
+ * info/Makefile.am: Uncomment BUILT_SOURCES stuff and add missing _.
+ From: "Joel N. Weber II" <devnull@gnu.org>
+ Date: Fri, 30 Jan 1998 17:21:38 -1000
+
+ * util/texindex.c,
+ * util/install-info.c,
+ * makeinfo/makeinfo.c,
+ * info/info.c: Change help address to @gnu.org.
+
+ 1998-01-22 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+ * makeinfo/makeinfo.c (usage): Fix order of arguments to help
+ format string.
+
+ * makeinfo/makeinfo.c (cm_top): Error message wording.
+
+ * doc/texinfo.texi (Functions in Typed Languages): Remove
+ duplicate description of @deftypemethod.
+ From: KHMarbaise@p69.ks.fido.de (Karl Heinz Marbaise)
+ Date: Wed, 07 Jan 1998 11:11:50 +0100
+
+ * info/session.c (info_get_input_char) [EINTR]: Keep reading if we
+ get EINTR.
+ From: Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+ Date: 22 Dec 1997 10:32:53 +0100
+
+Sat Feb 21 17:41:26 1998 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (find_and_load): Malloc enough room for the
+ null as well as the newline.
+ From: "John W. Eaton" <jwe@bevo.che.wisc.edu>
+ Date: Tue, 30 Sep 1997 21:12:01 -0500
+
+ * util/texindex.c (--version),
+ * makeinfo/makeinfo.c (cm_today),
+ * makeinfo/makeinfo.c (print_version_info): Version strings etc. do not
+ need translation.
+ From: Karl Eichwalder <ke@suse.de>
+ Date: 13 Sep 1997 16:20:02 +0200
+
+ * info/echo-area.c: Rewrite pluralization to be translatable.
+ From: Karl Eichwalder <ke@suse.de>
+ Date: 13 Sep 1997 16:20:02 +0200
+
+ * util/texindex.c,
+ * info/info.c,
+ * makeinfo/makeinfo.c,
+ * util/install-info.c: --version: Give year as argument to printf,
+ to reduce the number of translations needed.
+ From: Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
+ Date: 02 Sep 1997 18:01:26 +0200
+
+ * util/texindex.c: Remove the fnctl.h and sys/file.h conditional #includes, they are
+ already in lib/system.h.
+ From: "Philippe De Muyter" <phdm@macqel.be>
+ Date: Thu, 21 Aug 1997 20:16:49 +0200 (MET DST)
+
+ * info/terminal.c (terminal_begin_using_terminal,
+ terminal_end_using_terminal): #ifdef SIGWINCH settings for
+ m68k-motorola-sysv.
+ From: "Philippe De Muyter" <phdm@macqel.be>
+ Date: Thu, 21 Aug 1997 20:16:49 +0200 (MET DST)
+
+ * info/filesys.c (info_suffixes): Add /index as a possibility for
+ subdirectories.
+ From: Matthew Wilcox <willy@odie.barnet.ac.uk>
+ Date: Wed, 6 Aug 1997 15:55:16 +0100 (BST)
+
+ * configure.in: Redirect texconfig input from /dev/null to avoid
+ stoppage.
+ From: Thomas Esser <te@informatik.uni-hannover.de>
+ Date: Mon, 4 Aug 1997 18:15:49 +0200
+
+ * makeinfo/makeinfo.c (find_and_load): Null-terminate the input text.
+ From: Kenneth Stailey <kstailey@disclosure.com>.
+
+ * info/Makefile.am (INCLUDES): Add -I.. -I$(srcdir).
+
+Fri Aug 22 16:24:59 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi: Adjust ISBN, edition number for print run.
+
+Mon Aug 4 16:12:42 1997 Karl Berry <karl@cs.umb.edu>
+
+ * info/info.c (main) [INFODIR]: Add this to infopath, if set.
+ * info/Makefile.am (DEFS): New define, include -DINFODIR.
+ From: Larry Schwimmer <rosebud@cyclone.Stanford.EDU>.
+
+ * util/install-info.c (ensure_dirfile_exists): Use tabs instead of
+ spaces on the File: dir line.
+ Bug from: Dave Love <d.love@dl.ac.uk>.
+
+Sat Aug 2 12:43:57 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (cm_value, cm_email, cm_uref): Have to cast
+ from unsigned char * to char * or IRIX cc complains.
+ From: "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu>.
+
+Fri Aug 1 14:05:10 1997 Karl Berry <karl@cs.umb.edu>
+
+ * Makefile.am (EXTRA_DIST): Remove README-alpha.
+ From: "ir. Mark M._Kettenis" <kettenis@phys.uva.nl>.
+
+1997-07-31 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * configure.in: Use AC_CHECK_HEADERS, not AC_CHECK_HEADER.
+
+Thu Jul 31 11:57:46 1997 Karl Berry <karl@cs.umb.edu>
+
+ * Version 3.11.
+
+ * info/man.c (reap_children): Declare status as int, not unsigned,
+ since that's what POSIX says the arg to wait should be.
+
+ * makeinfo/makeinfo.c (cm_uref, cm_email): Rewrite to do macro
+ expansion in the arguments.
+
+ * makeinfo/makeinfo.c (main): setlocale LC_MESSAGES and LC_TIME,
+ instead of LC_ALL.
+ From: Akim Demaille <demaille@inf.enst.fr>.
+
+ * makeinfo/makeinfo.c (cm_today): Let the %d %s %d be translated,
+ so other languages can change the order of day/month/year.
+ From: Akim Demaille <demaille@inf.enst.fr>.
+
+ * info/infomap.c: Doc fix.
+
+ * lib/system.h [!O_RDONLY]: Prefer <fcntl.h> to <sys/fcntl.h>.
+
+ * configure.in (AC_CHECK_HEADERS): Check for fcntl.h.
+
+ * doc/Makefile.am (install-data-local): Suggest tex/generic/dvips
+ for epsf.tex.
+ From: Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
+
+ * configure.in (TEXMF): Move check to block with other program
+ checks.
+
+Wed Jul 30 11:20:37 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (defun_internal): Allow extra text after
+ most @def... commands, for tzname[2] in libc.texinfo.
+
+ * info/info.c: Include indices.h.
+ * configure.in (AC_CHECK_HEADERS): Test for sys/wait.h, info/man.c
+ uses it.
+ From: Erick Branderhorst <Erick.Branderhorst@asml.nl>.
+
+Tue Jul 29 15:55:19 1997 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in: Version 3.9j.
+
+ * info/terminal.c (output_character_function): Return int (the
+ arg), not void.
+
+ * info/infomap.c: Don't define term_kP as 'v', since that's undefined.
+ From: Tom Hageman <tom@basil.icce.rug.nl>.
+
+ * makeinfo/makeinfo.c: Parameterize some messages to avoid
+ duplicate translations.
+
+ * info/terminal.c: Only try to declare ospeed, PC, tputs, etc. if
+ we don't have <ncurses.h/termcap.h> or <termcap.h>.
+
+ * makeinfo/makeinfo.c (cm_email): New function, like cm_uref.
+
+Sun Jul 27 17:09:20 1997 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in: Only check for <ncurses/termcap.h> if we're using
+ -lncurses.
+ From: Bo Johansson <bo.johansson@mbox2.swipnet.se>.
+
+ * info/dir.c (new_dir_file_p): Avoid automatic struct
+ initialization, SunOS 4 etc. cc can't handle it.
+ From: "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu>.
+
+Sat Jul 26 15:08:13 1997 Karl Berry <karl@cs.umb.edu>
+
+ * Version 3.9i.
+
+ * configure.in: Check for termcap.h and ncurses/termcap.h.
+ From: bo.johansson@mbox2.swipnet.se.
+
+Fri Jul 25 14:09:05 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi: Document new second optional arg to email.
+
+ * info/infodoc.c: Document CTRL-x 0 as the way to get out of help.
+
+ * info/dir.c (maybe_build_dir_node): Really check for the same dir
+ file twice, not just by name.
+ (new_dir_file_p): New function.
+
+ * util/install-info.c: Tell them about --help in doc strings.
+
+Thu Jul 24 14:25:44 1997 Karl Berry <karl@cs.umb.edu>
+
+ * util/texindex.c (memory_error): Move to avoid incorrect implicit
+ decl.
+
+ * makeinfo/makeinfo.c,
+ * makeinfo/multi.c,
+ * util/install-info.c,
+ * util/texindex.c,
+ * info/tilde.c,
+ * info/man.c,
+ * info/gc.c,
+ * info/session.c (info_replace_key_to_typeahead): Remove unused
+ function,
+ * info/nodemenu.c,
+ * info/man.c,
+ * info/m-x.c,
+ * info/footnotes.c
+ * info/info.c
+ * info/indices.c,
+ * info/filesys.c: Parenthesize to avoid -Wall warnings
+ remove unused variables,
+ make return types explicit,
+ printf type corrections.
+
+ * lib/system.h: <ctype.h>: Include this.
+ * util/texindex.c,
+ * makeinfo/makeinfo.c,
+ * info/echo-area.c,
+ * info/display.c: ctype.h: Included in system.h now.
+
+ * info/echo-area.c: Parenthesize to avoid -Wall warnings.
+ (ctype.h): #include for isprint.
+ (echo_area_stack_depth): Remove unused function.
+ * info/display.c: Parenthesize to avoid -Wall warnings.
+ (ctype.h): #include for isprint.
+ * info/dir.c: Parenthesize to avoid -Wall warnings.
+ (build_dir_node_internal): Remove declaration of nonexistent function.
+ From: Erick Branderhorst <Erick.Branderhorst@asml.nl>.
+
+ * configure.in (TEXMF): Call texconfig to discover the default value,
+ for the sake of the warning in doc/Makefile.
+ From: Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
+
+ * doc/Makefile.am (TEXMF): New variable.
+ (install-data-local): Use it in warning.
+ From: Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
+
+ * info/session.c (initialize_info_session): Only call
+ terminal_prep_terminal if clear_screen is true. Otherwise, failed
+ --index-searches prep the terminal but do not unprep it.
+ From: William Edward Webber <wew@yallara.cs.rmit.EDU.AU>.
+
+ * info/nodemenu.c: Doc fix.
+
+Mon Jul 21 17:11:09 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi: Comment out @smallbook and @set smallbook so
+ people at other sites can print it the way they want.
+ From: Thomas Walter <walter@pctc.chemie.uni-erlangen.de>
+
+Sun Jul 20 07:52:25 1997 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in: 3.9h.
+
+ * doc/Makefile.am (install-info-am, distclean-aminfo): New targets
+ to avoid assuming info files are in srcdir.
+
+ * lib/system.h (xstrdup): Returns char *, not void *.
+
+ * doc/Makefile.am (.texi.info),
+ * doc/Makefile.am (texinfo): Don't run in $(srcdir).
+
+ * util/install-info.c (main): Remove unnecessary decl of strrchr.
+
+ * info/tilde.c: Include info.h (for config.h) before alloca stuff.
+
+ * makeinfo/makeinfo.c (validate_file): Rename `valid' to `valid_p'
+ to avoid conflict with SunOS 4 header files.
+ From: "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu>.
+
+ * info/session.c (initialize_info_session): Call
+ terminal_prep_terminal here (before calling terminal_clear_screen).
+ (info_session): Instead of here.
+ From: William Edward Webber <wew@yallara.cs.rmit.EDU.AU>.
+
+ * Makefile.am (EXTRA_DIST): Add README-alpha.
+
+Sat Jul 19 13:50:27 1997 Karl Berry <karl@cs.umb.edu>
+
+ * info/terminal.c: Use `keypad transmit' sequence if it's defined:
+ (term_keypad_on, term_keypad_off): New statics.
+ (terminal_begin_using_terminal): If term_keypad_on, send it.
+ (terminal_end_using_terminal): If term_keypad_off, send it.
+ (terminal_initialize_terminal): Look up ks and ke termcap strings.
+ From: William Edward Webber <wew@yallara.cs.rmit.EDU.AU>.
+
+ * info/infomap.c (initialize_info_keymaps): Initialize hardwired
+ cases for arrow keys a la readline. Found by John Eaton,
+ jwe@bevo.che.wisc.edu.
+
+ * makeinfo/makeinfo.c (output_pending_notes): Remove footnote
+ macro expansion code I #if 0'd out some time ago. And doc fixes.
+
+ * Applied this patch:
+
+Sat Jul 19 16:29:01 1997 Karl Eichwalder <ke@suse.de>
+
+ * info/info.c (main): setlocale, bindtextdomain, and textdomain.
+
+Fri Jul 18 10:02:18 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/Makefile.am (install-data-local),
+ * emacs/Makefile.am (install-data-local): Give subdir in warning.
+
+ * configure.in: Version 3.9f.
+
+ * doc/texinfo.texi: Correct \^ to @^.
+ From Andreas S.
+
+ * Merged these changes:
+
+1997-07-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * info/display.c (display_cursor_at_point): Flush ouput.
+
+1997-07-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * info/session.c (remember_window_and_node): Don't crash when the
+ current window has no current node.
+
+1997-07-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * util/texindex.c (usage): Translate the doc strings.
+ * makeinfo/makeinfo.c (cm_today): Translate the month names.
+ * info/variables.c (describe_variable): Translate the doc strings.
+ * info/nodes.h: Don't translate the strings defining the info format.
+
+1997-07-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * makeinfo/makeinfo.c (get_item_function): Remove superfluous call
+ to canon_white after get_rest_of_line.
+ (cm_end): Likewise.
+ (handle_variable): Likewise.
+ (cm_item): Likewise.
+ (cm_unmacro): Likewise.
+
+1997-07-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * info/nodemenu.c (list_visited_nodes): Don't clear the internal
+ flag, this and other functions depend on it. Don't insist on
+ displaying the menu below the current window.
+
+1997-07-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * makeinfo/makeinfo.c (cm_uref): Fix memory leaks.
+ (cm_inforef): Likewise. Handle empty cross reference name.
+
+1997-07-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * info/echo-area.c (ea_possible_completions): Check that the
+ current window can actually be split.
+
+Thu Jul 17 17:19:34 1997 Karl Berry <karl@cs.umb.edu>
+
+
+ * emacs/Makefile.am (*clean-lisp): Define, as Automake didn't.
+ From: Kenneth Stailey <kstailey@disclosure.com>.
+
+ * doc/Makefile.am: Do not distribute info.1.
+ * makeinfo/macros: Do not distribute this directory, it's merged
+ into the main documentation.
+ * doc/makeinfo.texi: Don't distribute this either, it's in the
+ main manual.
+
+ * util/install-info.c: Use \n\ for multiline string constant.
+ From: Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
+
+Wed Jul 16 15:29:50 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi: @set must be after @setfilename, I guess.
+ Noted by Erick Branderhorst.
+
+ * Applied this change:
+
+Tue Nov 12 22:20:22 1996 John Eaton <jwe@bevo.che.wisc.edu>
+
+ * makeinfo.c (INDEX_ALIST): Use two indices, read_index and
+ write_index, instead of just one.
+ (find_index_offset): If a match is found, return index to the
+ current INDEX_ALIST struct, not the index pointing to the list of
+ index entries.
+ (translate_index): Return read_index from the matching
+ INDEX_ALIST.
+ (undefindex): Delete the list of index elements pointed to by
+ read_index from the INDEX_ALIST that matches name.
+ (defindex): Initialize read_index and write_index.
+ (index_add_arg): Add entries to the list pointed to by write_index
+ from the INDEX_ALIST matching name.
+ (index_append): Delete unused function.
+ (cm_synindex): Don't merge indcies, just make the write_index for
+ redirectee the same as the write_index for redirector.
+
+Tue Jul 15 09:32:04 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi: Bump edition number for 2.24.
+
+ * util/Makefile.am (localedir): Define.
+
+ * info/window.h: Rename __window__ to window_struct.
+
+ * info/window.h,
+ * info/variables.h,
+ * info/search.h,
+ * info/man.h,
+ * info/info-utils.h,
+ * info/gc.h,
+ * info/footnotes.h,
+ * info/filesys.h,
+ * info/echo-area.h,
+ * info/display.h: Avoid leading _ in #define for #include protection.
+
+ * makeinfo/makeinfo.c: Version 1.68.
+ * info/info.c: Version 2.17.
+
+ * Most all files: Untabify.
+
+ * doc/Makefile.am (texinfo): Add explicit target.
+
+ * emacs/Makefile.am (noinst_LISP): Remove the obsolete
+ detexinfo.el (makeinfo --no-headers is better) and
+ texnfo-tex.el (now handled by TeX modes in general).
+
+Mon Jul 14 15:21:03 1997 Karl Berry <karl@cs.umb.edu>
+
+ * util/texi2dvi: Update RCS file from 3.9 distribution.
+
+ * util/Makefile.am (EXTRA_DIST): Add update-info, from
+ rhawes@dmapub.dma.org
+
+Sun Jul 13 17:05:03 1997 Karl Berry <karl@cs.umb.edu>
+
+ * info/signals.c: Use RETSIGTYPE instead of hardwiring void.
+ From: "Jeffery L. JT Vogt" <lfm@atw.earthreach.com>.
+
+ * info/session.c (info_history_node): Rewrite as
+ info_kill_node (current_node).
+ (kill_node, read_nodename_to_kill): New functions from info_kill_node.
+ (info_kill_node): Now this just calls them.
+
+Fri Jul 11 11:56:58 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi: Fix `Conditionals' xref.
+
+Thu Jul 10 17:58:12 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/info.texi: Don't say SPC clears ? screen.
+
+Sun Jul 6 16:26:41 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/info-stnd.texi: Document --index-search.
+
+ * info/tilde.c,
+ * info/session.c: Remove redundant getenv decl.
+
+ * Installed following change:
+Tue Nov 12 14:44:00 1996 John W. Eaton <jwe@bevo.che.wisc.edu>
+
+ * info/info.c (main): Handle new option, --index-search STRING.
+ (index_search_p, index_search_string): New static variables, used
+ to handle --index-search option.
+
+ * info/session.c (initialize_info_session): New arg,
+ clear_screen. Change all callers.
+
+ * info/indices.h (do_info_index_search, index_intry_exists):
+ Provide declarations here.
+
+ * info/indices.c (do_info_index_search): New function, extracted
+ from info_index_search.
+ (info_index_search): Simply call do_info_index_search() with
+ search_string set to NULL.
+ (index_entry_exists): New function.
+
+Sat Jul 5 17:17:14 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi: Document @kbdinputstyle.
+
+ * makeinfo/makeinfo.c (kbdinputstyle): New command.
+ (cm_no_op_line_arg): New function.
+
+ * info/termdep.h (HAVE_TERMIOS_H) [NeXT]: #undef.
+ From: Gregor Hoffleit <flight@mathi.uni-heidelberg.de> et al.
+
+Fri Jul 4 14:18:08 1997 Karl Berry <karl@cs.umb.edu>
+
+ * info/Makefile.am (EXTRA_DIST),
+ * util/Makefile.am (EXTRA_DIST),
+ * makeinfo/Makefile.am (EXTRA_DIST),
+ * lib/Makefile.am (EXTRA_DIST): Include README.
+
+ * doc/texinfo.texi (makeinfo options): Document --paragraph-indent
+ values more completely.
+ * makeinfo/makeinfo.c (set_paragraph_indent): Allow translated
+ asis or none, improve doc.
+ From ke.
+
+ * doc/Makefile.am (dist-info): New empty target so that we do not
+ distribute info files.
+ From Erick Branderhorst.
+
+ * doc/texinfo.texi (Invoking install-info): Document that the dir
+ file is created now if need be.
+ * Makefile.am (EXTRA_DIST): No longer need dir.
+ * util/install-info.c (ensure_dirfile_exists): New routine.
+ (main): Call it before trying to open dirfile for reading.
+
+ * doc/texinfo.texi: Document install-info --delete a little better.
+ * util/install-info.c: Set something_deleted when we delete a
+ normal line.
+ Bug from: Denis Kosygin <dkosygin@math.Princeton.EDU>.
+
+ * util/install-info.c: If no info dir entry, give warning and exit 0.
+
+Wed Jul 2 06:35:17 1997 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in (ALL_LINGUAS): Add fr.
+
+ * makeinfo/makeinfo.h (insertion_type, insertion_type_names): Add
+ ifnot... entries. Alphabetize.
+
+Tue Jul 1 17:21:54 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (sort_index): Set defining_line and
+ input_filename so errors in index entries are reported at
+ the correct location. From rms.
+
+ * makeinfo/makeinfo.c (cm_ifnothtml, etc.): Routines for new
+ commands.
+
+Sun Jun 29 09:44:01 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi: Document new @ifnot... commands, etc.
+ * doc/texinfo.texi: Document @image, etc.
+
+Thu Jun 26 17:57:37 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (cm_image): New routine for new command @image.
+ (cm_end): Move to better place, doesn't need its own page.
+ Doc fixes.
+
+Mon Jun 23 16:54:03 1997 Karl Berry <karl@cs.umb.edu>
+
+ * Makefile.am (SUBDIRS): Do intl first.
+
+ * doc/Makefile.am (EXTRA_DIST): Include epsf.tex.
+ (install-data-local): Suggest possible installation directory.
+ * epsf.tex: New file.
+
+Wed Jun 18 17:51:52 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi: Document texinfo.cnf.
+
+Sun Jun 15 14:37:58 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi (Command List): Various commands missing or
+ erroneous.
+ From: Karl_Heinz_Marbaise@p69.ks.fido.de.
+
+ * makeinfo/makeinfo.c: Oops, failed to break out of loop.
+
+ * util/texindex.c: Use <getopt.h> not "getopt.h".
+
+ * All source files: Merge gettext changes from Karl E.;
+ his ChangeLog entries below.
+
+Sat Jun 14 17:04:28 1997 Karl Berry <karl@cs.umb.edu>
+
+ * Makefile.am,
+ * makeinfo/Makefile.am: Doc fix.
+ * util/Makefile.am (EXTRA_DIST): Add texi2dvi. From Karl E.
+
+Fri Jun 13 17:39:34 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c [WIN32]: Handle read bogosity and c:\
+ absolute paths.
+ From: Eric Hanchrow <erich@MICROSOFT.com>.
+
+ * configure.in (AC_CHECK_HEADERS): Check for pwd.h.
+ * info/tilde.c (pwd.h): Move #include to system.h.
+
+ * makeinfo/makeinfo.c (main): New option -P to prepend to search path.
+ From: Kenneth Stailey <kstailey@cvs.openbsd.org>.
+
+ * doc/texinfo.texi (Invoking makeinfo),
+ * doc/makeinfo.texi: Mention -P.
+
+Thu Jun 12 16:25:40 1997 Karl Berry <karl@cs.umb.edu>
+
+ * info/signals.h (SIGCHLD): #define as SIGCLD if undefined, for sysV68.
+ From: "Philippe De Muyter" <phdm%labauto1@ulb.ac.be>.
+
+ * util/install-info.c (O_RDONLY): Remove this stuff, it's in system.h.
+ (main): Handle existing entry in dir file having .info extension.
+ From: "Bradley C. Kuszmaul" <bradley@GRANITE.SYSTEMSX.CS.YALE.EDU>.
+
+ * makeinfo/makeinfo.c (get_char_len): Don't count 8-bit characters
+ as two chars in the output.
+ From: Sung-Hyun Nam <namsh@amuna.rms.lgic.co.kr>.
+
+Wed Jun 11 16:36:51 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi (Other Info Directories): Document new trailing
+ : in INFOPATH feature.
+
+ * info/info.c (main): Have trailing : in INFOPATH expand to the
+ default path.
+
+Fri Jun 6 13:22:02 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi (uref): New node for new command.
+
+Thu Jun 5 18:13:48 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (cm_uref): New function to accept optional
+ second argument. Call it in command table.
+
+Sat Jun 14 10:54:16 1997 Karl Eichwalder <ke@suse.de>
+
+ * mkinstalldirs: Update from automake-1.1p.
+
+ * configure.in: Touch po/ChangeLog (gettext needs it).
+
+Thu Jun 12 08:37:52 1997 Karl Eichwalder <ke@ke.Central.DE>
+
+ * util/texindex.c: Include system.h, remove config.h.
+
+ * po/POTFILES.in: Fill it.
+
+ * makeinfo/multi.c: Include system.h.
+
+ * info/Makefile.am:
+ * makeinfo/Makefile.am:
+ * util/Makefile.am:
+ (localedir): Set.
+ (INCLUDES): Add intl/ and LOCALEDIR.
+ (LDADD): Add @INTLLIBS@.
+
+ * makeinfo/makeinfo.c (main):
+ * util/texindex.c (main):
+ * util/install-info.c (main):
+ setlocale, bindtextdomain, and textdomain.
+
+ * lib/system.h: Include locale.h and libintl.h.
+
+ * acconfig.h: Include libintl.h.
+ (_, N_): Define.
+ Add ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_LC_MESSAGES,
+ HAVE_STPCPY for libintl.
+ Add @TOP@ and @BOTTOM@.
+
+ * configure.in (AM_GNU_GETTEXT): Add.
+ (AC_OUTPUT): Process Makefiles in intl/ and po/.
+ (ALL_LINGUAS): Available languages.
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Now use 1.1p.
+
+Wed Jun 11 17:05:37 1997 Karl Eichwalder <ke@ke.Central.DE>
+
+ * Makefile.am (SUBDIRS): Add intl/ and po/ for NLS.
+
+ * run `gettextize -c' to get the i18n skeleton.
+
+Wed Jun 4 17:51:08 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (uref): New command, another alias for @code
+ for now.
+
+Wed Jun 4 02:02:33 1997 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * doc/texinfo.texi (email): { and } need @ escapes.
+
+Sun Jun 1 16:34:12 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi (itemx): @itemx should always follow @item.
+
+ * makeinfo/makeinfo.c (cm_item): Insert blank line if two
+ consecutive @item's.
+ From: Karl Eichwalder <ke@ke.central.de>.
+ Also various doc fixes.
+
+Tue May 27 17:20:44 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi (various): Document @deftypemethod.
+ (email): @ should have been @@ in the example.
+ From: Mate Wierdl <mw@wierdlmpc.msci.memphis.edu>
+
+Mon May 26 16:56:26 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/multi.c (setup_multitable_parameters): Avoid use of %n
+ for sake of m68k-hp-bsd.
+ From: Derek L Davies <ddavies@world.std.com>.
+
+ * info/terminal.c (terminal_begin_using_terminal,
+ terminal_end_using_terminal): Call fflush and sleep to handle
+ cmdtool/shelltool with scrollbars. Also ignore
+ SIGWINCH so we do not prematurely exit. Move call.
+ (terminal_prep_terminal): Disable LNEXT (CTRL-V).
+ From: strube@physik3.gwdg.de (Hans Werner Strube).
+
+ * configure.in (AC_TYPE_SIGNAL): Check this.
+
+Sun May 25 16:49:58 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (discard_insertions): Take arg saying
+ whether ifinfo/ifset/etc. are ok.
+ (convert_from_loaded_file): At `finished', call discard_insertions.
+ (handle_variable_internal): Complain if we reach eof before the
+ @end for a false condition.
+ From: HERBERT@boevm4.vnet.ibm.com.
+
+ * info/Makefile.am (ginfo_SOURCES): Add doc.h.
+ * lib/Makefile.am (libtxi_a_SOURCES): Add system.h.
+
+Sat May 24 18:08:27 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c: Check that we have macro_expansion_filename
+ before using strcmp.
+
+Thu May 22 17:59:46 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/makeinfo.texi: Minimally document --force.
+
+ * makeinfo/makeinfo.c (--force): New option.
+ (-E): Allow stdout via `-'.
+ (convert_from_loaded_file): Unlink output files if errors and !force.
+
+Tue May 20 17:48:42 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c: Change all strdup calls to xstrdup.
+ (xmalloc, xrealloc, memory_error): Remove these functions, they're
+ in lib.
+ (set_paragraph_indent, cm_paragraph_indent): Move to misc page.
+ (cm_footnote): Expand macros in the arg for the macro expansion output.
+
+Fri May 16 17:26:59 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (cm_macro): Allocate an empty body if the
+ macro was empty.
+ (cm_unmacro): Allocate one more byte for the null.
+ From: Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>.
+
+Sun May 11 17:51:21 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * makeinfo/makeinfo.c (cm_printindex): Fix calculation of the
+ length of an index line.
+
+Sun May 11 14:47:42 1997 Tom Tromey <tromey@cygnus.com>
+
+ * makeinfo/makeinfo.c (main): Don't unconditionally run usage when
+ -e specified.
+
+Sun May 11 17:47:42 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (init_indices): Free the source for an @synindex.
+ (undefindex): Do not go further if the target was already freed.
+ (free_index): Do not free the node names, as init_tags already did.
+ (cm_synindex, index_add_arg): Improve error message.
+ (program_index, function_index, etc.): Remove these unused #defines.
+
+Tue May 6 17:53:37 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (init_internals): Do not free current_node,
+ it already is, at least when multiple input files are specified.
+ From: Karl Eichwalder <ke@ke.central.de>.
+
+Mon May 5 16:14:39 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi: Mention both alignment and non-alignment of
+ continuation description lines in menus (Arnold).
+
+Sun Apr 27 16:12:44 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (apply): Handle body being `\string'.
+ Also, avoid dereferencing a null pointer when a macro has no named
+ parameters.
+ From: Eli Zaretskii <eliz@is.elta.co.il>.
+
+ * makeinfo/makeinfo.c: Wording changes/fixes in warnings.
+
+ * info/session.c (info_get_input_char): Do not mix stdio with raw I/O.
+ From: Egil Kvaleberg <egilk@sn.no>.
+
+ From Tom Hageman <tom@basil.icce.rug.nl>. These changes make
+ arrow keys work:
+ * info/infomap.c: Add arrow key bindings.
+ (keymap_bind_keyseq): New support function.
+ (initialize_info_keymaps): Use it.
+ (term_ku,term_kd,term_kl,term_kr): Remove explicit declarations;
+ use #include "terminal.h" instead.
+ * info/session.c (initialize_info_session): Unbuffer stdin.
+ (info_get_another_input_char): Fix bug in `ready' logic.
+ * info/terminal.h,
+ * info/terminal.c (term_kP, term_kN): New variables to hold
+ PageUp, PageDown key sequences.
+ (terminal_initialize_terminal): Set them.
+
+ * util/texindex.c (main),
+ * util/install-info.c (main),
+ * makeinfo/makeinfo.c (print_version_info),
+ * info/info.c (main): Use PACKAGE and VERSION from Automake for
+ printing version number.
+
+Sat Apr 26 19:19:46 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (get_until_in_line): Do not expand if
+ executing_string.
+ Also, free temporary strings.
+ Also, untabify entire file.
+
+ * doc/texinfo.texi: Many corrections from Arnold.
+
+Thu Apr 24 16:31:09 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/multi.c (draw_horizontal_separator): Account for indent
+ here also. From Ulrich.
+
+Wed Apr 23 15:15:34 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (cm_today): Use time_t instead of long;
+ everyone else does.
+ (LOCALTIME_CAST): Remove kludge, we'll always use time_t now.
+
+ * info/Makefile.am (ginfo_SOURCES): Remove general.h, that got
+ merged into system.h.
+
+Mon Apr 21 17:13:25 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/multi.c (output_multitable_row): Account for
+ column_indent, both the global one and for each column.
+ (setup_multitable_parameters): Account for column_indent in the table
+ width in the columnfrac case, but don't bother with the template
+ case for now.
+
+Sun Apr 20 16:32:00 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (output_stream): Remove redundant
+ definition; it's in makeinfo.h,
+ and a vaxstation-ultrix4.3 fails to link because of the two defns.
+ From: Anders Olofsson <anders@kid025.ericsson.se>.
+
+ * makeinfo/makeinfo.c (expansion): Inhibit appending to the macro
+ expansion stream.
+ (get_until_in_line): Possibly expand the text.
+ Change caller in get_node_token to do the expansion,
+ all other calls to remain the same.
+
+ * makeinfo/makeinfo.c (cm_node): No need to call strlen to check
+ for the empty string.
+
+ * doc/texinfo.texi: Restore missing @c for initial comment.
+
+Fri Apr 18 17:41:36 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi: Mention that .info is unnecessary in the info
+ file name argument of an xref.
+
+ * doc/texinfo.texi: Mention texi2dvi -t instead of embedding
+ @smallbook or @afourpaper in the document source.
+
+Sun Apr 13 15:19:08 1997 Karl Berry <karl@cs.umb.edu>
+
+ * lib/system.h (_GNU_SOURCE): #define.
+
+Mon Apr 7 16:30:11 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/info.texi,
+ * doc/info-stnd.texi,
+ * doc/texinfo.texi: Do not make (dir) the previous ptr from the top node,
+ and tell people not to do that in the manual.
+ From: rmedina@kanojo.ivic.ve (Rodrigo Medina),
+ confirmed by rms.
+
+Fri Apr 4 16:30:33 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c: Move error page to top to avoid
+ prototypes, and do add prototypes for add_word_args and execute_string,
+ so we can use <stdarg.h>.
+
+ * info/makedoc.c,
+ * info/nodemenu.c: Use %ld instead of %d for file offsets.
+ * makeinfo/makeinfo.c (delete_macro): Decrement macro_list_len.
+ (get_macro_args): Decrement line number if see \n.
+ * utils/texindex.c (indexify): Use fputs instead of fprintf
+ for constant string.
+ From: Eli Zaretskii <eliz@is.elta.co.il>.
+
+Thu Apr 3 17:40:52 1997 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in (AC_CHECK_HEADERS): No need to check for vararg.h
+ here, AC_FUNC_VPRINTF does it.
+ (AC_CHECK_FUNCS): Likewise for vsprintf and vfprintf.
+ * makeinfo/makeinfo.c (add_word_args, execute_string): Rewrite
+ like the error functions.
+
+Wed Apr 2 17:46:28 1997 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in: Add AC_FUNC_VPRINTF.
+ * makeinfo/makeinfo.c (error, line_error, warning): Rewrite a la
+ error.c from the *utils to use <stdarg.h> if available.
+
+Tue Apr 1 11:48:40 1997 Karl Berry <karl@cs.umb.edu>
+
+ * doc/texinfo.texi: Tabs are a bad idea.
+
+ * doc/userdoc.texi,
+ * doc/info.texi: Untabify.
+
+Sun Mar 30 17:36:47 1997 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (end_of_sentence_p): New function.
+ (add_char): Call it, instead of simply sentence_ender.
+ (post_sentence): New macro.
+ Also, remove some #include's now in system.h.
+ * lib/system.h [VMS]: #include <perror.h>, from makeinfo.
+
+Thu Mar 27 17:41:03 1997 Karl Berry <karl@cs.umb.edu>
+
+ * info/search.c (skip_node_characters): Do not arbitrarily
+ strip trailing period from end of node name; this is valid.
+
+Mon Mar 24 16:44:42 1997 Karl Berry <karl@cs.umb.edu>
+
+ * configure.in (AC_OUTPUT): Don't need to create stamp-h here,
+ tromey says AM_CONFIG_HEADER will do it.
+
+ * info/Makefile.am, util/Makefile.am, makeinfo/Makefile.am (INCLUDES):
+ Don't need -I.. (for config.h) or -I$(srcdir), says tromey.
+ Automake includes those already.
+
+Fri Mar 14 15:05:17 1997 Karl Berry <karl@cs.umb.edu>
+
+ * info/Makefile.am: Build as ginfo, install as info,
+ to avoid conflict with the standard info target.
+
+ * lib/system.h: New file.
+ * makeinfo/makeinfo.c (strerror): Remove declaration,
+ include system.h, remove other redundant #if stuff.
+ * info/general.h: Include system.h instead of doing common stuff.
+ * util/install-info.c (my_strerror): Remove this, use strerror,
+ include system.h.
+
+ * info/terminal.c (terminal_prep_terminal): Only use OCRNL and
+ ONLCR if they are defined. Reported by many people.
+
+ * Installed:
+
+ Sun Dec 1 19:23:54 1996 Karl Eichwalder <ke@ke.Central.DE>
+
+ * configure.in (TERMLIBS): Add ncurses.
+
+Thu Mar 13 13:59:45 1997 Karl Berry <karl@cs.umb.edu>
+
+ * lib/Makefile.am (libtxi_a_SOURCES): Add xstrdup.c.
+ * info/*.c: Use xstrdup instead of strdup everywhere.
+
+ * info/tilde.c: Do not include clib.h, move stdlib.h include to
+ * info/general.h: here.
+
+ * configure.in (AC_CONFIG_HEADER): Use this,
+ to avoid hugely long compile line with all the -D's.
+ * info/general.h: Include <config.h>.
+
+ * emacs/Makefile.am (install, install-data): Do @echo
+ to tell the user to compile/install the elisp manually.
+
+ * configure.in (AC_REPLACE_FUNCS): Move strerror check to here.
+ (AC_CHECK_FUNCS): From here.
+
+ * lib/strerror.c: New file, from enscript (et al.) distribution.
+
+Tue Mar 11 16:36:25 1997 Karl Berry <karl@cs.umb.edu>
+
+ * info/Makefile.am (info_SOURCES): Add doc.c, dribble.c, infodoc.c.
+ (LDADD): Add @TERMLIBS@.
+
+ * info/info.h: HANDLE_MAN_PAGES, NAMED_FUNCTIONS: Define these.
+
+ * info/filesys.h: Spurious ! when DEFAULT_INFOPATH is not defined.
+
+ * configure.in (AC_OUTPUT): Do lib first and doc last.
+
+ * info/echo-area.c,
+ * info/echo-area.h,
+ * info/info.h: Rename echo_area to echo-area.
+
+Mon Mar 10 17:59:05 1997 Karl Berry <karl@cs.umb.edu>
+
+ * */Makefile.am: Write Makefile.am files for Automake.
+ * doc: New subdirectory, move all manuals and texinfo.tex there.
+ * AUTHORS, THANKS, config.guess, config.sub, mkinstalldirs: New files,
+ required by Automake.
+ * lib/xmalloc.c: Move from info/.
+
+Fri Oct 4 07:49:49 1996 Karl Berry <karl@cs.umb.edu>
+
+ * Version 3.9.
+
+ * Makefile.in (install): Say to install texinfo.tex manually.
+
+ * util/texi2dvi,
+ * util/texindex.c,
+ * makeinfo/makeinfo.c,
+ * info/info.c: Include only the current year in the copyright message.
+
+ * util/texi2dvi: Exit successfully.
+ From: Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.
+
+Thu Oct 3 12:58:32 1996 Karl Berry <karl@cs.umb.edu>
+
+ * Rename install.sh to the preferred install-sh.
+
+ * Makefile.in (VERSION),
+ * util/texi2dvi,
+ * util/texindex.c,
+ * util/install-info.c,
+ * makeinfo/makeinfo.c (minor_version, print_version_info),
+ * info/info.c: Update version number.
+
+ * util/texi2dvi: Only show diff if verbose.
+
+ * util/install-info.c (main): Check for a missing dir file as well
+ as a missing info files.
+ (main): At start of a node, completely initialize the newly-malloced
+ node structure.
+
+ * texinfo.texi: Fix incorrect uses of @key,
+ insert missing newline in Installing Dir Entries' @menu item,
+ document install-info invocation.
+
+ * Makefile.in (DISTFILES): Do not put .gdbinit's in distribution.
+ (dist): Use || instead of && (and invert sense) so make doesn't think
+ the command failed.
+ (dist): Exclude more junk.
+
+ * makeinfo/makeinfo.c (cm_xref): Back out patch from Tom T., since
+ we generate a good-enough error message that is suppressible
+ without it.
+
+ * util/gen-dir-node: The recommended name for the top-level info
+ file is dir, not dir.info.
+
+ * util/install-info.c (main): At `Mark the end of the Top node',
+ make sure the node name is non-NULL before comparing it. From
+ lvirden@cas.org.
+
+ * configure.in (AC_REPLACE_FUNCS): Use this for memcpy, memmove,
+ and strdup.
+ (AC_CHECK_FUNCS): Instead of this.
+ Because both bcopy and memmove are missing on the 3b2, as reported by
+ Gaylen Miller <gaylen@proaxis.com>, hence we must provide our own.
+ * libtxi/Makefile.in (LIBOBJS): New variable.
+ (OBJS): Include it.
+ * libtxi/memcpy.c, libtxi/memmove.c, libtxi/strdup.c: New files,
+ taken from fileutils 3.13.
+ * makeinfo/makeinfo.c,
+ * info/clib.c (strdup): Move to libtxi.
+
+Wed Oct 2 18:23:30 1996 Karl Berry <karl@cs.umb.edu>
+
+ * info/info-utils.h (memcpy) [!HAVE_MEMCPY],
+ * info/termdep.h (memcpy) [!HAVE_MEMCPY],
+ * makeinfo/makeinfo.c (memmove) [!HAVE_MEMMOVE]: Remove this
+ #ifdef, as we now include it in libtxi if missing.
+
+Tue Oct 1 17:41:52 1996 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/Makefile.in (install),
+ * info/Makefile.in (install),
+ * Makefile.in (install): Use new option name --info-dir instead of
+ --infodir.
+
+ * makeinfo/multi.c (out_char): New fn. Replace all calls to
+ putc/fprintf with calls to this.
+
+ * util/install-info.c: Rename --infodir to info-dir.
+
+Mon Sep 30 10:07:21 1996 Karl Berry <karl@cs.umb.edu>
+
+ * Version 3.8.
+
+ * texinfo.tex: Untabify.
+
+ * texinfo.tex (\ptexl, \ptexL): Do not save, we have our own
+ commands now.
+ (\onepageout): Reformat for readability, and call \indexdummies
+ to avoid expansion of Texinfo commands (e.g., accents) in \write's.
+ (\,, \dotaccent, \ringaccent, \tieaccent, \ubaraccent, udotaccent,
+ \questiondown, \exclamdown, \dotless): New macros.
+ (\l): Let plain TeX definition remain, instead of switching
+ to ``lisp'' font.
+ (\multitable): Ensure space between the columns,
+ insert struts to make interline spacing constant,
+ use real strut instead of a box containing `Xy'.
+ (\indexdummies): Do not define \rm, \char, but
+ do define \@, \{, \}, \dotless, and \,. And \t should generate
+ \t, not \r.
+ (\indexnofonts): Define \, and \dotless as \indexdummyfont,
+ and let \@ be @.
+ (\doind): Reformat for readability, and use temp control sequence
+ names that actually make sense.
+ (\doublecolumnout, \pagesofar, \enddoublecolumns): Restore
+ Knuth's original code to avoid spurious overfull vbox messages.
+ (No boxes are actually overfull).
+ (\shortcontents): Do not allow hyphenations.
+ (\dochapentry, \tocentry): Make glue above and below flexible, to allow
+ better page breaks.
+ (\tex): Reset \, to its plain TeX meaning,
+ and do not reset \l.
+
+ * COPYING: Update for new FSF address (from gcc dist).
+
+ * libtxi/Makefile.in: Various simplifications.
+
+Sun Sep 29 12:58:44 1996 Karl Berry <karl@cs.umb.edu>
+
+ * util/texi2dvi: Use $progname instead of $0 for --version.
+
+ * util/install-info.c (xmalloc, xrealloc): Declare malloc and
+ realloc as returning void *,
+ to avoid ptr/int problems on Digital Unix.
+
+ * info/tilde.c (tilde_expand_word): Declare getenv as returning char *,
+ to avoid warning on Digital Unix.
+
+ * makeinfo/multi.c (multitable_active): Declare extern here to
+ avoid ld warning on rs6000.
+
+ * util/texindex.c (usage): Avoid ??' trigraph.
+
+ * util/install-info.c: Include <sys/fcntl.h> or <fnctl.h>,
+ according to HAVE_SYS_FCNTL_H,
+ and only include <sys/file.h> if HAVE_SYS_FILE_H.
+ (readlines): Oops, had NULL's and 0's reversed for ptr/int members.
+
+ * info/terminal.c (terminal_goto_xy): Remove spurious extra ;.
+
+ * util/install-info.c: Untabify. (input_sections): Initialize.
+ (find_lines): Initialize the terminating element of the array.
+ (print_help): Document --infodir.
+ (main): Compare the basename of infile sans .info to the dir entry,
+ not infile itself.
+ * util/Makefile.in (clean): Remove the install-info binary.
+
+ * info/Makefile.in (distclean): Remove *.info* files.
+
+ * Makefile.in (install),
+ * info/Makefile.in (install),
+ * makeinfo/Makefile.in (install): Use --infodir instead of --info-file.
+
+ * info/info.c,
+ * makeinfo/makeinfo.c: Avoid newlines in string constants for the
+ sake of SunOS cc.
+
+ * makeinfo/multi.c: Do not assume ANSI C.
+
+ * info/info.texi: Oops, need @end vtable for a @vtable.
+
+Sat Sep 28 16:31:28 1996 Karl Berry <karl@cs.umb.edu>
+
+ * Makefile.in (texinfo): Do not depend on sub-all, as then
+ makeinfo is always run. Instead, depend on texinfo.texi.
+
+ * makeinfo/Makefile.in (info, dvi): New targets.
+ makeinfo.info, makeinfo.dvi: Do not depend on macro.texi for now.
+
+ * info/Makefile.in (install): Must call install-info twice.
+
+ * info/info-stnd.texi,
+ * info/info.texi,
+ * makeinfo/makeinfo.texi: Include direntry.
+
+ * emacs/Makefile.in: Use && after cd, etc.
+
+ * texinfo.texi: Kludges so makeinfo -E will not create spurious
+ differences. Add new direntries.
+
+ * util/install-info.c,
+ * util/texindex.c,
+ * makeinfo/makeinfo.c,
+ * info/info.c: Standardize --version output.
+
+ * makeinfo/makeinfo.c (defun_internal): Don't insert index command
+ if expanding macros.
+ (cm_footnotestyle): Don't change the footnote style if it was set
+ on the command line.
+
+ * util/texi2dvi: Recompute original index files each time through loop.
+ Make indentation uniform.
+ Use same basename for the temp input files.
+ Standardize --version output.
+
+ * info/Makefile.in (install),
+ * makeinfo/Makefile.in (install): Insert $(POST_INSTALL).
+
+Fri Sep 27 13:27:30 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.texi (Format with texi2dvi): Rewrite now that the script
+ runs in a loop.
+
+ * info/Makefile.in (MAKEINFO): Simplify to ../makeinfo/makeinfo.
+
+Fri Sep 27 00:26:03 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * info/terminal.c [HAVE_TERMIOS_H] (terminal_prep_terminal,
+ terminal_unprep_terminal): Add code for termios.
+ [HAVE_TERMIOS_H] (original_termios, ttybuff): New variables.
+ * info/termdep.h: [HAVE_TERMIOS_H]: Add include of <termios.h>.
+ * configure.in: Add check for <termios.h>.
+
+Thu Sep 26 10:46:34 1996 Karl Berry <karl@cs.umb.edu>
+
+ * emacs/texnfo-upd.el,
+ * emacs/texinfo.el,
+ * emacs/texinfmt.el: Update from bob for new Texinfo commands, etc.
+
+ * emacs/info.el, emacs/informat.el, emacs/makeinfo.el,
+ emacs/texnfo-tex.el: Update from Emacs 19.34 dist.
+
+ * emacs/elisp-comp: Use TMPDIR if set.
+
+ * util/Makefile.in (libdir): Remove.
+
+ * makeinfo/Makefile.in (install),
+ * Makefile.in (install),
+ * info/Makefile.in (install): Run install-info.
+ (libdir): Remove.
+
+ * texinfo.texi: Various fixes as I make this go through TeX.
+
+ * util/install-info.c: Quote newlines in help message.
+
+ * util/texi2dvi (texi2dvi): Run TeX until the aux/index files
+ stabilize, instead of just twice. From: David Shaw
+ <daves@gsms01.alcatel.com.au>.
+
+Tue Sep 24 14:43:03 1996 Karl Berry <karl@cs.umb.edu>
+
+ * dir: Blank dir file for installation on new systems.
+
+Mon Sep 23 12:18:43 1996 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (args_from_string): Do not back up at a };
+ that leads to an infinite loop.
+
+Sat Sep 21 17:48:04 1996 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (cm_xref): Do not seg fault if outside of
+ any node. From: Tom Tromey <tromey@creche.cygnus.com>.
+ (cm_ctrl): Make obsolete.
+
+Tue Sep 17 13:30:08 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\inforef): Move to more appropriate place.
+ (\pounds): Remove spurious extra $.
+ (\email): Typeset argument in angle brackets.
+ (\macro): Use \doignore for robustness, instead of just letting TeX
+ parse the argument.
+ (\unmacro): Define.
+
+Sat Sep 14 16:17:35 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.texi: Document multitables, new ISBN number.
+
+Wed Sep 11 18:01:24 1996 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/multi.c (struct env): Remove unused output_position
+ field; this needs to be global.
+ (setup_multitable_parameters): Implement template-defined multitables.
+ (output_multitable_row): Remove trailing whitespace.
+
+ * makeinfo/makeinfo.c (_READ_BUFFER_GROWTH, struct _defines):
+ Remove leading underscore for POSIX/ANSI pedants.
+ (init_conversion): Initialize output_position here.
+ (init_paragraph): Instead of here, where it loses with the
+ multitable calls, eventually resulting in negative counts to the
+ write call when the output file is split.
+
+ * texinfo.texi: First cut at macro documentation.
+ Change accent doc to use tables.
+ Remove whitespace experiments, they are now the default.
+
+Mon Sep 9 14:16:24 1996 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c: Use putc instead of fprintf where possible.
+ (cm_accent): Put _ from @ubaraccent after argument.
+
+ * util/texindex.c (strerror) [!strerror]: Conditionalize
+ declaration.
+
+Sat Sep 7 14:13:24 1996 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (commandTable): Obsolete @setchapterstyle.
+
+Thu Sep 5 15:45:11 1996 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (convert_from_loaded_file): Oops, fix
+ wording of initial output comment.
+
+ * makeinfo/makeinfo.c (cm_angle_brackets): Rename from cm_key.
+ (commandTable): @email should produce angle brackets.
+ @key: Change name.
+
+Tue Sep 3 14:52:17 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\hsize): Decrease.
+ (\hoffset): Increase.
+ (\setleading): Decrease dramatically.
+ This change affects 8.5x11 format only.
+
+ * texinfo.texi: Document accent commands.
+
+Mon Sep 2 11:10:49 1996 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (commandTable): Deprecate @ichapter and
+ @titlespec.
+ Move all the deprecated @i<section> commands to the end of the list.
+
+ * texinfo.texi: Document @pounds{} and @centerchap{}.
+
+ * texinfo.tex (\centerchfplain): Rewrite to use \chfplain, and to
+ actually center.
+ (\unnchfplain): Just call \chfplain.
+ (\chfplain): Rewrite to be generally callable.
+ (\centerparametersmaybe): Hook, a no-op except with @centerchap.
+
+Sun Sep 1 15:01:49 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.texi: Document @<whitespace>, rearrange spacing section.
+
+ * makeinfo.c (commandTable): Make @. @? @! insert themselves,
+ not be sentence-non-enders. They are sentence *enders*. Also,
+ make @\t and @\n insert a normal space character, not themselves.
+ Also, define @hyphenation.
+ (insert_space): New function.
+ (cm_ignore_sentence_ender): Remove this.
+ (flush_output): Check only for META-SPC, not META-<sentence-ender>.
+
+Fri Aug 30 18:55:30 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.texi: Document @- and @hyphenation{}.
+ Miscellanous fixes.
+
+ * makeinfo/makeinfo.c (commandTable): Define @- as cm_no_op, since
+ makeinfo doesn't do hyphenation.
+
+Thu Aug 29 13:05:38 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\key): Do not uppercase the argument; key names
+ can be mixed case, e.g., `Control'.
+
+ * makeinfo/makeinfo.c: @infotop, @infounnumbered,
+ @infounnumberedsec, @infounnumberedsubsec,
+ @infounnumberedsubsubsec, @infoappendix, @infoappendixsec,
+ @infoappendixsubsec, @infoappendixsubsubsec, @infochapter,
+ @infosection, @infosubsection, @infosubsubsection:
+ Remove these long-since obsolete commands.
+ @iappendix, @iappendixsection, @iappendixsec, @iappendixsubsec,
+ @iappendixsubsubsec, @ichapter, @isection, @isubsection,
+ @isubsubsection, @iunnumbered, @iunnumberedsec, @iunnumberedsubsec,
+ @iunnumberedsubsubsec:
+ Deprecate these.
+ @infoinclude:
+ Obsolete this.
+ @,: Have to take an argument, since have to do @,{c} not c@,; can't
+ feasibly implement the latter in TeX.
+
+ * makeinfo/makeinfo.c: Rename @d to @udotaccent, since this is
+ relatively infrequently used.
+
+Tue Aug 27 14:58:56 1996 Karl Berry <karl@cs.umb.edu>
+
+ * info/info.c (print_short_help),
+ * util/install-info.c (print_help),
+ * util/texi2dvi,
+ * makeinfo/makeinfo.c (usage) Include bug reporting address.
+
+Mon Aug 26 15:27:17 1996 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (commandTable): Remove @input, @medbreak,
+ @smallbreak, @overfullrule, @br.
+
+Sun Aug 25 17:25:48 1996 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (commandTable): Unify commands that perform
+ the same operation, such as cm_file, cm_samp, cm_email,
+ etc., which all do cm_code.
+
+ * texinfo.texi: Document @ifhtml ... @end ifhtml. Change
+ `PlainTeX' to `plain TeX'.
+
+Fri Aug 23 16:03:16 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\pounds): New Texinfo command @pounds{}.
+ (\parskip): New smaller value.
+ (\chapheadingskip, \secheadingskip, \subsecheadingskip): New smaller
+ values, both for 8.5x11 and @smallbook formats. From Bob.
+
+ * makeinfo/makeinfo.c (cm_special_char): @pounds{} prints a #.
+ (commandTable): Add new command @pounds.
+
+Tue Aug 20 13:47:20 1996 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (CommandTable): Restore "!", accidentally
+ removed previously.
+
+ * texinfo.tex (\key): Typeset a lozenge around the argument (from
+ gildea@intouchsys.com).
+ * makeinfo/makeinfo.c (cm_key): Surround arg with <...> to match
+ new lozenge style in TeX.
+
+Wed Aug 14 16:59:23 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.texi: Propagate change from rms.
+
+Tue Aug 13 11:33:27 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.texi: Propagate change from rms.
+
+ * texinfo.texi: Document other @headings options.
+
+Sun Aug 11 13:19:42 1996 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (cm_accent, cm_special_char, cm_dotless):
+ New functions.
+ (CommandTable): Add new commands for all of plain.tex's
+ accents and non-English characters.
+
+Fri Aug 9 14:12:07 1996 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (convert_from_loaded_file): Say we're making
+ ``text'' file if no_headers. Also, use `input_filename' instead
+ of just `name' for clarity.
+ (suffixes): Check for no suffix last, i.e., prefer `foo.texi' as an
+ input file to `foo'. (The latter is probably a binary.)
+
+Mon Aug 5 13:52:39 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\heading, \subheading, \subsubheading): Can no
+ longer call the nonexistent \*secheadingi series. Instead, call
+ \plain*secheading.
+ (\plainsubsecheading, \plainsubsubsecheading): New macros, by analogy
+ with \plainsecheading.
+ (\unnumberedsubseczzz, \unnumberedsubsubseczzz): Call them.
+
+Sun Aug 4 16:46:10 1996 Karl Berry <karl@cs.umb.edu>
+
+ * makeinfo/makeinfo.c (flush_output): Mask out eighth bit, that we
+ turned on in non-sentence enders.
+
+Sat Aug 3 14:03:10 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\HEADINGSdouble, \HEADINGSsingle,
+ HEADINGSdoubleafter, \HEADINGSsingleafter, \CHAPPAGoff,
+ \CHAPPAGon, \CHAPPAGodd): Set \contentsalignmacro, analogous to
+ \pagealignmacro.
+ (\startcontents): Call \contentsalignmacro instead of \pagealignmacro.
+
+Mon Jul 29 14:44:33 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\indexfonts): Make leading be 12pt. Otherwise, it's
+ too crammed.
+ (\smalllispx): Remove \setleading{10pt}. That was too small.
+ (\doprintindex): Do not call \tex ... \Etex. Index files are Texinfo
+ source, not TeX source, except for using \ instead of @ as the
+ escape character (for now).
+
+Sun Jul 28 13:37:05 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (paragraphindent): Move to more reasonable place in
+ the source file.
+ (chapfonts, secfonts, subsecfonts, indexfonts): Call \setleading.
+ (\chfplain, \secheading, \plainsecheading, \subsecheading,
+ \subsubheading): Rewrite to properly \hangindent the title.
+ (\sectionheading): New generic macro to print section titles.
+
+ * texinfo.texi: Update the `Obtaining TeX' node.
+
+Fri Jul 26 14:11:48 1996 Karl Berry <karl@cs.umb.edu>
+
+ * util/texi2dvi: Do macro expansion with makeinfo before running TeX.
+ Various expansion safety measures added for test; avoid use of -o.
+
+ * makeinfo/makeinfo.c (usage): More usage message tweaks.
+
+Fri Jul 26 11:55:37 1996 Karl Berry <karl@laurie>
+
+ * util/texi2dvi: Format usage message to conform to the other *utils.
+
+Thu Jul 25 17:05:47 1996 Karl Berry <karl@cs.umb.edu>
+
+ * emacs/Makefile.in: Do not compile the Elisp by default. We
+ don't install it, so it confuses people to compile it.
+
+Sun Jul 21 07:20:09 1996 Karl Berry <karl@cs.umb.edu>
+
+ * util/Makefile.in (install-info): Dependency should be
+ install-info.o, not install-info. Also, update copyright years.
+
+ * makeinfo/makeinfo.c (cm_printindex): Don't call execute_string
+ to print index entries, we've already done the expansion now.
+
+ * makeinfo/makeinfo.h: Add copyright. Finish merge of rms changes.
+ * makeinfo/makeinfo.c: Finish merge, add my expansion changes again.
+ * makeinfo/multi.c: Add copyright message.
+
+Fri Jul 19 10:35:22 1996 Karl Berry <karl@cs.umb.edu>
+
+ * info/info.c: Update copyright date.
+
+ * info/info.texi,
+ * util/install-info.c,
+ * emacs/Makefile.in,
+ * emacs/texnfo-tex.el,
+ * emacs/Makefile.in: Change FSF address.
+
+ * Merged changes from bfox -- below, plus multitable changes, plus
+ lots more.
+
+ Sun Apr 14 08:49:50 1996 Brian J. Fox <bfox@nirvana.samsara.com>
+
+ * makeinfo/makeinfo.c (remember_node_reference): Numerous commands
+ call remember_node_reference. If a node has not yet been defined,
+ use the empty string as the current node for those cases.
+
+ Mon Feb 12 17:35:38 1996 Brian J. Fox <bfox@nirvana.samsara.com>
+
+ * makeinfo/makeinfo.c (push_node_filename): Clean up calls to
+ xmalloc and xrealloc. Only have to call xrealloc.
+
+ Fri Jan 26 08:00:38 1996 Brian J. Fox <bfox@nirvana.samsara.com>
+
+ * info/session.c (info_input_buffer_space_available): Fix typo
+ which forced the limitation of the sizeof (int) instead of sizeof
+ (buffer).
+
+ * Makefile.in (PACKVER): now at 3.8. Add TERMIOS support to
+ Info. Minor bugs fixed in Makeinfo.
+
+Sat Jul 13 11:58:57 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.texi (ftable vtable): Mention example.
+
+Sun Jun 30 14:59:51 1996 Karl Berry <karl@goldman.gnu.ai.mit.edu>
+
+ * makeinfo/makeinfo.c (cm_email): New function for new @email command.
+ * texinfo.texi (email): New node documenting it.
+
+Wed Apr 17 18:07:34 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * makeinfo/makeinfo.c (cm_kbd): Do nothing if in @example or @code.
+ (struct brace_element): New field in_fixed_with_font.
+ (remember_brace_1): Save in_fixed_with_font.
+ (pop_and_call_brace): Restore in_fixed_with_font.
+ (cm_code): Don't decrement in_fixed_with_font at end of construct.
+ (struct istack_elt): New field in_fixed_with_font.
+ (push_insertion, pop_insertion): Save and restore in_fixed_with_font.
+ (end_insertion): Don't decrement in_fixed_with_font here.
+ (not_fixed_width): New function.
+ (cm_sc, cm_var, cm_italic, cm_roman, cm_titlefont):
+ Use not_fixed_width.
+
+Sat Apr 13 23:22:05 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * util/install-info.c (main): Fatal error if no input file spec'd.
+ Look for START-INFO-DIR-ENTRY, not BEGIN-INFO-DIR-ENTRY.
+
+Thu Apr 11 18:21:50 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * makeinfo/makeinfo.c (cm_enddots): New function.
+ (self_delimiting): Accept -, ^ and ".
+ (CommandTable): Add commands -, ^, ", enddots, centerchap.
+
+Sun Mar 24 12:18:32 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * makeinfo/makeinfo.c (enum insertion_type): Add `direntry'.
+ (insertion_type_names): Add "direntry".
+ (cm_dircategory): New function.
+ (cm_direntry): New function.
+ (CommandTable): Add "dircategory" and "direntry".
+ (insert_string): New function.
+ (end_insertion): Handle direntry.
+ (begin_insertion): Handle direntry.
+
+Sun Mar 24 11:10:05 1996 Karl Berry <karl@spiff.gnu.ai.mit.edu>
+
+ * makeinfo/makeinfo.c (cm_url): New function for new @url command.
+
+Fri Feb 23 21:14:40 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * info/Makefile.in (install, uninstall): Use manprefix.
+
+Fri Feb 23 19:50:18 1996 Richard Stallman <rms@whiz-bang.gnu.ai.mit.edu>
+
+ * util/Makefile.in (install-info, install-info.o): New targets.
+ (all): Depend on install-info.
+ (install, uninstall): Operate on install-info.
+
+ * install-info.c: New file.
+
+Wed Jan 3 10:01:45 1996 Brian J. Fox <bfox@nirvana.datawave.net>
+
+ * makeinfo/makeinfo.c (make_index_entries_unique): Be a little bit
+ stricter about what makes two index entries identical.
+
+Fri Dec 29 13:00:24 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * makeinfo/makeinfo.c (Whole File): Add @detailmenu for allowing
+ detailed menu listings to appear while still defaulting nodes.
+
+Wed Dec 27 13:54:30 1995 Brian Fox <bfox@albert.gnu.ai.mit.edu>
+
+ * makeinfo/makeinfo.c (cm_code): Always notice that we are in
+ fixed_width_font, even if other formatting changes are not to take
+ place.
+
+Sat Dec 23 11:48:43 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * info/man.c: (clean_manpage) Remove ^L's from page.
+
+ * makeinfo/makeinfo.c (get_brace_args): Change some memcpy's to
+ memmoves.
+
+ * info/info.c (main): Prefer caseless matches over partial
+ matches.
+
+ * Makefile.in (All Subdir Targets): Change suggested by Debian
+ people which allows errors in recursive makes to kill the
+ top-level make.
+
+ * makeinfo/Makefile.in (makeinfo.dvi): New target.
+
+ * info/info.c (main): Print version of containing texinfo package.
+
+ * makeinfo/makeinfo.c (flush_output): Don't strip high-bit from
+ sentence_enders.
+ Print the version number of the containing texinfo package.
+
+ * info/man.c (locate_manpage_xref): Count the 0th entry.
+
+ * makeinfo/makeinfo.c (cm_menu): If a menu is seen before a node
+ has been defined, warn, and create the node `Top'.
+
+Wed Jun 21 03:19:39 1995 Brian Fox <bfox@albert.gnu.ai.mit.edu>
+
+ * makeinfo/makeinfo.c (cm_infoinclude): Clean up after printing
+ error if the file couldn't be included.
+ (discard_braces): Print errors only for those unmatched open
+ braces that belong to a texinfo command.
+
+ * */Makefile.in: Use @CFLAGS@ and @LDFLAGS@.
+
+ * makeinfo/makeinfo.c: End `node_search_string' and friends with a
+ terminating null character.
+
+Wed Jun 21 01:23:49 1995 Jim Meyering (meyering@comco.com)
+
+ * makeinfo/makeinfo.c: Close comment after #endif.
+
+Tue Jun 20 04:58:26 1995 Brian Fox <bfox@albert.gnu.ai.mit.edu>
+
+ * emacs/Makefile.in (install): Fix typo: "fle" -> "file".
+
+ * Makefile.in (VERSION): Bump to 3.6
+
+ * info/clib.c: Include general.h for `info_toupper' and friends.
+
+ * info/clib.h: strncmp and strncascmp return an int. What kind of
+ drugs was I on?
+
+Mon Jun 19 23:34:47 1995 Brian Fox <bfox@albert.gnu.ai.mit.edu>
+
+ * makeinfo/makeinfo.c (make_index_entries_unique): Copy the last
+ index entry.
+
+Mon Jun 19 21:55:49 1995 Noah Friedman <friedman@prep.ai.mit.edu>
+
+ * util/texi2dvi (--version): New option.
+ Cosmetic changes.
+
+Mon Jun 19 16:06:40 1995 Brian Fox <bfox@albert.gnu.ai.mit.edu>
+
+ * makeinfo/makeinfo.c (cm_macro): Fix typo. `x != y' is not the
+ same as `x |= y'.
+
+ * info/Makefile.in (exec_prefix): Use @exec_prefix@ not $(prefix).
+ * makeinfo/Makefile.in (exec_prefix): Use @exec_prefix@ not $(prefix).
+ * util/Makefile.in (exec_prefix): Use @exec_prefix@ not $(prefix).
+ * libtxi/Makefile.in (exec_prefix): Use @exec_prefix@ not $(prefix).
+
+ * emacs/Makefile.in (uninstall): New target.
+ (install): Use the definition of $(lispdir), don't dynamically
+ find it. Use INSTALL_DATA not cp.
+ (exec_prefix): use @exec_prefix@ not $(prefix).
+
+ * makeinfo/makeinfo.c (apply): If there isn't an actual argument
+ for a named argument, default it to "".
+
+ * Makefile.in (VERSION): Now at 3.5.
+ (texinfo): Make ./makeinfo/makeinfo depend on sub-all for parallel
+ makes.
+
+ * emacs/Makefile.in (ELISP_OBJS): Explictly declare .el and .elc
+ in the SUFFIXES list.
+
+ * makeinfo/makeinfo.c (cm_today): Special case for losing alpha.
+ * (minor_version): Increase to 63.
+
+ * info/info.c (version_string): Now at 2.14.
+ * info/tilde.c: Declare getenv to return (char *).
+ * info/window.c (build_message_buffer): Jump through hoops to keep
+ DEC Alpha's happy.
+
+ * info/xmalloc.c: Declare malloc and realloc as (void *) returning
+ functions.
+
+Sun Jun 18 12:47:21 1995 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * emacs/detexinfo.el (detexinfo-line-cmds-without-arg):
+ Handle ifhtml.
+
+Fri Jun 16 13:48:14 1995 Brian Fox <bfox@albert.gnu.ai.mit.edu>
+
+ * util/texindex.c: Update TEXINDEX_VERSION_STRING for texinfo 3.4
+
+ * (All *.c *.h *.in): Change FSF old address to new.
+ * texinfo.texi (Obtaining TeX): Change FSF old address to new
+ address. Change Old phone numbers to new phone numbers.
+
+ * Makefile.in (VERSION): Change to 3.4.
+
+Thu Jun 15 22:49:07 1995 Robert J. Chassell <bob@hill.gnu.ai.mit.edu>
+
+ * texinfo.texi, emacs/=development/cover.texi: update
+ Texinfo distribution package version number
+
+Thu Jun 15 09:23:02 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * info/info.c: (minor_version): Set to 13.
+
+ * info/clib.c,h: New files gather together replacement functions
+ for those POSIX-style C library functions that are not present on
+ the target system.
+
+ * info/Makefile.in (SRCS): Add clib.c and clib.h. makedoc now
+ needs clib.o to build on systems missing various string.h stuff.
+
+ * info/variables.c (whole file): Call strdup, not savestring.
+ * info/tilde.c (whole file): Call strdup, not savestring.
+ * info/search.c (whole file): Call strdup, not savestring.
+ * info/nodes.c (whole file): Call strdup, not savestring.
+ * info/nodemenu.c (whole file): Call strdup, not savestring.
+ * info/man.c (whole file): Call strdup, not savestring.
+ * info/makedoc.c (whole file): Call strdup, not savestring.
+ * info/m-x.c (whole file): Call strdup, not savestring.
+ * info/info.c (whole file): Call strdup, not savestring.
+ * info/indices.c (whole file): Call strdup, not savestring.
+ * info/echo_area.c (whole file): Call strdup, not savestring.
+ * info/session.c (whole file): Call strdup, not savestring.
+ * info/filesys.c (whole file): Call strdup, not savestring.
+
+ * makeinfo/makeinfo.c (minor_version): Change to 1.62.
+ * makeinfo/makeinfo.c (get_execution_string): Initialize `i' to 0
+ in case there are no execution_strings.
+
+Wed Jun 14 17:48:06 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * texinfo.texi: include "texinfo.tex", not "texinfo".
+ * info/session.c (forget_window_and_nodes): Place a sequence point
+ in between "info_windows[i] = info_windows[++i];" as per various
+ compiler experts.
+
+ * makeinfo/makeinfo.c (strdup): Create this function if the system
+ doesn't have it.
+ (discard_insertions): Use the insertion's filename, not the
+ current input file.
+ (push_insertion): Remember the current input file with each
+ insertion.
+ (pop_insertion): Free storage used by remembered input file.
+
+ * makeinfo/makeinfo.c (whole file): Use `strdup' instead of
+ `savestring'.
+ * configure.in: Check for `strdup'.
+
+Wed Jun 14 15:58:51 1995 Brian Fox <bfox@albert.gnu.ai.mit.edu>
+
+ * libtxi/Makefile.in (prefix): Use @prefix@, not /usr/local/
+
+Wed Jun 14 10:50:57 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * Makefile.in (DISTFILES): Don't include *.elc files in the list
+ of files to distribute.
+ (installdirs): Include `emacs' in the list of sub-dirs with
+ Makefile.in's.
+
+ * emacs/elisp-comp: Shell script which batch compiles the *.el files.
+ * emacs/Makefile.in: New file contains targets to build the elc files.
+ * configure.in: Add `emacs/Makefile' to the list of created makefiles.
+ * makeinfo/makeinfo.c (whole file): Give every function a return
+ type. All cm_xxx functions are now void. Add declarations for
+ functions to top of file.
+
+Mon Jun 12 12:00:57 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * info/man.c (reference_section_starters): Add versions of "SEE
+ ALSO" and "RELATED INFORMATION" with tabs instead of spaces as
+ well.
+
+ * util/texindex.c: Back out changes for OFF_T. Explicity coerce
+ the result of lseek to a long, and use longs everywhere.
+
+ * texinfo.texi: Change "@end shorttitlepage" to "@end titlepage".
+ * makeinfo/makeinfo.c: Make @shorttitlepage ignore the rest of the
+ line.
+
+ * util/texindex.c (strrchr): Create if not present.
+ Test for HAVE_STRCHR and HAVE_STRING_H.
+ (main): Make PROGRAM_NAME be just the last path componenet of argv[0].
+ (decode_command): Rewrite.
+ (usage): Rewrite. Now texindex handles --version.
+
+ * makeinfo/makeinfo.c (make_index_entries_unique): Rewrite from
+ scratch.
+
+ * Don't distribute created info files with texinfo. After all,
+ the user will have the tools necessary to create them, yes?
+
+ * Makefile.in (distclean): Remove *.log
+
+ * info/man.c (read_from_fd): Change timeout value for select to 15
+ seconds. Some systems (e.g., albert.ai.mit.edu) actually need
+ more than 10 seconds to format a man page.
+
+ * info/tilde.c: Fix typo in declaration for
+ `tilde_expansion_failure_hook'.
+
+Wed Jun 7 13:36:53 1995 Brian Fox <bfox@albert.gnu.ai.mit.edu>
+
+ * info/tilde.h: Change type of tilde_expansion_failure_hook to
+ a pointer to a function returning a (char *).
+ * info/tilde.c: Change type of tilde_expansion_failure_hook to a
+ pointer to function returning a (char *).
+
+ * makeinfo/makeinfo.c (get_execution_string): Don't use `i' in the
+ latter assignment, use `execution_strings_index' instead.
+
+ * info/man.c (read_from_fd): Change logic to avoid using FIONREAD.
+
+ * info/xmalloc.c (xrealloc): Use (void *), not (caddr_t *).
+ * info/xmalloc.c (xmalloc): Use (void *), not (caddr_t *).
+
+ * Makefile.in (DISTFILES): Don't find RCS no "=" directories.
+
+ * util/Makefile.in (prefix): Use @prefix@ as the value.
+ * info/Makefile.in (prefix): Use @prefix@ as the value.
+ * makeinfo/Makefile.in (prefix): Use @prefix@ as the value.
+
+Wed Jun 7 12:29:28 1995 Robert J. Chassell <bob@hill.gnu.ai.mit.edu>
+
+ * texinfo.texi: Correct minor typos.
+
+ * emacs/texinfmt.el: Don't require @shorttitlepage to be inside
+ of @iftex ... @end iftex
+
+Mon May 8 18:33:52 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * info/nodes.c: #include "man.h" if HANDLE_MAN_PAGES.
+ (info_get_node_of_file_buffer): If the file buffer is one
+ associated with manpages, call the manpage node finding
+ function instead.
+ (info_find_file_internal): If the file buffer is one associated
+ with manpages, avoid doing any file I/O.
+ (info_reload_file_buffer_contents): Ditto.
+ (info_find_file_internal): Call create_manpage_file_buffer instead
+ of info_load_file_internal.
+
+ * info/info.c: #include "man.h" if HANDLE_MAN_PAGES.
+ (main): If the initial node cannot be found, perhaps find it as a
+ manpage.
+ * info/info-utils.c: #include "man.h" if HANDLE_MAN_PAGES.
+ (info_xrefs_of_node): If handling man pages, and this is a manpage
+ node, use xrefs_of_manpage.
+
+ * info/session.c (info_set_input_from_file): Only fclose (stream)
+ if it is non-null and not stdin.
+ #include "man.h" if HANDLE_MAN_PAGES.
+ (info_menu_or_ref_item): If handling man pages, and this is a
+ manpage node, get the xrefs from manpage_xrefs_in_binding.
+ (info_man): Compile in for M-x man if handling man pages.
+ (info_move_to_xref): If handling man pages, and the current node
+ is a manpage node, use locate_manpage_xref to get xrefs.
+
+Thu May 4 08:55:23 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * info/info.c (main): If the output device is not a terminal, and
+ no output filename has been specified, make user_output_filename
+ be "-", so that the info is written to stdout, and turn on the
+ dumping of subnodes.
+
+Thu Apr 13 18:05:06 1995 Daniel Hagerty <hag@churchy.gnu.ai.mit.edu>
+
+ * texinfo.texi: Fixed @end titlepage/@end shorttitlepage
+
+Sat Apr 8 12:51:49 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * makeinfo/makeinfo.c [! HAVE_STRERROR] (strerror): New function,
+ snarfed from ../info/filesys.c.
+ (cm_infoinclude): Use strerror instead of sys_errlist.
+
+Tue Apr 4 18:44:00 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * util/texindex.c (sort_offline): Change TOTAL to be an off_t.
+ * util/texindex.c (sort_in_core): Change TOTAL to be an off_t.
+ * util/texindex.c (MAX_IN_CORE_SORT): Cast to off_t.
+
+Sun Apr 2 16:20:13 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * info/Makefile.in: Define DEFAULT_INFOPATH in case we are
+ compiling in the current directory.
+ * info/Makefile.in (info.o): Add filesys.h because of DEFAULT_INFOPATH.
+ * info/(search.c,h, nodes.c info-utils.c) Use strcasecmp and
+ strncasecmp instead of stricmp and strnicmp. Define strcasecmp
+ and strncasecmp in search.c if !HAVE_STRCASECMP.
+ * info/search.c: If HAVE_STRING_H include it.
+ * info/nodes.c: If HAVE_STRING_H include it.
+ * info/info-utils.c: If HAVE_STRING_H include it.
+ * info/info.h: If HAVE_STRING_H include it.
+ * configure.in (AC_HAVE_FUNCS): Check for strcasecmp.
+ * makeinfo/makeinfo.c (strcasecmp): Define if !HAVE_STRCASECMP.
+ * makeinfo/makeinfo.c (entire file): Use `strcasecmp' instead of
+ `stricmp'.
+ * makeinfo/makeinfo.c (cm_ifeq): New command takes three args.
+ Compares first two, executes remainder if the first two are
+ string-wise eq.
+ * makeinfo/makeinfo.c (ifhtml): Add to command list. Shouldn't be
+ used, but it is by people who don't want to hack macros.
+
+Sat Apr 1 09:20:14 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * makeinfo/makeinfo.c (begin_insertion): Fix reversed arguments to
+ line_error.
+
+ * info/info-stnd.texi: Use "end" footnote style instead of "separate".
+
+ * info/Makefile.in: Change "rm -f" to $(RM).
+
+ * info/general.h: Define zero_mem in terms of memset if we have
+ it, else in terms of bzero if we have that, else as inline code.
+
+ * info/NEWS: Updated to reflect changes in 2.11.
+
+Fri Mar 31 22:38:31 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * Makefile (DISTFILES): Don't include *.a, *orig, nor *.e
+ files.
+ (DISTFILES):
+
+Sat Mar 4 12:16:29 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * Makefile.in: Use @prefix@ instead of hardwired `/usr/local'.
+ Clean up makefile rules which make in subdirs.
+ (ALL_SUBDIRS): Add makeinfo/macros to list of subdirectories.
+
+ * configure.in (AC_CHECK_FUNCS): Add `bcopy' to list of things to
+ check for.
+
+Fri Mar 3 13:54:10 1995 Robert J. Chassell <bob@hill.gnu.ai.mit.edu>
+
+ * texinfo.texi: Minor changes for incremental new edition 2.20.
+
+Fri Mar 3 19:01:36 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * filesys.c (filesys_read_info_file): Local variable ST_SIZE is a
+ long which has the value of finfo->st_size casted to it.
+ * nodes.c (whole file): Similar changes.
+
+ These changes and the following for makedoc.c were required for
+ proper operation on HPm68k NetBSD.
+
+Mon Feb 27 15:16:27 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * makedoc.c (process_one_file): Local variable FILE_SIZE is a long
+ which has the value of finfo.st_size casted to it.
+
+
+Fri Mar 3 18:58:38 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * makeinfo.c (find_and_load): Cast fileinfo.st_size to a long for
+ internal use. This makes things work on NetBSD.
+
+
+Fri Mar 3 13:54:10 1995 Robert J. Chassell <bob@hill.gnu.ai.mit.edu>
+
+ * texinfo.texi: Minor changes for incremental new edition 2.20.
+
+Fri Mar 3 09:41:39 1995 Brian J. Fox <bfox@wizard.datawave.net>
+
+ * configure.in (TERMLIBS): Use AC_CHECK_LIB instead of
+ AC_HAVE_LIBRARY.
+
+Mon Jan 9 16:55:31 1995 Brian Fox <bfox@churchy.gnu.ai.mit.edu>
+
+ * Makefile.in (DISTFILES): Add the directory EMACS-BACKUPS to the
+ list of things to avoid distributing.
+
+Tue Nov 29 17:48:37 1994 David J. MacKenzie <djm@duality.gnu.ai.mit.edu>
+
+ * configure.in: Check for off_t.
+ * util/texindex.c (main): Use it.
+
+Fri Nov 11 14:46:28 1994 David J. MacKenzie <djm@duality.gnu.ai.mit.edu>
+
+ * configure.in: Update for Autoconf v2.
+
+Thu Oct 13 02:17:38 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * emacs/detexinfo.el (detexinfo): Handle @!, @?, @^, @".
+
+Mon Aug 1 03:26:13 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texindex.c: Move the memset define down past string.h include.
+
+Tue Jun 28 14:21:43 1994 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * makeinfo/makeinfo.c: Add --help option.
+ (usage): Take args for stream and error code.
+ Change callers.
+ (print_version_info): Write to stdout, not stderr.
+
+Wed May 18 18:55:24 1994 Brian J. Fox (bfox@ai.mit.edu)
+
+ * info/session.c (forget_window_and_nodes): Negate test for
+ internal_info_node_p. We only want to free the text if it is
+ not an internal node.
+
+Thu Mar 10 03:07:18 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texindex.c (memset): Fix invalid parm name (was 0).
+
+Thu Feb 10 12:56:52 1994 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * makeinfo/makeinfo.c (current_item_function): Don't loop if elt
+ is NULL.
+
+Wed Feb 9 12:21:09 1994 Brian J. Fox (bfox@ai.mit.edu)
+
+ * makeinfo/makeinfo.c (minor_version): Release now at 1.60.
+
+ * makeinfo/makeinfo.c (expand_filename): Additional fixes. Now
+ when called with NULL filename, makes an output filename from the
+ input filename.
+ (convert_from_loaded_file): If REQUIRE_SETFILENAME is #defined (no
+ longer the default case) then error if no @setfilename was found
+ in the file. If REQUIRE_SETFILENAME is not #defined, the input
+ file starts either at the first line, or at the second line if the
+ first line contains the text "\input", and the output filename is
+ the input file name without directory and with ".info" replacing
+ any extension found.
+ (convert_from_loaded_file): Fixed bug in search for first
+ occurence of "@setfilename".
+
+Tue Feb 8 14:16:58 1994 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * configure.in: Check for sys/file.h.
+ info/dir.c, info/filesys.c, info/makedoc.c, info/nodes.c,
+ info/session.c, info/termdep.h, makeinfo/makeinfo.c
+ [HAVE_SYS_FILE_H]: Include <sys/file.h>.
+
+ * makeinfo/makeinfo.c (convert_from_loaded_file): Print
+ real_output_filename instead of output_filename, so user knows
+ exactly where output file is going.
+
+ Fri Jun 11 14:34:30 1993 Ian Lance Taylor (ian@cygnus.com)
+ * configure.in: Check for sigprocmask and sigsetmask.
+ * info/signals.h (HAVE_SIGSETMASK): Don't define.
+ (HAVE_SIGPROCMASK): Use instead of _POSIX_VERSION.
+ (BLOCK_SIGNAL, UNBLOCK_SIGNAL): If neither HAVE_SIGPROCMASK nor
+ HAVE_SIGSETMASK is defined, define these to do nothing.
+ * info/signals.c (sigprocmask): Don't compile if HAVE_SIGSETMASK
+ is not defined.
+
+ * info/terminal.c (terminal_prep_terminal): Don't clobber VINTR
+ and VQUIT in conditionals.
+
+Mon Feb 7 18:10:22 1994 Brian J. Fox (bfox@ai.mit.edu)
+
+ * makeinfo/makeinfo.c (full_pathname): Correct to really return
+ the full pathname of the input argument. Now makeinfo
+ /foo/bar.texi, where /foo/bar.texi contains "@setfilename
+ bar.info", correctly leaves the output file in "./bar.info".
+ Note that "@setfilename ../bar.info" still works; this is already
+ an absolute pathname.
+
+Sat Feb 5 13:04:05 1994 Brian J. Fox (bfox@ai.mit.edu)
+
+ * makeinfo/makeinfo.c: Version 1.59 released.
+
+ * makeinfo/makeinfo.c (whole file): Large number of changes allow
+ the "-E filename" option to be used to write a macro expanded
+ output file. On a file which contains no @include's and no
+ @macro's, the output file is identical to the input file.
+
+ * makeinfo/makeinfo.c (declarations): Remove cm_tex (). It is
+ never used since it is implemented with `command_name_condition'.
+
+ * makeinfo/makeinfo.c (add_char): Shift braces following the
+ current break point if we have deleted any characters.
+ (adjust_braces_following): New function adjusts all of the markers
+ in the brace stack which follow HERE by AMOUNT. This fixes a bug
+ where (for example) @var{} immediately following a line break
+ which is the end of a sentence modified the output incorrectly.
+
+Wed Feb 2 14:14:03 1994 Brian J. Fox (bfox@ai.mit.edu)
+
+ * makeinfo: Version 1.58.
+
+ * makeinfo/makeinfo.c (cm_node): Add extra hair to allow
+ backtracking through execution strings. Add extra hair to allow
+ the first node seen after a @top node is seen to adjust the
+ sectioning level of the @top node and associated menus.
+ Fix a few typos.
+ Add facility for macros to invoke the original definition. This
+ works by not allowing a single macro to recurse. Mutual recursion
+ is also disallowed with this plan.
+
+ * makeinfo/macros: New directory contains shippable macros.
+ * makeinfo/macros/simpledoc.texi: Macros which simplify the most
+ common uses of TeXinfo. See the example file.
+ Macros are now a reasonable way to get people started using
+ TeXinfo.
+
+Mon Jan 31 12:54:36 1994 Brian J. Fox (bfox@ai.mit.edu)
+
+ * makeinfo/makeinfo.c (minor_version): Increase to 57.
+
+ * makeinfo/makeinfo.c (cm_node): Call execute_string on the node,
+ next, prev, and up pointers.
+ (reader_loop): Change logic for `@bye'. No longer required at the
+ ends of executed strings.
+ (execute_string): Do not append `@bye' to the string to execute.
+
+ * makeinfo/makeinfo.c (whole file): Use COMMAND_PREFIX instead of
+ hardcoding `@' character in strings and searches.
+
+ * makeinfo/makeinfo.c (read_command): If HAVE_MACROS is defined,
+ then recognize and execute macros here.
+ (CommandTable): Add "macro" and "unmacro" to table if HAVE_MACROS
+ is defined.
+
+ * makeinfo/makeinfo.c (cm_macro, cm_unmacro, execute_macro)
+ makeinfo/makeinfo.c (get_macro_args, find_macro, add_macro)
+ makeinfo/makeinfo.c (delete_macro, array_len, apply):
+ New functions implement macro facility if HAVE_MACROS is
+ defined.
+
+ * makeinfo/macro.texi (new file): Examples of using the new macro
+ facility.
+
+Mon Jan 31 10:24:52 1994 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * makeinfo/makeinfo.c (executing_string): Restore global
+ declaration.
+
+Mon Jan 24 23:48:26 1994 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * texinfo.texi: Various typo fixes from Bob Chassell
+ <bob@gnu.ai.mit.edu>.
+
+Thu Jan 6 13:34:21 1994 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * texinfo.texi: Turned on smallbook format and @set smallbook.
+
+Wed Dec 15 20:08:43 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * info/filesys.h (DEFAULT_INFOPATH): Added /usr/local/info,
+ /opt/gnu/info, /usr/share/info, and /usr/local/share/info.
+
+Tue Dec 14 19:10:20 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * libtxi/Makefile.in (ALLOCA): Define from configure.
+
+Fri Dec 10 04:33:12 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * util/texi2dvi: Put under RCS control.
+
+Sun Dec 26 11:55:46 1993 Brian J. Fox (bfox@ai.mit.edu)
+
+ * info/session.c (info_numeric_digit_arg_loop): Fix doc string.
+
+ * info/infodoc.c (create_internal_info_help_node): Print out list
+ of functions which have to keystroke equivalent if we support
+ NAMED_FUNCTIONS.
+
+ * info/filesys.c (compress_suffixes): Add ".gz" for "gunzip" to
+ alist.
+
+ * info/footnotes.c (make_footnotes_node): If refs[i] doesn't have
+ a nodename, then it couldn't be a reference to a footnote.
+
+ * info/nodemenu.c (get_visited_nodes): Handle the case where
+ filter_func has left no possible buffers to select.
+
+Sat Dec 25 10:35:56 1993 Brian J. Fox (bfox@ai.mit.edu)
+
+ * info/infodoc.c (create_internal_info_help_node): Conditionalize
+ generation of the help node based on the #define
+ HELP_NODE_GETS_REGENERATED. When this is not set (the default)
+ the help node is generated exactly once, and is not gc'able.
+ Otherwise, a new node is always created for the help window, and
+ the old node gets garbage collected by the gc system.
+ (info_find_or_create_help_window): Conditionalize window node
+ selected based on the #define HELP_NODE_GETS_REGENERATED.
+
+ * info/dir.c (add_menu_to_file_buffer): Place exactly one blank
+ line between directory entries.
+
+ * info/info.c (version_string): Update minor version to "11".
+
+ * info/info.h: Update comment to "2.11".
+
+ * info/dir.c (maybe_build_dir_node): Only add the contents of a
+ new file if it is not identical to the file of the DIR buffer.
+
+ * info/nodes.c (info_get_node): Call `maybe_build_dir_node' on
+ "dir" as well as "localdir" to mimic emacs-19.22 "dir" merging
+ behaviour.
+
+Fri Dec 3 13:41:44 1993 Brian J. Fox (bfox@ai.mit.edu)
+
+ * info/info-utils.c (canonicalize_whitespace): Suppress whitespace
+ found at the start of STRING.
+
+Sat Nov 20 14:00:50 1993 Brian J. Fox (bfox@hippie)
+
+ * info/indices.c (DECLARE_INFO_COMMAND): Fix typo in assignment to
+ `old_offset' (= instead of ==).
+
+Tue Nov 2 12:22:40 1993 Brian J. Fox (bfox@ai.mit.edu)
+
+ * makeinfo/makeinfo.c (make_index_entries_unique): New function
+ makes a sorted array have all unique entries by appending numbers
+ to the ends of strings.
+ (sort_index): Call `make_index_entries_unique'.
+
+Mon Sep 20 12:04:05 1993 Brian J. Fox (bfox@ai.mit.edu)
+
+ * makeinfo/makeinfo.c (get_execution_string): New Function returns
+ a pointer to an EXECUTION_STRING structure.
+ (execute_string): No longer uses a static string; call
+ `get_execution_string' instead in order to get a free buffer for
+ consing.
+
+Sun May 23 07:00:20 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * Texinfo 3.1 released.
+
+Sat May 22 18:21:27 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * info/info.c (info_patch_level): Increment constant to 1.
+
+ * info/Makefile.in (DEFAULT_INFOPATH): Default definition deleted.
+ Makefile.in: Put it here instead.
+ * Makefile.in (MDEFINES): Add DEFAULT_INFOPATH.
+
+ * configure.in: check for vfprintf and vsprintf.
+
+ * makeinfo/makeinfo.c: Version 1.55.
+
+ * makeinfo/makeinfo.c (add_word_args, execute_string) [HAVE_VARARGS_H]:
+ Don't use this definition unless HAVE_VSPRINTF is also defined.
+ (error, line_error, warning) [HAVE_VARARGS_H]: Don't use this
+ definition unless HAVE_VFPRINTF is also defined.
+ Remove indentation of all cpp directives, except for #pragma.
+
+Fri May 21 14:34:24 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * texinfo.texi: Rename to texi.texi.
+ Change @setfilenname and START-INFO-DIR-ENTRY to `texi.info'.
+
+ * Makefile.in (MDEFINES): Pass LDFLAGS to sub-makes.
+ (realclean): Delete `configure'.
+ Changed all references to texinfo.info to texi.info
+
+ * configure.in: Add AC_PROG_RANLIB, and AC_CONST.
+ Check for `rindex' function.
+ Check for varargs.h.
+ Clean up symbol names for header files so a single AC_HAVE_HEADERS
+ can be used.
+ (AC_INIT): Use texi.texi instead of makeinfo/makeinfo.c
+
+ * info/info-utils.h: Copy definitions of bcopy, index, and rindex
+ (with appropriate #ifdef wrappers) from termdep.h. These are
+ included by a mutually exclusive set of files.
+
+ * info/termdep.h [HAVE_SYS_PTEM]: Use HAVE_SYS_PTEM_H instead.
+
+ * info/terminal.c, info/termdep.h [HAVE_TERMIO]: Use HAVE_TERMIO_H
+ instead.
+
+ * info/makedoc.c, info/filesys.c [!O_RDONLY]: Include fcntl.h or
+ sys/fnctl.h, depending on whether HAVE_SYS_FCNTL_H is set.
+
+ * info/termdep.h: Remove all indentation in #-exprs.
+ Remove old assumptions about bcopy, index, and rindex.
+ [HAVE_BCOPY]: Define bcopy.
+ [HAVE_RINDEX]: Define index and rindex.
+
+ * info/nodes.c (info_get_node): Don't call stricmp if nodename is
+ NULL. Remove indentation in #-exprs.
+
+ * info/echo_area.c (echo_area_stack_depth): Declare static.
+
+ * info/Makefile.in (DEFAULT_INFOPATH): Make separate Makefile
+ variable so it can be overridden more easily by the user. Add `.'
+ to beginning of path.
+ (clean): Delete core.* (386bsd core files).
+ (MAKEDOC): Variable removed. Refer to `makedoc' explicitly.
+ (funs.h): Add `:' commands after if, to avoid spurious nonzero
+ exit statuses.
+
+ * info/userdoc.texi: Improved comments explaining its purpose.
+
+ * makeinfo/makeinfo.c [HAVE_VARARGS_H]: Include varargs.h.
+ (error, line_error, warning, add_word_args,
+ execute_string)[HAVE_VARARGS_H]: New versions that
+ use varargs. From bfox.
+
+ * makeinfo/Makefile.in (clean): Delete core.* (386bsd core files).
+
+ * util/Makefile.in (clean): Remove core.* (386bsd core files).
+
+ * libtxi/Makefile.in: Remove all references to $(common).
+ (RANLIB): New variable, set from autoconf.
+ (libtxi.a): Use $(RANLIB) instead of `ranlib' in target rules.
+ (clean): Delete core.* (386bsd core files).
+
+Tue May 18 12:08:24 1993 Robert J. Chassell (bob at grackle.stockbridge.ma.us)
+
+ * emacs/texinfmt.el (texinfo-format-refill): Do not fill a section
+ title line with the asterisks, hyphens, etc. that underline
+ it in any circumstance.
+
+Sun May 16 13:53:43 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * util/mkinstalldirs: handle relative pathnames.
+
+Fri May 14 20:18:49 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * util/mkinstalldirs: initialize IFS if unset.
+
+Tue May 11 06:33:14 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * makeinfo/makeinfo.c (cm_item): don't dereference item_func if NULL.
+
+Mon May 10 14:50:31 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * Texinfo 3.0 released.
+
+ * Makefile.in (ALLOCA): Provide for substitution.
+
+Mon May 10 10:12:53 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * emacs/texinfmt.el (texinfmt-version): Updated year.
+
+Fri Apr 16 04:48:03 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * makeinfo/makeinfo.c: Version 1.54 from bfox.
+
+ * util/fixfonts: Replace instances of `[..]' with `test'.
+ Use more portable `test' arguments: `z$foo = z' instead of `! $foo'.
+ Robustify quoting in eval assignments.
+ (textfmdir, texpkdir, texgfdir): Don't override definition from
+ environment, if any.
+ Trap EXIT, SIGHUP, SIGINT, SIGQUIT, SIGTERM to delete temp files
+ instead of trying to remove them explicitly before calling exit.
+ When changing cwd, do so in subshell, in case various tex*dir
+ variables are relative.
+ Don't use `head', `dirname', or `basename'. These don't behave
+ consistently and/or don't even exist on some systems. They can
+ all be emulated with `sed' anyway.
+ (tempfile2_line1): New variable. Use it instead of running
+ process to extract first line out of tempfile2 multiple times.
+ Eliminate some gratuitous uses of $tempfile2, such as in for loops.
+
+Fri Mar 26 23:25:13 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * texinfo.texi: @setfilename texinfo.info.
+
+ * makeinfo/makeinfo.c (reader_loop, end_insertion): Fix typos in
+ comments.
+ (handle_variable_internal): Handle the case that there further
+ menu text after a false ifset/ifclear.
+
+ * util/texi2dvi: Version 0.4
+ Replace all instances of `[ ... ]' with `test'.
+ Updated bug-reporting address.
+
+Thu Mar 25 12:31:30 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * info/Makefile.in (install): Install info.1 man page.
+ (uninstall): Remove installed info.1 man page.
+
+ * info/infoman.texi: Standalone manual renamed to info-stnd.texi.
+ Makefile.in: Targets updated appropriately.
+
+ * info/Makefile.in (LDEFS): New variable. Use it for info-local
+ macros, since DEFS will be inherited from parent make and any
+ local definitions will get clobbered.
+
+ * info/RELEASE: Renamed to info/NEWS.
+
+ * README: New file.
+
+ * Makefile.in (topclean): New target.
+
+ * Getting-started: Renamed to INTRODUCTION. Former name is too
+ long (over 14 chars).
+
+ * New-features: Renamed to NEWS.
+
+ * Makefile.in (MDEFINES): Set it.
+
+ * Makefile.in (dist): Use --gzip option to tar to make sure
+ resulting file is compressed with gzip. Change tar file
+ extension from `.Z' to `.z'.
+
+ * Makefile.in (DISTFILES): Filter out any file or directory names
+ starting with `='.
+
+ * fixfonts: Moved to util/fixfonts.
+
+ * RELEASE: Deleted.
+
+ * makeinfo/Makefile.in (VPATH): Use $(srcdir), not @srcdir@.
+ (common): Use ../libtxi, not ../common.
+ (makeinfo.in): Run makeinfo with --no-split.
+
+ * makeinfo/makeinfo.texi: Changes from bob.
+
+ * util/Makefile.in (VPATH): Use $(srcdir), not @srcdir@.
+ (common): Use ../libtxi, not ../common.
+
+ * util/fixfonts: Moved from top-level directory.
+
+Wed Mar 24 10:21:31 1993 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfmt.el (texinfo-format-region): Do not require
+ `@setfilename' line; delete `\input texinfo' line if part of
+ region.
+
+ * emacs/texinfmt.el (texinfo-raise-lower-sections): Raise or lower the
+ hierarchical level of chapters, sections, etc. according to
+ `@raisesections' and `@lowersections' commands.
+
+Thu Mar 18 16:02:27 1993 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfo.el (texinfo-show-structure): Indent *Occur* buffer
+ according to the structure of the file.
+
+Sat Mar 6 05:16:44 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * util/texi2dvi: use ${1+"$@"}, not just "$@".
+
+Tue Feb 2 08:38:06 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * info/Makefile.in: Replace all "--nosplit" arguments to makeinfo
+ with "--no-split"
+
+Sun Jan 31 18:16:58 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * util/texi2dvi: Don't put .dvi and related auxillary files in same
+ directory as source files. Put them in current directory instead.
+ (TEXINPUTS_orig): New variable.
+ (file_texi): Variable removed.
+ (filename_texi): New variable.
+ (command_line_filename): Use this wherever references to file_texi
+ occured except in setting filename_noext.
+ (TEXINPUTS): Current directory and source directory where input
+ file resides prepended to standard path before invoking TeX.
+
+Wed Jan 27 16:24:37 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * util/Makefile.in: overhauled.
+
+Tue Jan 26 21:04:23 1993 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * Makefile.in, info/Makefile.in, makeinfo/Makefile.in: Overhauled.
+
+ * configure.in: Renamed from texinfo.in.
+ Incorporated makeinfo/makeinfo.in, info/info.in, and
+ util/util.in. Create all child Makefiles.
+
+ * makeinfo/makeinfo.in, info/info.in: Deleted (incorporated into
+ top configure.in).
+
+ * util/util.in: Deleted (incorporated into ../configure.in).
+
+Mon Jan 25 10:59:49 1993 Brian Fox (bfox@cubit)
+
+ * info/info.c: New version 2.9; new variable INFO_PATCH_LEVEL
+ appears in the version string if it is non-zero. New function
+ version_string () produces the current version string, as in 2.8-p1.
+
+ * info/dir.c: New file implements Gillespies `localdir' hacks.
+
+ * info/nodes.c (info_get_node): Now calls maybe_build_dir_node ()
+ if the file name to look for is "dir".
+
+ * info/nodes.h: New flag N_CannotGC unconditionally prevents garbage
+ collection of a file buffer's contents. Used when "dir" is made
+ from at least one "localdir".
+
+Fri Jan 22 11:36:42 1993 Brian Fox (bfox@cubit)
+
+ * info/footnotes.c: Do not declare auto_footnotes_p as "extern" in
+ this file.
+
+Thu Jan 21 08:57:08 1993 Brian Fox (bfox@cubit)
+
+ * info/info.c: New version 2.8.
+
+ * info/userdoc.texi, info/infoman.texi, info/info.texi: Fully
+ document Info; create both online and printed manual versions.
+ "userdoc.texi" contains exactly the documentation for GNU Info 2.x.
+ "infoman.texi" is a wrapper for that file; it is meant to produce
+ printed documentation. "info.texi" has the user documentation as a
+ complete chapter within itself, but continues to contain the Info
+ tutorial.
+
+ * info/makedoc.c: Convert "ea_" into "echo_area_" when creating the
+ command name.
+
+Fri Jan 15 16:50:35 1993 Brian Fox (bfox@cubit)
+
+ * info/search.c (skip_node_characters): New argument NEWLINES_OKAY if
+ non-zero says that newlines should be skipped over during parsing.
+
+ * info/info-utils.c (info_parse_node): New argument NEWLINES_OKAY if
+ non-zero says that newlines should be skipped while parsing out
+ the nodename specification.
+
+Wed Jan 13 14:42:33 1993 Brian Fox (bfox@cubit)
+
+ * info/makedoc.c: Remove "info_" from the front of the command name
+ before installing it.
+
+ * info/session.c (info_menu_or_ref_item): A label of "Menu" is okay if
+ the builder is not info_menu_of_node ();
+
+ * info/m-x.c: New function replace_in_documentation () replaces \\[foo]
+ with the keystrokes you type to get that command. Now used in
+ indices.c, info.c, infodoc.c.
+
+Mon Jan 11 10:27:41 1993 Brian Fox (bfox@cubit)
+
+ * info/variables.c, h: New files contain describe-variable and stuff
+ moved out of m-x.c.
+
+ * info/m-x.c: Move VARIABLE_ALIST and variable functions into
+ variables.c. Add documentation string to variable definition.
+
+ * info/echo_area.c (push_echo_area): Zero the contents of
+ echo_area_completion_items after pushing the vars.
+
+Sat Jan 9 11:59:47 1993 Brian Fox (bfox@cubit)
+
+ * info/Makefile.in: Add footnotes.c,h,o to the appropriate Makefile
+ variables.
+
+ * info/window.c (window_tile_windows): New function divides the
+ available space among the visible windows.
+
+ * info/session.c (info_tile_windows): New function calls
+ window_tile_windows.
+
+ * info/footnotes.c, footnotes.h: New file implements functions for
+ aiding automatic footnote display when entering a node which has
+ footnotes.
+
+ * info/m-x.c: New user-variable "automatic-footnotes".
+
+ * info/window.c (window_physical_lines) New function counts the
+ carriage returns found in NODE.
+
+Wed Jan 6 11:24:19 1993 Brian Fox (bfox@cubit)
+
+ * info/general.h: #include <unistd.h> if we have it.
+
+Tue Jan 5 11:12:33 1993 Brian Fox (bfox@cubit)
+
+ * info/info-utils.c (info_concatenate_references): If either arg is
+ NULL, return the other arg.
+
+ * info/indices.c (info_indices_of_file_buffer): Simplified and
+ corrected loop through tags/nodes of file buffer looking for
+ indices.
+
+ * info/search.c (skip_node_characters): Rewrite "if" statement for
+ clarification and conciseness.
+
+Fri Jan 1 03:18:26 1993 Brian Fox (bfox@cubit)
+
+ * info/info.in: Check for setvbuf (), and check to see whether the args
+ are reversed.
+
+ * info/dribble.c (open_dribble_file) Check HAVE_SETVBUF and
+ SETVBUF_REVERSED when setting the buffering on info_dribble_file.
+
+Thu Dec 31 20:14:13 1992 Brian Fox (bfox@cubit)
+
+ * info/session.c (info_select_reference) If the node couldn't be found,
+ look for the label as a filename (i.e., "(LABEL)Top").
+
+Wed Dec 30 01:57:50 1992 Brian Fox (bfox@cubit)
+
+ * New Version 2.7 Beta.
+
+ * info/echo_area.c: Numerous functions now do something with the
+ numeric argument. Kill ring implemented, as well as yank and
+ yank_pop. Also transpose-chars.
+
+ * info/window.c (window_make_modeline): Check node->flags for
+ N_IsCompressed and display "zz" in the modeline if the node comes
+ from a file which is compressed on disk.
+
+Mon Dec 28 17:33:12 1992 Brian Fox (bfox@cubit)
+
+ * info/filesys.c, info/nodes.c: New member of FILE_BUFFER "FILESIZE"
+ contains the size of file_buffer->contents. finfo.st_size is no
+ longer relied upon to read the contents of files, since the new
+ function (filesys_read_info_file) can read compressed files.
+
+ * info/filesys.c (info_find_fullpath) If a file starts with a slash (or
+ tilde expansion causes it to start with a slash) still call
+ info_find_file_in_path () on it so that we can find files with
+ compression suffixes.
+
+ * info/m-x.c: New variable "gc-compressed-files".
+
+Tue Dec 22 03:45:28 1992 Brian Fox (bfox@cubit)
+
+ * info/info.c: Version 2.6 Beta.
+
+ * info/indices.c (info_index_next): Improve the final search for the
+ matched index entry.
+
+ * info/session.c (move_to_screen_line): New function implements `M-r'.
+ Given a numeric argument, move point to the start of that line in
+ the current window; without an arg, move to the center line.
+ * infomap.c: Put move_to_screen_line () on `M-r'.
+
+ * info/nodes.c (adjust_nodestart): Don't set N_UpdateTags unless the
+ node came from a tags table.
+
+ * info/nodes.c (info_find_file_internal): If the filename being looked
+ for doesn't start with a `/', then additionally compare the
+ filename against the fullpath of the file buffer sans the
+ directory name. This can happen when selecting nodemenu items.
+
+Mon Dec 21 10:07:18 1992 Brian Fox (bfox@cubit)
+
+ * info/session.c, info/display.c: Remove all references to
+ active_window_ch, active_window_cv, cursor_h, and cursor_v. The
+ single function display_cursor_at_point () is used for all cursor
+ movement, and to place the terminal's cursor at the right location
+ on the screen.
+
+Sat Dec 19 12:01:33 1992 Brian Fox (bfox@cubit)
+
+ * info/nodemenu.c: New file implements a few functions for manipulating
+ previously visited nodes. `list-visited-nodes' produces a menu of
+ the nodes that could be reached by info_history_node () in some
+ window. `select-visited-node' is similar to `list-visited-node'
+ followed by `info-menu-item', but doesn't display a window with
+ the visited nodes menu.
+
+ * info/session.c (info_numeric_arg_digit_loop): If redisplay had been
+ interrupted, then redisplay all of the windows while waiting for
+ input.
+
+ * info/display.c (display_was_interrupted_p): New variable keeps track
+ of interrupted display. Used in
+ info/session.c:info_numeric_arg_digit_loop ().
+
+ * info/session.c (info_global_next, info_global_prev): Use the numeric
+ argument passed to determine how many nodes to move.
+
+ * info/session.c (info_scroll_forward, info_scroll_backward): If the
+ invoking key is not SPC or DEL only do Page Only scrolling.
+
+Thu Dec 17 01:34:22 1992 Brian Fox (bfox@cubit)
+
+ * info/display.c (display_update_one_window): Allow W_NoWrap to affect
+ window display.
+
+ * info/window.c (calculate_line_starts): Now takes a WINDOW * as an
+ argument, and simply does the calculation, placing the results
+ into window->line_starts and window->line_count. It also handles
+ W_NoWrap in window->flags.
+
+Mon Dec 14 02:18:55 1992 Brian Fox (bfox@cubit)
+
+ * info/session.c (info_backward_scroll): Don't try to get previous node
+ if the top of the node isn't currently being displayed.
+
+ * info/window.c (window_adjust_pagetop) Use new variable
+ "window_scroll_step" to attempt to control the amount which the
+ window scrolls.
+
+ * info/m-x.c (info_variables) Add "scroll-step" to the list.
+
+Thu Dec 10 08:52:10 1992 Brian Fox (bfox@cubit)
+
+ * info/m-x.c: New variable entry show-index-matches. When set to
+ non-zero the matched portion of the search string is indicated
+ with ` and '. Perhaps I should use `|' inst|ea|d?
+
+ * info/echo_area.c (ea_possible_completions): Always build completions
+ before checking to see how many there were.
+
+ * info/info-utils.c: (info_concatenate_references): New utility
+ function concatenates references.
+
+ * info/Makefile.in: Add indices.c and indices.h to SRCS and HDRS.
+ Add indices.c to CMDFILES.
+
+ * info/indices.c, info/indices.h: New file implements `i' and `,'
+ commands of info, and provides index searching capabilities.
+
+ * info/echo_area.c (info_read_completing_in_echo_area): Split off into
+ separate callable function info_read_completing_internal ().
+
+ * info/echo_area.c (info_read_maybe_completing): New function calls
+ info_read_completing_internal () with non-forcing argument.
+
+ * info/session.c: Rename down_next_upnext_or_error () and
+ prev_up_or_error () to forward_move_node_structure (), and
+ backward_move_node_structure (). Implement new commands
+ info_global_next () and info_global_prev ().
+
+ * info/infomap.c (initialize_info_keymaps): Bind `[' and `]' to
+ backward_, forward_move_node_structure () respectively.
+
+ * info/session.c (info_menu_digit): Called with "0" as arg, select the
+ last menu item.
+
+ * info/infomap.c (initialize_info_keymaps): "0" calls
+ info_menu_digit ().
+
+ * info/session.c (info_move_to_xref): Take dir into account when there
+ are xrefs and menu items in the node and we are wrapping
+ backwards.
+
+Tue Dec 8 09:57:58 1992 Brian Fox (bfox@cubit)
+
+ * info/info.c: Version 2.5 Beta.
+
+ * info/terminal.c (terminal_insert_lines, terminal_delete_lines) Do not
+ expect tgoto to return a new string; it returns the address of a
+ static buffer.
+
+ * info/infodoc.c (info_find_or_create_help_window) Correct check for
+ prior existing help node.
+
+ * info/m-x.c (set_variable): Allow variables to have a list of choices.
+ Add new variable scroll-behaviour.
+
+ * info/session.c (down_next_upnext_or_error, prev_up_or_error) New
+ functions implement user-controlled behaviour when attempting to
+ scroll past the bottom or top of a node. New variable
+ info_scroll_behaviour is user visible as "scroll-behaviour".
+
+ * info/session.c (info_scroll_forward, info_scroll_backward) Call new
+ functions for user-controlled scroll behaviour.
+
+ * info/terminal.c (terminal_initialize_terminal) Set PC from BC not
+ from BUFFER.
+
+Mon Dec 7 11:26:12 1992 Brian Fox (bfox@cubit)
+
+ * util/texindex.c: Change EXIT_SUCCESS and EXIT_FATAL to TI_NO_ERROR
+ and TI_FATAL_ERROR respectively. This avoids namespace conflicts
+ on NeXT 2.0.
+
+Sat Dec 5 00:07:59 1992 Brian Fox (bfox@cubit)
+
+ * info/info.c: New option "--subnodes" says to recursively dump the
+ menus of the nodes that you wish to dump. Menu items which point
+ to external nodes are not dumped, and no node is dumped twice.
+
+Thu Dec 3 16:11:02 1992 Brian Fox (bfox@cubit)
+
+ * info/session.c (info_error) Don't ring the bell if
+ info_error_rings_bell_p is zero. (info_abort_key) Ring the bell
+ if printing "Quit" in the echo area wouldn't do it.
+
+ * info/m-x.c (set_variable) New functions allows setting of
+ variables in the echo area. Currently, only visilble-bell and
+ errors-ring-bell are implemented.
+
+Wed Dec 2 13:11:37 1992 Brian Fox (bfox@cubit)
+
+ * info/nodes.c, info/makedoc.c: If O_RDONLY is not defined by
+ sys/file.h, include sys/fcntl.h.
+
+ * info/filesys.c (info_file_in_path): Expand leading tildes found
+ within directory names.
+
+ * info/terminal.c (terminal_initialize_terminal) Set ospeed to 13 if
+ not settable any other way. It is an index into an array of
+ output speeds.
+
+ * info/display.c (free_display) Do not free a NULL display.
+
+ * info/display.c (string_width): New functions returns the width of
+ STRING when printed at HPOS.
+
+Sun Nov 29 01:24:42 1992 Brian Fox (bfox@cubit)
+
+ * info/info.c: New version 2.4 beta.
+
+ * info/general.h: #define info_toupper and info_tolower which check
+ their arguments before performing any conversion.
+
+ * info/search.c, info/echo_area.c: Use info_toupper.
+
+Sat Nov 28 14:23:24 1992 Brian Fox (bfox@cubit)
+
+ * info/session.c (info_scroll_forward, info_scroll_backward) If at
+ last/first page of the node, and the last command was
+ forward/backward, do info_next/prev/_node.
+
+ * info/session.c: New function info_select_reference_this_line gets
+ menu or cross reference immediately.
+
+ * info/infomap.c (initialize_info_keymaps): Add info_keymap[LFD] to
+ invoke info_select_reference_this_line ().
+
+ * info/session.c (info_last_reference) Rename to
+ info_history_reference. Wrote info_last_reference, and
+ info_first_reference which go to the last or first node of an info
+ file.
+
+Fri Nov 27 00:59:02 1992 Brian Fox (bfox@cubit)
+
+ * info/info.c: New version 2.3. Completed implementing contents of
+ TODO file.
+
+ * info/session.c (info_redraw_display): Fix C-l with numeric arg.
+
+Thu Nov 26 20:14:18 1992 Brian Fox (bfox@cubit)
+
+ * info/m-x.c: New file implements reading named commands in the echo
+ area, along with a new function "info-set-screen-height".
+ Compilation of this file and some code in others controlled by the
+ Makefile variable NAMED_COMMANDS (set to -DNAMED_COMMANDS).
+
+ * info/window.c (window_new_screen_size) Rewrite from scratch, allowing
+ clean growth and shrinkage of the screen. New variable
+ window_deletion_notifier is a pointer to a function to call when
+ the screen changes size, and some windows have to get deleted.
+ The function is called with the window to be deleted as an
+ argument, and it should clean up dangling references to that
+ window.
+
+ * info/session.c (initialize_info_session): Set
+ window_deletion_function to forget_window_and_nodes.
+
+ * info/display.c (display_update_one_window): If the first row of the
+ window to display wouldn't appear in the_screen, don't try to
+ display it. This happens when the screen has been made
+ unreasonably small, and we attempt to display the echo area.
+
+Tue Nov 24 00:47:20 1992 Brian Fox (bfox@cubit)
+
+ * Release Info 2.2.
+
+ * info/session.c: New functions implement reading typeahead and
+ implement C-g flushing typed ahead characters.
+ (info_search_internal): allows C-g to exit multi-file searches.
+
+Mon Nov 23 01:53:35 1992 Brian Fox (bfox@cubit)
+
+ * info/nodes.c: Remove calls to sscanf (), replacing them with calls to
+ atol (), since that is much faster.
+ (get_nodes_of_tags_table) Only check for "(Indirect)" if we
+ haven't parsed any nodes out of the tags table. Increase the
+ amount that file_buffer->nodes grows to 100 from 50. These two
+ together sufficiently speed up the parsing process.
+
+ * info/nodes.c: info_get_node_of_file_buffer_tags (),
+ info_get_node_of_file_buffer_nodes (): Search the appropriate list
+ and return a node. This was simply a cut and paste edit to
+ functionalize the code.
+
+ * info/TODO: Remove suggestion for partial tag parsing, since tag
+ parsing is much faster now.
+
+Sat Nov 21 02:48:23 1992 Brian Fox (bfox@cubit)
+
+ * info/makedoc.c: New File replaces makedoc.sh shell script.
+
+ * info/infomap.c: Install info_isearch (on C-s) and
+ info_reverse_isearch (on C-r) for Info windows.
+
+ * info/session.c (incremental_search, info_isearch,
+ info_reverse_isearch) New functions implement incremental
+ searching.
+
+Fri Nov 20 00:01:35 1992 Brian Fox (bfox@cubit)
+
+ * info/terminal.c (terminal_initialize_terminal): Declare and set up
+ `ospeed'. Turn off C-s and C-q processing.
+
+ * info/session.c (info_show_point) When this function is called, the
+ desired result is to show the point immediately. So now it calls
+ set_window_pagetop () if the new pagetop is not the same as the
+ old one. This means that info_prev_line (), info_next_line (),
+ info_forward_word (), and info_backward_word () can all scroll the
+ window if they have to.
+
+Thu Nov 19 12:27:07 1992 Brian Fox (bfox@cubit)
+
+ * info/session.c (set_window_pagetop): Add scrolling to make this
+ faster.
+
+ * info/echo_area.c (push/pop_echo_area): Remember the list of items to
+ complete over.
+
+ * info/session.c (info_forward_char): Don't let point get equal to
+ nodelen, only to nodelen - 1.
+
+ * info/display.c: New function display_scroll_display () scrolls the
+ rmembered display as well as the text on the actual display.
+
+ * info/terminal.c: New functions terminal_scroll_terminal (),
+ terminal_scroll_down (), and terminal_scroll_up (). All
+ implemented using "al" and "dl" termcap capabilities. (i.e.,
+ insert and delete line).
+
+Wed Nov 18 15:05:14 1992 Brian Fox (bfox@cubit)
+
+ * info/termdep.h: Only define HAVE_FCNTL_H if !aix and !ultrix.
+
+Tue Nov 17 20:35:08 1992 Brian Fox (bfox@cubit)
+
+ * First Beta Release of Info 2.0.
+
+Sun Nov 1 02:21:05 1992 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * util/texi2dvi (--force): Option removed. Always run tex at least
+ once, don't bother checking if .dvi file is newer than source.
+
+Fri Oct 30 02:16:28 1992 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * util/texi2dvi (-D): debugging option renamed from '-d'.
+ Made check to enable debugging more terse.
+ When checking if index files have changed, use
+ variable $this_file instead of $file in for loop.
+ (file_texi): wherever the variable $file was used to reference
+ the texinfo file, substituted $file_texi.
+
+Sat Oct 17 07:30:34 1992 Brian J. Fox (bfox@helios)
+
+ * util/texindex.c: Remove references to USG replacing them with a
+ define declaring the actual feature required or missing.
+
+Thu Oct 15 16:17:47 1992 Robert J. Chassell (bob@nutrimat.gnu.ai.mit.edu)
+
+ * emacs/texinfmt.el (texinfo-format-setfilename): Remove date from
+ Info file header so regression testing is easier.
+
+Tue Sep 15 16:28:35 1992 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfmt.el (texinfmt-version): New variable.
+ (texinfo-format-setfilename): Include date and
+ version in Info file header.
+ Better documentation for @definfoenclose
+ Handle whitespace after @end iftex, etc.
+
+Thu Sep 3 09:25:37 1992 Robert J. Chassell (bob at grackle)
+
+ * emacs/texnfo-upd.el: Fix typo re `texinfo-sequential-node-update.'
+
+Tue Aug 18 08:56:24 1992 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfmt.el (texinfo-value): Revise syntax.
+
+ * emacs/texnfo-upd.el (texinfo-start-menu-description):
+ New function to insert title as description in a menu.
+ (texinfo-make-menu-list): Remove automatic title insertion.
+
+ * emacs/texinfo.el (texinfo-mode-map): Add keybinding for
+ texinfo-start-menu-description.
+
+Wed Jul 29 11:58:53 1992 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfmt.el (texinfo-set): Revise to set a string to the flag.
+ (texinfo-value): @value{flag}: New command which inserts the
+ string to which the flag is set.
+
+Tue Jul 7 15:10:52 1992 Robert J. Chassell (bob at grackle)
+
+ * emacs/texnfo-upd.el (texinfo-master-menu): Error message if file
+ contains too few nodes for a master menu.
+ (texinfo-insert-master-menu-list): Only attempt to insert detailed
+ master menu if there is one.
+
+Wed Jun 10 15:26:18 1992 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfmt.el (texinfo-append-refill): Refill properly when lines
+ begin with within-paragraph @-commands.
+
+Tue Jun 9 12:28:11 1992 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfmt.el: Add `texinfo-deffn-formatting-property' and
+ `texinfo-defun-indexing-property' to @deffn commands.
+
+Mon Jun 8 11:52:01 1992 Robert J. Chassell (bob at grackle)
+
+ * emacs/texnfo-upd.el: Replace `(mark-whole-buffer)' with
+ `(push-mark (point-max) t) (goto-char (point-min))'
+ to avoid `Mark set' messages.
+
+Fri Jun 5 15:15:16 1992 Robert J. Chassell (bob@kropotkin.gnu.ai.mit.edu)
+
+ * emacs/texnfo-upd.el (texinfo-check-for-node-name): Offer section
+ title as prompt.
+ (texinfo-copy-next-section-title): Copy title correctly.
+
+Thu May 28 20:34:17 1992 Robert J. Chassell (bob@hill.gnu.ai.mit.edu)
+
+ * emacs/texinfmt.el: @vtable defined, parallel to @ftable, for
+ variables.
+ (texinfo-append-refill): set case-fold-search nil so @TeX is not
+ confused with @tex.
+
+Thu Mar 26 21:36:41 1992 Robert J. Chassell (bob@kropotkin.gnu.ai.mit.edu)
+
+ * emacs/makeinfo.el: Rename temp buffer from `*Makeinfo*' back to
+ `*compilation*' so `next-error' works; unfortunately,
+ `*compilation*' is written into the code as the name
+ `next-error' needs.
+ Rename `makeinfo-recenter-makeinfo-buffer' back to
+ `makeinfo-recenter-makeinfo-buffer'
+
+Thu May 14 21:14:25 1992 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * util/fixfonts: Enclosed most variable references with "" to prevent
+ potential globbing and other weirdness. Eliminated uses of
+ ${var-value}, which unfortunately isn't portable.
+
+ * util/texi2dvi: rewritten from scratch.
+
+Sat Apr 18 23:46:25 1992 Charles Hannum (mycroft@hal.gnu.ai.mit.edu)
+
+ * util/fixfonts: Re-evaluate prefix and libdir if inherited (to resolve
+ variable references from make).
+ (texlibdir): Don't add '/tex', since it's already there.
+
+Fri Apr 10 14:51:23 1992 Noah Friedman (friedman@prep.ai.mit.edu)
+
+ * util/fixfonts: set prefix and libdir only if they are not already
+ defined (i.e. not inherited from the environment).
+ Changed default path for libdir to be consistent with Makefile.
+
+Tue Mar 3 13:17:42 1992 Robert J. Chassell (bob at grackle)
+
+ * emacs/texnfo-upd.el (texinfo-insert-master-menu-list): Insert a
+ master menu only after `Top' node and before next node.
+ (texinfo-copy-menu): Error message if menu empty.
+
+Mon Feb 24 15:47:49 1992 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfmt.el (texinfo-format-region): Make sure region ends in a
+ newline.
+ (texinfo-itemize-item): Recognize all non-whitespace on same line
+ as @item command.
+
+Sat Feb 22 02:15:00 1992 Brian Fox (bfox at gnuwest.fsf.org)
+
+ * util/texindex.c: New version 1.45 has cleanups, should compile under
+ VMS quietly.
+
+Wed Feb 12 10:50:51 1992 Robert J. Chassell (bob at grackle)
+
+ * emacs/makeinfo.el: Rename temp buffer as *Makeinfo*.
+ Rename `makeinfo-recenter-compilation-buffer'.
+ (makeinfo-buffer): Offer to save buffer if it is modified.
+ (makeinfo-compile): Do not offer to save other buffers.
+ (makeinfo-compilation-sentinel): Switch to Info file.
+
+Tue Feb 4 13:07:39 1992 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfmt.el (texinfo-print-index): Format so that node names in
+ the index are lined up.
+
+Mon Feb 3 09:08:14 1992 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfmt.el (texinfo-itemize-item): Format entry when text
+ is on the same line as @item command. Also, handle @-commands.
+ (texinfo-format-region, texinfo-format-buffer-1): Set fill column
+ to local value of Texinfo buffer.
+
+ * emacs/texnfo-upd.el (texinfo-pointer-name): Find only those
+ section commands that are accompanied by `@node' lines.
+
+Tue Jan 14 16:10:16 1992 Robert J. Chassell (bob at grackle)
+
+ * emacs/texnfo-upd.el: Ensure that no commands depend on the value of
+ case-fold-search.
+
+Fri Jan 10 15:13:55 1992 Robert J. Chassell (bob at kropotkin)
+
+ * emacs/texinfmt.el (texinfo-append-refill): Replace use of
+ unsupported function `looking-at-backward' with
+ `re-search-backward'.
+
+Mon Dec 23 23:46:42 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * util/texindex.c: Change POSIX ifdefs to HAVE_UNISTD_H and
+ _POSIX_VERSION.
+
+Mon Dec 16 15:01:36 1991 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfmt.el (texinfo-append-refill): New function appends
+ @refill to all appropriate paragraphs so you no longer need to
+ append @refill command yourself.
+ (texinfo-format-region, texinfo-format-buffer-1,
+ texinfo-format-include): Call `texinfo-append-refill'.
+
+Fri Dec 6 01:25:09 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * util/texindex.c: Conditionalize on _AIX (which is predefined) instead
+ of AIX, just like makeinfo does.
+
+Tue Nov 26 10:21:04 1991 Robert J. Chassell (bob at grackle)
+
+ * emacs/texnfo-upd.el (texinfo-section-types-regexp): `@subtitle' no
+ longer treated as subsection.
+
+Sat Nov 16 08:27:42 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * util/fixfonts: New file, from Karl Berry.
+
+Tue Nov 12 16:13:24 1991 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfmt.el: Create @end smalllisp.
+
+Mon Nov 11 16:50:13 1991 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfo.el (texinfo-environment-regexp): Add all other block
+ enclosing Texinfo commands.
+
+Thu Nov 7 10:23:51 1991 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfo.el (texinfo-insert-@end): Attempt to insert correct end
+ command statement, eg, @end table. Fails with nested lists.
+ (texinfo-insert-*): Accept prefix arg to surround following N
+ words with braces for command.
+
+Thu Oct 31 21:31:41 1991 Robert J. Chassell (bob at kropotki)
+
+ * emacs/texinfmt.el (texinfo-clear): Clear flag even if flag not
+ previously set.
+
+Wed Oct 23 11:15:58 1991 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfo.el (texinfo-mode): page-delimiter now finds top node as
+ well as chapters.
+
+Tue Oct 22 11:46:12 1991 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfmt.el (texinfo-do-flushright): Test whether a line is too
+ long for the flush right command (line length must be less than
+ the value of fill column).
+
+ * emacs/texnfo-tex.el (texinfo-tex-buffer): Prompt for original file
+ even if point moved to *texinfo-tex-shell*.
+ texinfo-tex-original-file: variable to hold file name.
+
+Wed Oct 16 08:32:05 1991 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfmt.el (texinfo-format-center): Expand string before
+ centering so @-commands not included.
+
+Thu Oct 10 22:01:47 1991 Robert J. Chassell (bob at kropotki)
+
+ * emacs/texnfo-tex.el (texinfo-show-tex-print-queue): Do not kill a
+ running process; do start a process none exists.
+
+Thu Sep 26 21:58:47 1991 Robert J. Chassell (bob at kropotki)
+
+ * util/texi2dvi: Misc. bugs fixed.
+
+ * emacs/texinfo.el: Remove extraneous references to TeX.
+
+Thu Sep 19 20:45:29 1991 Robert J. Chassell (bob at kropotki)
+
+ * emacs/texinfmt.el: add @cartouche as a noop (makes box with rounded
+ corners in TeX)
+
+Tue Sep 10 20:44:57 1991 Robert J. Chassell (bob at grackle)
+
+ * emacs/texnfo-upd.el (texinfo-make-one-menu): Copy node-name correctly
+ for message.
+
+Thu Aug 29 17:54:07 1991 Robert J. Chassell (bob at kropotki)
+
+ * emacs/texnfo-tex.el (texinfo-quit-tex-job): Do not set mark.
+
+Wed Aug 21 10:36:21 1991 Robert J. Chassell (bob at grackle)
+
+ * emacs/texnfo-upd.el: (texinfo-copy-menu-title): Copy title as it
+ should rather than node line.
+
+Mon Aug 5 15:27:12 1991 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfmt.el (texinfo-format-convert): Changed regexp that
+ looks for three hyphens in a row to find those between word
+ constituent characters, as now, for Oxford Univ. style dashes and
+ also between spaces, for Cambridge Univ. Press style dashes.
+
+ * emacs/texnfo-tex.el (texinfo-tex-start-shell): Runs "/bin/sh" so
+ `explicit-shell-file-name' is not set globally.
+
+ * emacs/texnfo-upd.el: Rewrite messages.
+ (texinfo-find-higher-level-node): Stop search at limit.
+ (texinfo-copy-menu-title): Rewrite to handle outer include files.
+ (texinfo-multi-file-update): Update all nodes properly;
+ rewrite doc string and interactive.
+
+Sat Aug 3 10:46:13 1991 Robert J. Chassell (bob at grackle)
+
+ * emacs/texnfo-upd.el (texinfo-all-menus-update): Fixed typo that
+ caused the function to create a master menu when it shouldn't.
+
+ * emacs/texinfo.el (texinfo-mode): Make `indent-tabs-mode' a local
+ variable and set to nil to prevent TABs troubles with TeX.
+
+Wed Jul 31 11:07:08 1991 Robert J. Chassell (bob at grackle)
+
+ * emacs/texnfo-tex.el (texinfo-quit-tex-job): New function: quit
+ currently running TeX job, by sending an `x' to it.
+ (texinfo-tex-shell-sentinel): New function to
+ restart texinfo-tex-shell after it is killed.
+ (texinfo-kill-tex-job): Rewrite to use kill-process rather than
+ quit-process; uses `texinfo-tex-shell-sentinel' to restart
+ texinfo-tex-shell after it is killed.
+ (texinfo-tex-region, texinfo-tex-buffer): Replace
+ texinfo-kill-tex-job with quit-process.
+
+ * emacs/texinfo.el (texinfo-define-common-keys): Add keybinding for
+ texinfo-quit-tex-job
+
+Wed Jul 10 15:15:03 1991 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfmt.el: New commands @set, @clear, @ifset...@end
+ ifset, and @ifclear...@end ifclear.
+ Definition functions rewritten to make them easier to
+ maintain.
+
+Wed Jul 3 19:37:04 1991 Robert J. Chassell (bob at kropotki)
+
+ * emacs/texinfmt.el (texinfo-format-deftypefn-index): Remove reference
+ to data-type to make consistent with texinfo.tex and makeinfo.
+ texinfo.el: Fix page-delimiter and texinfo-chapter-level-regexp
+ variables.
+
+Thu Jun 27 18:35:36 1991 Robert J. Chassell (bob at nutrimat)
+
+ * emacs/texinfmt.el: Add @dmn as `texinfo-format-noop'.
+ texinfo2.texi: Document @dmn.
+ texinfmt.el (texinfo{,-end}-{eleterate,ecapitate} renamed
+ {alphaenumerate, capsenumerate}.
+
+Fri Jun 14 12:46:32 1991 Robert J. Chassell (bob at churchy.gnu.ai.mit.edu)
+
+ * emacs/texinfmt.el (texinfo-format-defun-1): @defivar prints name
+ correctly.
+
+Thu Jun 6 21:38:33 1991 Robert J. Chassell (bob at churchy.gnu.ai.mit.edu)
+
+ * emacs/texinfo.el (texinfo-mode): Set page delimiter to
+ 'texinfo-chapter-level-regexp' so that page commands work by
+ chapter or equivalent.
+
+ * emacs/texinfmt.el (texinfo-format-defun-1): @defop prints name
+ correctly.
+ (batch-texinfo-format): replace unsupported
+ 'buffer-disable-undo' with 'buffer-flush-undo'
+
+Fri Apr 5 15:17:17 1991 Robert J. Chassell (bob at wookumz.gnu.ai.mit.edu)
+
+ * emacs/makeinfo.el (makeinfo-compilation-sentinel): Check for
+ existance of makeinfo-temp-file to avoid harmless error message.
+ texinfo2.texi: Minor typos fixed.
+
+Thu Mar 28 19:13:24 1991 Robert J. Chassell (bob at pogo.gnu.ai.mit.edu)
+
+ * util/texi2dvi: Revised.
+
+Mon Mar 11 12:35:51 1991 Robert J. Chassell (bob at grackle)
+
+ * emacs/texinfmt.el: (@footnotestyle): New command to set
+ footnotestyle.
+ (@paragraphindent): New command to set indentation.
+ (texinfo-format-refill): Add indentation feature so as to
+ indent paragraph or leave indentation asis before refilling
+ according to value set by @paragraphindent command.
+ (texinfo-format-region): Insert header, if any, into Info buffer.
+ (texinfo-format-separate-node, texinfo-format-end-node): Run
+ texinfo-format-scan on footnote text only once.
+ (texinfo-format-scan): Shorten `---' to `--'.
+
+ * emacs/texinfo.el: Define key for `texinfo-master-menu'; define
+ start and end of header expressions.
+
+ * emacs/texnfo-upd.el (texinfo-all-menus-update): Update
+ pre-existing master menu, if there is one.
+
+Fri May 11 14:36:07 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * util/texindex.c: Rename `lines' to `nlines'.
+ (bzero): Pass arg to lib$movc5 through non-register var.
+ (perror_with_file, pfatal_with_file): Move extern decls and includes
+ to top of file.
+ [VMS]: If not using VMS C, define away `noshare' keyword.
+ Include perror.h.
+
+Mon Jul 11 18:02:29 1988 Chris Hanson (cph at kleph)
+
+ * util/texindex.c (indexify): when comparing to initial strings to
+ decide whether to change the header, must use `strncmp' to avoid
+ comparing entire strings of which initials are a substring.
+
+Sun Jun 26 18:46:16 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * util/texindex.c (sort_in_core, sort_offline, parsefile):
+ Give up on input file if any line doesn't start with backslash.
+
+/* changelog for texinfo.tex before 19jun01. */
+
+2001-05-24 <karl@gnu.org>
+
+ * texinfo.tex (\smallbreak, \medbreak, \bigbreak): add check for
+ \ifnum\lastpenalty to plain tex definitions, so that we won't
+ insert space right after a section title.
+ (\aboveenvbreak): similar check of \lastpenalty.
+
+2001-05-21 <karl@gnu.org>
+
+ * texinfo.tex (\pdfurl): \let\value=\expandablevalue, so at least
+ some cases can be properly handled.
+
+2001-03-28 <karl@gnu.org>
+
+ * texinfo.tex: Copyright.
+
+ * texinfo.tex (\pdfmkdest): remove trailing @ in target names;
+ suggestion from: Reiner Schlotte <R.Schlotte@science-computing.de>.
+ (\imagexxx): call \normalturnoffactive so _ (among others) will be
+ allowed in filenames; report from arnold@skeeve.com.
+
+2001-02-02 <karl@gnu.org>
+
+ * texinfo.tex (\secondary): handle pdf case.
+ (\dosubind): secondary index entry not written as separate arg for
+ texindex.
+ From: Trevin Beattie <trevin@eyring.com>
+ Date: Tue, 21 Mar 2000 13:04:06 -0700
+
+2001-01-12 <karl@gnu.org>
+
+ * texinfo.tex (\dopdfimage): different syntax for filename
+ inclusion (foo vs {foo}). From: <Kurt.Hornik@ci.tuwien.ac.at>,
+ 22dec99.
+
+2001-01-08 <karl@gnu.org>
+
+ * texinfo.tex (\afivepaper): new command from Jose Romildo
+ Malaquias <romildo@urano.iceb.ufop.br>.
+
+2000-12-12 <karl@gnu.org>
+
+ * texinfo.tex: oops, had outside page reversed.
+
+2000-12-11 <karl@gnu.org>
+
+ * texinfo.tex (\inmargin): allow lefttext and righttext as args.
+
+2000-11-10 <karl@gnu.org>
+
+ * texinfo.tex: implementation of new commands @verbatim, @verb,
+ and @verbatiminclude from janneke@gnu.org.
+
+2000-11-09 <karl@gnu.org>
+
+ * texinfo.tex (\inmargin): rewrite to allow for placing the
+ material either in the right or left margin.
+
+2000-10-27 <karl@gnu.org>
+
+ * texinfo.tex (\dosynindex): new macro subroutine, do not
+ \closeout twice the index being redirected.
+ (\synindex, \syncodeindex): call it.
+
+2000-10-18 <karl@gnu.org>
+
+ * texinfo.tex (\inmargin): rewrite to allow argument to be vmode
+ material, such as a box from an image.
+
+2000-09-06 <karl@gnu.org>
+
+ * texinfo.tex (\doublecolumnout): must subtract \ht\partialpage
+ here, not in \begindoublecolumns. Otherwise the \partialpage on
+ the first page of double columns affects every subsequent page,
+ e.g., if @setchapternewpage off. Reported by Aharon Robbins
+ <arnold@skeeve.com> for standards.texi.
+
+2000-05-28 <karl@gnu.org>
+
+ * texinfo.tex (\linkcolor): replace Cyan with Blue.
+ (\output): do \pdfmkdest at top.
+ (\pdfmakeoutlines): set \_ to \normalunderscore.
+ From: Trevin Beattie <trevin@eyring.com>.
+
+2000-05-27 <karl@gnu.org>
+
+ * texinfo.tex (\today): only define if undefined.
+ From: Stepan Kasal <kasal@suse.cz>.
+
+2000-05-16 <karl@gnu.org>
+
+ * texinfo.tex (\deftypeivarheader): need defheaderxcond. From:
+ Marcel van der Boom <marcel@hsdev.com>.
+
+1999-10-01 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\afourwide): had hsize and vsize reversed.
+ From: Pascal Obry <pascal_obry@csi.com>
+
+1999-09-25 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\alias): fix from Andreas.
+
+1999-09-19 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\key): rename the \smallrm and \smallsy here.
+
+ * texinfo.tex (\indexfonts): rename to \smallfonts, along with
+ \indrm, etc.
+ Define all the fonts, too.
+ (\footnotezzz): use \smallfonts.
+
+ * texinfo.tex (\needx): get better leading; do nothing if @need
+ value is less than one linespace. From Arnold.
+ (\douref, \xrefX, \doemail [pdf]): make spaces normal again, so our
+ \ignorespaces commands are effective even in an @display.
+
+ * texinfo.tex (\finishtitlepage): remove FINISH TITLE debugging
+ message.
+
+ * texinfo.tex (\anchor): rewrite to always \ignorespaces.
+ Bug from esken.
+
+ * texinfo.tex (\indexnofonts): dummy up \acronym.
+ From: Thomas Esken <esken@nmlab.informatik.fh-dortmund.de>
+
+1999-09-06 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\texinfoversion): update.
+
+ * texinfo.tex: Avoid multiparagraph cells losing linespace between
+ paragraphs. From: Andreas Schwab <schwab@suse.de>.
+ Bug from: Lalo Martins <lalo@webcom.com>.
+
+1999-08-19 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\shortchaplabel): move computation of width of
+ "Appendix" inside, in case it's been changed by a language.
+
+Mon Aug 9 16:31:55 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex: pdf updates from Han.
+
+Fri Aug 6 13:48:22 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\charcode): remove unused counter.
+ From: Akira KAKUTO <kakuto@fsci.fuk.kindai.ac.jp>.
+
+Thu Jul 22 19:08:19 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex: Update from Han.
+
+Tue Jul 20 17:13:16 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex: More pdf improvements from Han.
+
+Mon Jul 19 16:33:31 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex: Better pdf support from: Han The Thanh
+ <thanh@informatics.muni.cz>.
+
+Sun Jul 18 14:21:03 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex: pdfimage takes braces.
+
+Tue Jul 6 19:40:14 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\deftypeop): New command.
+
+Mon Jul 5 17:17:33 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\contents): call \pdfmakeoutlines here instead of
+ inline (!).
+ (\pdfmakeoutlines): call \indexnofonts instead of making a separate
+ attempt at it.
+
+Tue May 25 06:16:06 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (time-stamp-format): use %02H.
+
+ * texinfo.tex: Had PDF and DVI transposed.
+
+Sun Apr 25 15:30:00 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\appendixletter): restore \the, necessary for .toc.
+
+Thu Apr 22 19:22:12 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\emergencystretch): Increase to .15\hsize.
+
+Tue Apr 20 05:11:04 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\defunargs): use \tensl\hyphenchar\font to work
+ better with Gildea's PostScript version.
+
+ * texinfo.tex (\tab): Change back to just &.
+ From: Nathan Sidwell <nathan@acm.org>.
+
+ * texinfo.tex: No \fi.
+
+Mon Apr 19 17:38:54 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\pdflink) [!\ifpdf]: define to ignore arg.
+
+ * texinfo.tex: Add pdf support. Merge from: Kurt Hornik
+ <Kurt.Hornik@ci.tuwien.ac.at>.
+
+Wed Mar 31 13:24:16 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\defopheader): missing word space before `on'.
+ Report from: Chris Hanson <cph@martigny.ai.mit.edu>.
+
+Fri Mar 26 17:00:41 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\imagexxx): Equalize space above and below if in
+ vmode. From rms.
+
+Thu Mar 25 20:00:00 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\deftypeivar): new command.
+
+Tue Mar 23 17:53:37 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (&): be sure active & is defined for @deftypefn
+ operator&.
+ Report from: Nathan Sidwell <nathan@acm.org>.
+
+Sat Mar 20 12:31:53 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\exampleindent): new command. From Yoshiki.
+
+ * texinfo.tex: Changes from Andreas to use \sl\$ inside italics
+ and to avoid extra spaces around @anchor.
+
+ * texinfo.tex (\image, \imagexx): move pdf test to imagexxx for
+ correct filename parsing.
+
+Mon Mar 15 16:51:20 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\imagexxx): reset catcode ^^M in case we're inside
+ in an example. Report from kama.
+
+ * texinfo.tex (\putwordin): new macro for word `in'.
+ (\xrefX): use it.
+ Report from: "Alexey A. Nikiforov" <A.A.Nikiforov@inp.nsk.su>
+
+Sun Feb 21 16:47:28 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex: Expand tabs.
+
+Sun Feb 14 16:02:29 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\paragraphindent): implement.
+ Suggestion from: Paul DuBois <dubois@primate.wisc.edu>.
+
+Tue Feb 9 07:25:07 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\alias): use def rather than \let.
+ Change timestamp format to include hours.
+
+ * texinfo.tex: New commands @alias and @definfoenclose.
+ From: "Eric S. Raymond" <esr@snark.thyrsus.com>.
+
+Mon Feb 8 14:46:56 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\scanmacro): Use \endinput to avoid spurious space,
+ and various other space fixes. From: Andreas Schwab
+ <schwab@ls5.informatik.uni-dortmund.de>.
+
+Thu Feb 4 15:24:40 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\uref): implement optional third arg.
+
+ * texinfo.tex (\dosubind): Include index entry in third arg to
+ \entry instead of writing as bogus fourth arg.
+ Report from: kama@hippo.fido.de (Karl Heinz Marbaise).
+
+ * texinfo.tex (\setemergencystretch): Increase somewhat.
+
+ * texinfo.tex (\putwordof): rename from \putwordOf.
+ * texinfo.tex (defivarhead, \defcvarheader): Use \putwordof.
+
+Tue Feb 2 16:57:00 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\documentlanguage, \documentencoding): new
+ commands. \documentlanguage based on an implementation by kama.
+
+Sat Jan 30 17:23:45 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\putwordMMai): Should be MMay. From Trond.
+
+Fri Jan 29 17:52:16 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex: Fix @macro expansion inside @section. Patch from
+ Andreas:
+
+ From: Andreas Schwab <schwab@ls5.informatik.uni-dortmund.de>
+
+ The general idea is to construct a list a all defined macros in
+ the form \do\macro1\do\macro2..., then temporarily define
+ \do to something appropriate and execute the list to do
+ whatever is needed. Here is a patch, and i have also
+ fixed a few other bugs that i found while browsing through
+ the @macro implementation. Additionally i have added a
+ check to prevent the user from doing silly things like
+ @macro shipout.
+
+Sun Jan 24 09:59:42 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\obstexwarn): Don't use *** in message, it
+ interferes with make output parsing.
+
+Thu Jan 21 15:45:20 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex: Internationalization improvements from kama.
+
+Wed Jan 20 17:12:52 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\contents, \shortcontents): Run \contentspagealignmacro.
+ From: Trond Endrestol <trond@agamemnon.gtf.ol.no>
+
+Thu Jan 14 16:53:43 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\begindoublecolumns): Ship out \partialpage
+ immediately if it is nonvoid, instead of saving it. This avoids a
+ bug where the index could end up printing one line per page (see
+ the indexspread.tex test).
+ From: Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * texinfo.tex (\image): If running pdftex, do \pdfimage{imagefile.pdf}.
+ From: Samuel Tardieu <sam@inf.enst.fr>
+
+ Also, update copyright year.
+
+Tue Jan 5 17:50:45 1999 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\enddoublecolumns): Move \pagegoal reset to after
+ the \endgroup so we get the restored single-column \vsize
+ as intended.
+
+Sun Dec 20 17:57:22 1998 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\indexdummies): Set \{ and \} to \mylbrace and
+ \mybrace to avoid braces in the index file, which
+ texindex can't handle.
+
+Sat Dec 19 18:13:16 1998 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\pickupwholefraction): Ignore whole-number part.
+ (\setuptable): Always pass whole-number part and decimal point. This
+ allows leading zeroes.
+ Suggestion from: Ben Bullock <ben@hayamasa.demon.co.uk>.
+ Date: Fri, 21 Aug 1998 14:06:50 +0100 (BST)
+
+Tue Dec 15 16:38:07 1998 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\indexdummies): set \{ and \} to \lbracecmd and
+ \rbracecmd to avoid lossage if @tex is active during \shipout.
+ Report from: "Peter Kabal" <Kabal@ece.mcgill.ca>.
+
+Sun Dec 6 17:11:17 1998 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex: Doc fix.
+
+1998-11-11 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * doc/texinfo.tex (\onepageout): Put the cropmarks in vboxes of
+ zero height so that they don't contribute space themselves.
+ Compensate for \topandbottommargin.
+ (\internalpagesizes): Advance \outervsize by 2\topandbottommargin,
+ not only 0.6in.
+
+Fri Nov 6 17:27:57 1998 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex: Use standard time-stamp.el package instead of
+ update-date.el.
+
+Sat Oct 31 19:23:02 1998 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\indexnofonts,\indexdummies): add \url and \uref to
+ list.
+
+Fri Oct 30 08:16:23 1998 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (\expandablevalue): Delete spurious `v' character.
+
+Tue Oct 27 11:18:40 1998 Karl Berry <karl@gnu.org>
+
+ * texinfo.tex (@env, @command, @option): Must disable for index
+ and xref commands. Also, \input plain if necessary before
+ using {} in the version number.
+
+Wed Sep 30 11:40:36 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex: Use date as version number instead of RCS, and
+ update-date to update it.
+
+Thu Sep 17 13:22:44 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex: Fix @macro expansion of @code with _ in the
+ argument.
+ From: Zack Weinberg <zack@rabi.columbia.edu>.
+
+Fri Aug 28 10:30:29 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\itemzzz): take \itemmargin into account when
+ unhboxing. Reported by Bob.
+
+Fri Aug 14 16:56:58 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex: Change @defun environments so that right margin is
+ not changed, and instead the defun type label is outdented
+ into the margin.
+
+Thu Aug 13 13:31:41 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\smartslanted): define this separately from
+ \smartitalic.
+ (\emph, \i): use \smartitalic for true italics.
+
+Mon Aug 10 11:51:13 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\value): handle active _ or - in argument (happens
+ if called from @code).
+ Report from: Dave Love <d.love@dl.ac.uk>.
+
+Sun Jul 19 09:49:23 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\dosubind): Don't do \vskip to preserve \lastskip
+ unless we are in vertical mode. Otherwise we might end a
+ paragraph prematurely, and \folio won't get expanded by
+ \output.
+ Report from: "Richard E. Stone" <res@rstone.mn.org>
+
+Thu Jul 16 15:33:37 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex: Keep track of how negative the page numbers have
+ gotten:
+ (\lastnegativepageno): New \count register.
+ (\startcontents): Use it.
+ (\contents, \summarycontents): set it.
+
+Mon Jul 13 16:58:11 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\imagexxx): Add some space around the image if it's
+ by itself.
+
+1998-07-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * texinfo.tex (chapterzzz): Put a space before the chapter number
+ in the message.
+ (appendixzzz): Use \putwordAppendix in the message.
+
+Thu Jul 9 08:39:53 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\macro): Globalize assignments since it's done
+ inside a group. From Zack.
+
+Mon Jul 6 17:21:25 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\comment): Speed up.
+ (\loggingall): Turn on eTeX's extended tracing.
+ More macro fixes.
+ Date: Sat, 04 Jul 1998 14:51:49 -0400
+ From: Zack Weinberg <zack@rabi.phys.columbia.edu>
+
+Thu Jul 2 10:20:32 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\contents, \summarycontents, \startcontents): Use
+ roman numerals for toc, arabic outside, even when toc is
+ at the beginning.
+
+Mon Jun 29 10:05:28 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\anchor): New command @anchor.
+ (\xrefX): Avoid double space when xref to an @anchor or an @unnumbered.
+
+ * texinfo.tex (\itemzzz): Use kerns and \unhbox when item text
+ fits in the space, so footnotes can work.
+
+ * texinfo.tex (\setref): Take additional argument for the -snt
+ xref. Call \indexdummies.
+ (\donoderef, \appendixnoderef, \unnumbnoderef): Change \setref calls.
+
+Sat Jun 27 19:16:34 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\contents, \summarycontents): Must not be \outer.
+
+Fri Jun 26 16:15:14 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\writetocentry): New macro.
+ (\chapternofonts): No longer needed.
+ (\chapter, ..., \unnumberedsubsubsec): Change all the sectioning
+ commands to call \writetocentry instead of doing it inline.
+ Also, do not call \chapternofonts, we avoid expansion with
+ \the\toks instead.
+ (\opencontents): No longer needed, instead \writetocentry opens
+ the file when necessary.
+ (\setfilename): Don't call \opencontents.
+ (\ifsetcontentsaftertitlepage, \ifsetshortcontentsaftertitlepage):
+ New conditionals.
+ (\Etitlepage): Call \contents and/or \shortcontents if
+ conditionals are set.
+
+ Global: use \nobreak instead of \penalty 10000 for epsilon efficiency.
+
+Thu Jun 25 08:29:32 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\option,\env,\command): New markup commands.
+ Suggested by arnold@gnu.org.
+
+ * texinfo.tex (\afourpaper): More reasonable margins.
+ From: Wilhelm Mueller <muewi@hb.senbvs43.uni-bremen.de>
+ Date: Thu, 25 Jun 1998 10:48:13 +0200 (MET DST)
+
+Wed Jun 24 17:46:43 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\acronym): New Texinfo command.
+
+Tue Jun 23 17:36:39 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\dots, \enddots): Missing \leavevmode.
+ Report from: Thomas Esken <esken@nmlab.informatik.fh-dortmund.de>
+ Date: Tue, 23 Jun 1998 14:22:27 +0200 (MET DST)
+
+Mon Jun 22 16:00:53 1998 Karl Berry <karl@north>
+
+ * texinfo.tex: Rewrite of index stuff to do better column breaking
+ and balancing.
+ The old code failed miserably when the index was just the wrong size,
+ e.g., the Autoconf manual with @afourpaper.
+ Bug report from: Wilhelm Mueller <muewi@hb.senbvs43.uni-bremen.de>
+ Date: Fri, 12 Jun 1998 16:34:49 +0200 (MET DST)
+ (\initial): Add more glue around the initial, and make it a
+ multiple of \baselineskip.
+ (\entry): Add glue before each entry so the columns can always be the
+ same height.
+ (\doublecolumnout): Available space no longer needs to handle
+ \partialpage specially.
+ (\pagesofar): Take \ht\partialpage into account with \vsize.
+ (\enddoublecolumns): Reset \output to avoid calling
+ \balancecolumns twice
+ (\balancecolumns): Format for readability.
+ (\initialskipamount): No longer needed, remove.
+
+ (\hbadness): Increase a bit, boxes that are a little underfull look ok.
+
+Sun Jun 21 16:48:38 1998 Karl Berry <karl@north>
+
+ * texinfo.tex (\ninettsl): cmsltt10 is not standard, so use
+ cmsltt10 scaled 900.
+ Date: Mon, 15 Jun 1998 12:35:41 +0200 (MET DST)
+ From: Werner Struckmann <struck@ips.cs.tu-bs.de>.
+
+Thu Jun 18 08:32:15 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex: @macro fixes from Zack Weinberg
+ <zack@rabi.phys.columbia.edu>.
+ - @ifblah did not work inside @macro
+ - spaces in parameter lists in macro definitions caused errors
+ - leading spaces in parameter lists in macro invocations were
+ preserved inappropriately.
+
+Wed Jun 10 16:50:53 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\smallformatx, \smalldisplayx): New macros.
+ (\smallbook): Arrange to use them.
+ (\display, \flushleft, etc.): Rewrite to avoid duplication.
+
+Sun Jun 7 18:13:45 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\pagesizes): Rename to \internalpagesizes.
+ (\custompaper): Rename to \pagesizes.
+
+Sat Jun 6 13:16:32 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex: Rewrite paper size definitions, add @custompaper.
+
+ * texinfo.tex: Fix for macros in arguments to other commands.
+ From Zack.
+
+Thu Jun 4 11:21:07 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex: Better @macro implementation.
+ From: Zack Weinberg <zack@rabi.phys.columbia.edu>.
+
+Tue May 26 17:43:21 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\imagexxx): Center image if it is not part of a
+ paragraph.
+
+Tue May 19 17:17:12 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex: \linkstrue by default.
+ Also, first implementation of @macro; can only handle some cases,
+ but that is better than nothing.
+ From: Zack Weinberg <zack@rabi.phys.columbia.edu>
+
+Thu May 14 17:32:47 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex: New command @novalidate along the lines of makeinfo
+ --no-validate.
+ Date: Sun, 26 Oct 1997 18:54:47 -0500
+ From: Zack Weinberg <zack@rabi.phys.columbia.edu>
+
+Tue May 12 16:19:35 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\valuexxx): Split up into expandable and
+ non-expandable parts.
+ (\expandablevalue): New macro.
+ (\indexdummies): \let\value = \expandable value.
+
+ * texinfo.tex: Doc fixes.
+
+ * texinfo.tex (\doind): Just call \dosubind with empty third arg.
+ (\dosubind): Replace with \doind definition and suitable code to handle
+ possible third arg. And propagate glue past the whatsit from the
+ \write so index entries don't cause extra space between
+ @defuns (for example).
+
+Wed May 6 12:51:27 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\deftypemethparsebody): Handle the extra arg in
+ @deftypemethodx, too.
+ (\deftypefunx): Error definition was misspelled as \deftypeunx.
+
+Fri May 1 17:31:58 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo/texinfo.tex (\putwordon, \putwordMethodon): New macros.
+ Use in \def... commands.
+ (\indexdummies): make `\ ' be just ` ' for sorting.
+ (\deftypemethparsebody): New macro.
+ (\defmethod): Call it.
+ Various doc fixes.
+ Repored by: KHMarbaise@p69.ks.fido.de (Karl Heinz Marbaise)
+ Date: Wed, 07 Jan 1998 10:19:42 +0100
+
+Fri Apr 10 16:54:48 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex: @cartouche: Align right side correctly.
+ From: dale.smith@bellhow.com (Dale Smith)
+ Date: Fri, 06 Mar 1998 14:47:02 GMT
+
+Sun Apr 5 17:19:03 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\dosetq): Use \normalturnoffactive instead of just
+ \turnoffactive, so \'s in node names are handled properly.
+ (\tie): Move definition to more rational position in the file.
+ (\@, \{, etc.): Use decimal numbers in all cases, to avoid use of '.
+ Paranoia only.
+ (\+): Turn off once and for all at the beginning, and define as
+ \tabalign in @tex.
+
+Tue Mar 31 19:33:31 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\synindex, \syncodeindex): \closeout the redirected
+ index.
+ From: Jakob Stoklund Olesen <stoklund@mi.aau.dk>
+
+ * texinfo.tex (\doignore): Ignore everything after `c', so @end
+ ifinfo and the like can be commented out.
+ (\macrocsname): New macro.
+ Reported by: "James A. Lupo" <lupoja@feynman.ml.wpafb.af.mil>
+
+Wed Feb 25 15:48:51 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\doprintindex): Change catcode of @ before \read,
+ in case of \initial{@} being the line that is read.
+ Reported by: Drew Csillag <drew_csillag@geocities.com>
+
+ * texinfo.tex (\dotable): Add \leftskip to \hsize in the first column.
+ Don't inherit \rightskip from surrounding environment.
+ Set \item to \crcr to avoid empty first row.
+ Prepend \parskip glue before table.
+ Set \everycr locally outside of alignment, don't reset it
+ explicitly in \Emultitable.
+ All from Andreas Schwab, to avoid overfull hboxes.
+
+ Also, work on leading commentary in file a bit.
+
+Tue Feb 24 17:48:29 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex: \!: Save and restore this for @tex.
+ From: Jean-Pierre Moreau <jpmoreau@ciframedical.com>
+ Date: Fri, 22 Aug 1997 16:47:36 -0400
+
+ * texinfo.tex (\angleleft, \angleright): New macros.
+ (\refx, \email, \key): Use them.
+ From: Stephen Gildea <gildea@intouchsys.com>
+ Date: Fri, 26 Dec 1997 11:43:32 EST
+
+Mon Feb 23 17:34:23 1998 Karl Berry <karl@cs.umb.edu>
+
+ 1997-08-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+ * doc/texinfo.tex (xrdef): Read the second argument with \
+ as an escape character.
+
+1998-01-22 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * texinfo.tex (\tocentry): Don't \turnoffactive before typesetting
+ the arguments, it causes special characters to be printed
+ incorrectly.
+
+Mon Jan 19 10:58:25 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texi2html: Correct version number, home page reference.
+
+Sat Jan 17 15:12:03 1998 Karl Berry <karl@cs.umb.edu>
+
+ * texi2html: Version 1.54. Handle @image better, etc.
+ * From: Bob Friesenhahn <bfriesen@simple.dallas.tx.us>.
+
+Wed Dec 24 13:59:07 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\dots, \enddots): Use current font instead of
+ always using math italic. From Stephen Gildea.
+
+Tue Dec 23 11:33:07 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex: Spurious xepsf.tex should be epsf.tex.
+
+Mon Oct 13 15:49:28 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\titlefont): Explicitly set \rm.
+
+Sat Jul 26 15:12:37 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\email): Let to \uref instead of \code, as a second
+ optional argument makes sense for this, too.
+
+Mon Jul 14 13:43:43 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\indexdummies): Add \value.
+
+Thu Jul 10 13:34:30 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\authorrm): Must use \def instead of \let, as
+ \secrm is not yet defined.
+
+1997-07-09 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
+
+ * texinfo.tex (\titlefont): Define again, using \titlefonts.
+
+Wed Jul 9 16:45:30 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\startcontents): Leave ^ catcode as other.
+
+Sat Jul 5 17:16:40 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\titlefonts): New macro to set title font styles,
+ so italic etc. work in @title.
+ (\titlefont): No longer needed.
+ (\titlepage): Call \titlefonts instead of \titlefont.
+ (\chapsf, \ssecsy, \ssecttsl): Correct magstep values.
+ From: Stephen Gildea <gildea@intouchsys.com>.
+
+ * texinfo.tex (\onepageout): Back up to 2\baselineskip per Stephen.
+ (\kbdinputstyle): New command.
+
+1997-04-03 00:07:28 1997 Richard Stallman <rms@gnu.ai.mit.edu>
+
+ * texinfo.tex (\kbdfont, \kbdexamplefont): New macros, parms that
+ tell @@kbd what to do.
+ (\setkbdinputdistinct, \setkbdinputexample): New commands set them.
+ (\kbd): Use those parms.
+
+Thu Jul 3 16:52:39 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\onepageout): Leave only one line space above the
+ footline, to be more like plain. Suggested by Stephen Gildea.
+ (\evenfootline): Left one too many line spaces here, so reduce by two.
+
+ (\ifnottex): Another ignore command.
+ (\ifnothtml,\ifnotinfo): New commands.
+ (\doignore): Ignore brace characters, so mismatched braces in ignored
+ text do not cause complaints.
+
+Fri Jun 27 15:09:16 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\image): New definition for new @image command.
+
+Wed Jun 18 15:58:20 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\oddfootingxxx),
+ (\onepageout): Leave space for the footline if present.
+ (\everyfootingxxx, \everyheadingxxx): Call \oddfootingxxx and
+ \evenfootingxxx instead of repeating their code. From: Stephen
+ Gildea <gildea@intouchsys.com>.
+
+ (\setfilename): Read texinfo.cnf if present.
+
+ (\indexdummies, \indexnofonts): No-op additional commands @result @equiv
+ @expansion @print @error @point. From: Dave Bodenstab
+ <imdave@ais.net> (for texi2www doc).
+
+Fri Jun 6 10:31:34 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\setmultitablespacing): Restore bad typing mistake
+ from yesterday.
+
+Thu Jun 5 18:04:26 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\uref): Write real definition, taking one mandatory
+ argument and one optional one.
+
+Wed Jun 4 17:16:09 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\mainmagstep): Define this as a \count variable
+ instead of with \let, to make changing to \magstep1 more transparent.
+ From: HERBERT@boevm4.vnet.ibm.com.
+ (\uref): New command a la \url.
+
+Sat May 24 18:06:41 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\deftypemethod, \deftypemethodheader): New macros
+ to implement new commands @deftypemethod and @deftypemethodx.
+ Suggestion from: KHMarbaise@p69.ks.fido.de (Karl Heinz Marbaise).
+
+Wed May 21 17:17:52 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\opnr, \clnr): Increment/decrement \parencount, for
+ @defun lines with nested parens. From Bill Schelter
+ <wfs@fireant.ma.utexas.edu>.
+ (\itemizeitem): Correct \errmessage.
+
+Mon May 19 17:34:40 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\codeunder): Use \_ and \ifusingtt to avoid
+ dotaccent from _ in roman fonts, e.g., @deftypefn.
+ (\tex): Remove spurious spaces at the end of subdefinitions.
+ From: "John W. Eaton" <jwe@bevo.che.wisc.edu>.
+ (\url, \email): \let to \code; no quotes or angle brackets.
+
+Mon May 5 17:06:35 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\onepageout): \ifcropmarks, center the page body.
+ Lost this when merged \croppageout with \onepageout. Found by
+ Arnold.
+
+ (\doprintindex): Do not bother to go into double column mode unless
+ there actually is a non-empty index.
+
+ (\begindoublecolumns): Include any existing \partialpage in the new one,
+ lest we lose a whole page of output. Found by M J Morley
+ <mjm@scs.leeds.ac.uk>.
+
+ (\chapternofonts): Remove spurious spaces, both in the definitions that
+ get output to the aux file(s) and in this macro.
+
+ Fix comments and rationalize whitespace in various other places.
+
+Sun Apr 27 15:41:16 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\chapter, etc.): Avoid expansion of section title
+ when writing the toc.
+
+Thu Apr 24 16:35:46 1997 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\onepageout): Integrate cropmarks case here,
+ instead of having a completely different routine.
+ (\croppageout): Remove this.
+
+Sun Jun 9 14:26:42 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\ignoremorecommands): Ignore \defcodeindex, and do
+ not ignore \message.
+
+Thu Apr 11 12:59:42 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\macro): New macro.
+ (\enddots, \endldots): New macros.
+ (\centerchap, \centerchapyyy): New macros.
+ (\centerchfplain, \centerchfopen): New macros.
+ (\CHAPFplain, \CHAPFopen): Set \centerchapmacro.
+
+Wed Mar 13 11:42:17 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\url): New macro, like \samp for now.
+
+Sun Mar 10 13:05:08 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex: Changes in @multitable code.
+ Change meaning of @multitablelinespace.
+
+Tue Mar 5 18:56:08 1996 Dave Love <d.love@dl.ac.uk>
+
+ * texinfo.tex (\set): Set catcode of space explicitly (inside a
+ group) to avoid losing inside @example, say.
+
+Sun Mar 3 17:01:27 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\itemxpar): Protect the \vskip here with \nobreak,
+ to avoid a possible page break at an @itemx.
+
+Sun Feb 25 14:53:15 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\obstexwarn): Use \global to avoid ever getting the
+ warning twice.
+
+ * texinfo.tex (\include): Allow underscores and other such
+ characters we made active in the file name argument.
+
+Tue Feb 6 15:06:27 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\afourlatex): Delete the old duplicate definition
+ of \afourlatex.
+
+Sun Feb 4 15:20:16 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\tab): New definition.
+ (\setuptable): Fix previous change.
+ (\multitablecolspace): Renamed from \multitablecolmargin.
+ (\multitablelinespace): Renamed from \multitablelineskip.
+
+Fri Feb 2 02:20:16 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\multitableparskip): Renamed from \intableparskip.
+ Allocate with \newskip.
+ (\multitableparindent): Renamed from \intableparindent. Use \newskip.
+ (\multitablelineskip): Renamed from \spacebetweenlines. Use \newskip.
+ (\multitablecolmargin): Renamed from \spacebetweencols.
+ (\columnfractions): Renamed from \percentofhsize.
+ (xcolumnfractions): Renamed from \xpercentofhsize.
+
+ * texinfo.tex (\setuptable): Handle >1 digits after @percentofsize.
+ (\pickupwholepercent): New macro.
+
+Sun Jan 28 21:14:46 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\key, \kbdfoo): Use \ttsl unconditionally.
+ (\setkeyfont): Definition deleted.
+
+Tue Jan 23 14:57:23 1996 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex: @kbd within @example selects slanted tty font:
+ (\ttsl, \ttslshape): Define this new font shape.
+ (\kbdfoo): Set the font to \ttsl if already using \tt.
+ (\setkeyfont, \ifmonospace): New macros.
+
+Wed Jan 17 23:57:48 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\changepagesizes): Additional arg for topskip.
+ (\afourlatex): Total rewrite.
+ (\afourwide): Pass new arg to \changepagesizes.
+
+Wed Jan 3 17:15:00 1996 Stephen Gildea <gildea@x.org>
+
+ * texinfo.tex (\slbshape, \itbshape): Use bold slant and and
+ bold italic in titles to match the bold roman. Do not use
+ bold sf or bold tt, which would be too heavy.
+
+ * texinfo.tex (\setfont): Pass font name in more pieces.
+ (\*shape): New macros defining symbolic names for all font
+ shapes so can use other font families with different naming
+ conventions.
+
+Wed Jan 3 15:52:18 1996 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\ignoremorecommands): Turn off @everyheading and
+ friends, @headings, @setchapternewpage, @setchapterstyle.
+
+Sat Dec 30 17:20:48 1995 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\inmargin): Don't allow a break before the vertical
+ kern. Do allow a whole paragraph of marginal text, not just one line.
+ Use \inmarginspacing.
+
+Thu Dec 28 23:22:08 1995 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\inmargin): New command @inmargin.
+ (\dircategory): Ignore @dircategory.
+
+Tue Dec 12 17:25:36 1995 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\lvvmode): Remove this; use \leavevmode as usual,
+ so spaces/underscores at beginnings of lines inside @example work.
+ Bogus index entries should be (and now are, I think) handled in
+ other ways.
+
+Mon Nov 13 16:07:09 1995 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\xrefX): Test for xref-automatic-section-title
+ being @set correctly, and remove spurious redefinition of
+ \printednodename in that case.
+
+Mon Oct 16 15:16:34 1995 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\unsepspaces): New macro to make active space
+ expand into a normal space char in index entries.
+ (\indexdummies): Use \unsepspaces.
+
+Thu Oct 12 14:56:52 1995 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\tie): Use \lvvmode, not \leavevmode.
+ Don't use \@M directly either.
+
+Sun Aug 27 21:17:09 1995 Paul Eggert <eggert@twinsun.com>
+
+ * texinfo.tex (\appendixsection): Fix misspelled defn.
+
+Mon Jul 31 23:57:57 1995 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\ttfont): Don't call \nohyphenation.
+
+Sun Jul 30 18:30:47 1995 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\tocentry): Use \turnoffactive.
+
+Sun Feb 5 05:34:13 1995 Richard Stallman <rms@pogo.gnu.ai.mit.edu>
+
+ * texinfo.tex (\boldbraxnoamp): New function.
+ (\deftypefunargs): Use that, not \boldbrax.
+
+Tue Jan 31 12:15:28 1995 Karl Berry <karl@cs.umb.edu>
+
+ * texinfo.tex (\set): Use \gdef, not \xdef.
+
+Sat Jan 21 16:39:36 1995 Richard Stallman <rms@pogo.gnu.ai.mit.edu>
+
+ * texinfo.tex: Initially make _ and + \active,
+ then later make them \other.
+ (\otherifyactive): New command.
+
+Thu Jan 19 21:59:22 1995 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\afourwide): New command.
+
+Mon Jan 16 09:29:38 1995 Stephen Gildea <gildea@x.org>
+
+ * texinfo.tex: Initially make + and _ "other" characters.
+ (\fixbackslash, \everyjob): Make + and _ active characters.
+
+Tue Jan 10 19:16:09 1995 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex: At beginning, \input plain if necessary.
+ (\deftypefunargs): Use \boldbrax, not \functionparens.
+
+Sun Dec 18 16:40:11 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\indsc): Use csc10 (at 9pt), not indrm.
+
+Mon Oct 31 00:51:20 1994 Richard Stallman <rms@pogo.gnu.ai.mit.edu>
+
+ * texinfo.tex (\changepapersizes): Fix definition syntax.
+ (\fontprefix): Define only if not yet defined.
+
+ * texinfo.tex (\margin): Define a new insert.
+ (\SETmarginindex): Initialize to \relax.
+ (\doindex): Optionally put the entry in the margin.
+ (\pagecontents): Print the index entries put in the margin.
+
+Sat Oct 29 19:50:10 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\auxhat): New macro.
+ (\dosetq): Use \auxhat.
+ (reading the aux file): Give ^ catcode 7.
+
+Wed Oct 26 03:28:04 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\setfont): New macro. Use it for specifying
+ most of the fonts that are normally cm fonts.
+ (\fontprefix): New macro, normally `cm'.
+
+Mon Oct 24 01:27:09 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\startcontents): Set catcode of ^.
+
+Thu Oct 13 02:19:43 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\ifhtml, \html, \enddots, \?, \!): New commands.
+
+Fri Sep 16 16:30:52 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\defheaderxcond): New macro.
+ (\deftypefnheaderx): Use defheaderxcond when calling defname.
+ (\deftypefunheaderx, \deftypevarheader, \deftypevrheader): Likewise.
+
+Fri Aug 26 03:08:08 1994 Amy Hendickson <amyh@ai.mit.edu>
+
+ * texinfo.tex (\multitable): New command.
+
+Mon Aug 1 14:28:57 1994 Richard Stallman <rms@mole.gnu.ai.mit.edu>
+
+ * texinfo.tex (\changepagesizes, \afourlatex): New macros.
+
+Tue Jul 12 11:45:58 1994 Karl Berry (karl@cs.umb.edu)
+
+ * texinfo.tex (\quotation): Set \parskip to zero to avoid extra
+ space below the environment.
+ (\quotation): Clean up comments and indentation.
+
+Wed Jul 13 05:36:40 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\xrefX): Put back, and correct, the test of
+ SETxref-automatic-section-title.
+
+Thu Jul 7 15:57:52 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * Set catcodes of chars 128-255 to \other.
+
+Mon Jul 4 15:32:41 1994 Karl Berry (karl@cs.umb.edu)
+
+ * texinfo.tex (\tie): Set \catcode of @ to 11 before using \@M.
+
+ * texinfo.tex (\xrefX): Undo \turnoffactive while printing the node
+ name, so _ in node names doesn't come out as the dot accent.
+
+Sat Jul 2 14:49:26 1994 Karl Berry (karl@cs.umb.edu)
+
+ * texinfo.tex (\tie): Ensure we're in horizontal mode before the
+ \penalty.
+
+Tue May 10 01:21:28 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\donoderef, \unnumbnoderef, \appendixnoderef):
+ Set \lastnode globally.
+
+Sun Apr 17 15:35:43 1994 Karl Berry (karl@ra.cs.umb.edu)
+
+ * texinfo.tex (\~): Define to be a tie.
+ (\ptextilde): New defn to save the plain's tilde accent.
+ (\tex): Restore plain tilde.
+
+Sun Mar 27 23:35:17 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\smallbook): Set \defbodyindent and \deftypemargin.
+
+Sun Mar 20 19:47:59 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\xrefX): Define and use \correctnodename.
+ (@turnoffactive): Move after @ becomes available
+ and turn off backslash as well as other chars. Use @realbackslash.
+ (@normalturnoffactive): Like @turnoffactive but use @normalbackslash.
+
+Sat Mar 19 12:26:25 1994 Karl Berry (karl@cs.umb.edu)
+
+ * texinfo.tex (\singlespaceskip): Increase to 12.5pt.
+ (\singlespace): Call \setleading instead of just assigning to
+ \baselineskip, so the strut box will be reset.
+ (\smalllispx): Likewise.
+
+Sun Mar 13 20:32:28 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\dots): Change back to \ldots.
+
+Sat Mar 12 22:34:10 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\indexnofonts): Add %'s to suppress newlines after \def.
+
+Sat Feb 26 15:51:37 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\deftexinfoversion): New macro.
+ (\texinfoversion): Define using \deftexinfoversion.
+
+Wed Jan 26 12:40:52 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\putwordSee, \putwordInfo, \putwordfile)
+ (\putwordChapter, \putwordAppendix, \putwordSection)
+ (\putwordsection, \putwordpage)
+ (\putwordTableofContents, \putwordShortContents): New macros.
+ Used in various places instead of fixed words.
+
+Mon Jan 24 22:51:36 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\ignoremorecommands): Turn off @item and @message.
+
+Thu Jan 20 17:01:53 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\indexnofonts): Treat accents as dummies.
+ Turn modified European letters into one or more ordinary letters.
+
+Tue Jan 18 14:54:32 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\indexdummies): Handle tex accents and European letters.
+
+Wed Nov 24 16:11:51 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\dots): Use $\,$ for spacing.
+
+Sun Nov 21 22:16:21 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\dots): Avoid using \ldots; use periods and kern.
+ (\indexdotfill): Use italic periods.
+
+Fri Nov 19 20:50:31 1993 Roland H. Pesch (pesch@apple-gunkies.gnu.ai.mit.edu)
+
+ * texinfo.tex (\deftypefunargs): use \tclose rather than \code to
+ avoid side effects on active chars
+
+Tue Sep 28 16:01:58 1993 Roland H. Pesch (pesch@apple-gunkies.gnu.ai.mit.edu)
+
+ * texinfo.tex (\obeyedspace defn): remove blank after \sepspaces
+ (left destructive penalty in vertical list)
+
+Mon Aug 30 14:17:27 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
+
+ * texinfo.tex (\setref, \unnumbsetref, \appendixsetref): Uncomment
+ \dosetq for title.
+ (\Ytitle): Define as \thissection instead of \thischapter.
+ (\xrefX): If there is no printed-title arg given, and @ifset
+ xref-automatic-section-title, try to use the real section title.
+
+Tue Jul 27 12:47:24 1993 Charles Hannym (mycroft@trinity.gnu.ai.mit.edu)
+
+ * texinfo.tex (\ifitemxneedsnegativevskip): New \if; set immediately
+ following a short \item.
+ (\itemxpar): \par and then if \ifitemxneedsnegativevskip is set, do
+ a \vskip-\parskip.
+ (\internalBitemx, \internalBxitemx, \internalBkitemx): Use \itemxpar
+ rather than \par.
+ (\itemzzz): Set \ifitemxneedsnegativevskip as appropriate.
+
+Thu Jul 22 16:08:33 1993 Charles Hannum (mycroft@trinity.gnu.ai.mit.edu)
+
+ * texinfo.tex (\titlezzz, \finishtitlepage): Explicitly make hrules
+ have a width of \hsize so they aren't too long in smallbook format.
+
+Tue Jun 29 15:56:19 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * texinfo.tex (\deftypefnheaderx): call \normalparens to permit
+ normal typesetting of strings (e.g. for C++ docn) containing `&'
+
+Fri Jun 25 14:08:44 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * texinfo.tex (\nestedignore): turn off \ind... fonts too
+ (primarily for use within @smallexample)
+
+Wed Jun 23 11:58:48 1993 Jim Kingdon (kingdon@wombat.gnu.ai.mit.edu)
+
+ * longopts.table: Update GDB options.
+
+Sun Jun 20 22:00:11 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
+
+ * lgpl.texinfo: Use @smallexample instead of @example. Reformat
+ example disclaimer to avoid overfull \hbox.
+
+Mon Jun 14 04:09:47 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\entry): Don't make a line of dots
+ if there are no page numbers.
+
+Fri Jun 11 16:35:23 1993 Karl Berry (karl@cs.umb.edu)
+
+ * texinfo.tex (\defparsebodycommon): New macro from \defvrparsebody.
+ (\deftpparsebody): Call it; can't use \defvrparsebody.
+ (\deftpheaderline, \removeemptybraces): New macros.
+
+Sat May 8 10:49:25 1993 Karl Berry (karl@cs.umb.edu)
+
+ * texinfo.tex (\itemzzz): Only change \parskip temporarily, and
+ unskip by it later if the item text is on its own line.
+
+ * texinfo.tex (\tablez): Do \afterenvbreak before the \endgroup,
+ so the \parskip value is the table's, not the surrounding text's.
+ (\vtable, \ftable, \itemizey): Likewise.
+ Note: for most environments, \nonfillfinish deals with this.
+
+ * texinfo.tex (\smalllisp): New definition for non-small case, a
+ la @smallexample.
+
+ * texinfo.tex: Delete \message{} at beginning; it does nothing.
+
+ (These changes are all trying to make space above and below
+ environments more equal.)
+ * texinfo.tex (\singlespace): Don't insert a kern.
+ (\group): Do \offinterlineskip, and reset \par to insert a blank
+ line's worth of space.
+ (\lisppar): Delete meaningless call to \obeyspaces before making
+ the definition.
+ (\Elisp [the outer one]): Rename to \nonfillfinish, and end the
+ paragraph before the group.
+ (\lisp): Set \Elisp (the inner one) to \nonfillfinish
+ (\example, \smallexample, \display, \format, \flushleft,
+ \flushright, \quotation): Use \nonfillfinish.
+ (\lineskipfactor, \strut{height,depth}percent): Set to more exact
+ values.
+ (\setleading): Set \normallineskip and call \normalbaselines, for
+ cleanliness.
+
+Thu May 6 16:00:59 1993 Jeffrey Osier (jeffrey@deneb.cygnus.com)
+
+ * texinfo.tex (\ignoremorecommands): Turn off \set and \clear.
+
+Tue Apr 20 17:02:34 1993 Roland H. Pesch (pesch@apple-gunkies.gnu.ai.mit.edu)
+
+ * texinfo.tex (\codex): Delete space.
+
+Thu Apr 15 14:59:04 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * texinfo.tex (\ignoremorecommands): Turn off @raisesections, @up,
+ @lowersections, @down within false conditionals.
+
+Sun Apr 18 04:33:13 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\code): Define - and _ to permit line-breaking
+ despite the fact that hyphenation is disabled.
+ (\codex, \codedash, \codeunder): New macros.
+
+Tue Mar 16 18:19:16 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * texinfo.tex (\ignoremorecommands): Turn off @printindex within
+ false conditionals.
+
+Sun Mar 14 10:47:36 1993 Karl Berry (karl@cs.umb.edu)
+
+ * texinfo.tex (\footnote): Don't bother to take the footnote text
+ as an argument, and hence don't define as \long.
+ (\footnotezzz): Do \footstrut after we start the paragraph.
+ (Also reformat these macros to make them easier to read.)
+
+Fri Feb 26 13:02:44 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * texinfo.tex (@include): Use \thisfile rather than #1 as \input arg.
+
+ * texinfo.tex (\readauxfile): Call \warnedobstrue to turn off warning
+ re TeX 3.0 on second and subsequent runs.
+
+Thu Feb 25 18:03:38 1993 Karl Berry (karl@cs.umb.edu)
+
+ * texinfo.tex (\realeverypar): Delete, as it was unused.
+
+ * texinfo.tex (\group): Do a \strut in \everypar.
+
+Mon Feb 22 17:10:06 1993 Karl Berry (karl@claude.cs.umb.edu)
+
+ * texinfo.tex (\obeyedspace): Define to be whatever \sepspaces
+ does (and move the definition to after \sepspaces).
+
+Wed Feb 17 01:55:20 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\nonfillstart): Do \singlespaces and \let\par
+ before \obeylines.
+
+Fri Feb 12 12:32:56 1993 Roland H. Pesch (pesch at el_bosque.cygnus.com)
+
+ * texinfo.tex (\obstexwarn): issue message re bug in TeX 3.0.
+ (\nullfont): commented-out redefinition, to enable w/TeX 3.0.
+ (\nestedignore): call \obstexwarn for manuals that may trip bug
+
+ * texinfo.tex (\nestedignore): avoid @tex contents with \doignore
+
+Thu Feb 11 15:41:06 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * texinfo.tex (\indexdummies): enable @dfn and @emph in index entries
+
+Thu Feb 11 13:32:32 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * texinfo.tex (\ignoremorecommands): ignore @include within
+ failing conditionals
+
+Sat Feb 6 19:44:28 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\nestedignore): Set \globaldefs--make all defs local.
+
+Tue Feb 2 15:57:37 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * texinfo.tex (@raisesections, @lowersections): new commands.
+ * (@up, down): original BFox synonyms for above.
+ * (\numhead, \apphead, \unnmhead): internal macros to map headings
+ to appropriate level
+ * (@nwnode): new synonym for @node, used in newest
+ makeinfo
+
+Tue Jan 26 17:05:02 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * texinfo.tex (\include): avoid group around file contents
+
+Tue Jan 19 18:58:56 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * texinfo.tex (\ignoremorecommands, used in \nestedignore): also
+ ignore cross-ref commands and \settitle
+ (\setyyy, used in @set): make definitions global
+ (\clearxxx, used in @clear): clear definitions globally
+
+Thu Jan 14 17:43:32 1993 Michael I Bushnell (mib@geech.gnu.ai.mit.edu)
+
+ * texinfo.tex: Added \shorttitlepage.
+
+Sat Jan 2 15:01:45 1993 Karl Berry (karl@cs.umb.edu)
+
+ * texinfo.tex (\tclose): Use \spaceskip instead of modifying
+ \fontdimen's to normalize the interword space.
+
+ * texinfo.tex (\t, \key, \tclose): Use \hyphenchar instead of
+ \exhyphenpenalty, to turn off hyphenation for real.
+ (\{no,restore}hyphenation): New macros.
+
+Sat Jan 2 15:01:45 1993 Karl Berry (karl@cs.umb.edu)
+
+ * texinfo.tex (\t, \key, \tclose): Use \hyphenchar instead of
+ \exhyphenpenalty, to turn off hyphenation for real.
+ (\{no,restore}hyphenation): New macros.
+
+Tue Jan 5 19:15:46 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\deftpparsebody): Make synonymous with \defvrparsebody.
+
+Sun Dec 27 09:40:08 1992 Karl Berry (karl@cs.umb.edu)
+
+ * texinfo.tex (\inforef, \inforefzzz): Use the \ignorespaces
+ primitive instead of \losespace.
+ (\losespace): Delete.
+
+ * texinfo.tex (\menu, \direntry): Handle like \ifinfo.
+
+ * texinfo.tex (\unmatchedenderror, \defineunmatchedend): New macros.
+ (\endxxx): Call it, instead of just doing it inline.
+ (\conditionalsucceed, \nece): More new macros.
+ (\iftex): Call \conditionalsucceed.
+ (\Eiftex): Define to give an error at the outer level.
+
+ * texinfo.tex (\ignoremorecommands, \nestedignore): New macros.
+ (\ifset, \ifclear): Expand a macro on success as well as failure;
+ also switch to using expansion instead of assignments to act after
+ the conditional.
+ (\if{set,clear}succeed): Call \conditionalsucceed.
+ (\if{set,clear}fail): Call \nestedignore instead of \doignore.
+
+ * texinfo.tex (\clear): Don't insert a spurious space.
+
+ * texinfo.tex (\value): Put comment next to definition.
+
+ * texinfo.tex (\setyyy): Call \setzzz, and define the variable as
+ simply the parameter, no \unskip.
+ (\setzzz): New macro; do not globally define the variable.
+
+Thu Dec 3 17:24:05 1992 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * texinfo.tex (croppageout): use same escape-char switching as
+ default output routine. Permits using _ in TOC entries.
+
+Fri Nov 13 17:35:38 1992 Charles Hannum (mycroft@gnu.ai.mit.edu)
+
+ * texinfo.tex (indexing): Rewrote double-column mode to fix a
+ rare breakage.
+
+Sun Oct 25 07:13:31 1992 Karl Berry (karl@cs.umb.edu)
+
+ * texinfo.tex (\obeyedspace): No need to define with \gdef, we're
+ at the outer level.
+
+Fri Oct 16 18:04:40 1992 Roland McGrath (roland@geech.gnu.ai.mit.edu)
+
+ * lgpl.texinfo: Change "This program" to "This library" in example
+ copying notice.
+
+Sat Oct 10 09:43:45 1992 Karl Berry (karl@cs.umb.edu)
+
+ * texinfo.tex (\bullet, \minus): Use \implicitmath instead of $.
+
+Fri Oct 2 08:35:51 1992 Karl Berry (karl@cs.umb.edu)
+
+ * texinfo.tex (\Egroup): Don't do the \strut and \nointerlineskip.
+
+Sat Sep 26 09:08:59 1992 Karl Berry (karl@cs.umb.edu)
+
+ * texinfo.tex (\doignore, \enddoignore): New macros.
+ (\ifinfo): Call \doignore.
+ (\ifxinfoxxx): Deleted.
+ (\ignore, \ifsetfail, \ifclearfail): use \doignore.
+
+ * texinfo.tex (\unnumbered): Expand the arg only once for the \message.
+
+ * texinfo.tex (\deftpparsebody, \parsetpheaderline): New macros.
+ (\deftp): Call \deftpparsebody.
+
+Thu Sep 24 10:12:45 1992 Karl Berry (karl@cs.umb.edu)
+
+ * texinfo.tex (\entry): Do \par first; add comments.
+ (\short{chap,unnumbered}entry,\do{chap,sec,subsec,subsubsec}entry):
+ Call \tocentry, instead of using \vbox.
+ (\tocentry): New macro.
+
+Sat Sep 19 14:36:11 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\`, \'): Definitions deleted.
+
+Fri Sep 18 14:33:09 1992 Roland H. Pesch (pesch@cygnus.com)
+
+ * texinfo.tex (\ifset, \ifclear): Standardize catcode of space as
+ for \ignore.
+
+Fri Sep 11 15:25:01 1992 Karl Berry (karl@hayley)
+
+ * texinfo.tex (\finalout): Move out of final section of file,
+ which claims not to define new control words.
+
+ * texinfo.tex (\setleading): New macro.
+ (outer level, @smallbook, @afourpaper): Call it, instead of
+ setting \baselineskip directly.
+
+ * texinfo.tex (\|): New definition for changebars.
+
+Tue Sep 1 17:32:48 1992 Karl Berry (karl@hayley)
+
+ * texinfo.tex (\begindoublecolumns): Exactly double \vsize.
+
+Sat Aug 29 10:12:16 1992 Karl Berry (karl@hayley)
+
+ * texinfo.tex (\group): Define \Egroup to use struts instead of
+ letting TeX do its own interline spacing.
+
+ * texinfo.tex (\{remove,ignore}activespaces): New macros.
+ (\end): Call \removeactivespaces; give the correct error messages;
+ don't try to expand a nonexistent \E... macro.
+
+ * texinfo.tex (\EMsimple): End the help message with a period.
+
+ * texinfo.tex (\gobble): New macro.
+ (\lisp): Call it (instead of defining it every time).
+ (\example, \smallexample): Define \E... within the macro.
+
+Tue Aug 25 11:56:26 1992 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * texinfo.tex (\readauxfile): Make + normal while reading aux file.
+
+Thu Aug 20 21:32:34 1992 Karl Berry (karl@hayley)
+
+ * texinfo.tex (\doublecolumnhsize): Compute value in
+ \begindoublecolumns.
+ (\afourpaper, \smallbook, <outer level>): Remove these (virtually
+ identical) computations.
+
+ * texinfo.tex (\doublecolumnvsize): Deleted.
+ (\afourpaper, \smallbook): Don't compute it.
+ (\begindoublecolumns): Just double \vsize here (thus decreasing
+ the value considerably from the old value of 19.1in, which was far
+ too large.)
+
+Fri Aug 14 10:16:42 1992 Karl Berry (karl@hayley)
+
+ * texinfo.tex (\parseargx): Use \expandafter instead of
+ \aftergroup to continue the processing.
+ (\parsearglinex): Renamed to \parseargline, since the former
+ \parseargline is no longer needed.
+
+ * texinfo.tex (\parseargline) Remove a trailing @c or @comment.
+ (\argremovec, \argremovecomment): New macros.
+
+Thu Aug 6 11:28:55 1992 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * texinfo.tex: extended @set to define expandable vars;
+ @value expands same. Auxiliary macros \setxxx, \setyyy
+ used for @set.
+
+Sun Aug 2 14:34:48 1992 Karl Berry (karl@hayley)
+
+ * texinfo.tex (\entry): do line-breaking on the index entry.
+
+Wed Jul 1 17:05:26 1992 Karl Berry (karl@claude.cs.umb.edu)
+
+ * texinfo.tex (\lparen, \rparen): new definitions.
+ ((,[,],)): new global definitions for these four active
+ characters, so parens and brackets can be used in @deffn names.
+
+Sat Jun 27 11:32:58 1992 Karl Berry (karl@hayley)
+
+ * texinfo.tex (\shortchaplabel): new macro to align chapter and
+ appendix labels.
+ (\shortchapentry): call it.
+ (\shortappendixwidth): new dimen register.
+
+Wed Jun 24 09:45:34 1992 Karl Berry (karl@hayley)
+
+ * texinfo.tex (\afterenvbreak): make the same as \aboveenvbreak,
+ so space below environments doesn't get lost.
+ (\aboveenvskipamount): rename to \envskipamount, since it's used
+ both above and below.
+
+Wed Jun 24 09:45:34 1992 Karl Berry (karl@hayley)
+
+ * texinfo.tex (\group): do @comment at the end, to avoid excessive
+ white space when called inside @group.
+
+Wed Jun 24 16:36:04 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\startcontents): End page before setting pageno.
+
+Thu May 28 20:27:25 1992 Robert J. Chassell (bob@hill.gnu.ai.mit.edu)
+
+ * texinfo.tex (\vtable): Like @ftable, but for variables.
+
+Fri May 22 07:04:32 1992 Karl Berry (karl@hayley)
+
+ * texinfo.tex (\w): do \leavevmode before the \hbox.
+
+Sat May 16 11:16:27 1992 Karl Berry (karl@hayley)
+
+ * texinfo.tex (\smallbook): decrease \topskip somewhat.
+
+ * texinfo.tex (\group): use \vtop instead of \vbox.
+
+ * texinfo.tex (\newlinechar): define for use in help strings.
+ (\groupinvalidhelp): define this for use with \errhelp.
+ (\group): set \errhelp to above.
+
+Thu Apr 30 16:19:17 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\need): Rewritten by karl.
+
+Sat Apr 18 16:24:00 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\exdentamount): New var, set by environments.
+ (\exdent, \exdentyyy): Define suitably for filled environments.
+ Always exdent by innermost indentation step.
+ (\nofillexdent, \nofillexdentyyy): Alternates for nofill envs.
+ (\lisp, \smalllispx, \display): Set \exdent to \nofillexdent.
+
+Thu Apr 2 15:04:15 1992 Robert J. Chassell (bob@kropotkin.gnu.ai.mit.edu)
+
+ * texinfo.tex (\Esmalllisp): Smaller baseline skip for smallexamples.
+
+Sun Mar 29 20:44:49 1992 Brendan Kehoe (brendan@cs.widener.edu)
+
+ * texinfo.tex (\startcontents): Always close contentsfile and
+ adjust the page.
+
+Fri Mar 27 17:41:52 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\chapternofonts): Deal with \result, \equiv, etc.
+
+Sat Mar 21 08:22:29 1992 Karl Berry (karl at hayley)
+
+ * texinfo.tex (\entry): format entries better if the page number
+ and entry text don't fit on one line.
+
+ * texinfo.tex (\loggingall, \gloggingall): new macros to help with
+ debugging.
+
+Fri Mar 20 15:35:42 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\result, \expansion, \print, \equiv):
+ Don't copy prefabricated boxes; must adapt to current font.
+ (\dblarrowbox, \longdblarrowbox, \pushcharbox, \equivbox): Deleted.
+ (\bullbox): Deleted.
+
+Thu Mar 19 22:17:14 1992 Robert J. Chassell (bob@kropotkin.gnu.ai.mit.edu)
+
+ * texinfo.tex (\widowpenalty, \clubpenalty): Set them to 10000, since
+ 8000 did not work.
+
+Fri Mar 6 13:26:36 1992 Robert J. Chassell (bob@kropotkin.gnu.ai.mit.edu)
+
+ * texinfo.tex (\widowpenalty, \clubpenalty): Set them to 8000, since
+ 2000 did not work (but \widowpenalty at 20000 did work).
+
+Thu Feb 27 12:27:14 1992 Karl Berry (karl@wombat.gnu.ai.mit.edu)
+
+ * texinfo.tex (\widowpenalty): set to 2000, not 20000.
+
+Sat Feb 8 14:34:45 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\widowpenalty, \clubpenalty): Set them to 2000.
+ (\itemizeitem): Use penalty 1200.
+ (\itemzzz): Add \nobreak near beginning.
+
+ * texinfo.tex (\quotation): Increase right margin, instead of
+ left margin twice.
+
+Wed Feb 5 12:08:30 1992 Karl Berry (karl at hayley)
+
+ * texinfo.tex (\alphaenumerate, \capsenumerate): redefine as a call
+ to \enumerate.
+ (\{lower,upper}caseenumerate): Rename from \{alpha,caps}enumerate.
+
+Sun Feb 2 21:07:19 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\itemzzz): Compensate in line-by-itself case for
+ a table that is indented.
+
+Mon Jan 13 21:04:07 1992 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex: Use 26 instead of control-z as character constant.
+
+Sat Jan 11 02:20:58 1992 Roland McGrath (roland@albert.gnu.ai.mit.edu)
+
+ * gpl.texinfo: Unfilled Yoyodyne example.
+
+Sat Dec 7 16:16:54 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\cartouche): Set \nonarrowing.
+ (\lisp, \smalllisp, \quotation, \display): If set, don't narrow.
+
+Mon Dec 2 08:15:08 1991 Karl Berry (karl at hayley)
+
+ * texinfo.tex (\itemzzz): don't start a paragraph if the item text
+ is on a line by itself; don't allow a page break after that
+ line; always do \par before typesetting anything.
+
+Tue Nov 26 15:13:13 1991 Roland McGrath (roland@albert.gnu.ai.mit.edu)
+
+ * lgpl.texinfo: @ifset lgpl-appendix, use @appendix instead of
+ @unnumbered.
+
+Sun Nov 10 12:00:06 1991 Karl Berry (karl at hayley)
+
+ * texinfo.tex (\doprintindex): only \read if the file existed;
+ \closein the test stream in all cases.
+ (\initial, \entry): do not \outer, so that \read does not get an
+ error if the index exists.
+
+Fri Nov 8 18:13:28 1991 Michael Bushnell (roland@churchy.gnu.ai.mit.edu)
+
+ * texinfo.tex (\itemizey): missing %'s in macro defn.
+ Also, add \begingroup; accidentally deleted by Karl Berry.
+
+Thu Nov 7 11:41:25 1991 Karl Berry (karl at hayley)
+
+ * texinfo.tex (\doprintindex): \read from the index file to make
+ \ifeof true when the file exists but is empty.
+
+Tue Nov 5 08:29:13 1991 Robert J. Chassell (bob at grackle)
+
+ * texinfo.tex (@thischaptername): Provide default value for when
+ @chapter not defined.
+
+Sat Nov 2 17:59:02 1991 Karl Berry (karl at hayley)
+
+ * texinfo.tex (\itemizezzz): do \begingroup here, since \itemizey
+ can't any longer.
+
+Tue Oct 29 12:17:41 1991 Robert J. Chassell (bob at grackle)
+
+ * texinfo.tex: @paragraphindent defined as a no op.
+
+Fri Oct 25 15:19:47 1991 Karl Berry (karl at hayley)
+
+ * texinfo.tex (\enumeratey): allow any lowercase letter, uppercase
+ letter, or number as argument; initialize \itemno and begin the
+ environment's group here.
+ (\itemizey): don't initialize \itemno here.
+ (\numericenumerate, \startenumeration): new macro.
+
+Wed Oct 23 16:26:30 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\ifclear, \ifset): Remove \outer.
+
+ * texinfo.tex (\afourpaper): Set various parameters.
+
+Tue Oct 22 18:42:31 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\alphaenumerate, \capsenumerate):
+ Let @end enumerate end these.
+ (\Ealphaenumerate, \Ecapsenumerate): Aliases for \Eenumerate.
+
+Sun Oct 20 18:23:18 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\mainmagstep): New parameter macro.
+ (Defining fonts): Use that parameter to scale them.
+ If \bigger is defined, use 12 point fonts.
+
+Tue Sep 24 00:30:07 1991 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
+
+ * texi2dvi: Iterate over the right variable to look for new idx files.
+
+ * texi2dvi: GPL 2.
+
+ * texi2dvi: Fix 2nd invocation of texindex to pass right args.
+
+Wed Sep 11 20:52:42 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\cartouche): New macro.
+
+Fri Aug 23 16:13:46 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\section, \subsection, \subsubsection):
+ Initially define for numbered chapters.
+
+Fri Aug 2 01:46:09 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\footnote): Use \unskip instead of \removelastskip.
+
+Mon Jul 29 14:06:54 1991 Roland H. Pesch (pesch at cygint.cygnus.com)
+
+ * texinfo.tex (\majorheadingzzz, \chapheadingzzz, \chfplain,
+ \unnchfplain, \unnchfopen, \secheadingi, \subsecheadingi,
+ \subsubsecheadingi): allow line breaks in headings.
+ (\shortchapentry, \shortunnumberedentry, \dochapentry, \dosecentry,
+ \dosubsecentry, \dosubsubsecentry): allow line breaks in table of
+ contents entries.
+
+Thu Jul 18 19:01:53 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\secfonts, \indexfonts): Fix typos.
+
+Sun Jul 7 16:36:28 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\afourpaper): New command.
+
+ * texinfo.tex (\numberedsec): Renamed from \section.
+ (\numberedsubsec): Renamed from \subsection.
+ (\numberedsubsubsec): Renamed from \subsubsection.
+ (\chapter, \appendix, \unnumbered): Define \section, \subsection,
+ and \subsubsection here according to type of chapter.
+
+Thu Jul 4 14:19:32 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\defvarparsebody, \defvrparsebody, \defopvarparsebody):
+ New functions.
+ (\defvar, \defvr, \defopt, \defcv, \defivar): Use them.
+ (\deftypevar, \deftypevr): Likewise.
+
+Mon Jul 1 13:49:25 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\group): Report error if used outside @example, etc.
+
+ * texinfo.tex (\defname): Reduce \leftskip
+ to cancel temporarily the increase made in \defparsebody.
+
+ * texinfo.tex (\enumerate): Allow optional arg to specify type
+ of counting.
+
+ * texinfo.tex (\set, \clear): New commands.
+
+Mon Jun 24 12:22:44 1991 Roland McGrath (roland@albert.gnu.ai.mit.edu)
+
+ * texinfo.tex (\eleterate): Renamed to \alphaenumerate. Sigh.
+ (\ecapitate): Likewise \capsenumerate.
+
+Thu Jun 6 20:02:48 1991 Roland McGrath (roland@geech.gnu.ai.mit.edu)
+
+ * lgpl.texinfo: Created from /fsf/rms/gnuorg/lgpl.text.
+
+ * gpl.texinfo: Created from /fsf/rms/gnuorg/gpl.text (GPL v2).
+
+ * texinfo.tex (\eleterate, \ecapitate): New commands, like @itemize,
+ but with [a..z] or [A..Z] instead of [1..n].
+
+Tue May 21 15:46:32 1991 Karl Berry (karl at hayley)
+
+ * texinfo.tex (\dmn): new command to typeset a dimension.
+
+Tue May 21 20:58:22 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\doind, \dosubind): Make new group around \indexdummies
+ and most of body, excluding the \penalty commands.
+
+Mon May 20 21:16:32 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\tex): Typo in redefining \@.
+
+ * texinfo.tex (\_): Use \lvvmode, not \leavevmode.
+ (\lvvmode): New macro.
+
+ * texinfo.tex (\authorrm, \titlerm): Move to after section fonts.
+
+Tue May 14 21:13:29 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\defunargs): Set \hyphenchar in \tensl, not \sl.
+
+Thu May 9 17:07:08 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\ignore): Standardize catcode of space.
+
+Wed May 8 13:49:45 1991 Karl Berry (karl at hayley)
+
+ * texinfo.tex (\sffam, \sf): New macros; support sans serif
+ type style in math.
+ (top level): Set up \textfonts early on, so we can create boxes w/ it.
+ (\tenrm...\tensf): Define these to be \textrm...\textsf instead.
+ (\df, \textfonts, \chapfonts, \secfonts, \subsecfonts):
+ (\indexfonts): Redefine \tenrm (etc.) instead of just \rm, so that
+ the math family assignment doesn't get lost; call \resetmathfonts.
+ (\resetmathfonts): New macro; redefines \textfont of each math family.
+ (\indsc, \indi, \indsy \chapsc, \chapi, \chapsy, \secsc, \seci):
+ (\secsy, \ssecsc, \sseci, \ssecsy): New font definitions.
+
+Mon May 6 21:30:19 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\indexdummies): Write \_ when an _ is seen.
+
+Mon Apr 29 01:41:44 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\defname): Use \dimen2, \dimen3 for outer margins.
+ Use outer margins for influencing \rightline.
+ (\tclose, \key, \t): Turn off line breaks at hyphens.
+
+Fri Apr 12 03:12:14 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\authorrm): Move definition to top level; copy \secrm.
+
+Tue Apr 2 22:48:39 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\defname): Adjust size of \rlap box, not \dimen0
+ or \dimen1, for current width.
+
+ * texinfo.tex (\Yappendixletterandtype): End with {}.
+
+Sat Mar 30 16:13:25 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\xrefX): Really use \cite.
+ (\inforefzzz): Use \samp for node name.
+
+ * texinfo.tex (\defname): Use current width for \dimen0, \dimen1.
+
+ * texinfo.tex (\doprintindex): Put lots of whitespace before index.
+
+Fri Mar 29 17:00:58 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\xrdef): Take out last change.
+
+ * texinfo.tex (\needx): Turn off \baselineskip. Use kern, and no glue.
+
+ * texinfo.tex (\shortcontrm): Renamed from \truesecrm.
+ (\shortcontbf, \shortcontsl): New fonts for short contents lines.
+ (\summarycontents): Use them.
+
+ * texinfo.tex (\defname): Don't set \leftskip to 0; just decrease by
+ one indent level.
+ (\defparsebody, \def*parsebody): Increment both margins by one level.
+
+Tue Mar 26 22:41:38 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * texinfo.tex (\xrdef): Change catcode before reading args.
+
+Wed Mar 20 14:21:57 1991 Roland McGrath (roland at geech.gnu.ai.mit.edu)
+
+ * texi2dvi: Use p modifier in sed -n command, so it works.
+ Duplicate code to find the index files, instead of being smart in
+ one place and dumb in another.
+
+Thu Mar 7 17:08:32 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\defaultparindent): New variable.
+ (\footnotezzz): Reset \parindent to default.
+ (\xrefX): Use \cite for printed manual and node names.
+
+Tue Mar 5 13:39:34 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\emergencystretch feature): Use \thisisundefined.
+
+Mon Mar 4 00:35:57 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\ftablex): Define \Eftable; undefine \Etable.
+
+ * texinfo.tex (\footnote): Discard preceding whitespace.
+
+ * texinfo.tex: Use the \emergencystretch feature if available.
+
+Fri Feb 22 03:50:58 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\tex): Make + not active.
+
+Fri Feb 15 10:05:24 1991 Roland McGrath (mcgrath at cygint.cygnus.com)
+
+ * texi2dvi: Use $TEXINFO in place of $TEX (falling back to $TEX
+ if $TEXINFO is undefined).
+
+ * texi2dvi: Renamed from texinfo. Bob (I believe) did this at some
+ point at and didn't make a ChangeLog entry. I'd shoot him myself if
+ he weren't the person who signs my paychecks.
+
+Sun Feb 10 22:51:52 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\doprintindex): If index is empty, print a dummy.
+ (\need): Use vskips and penalties; don't use \pagetotal.
+
+Fri Feb 8 17:36:53 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\ignoresections):
+ Turn off \contents, \smallbook and \titlepage.
+
+ * texinfo.tex (\Etitlepage): Do a page break before ending the group.
+
+ * texinfo.tex (\setref, \unnumbsetref, \appendixsetref):
+ Comment out recording the chapter title.
+
+Thu Jan 24 23:28:41 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\top): Synonym for \unnumbered.
+ (\infotop): Synonym for \infounnumbered.
+ (\ignoresections): Handle \top.
+
+Thu Jan 24 12:41:33 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex: Delete spurious character at beginning.
+
+Thu Jan 17 16:34:25 1991 Roland McGrath (roland at cygint.cygnus.com)
+
+ * texinfo: Check the exit status of tex and texindex. Don't procede
+ after a failing run.
+
+Thu Jan 10 15:16:47 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\xrefX): Get rid of blank line.
+
+Wed Jan 9 18:06:20 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\entry, \secondary): Use \indexdotfill.
+ (\indexdotfill): New macro.
+
+Tue Jan 8 17:44:01 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\donoderef): Define a ...-title cross-reference.
+ (Ytitle): Subroutine for that.
+ (xrefX): Use the real title by default (but this is commented out).
+
+Tue Jan 1 23:18:21 1991 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\indexnofonts): Delete troublemaking blank line.
+
+Sat Dec 22 00:47:21 1990 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\xrefX): Prevent extra space.
+
+Fri Dec 21 21:14:50 1990 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\comment, \commentxxx): Ignore @ in comment.
+
+Thu Dec 13 22:38:31 1990 Chris Hanson (cph at kleph)
+
+ * texinfo.tex (\defivarheader): Capitalize "Variable".
+
+Sun Dec 2 01:46:04 1990 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\indexdummies, \indexnofonts): Handle \t like \r.
+
+ * texinfo.tex (heading fonts): New fonts based on cm...12.
+
+Tue Nov 27 16:59:35 1990 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\indexnofonts): Also supersede \TeX and \dots.
+
+Sun Nov 18 16:18:14 1990 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\*): End with \ignorespaces.
+
+Fri Nov 2 17:41:48 1990 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\*): Output empty hbox to avoid losing whitespace.
+ (\deftypevarheader, \deftypevrheader): End the paragraph
+ with suitable penalties.
+ (\deftypevrheader): Do print the data type.
+
+Thu Nov 1 12:04:52 1990 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\defmethodheader): Print `method', not `operation'.
+
+Fri Oct 26 17:11:08 1990 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\indexdummies): Temporarily redefine \_.
+ (\ptexdots): Copy of plain tex \dots.
+ (\tex): Temporarily reinstall that.
+
+Fri Oct 19 16:57:48 1990 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\subsubsecheadingi, \subsecheadingi): New subroutines.
+
+Mon Oct 8 13:34:19 1990 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (active _): Use \normalunderscore.
+
+Tue Sep 25 22:32:55 1990 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\deftypefn, \deftypevar, \deftypevr): New macros.
+ Their subroutines also new.
+
+Tue Sep 25 16:42:52 1990 Roland McGrath (roland at geech.ai.mit.edu)
+
+ * texinfo: Recognize `.tex' as a suffix.
+
+Tue Sep 25 01:46:54 1990 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\deftypefun): New macro.
+ (\deftypefunheader, \deftypefunheaderx, \deftypefunargs): Also new.
+
+Fri Sep 14 00:38:28 1990 Roland McGrath (roland at churchy.ai.mit.edu)
+
+ * texinfo: Weed out files that have two-letter extensions but don't
+ start with a backslash, and therefore aren't index files.
+
+ * texinfo: Handle index files that have any two-letter extension,
+ rather than using a static list of extensions.
+
+ * texinfo: Handle .texi extension as well as .texinfo.
+
+ * texinfo: New file, a sh script to do .texinfo -> .dvi.
+
+Mon Sep 10 13:14:39 1990 Richard Stallman (rms at mole.ai.mit.edu)
+
+ * texinfo.tex (\math): New macro.
+
+Tue Sep 4 07:43:33 1990 Karl Berry (karl at hayley)
+
+ * texinfo.tex (\chfplain): Do not print a period after the chapter
+ number, for consistency with sections et al.
+
+ * texinfo.tex (\refX): hyphenate `undefined' so that the ligature
+ is not lost.
+
+ * texinfo.tex (_): use \_ unless we're in tt.
+ (\ifusingtt): new macro for such conditionalization.
+
+ * texinfo.tex (\xrefX): don't use \unhbox to print the node names,
+ since that loses on hyphens.
+ Use \ignorespaces rather than \losespace.
+
+Thu Aug 2 07:03:26 1990 Karl Berry (karl at hayley)
+
+ * texinfo.tex (\linenumber): new macro.
+ (\refx): give the line number in the message.
+
+Tue Jul 31 09:13:32 1990 Karl Berry (karl at hayley)
+
+ * texinfo.tex (\refx): improve warning messages, remove
+ unnecessary groups, and improve logic.
+
+Thu Jul 26 20:53:38 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\subheading, \subsubheading): Missing macros defined.
+
+Thu Jul 19 22:48:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\titlepage): Don't print rule for \page unless already
+ printed a rule.
+ (\abstract): Deleted.
+ (\direntry): New command, much like \ignore.
+
+Sun Jul 15 16:28:42 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\abstract): New construct; trivial in tex.
+
+Sun Jun 17 01:03:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\defcv): Protect space before `of'.
+ (\defspec): Capitalize `Form'.
+
+Sat Jun 16 19:36:56 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\kbd, \kbdfoo): Use \par to term. arg to \kbdfoo.
+
+Fri Jun 15 10:47:12 1990 Robert J. Chassell (bob at pogo.ai.mit.edu)
+
+ * texinfo.tex (\defcv): Use \defcvarheader instead of (undefined)
+ \defcvheader.
+
+Fri May 25 18:04:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\xrefX): Use \turnoffactive.
+
+Mon May 21 21:17:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\turnoffactive): New command.
+ (\normaldoublequote, ...): New commands.
+ (\dosetq): Use \turnoffactive.
+
+Sat May 19 12:31:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\indit): Use slanted font, not italic.
+ (\smalllispx): Do \indexfonts.
+
+Fri May 4 17:35:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\footnote, \footnotezzz): Make it \long.
+
+Wed May 2 01:19:55 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\titlerm): Go back to cmbx10 scaled \magstep5.
+ (\hsize): Don't set it, use the default.
+
+Fri Mar 23 21:07:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\footnote): Read arg in braces, not as a line.
+
+Mon Mar 19 19:30:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\unnumbsubsubsecentry): Typo in name being defined.
+
+Tue Mar 13 18:49:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\defvarargs): Add penalty at end.
+
+ * texinfo.tex (\synindex, \syncodeindex): Copy one index file name
+ into the other.
+
+Tue Mar 6 16:58:54 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\deftt): Make this a distinct font.
+
+ * texinfo.tex (\initial): Define \tt like \tentt.
+
+ * texinfo.tex (\ifinfo): End with \losespace.
+ (\ignore, \ifsetfailxxx, \ifclearfailxxx): Likewise.
+
+Sun Mar 4 19:55:57 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\lbrb, \rbrb): Use \bf.
+
+Sat Mar 3 17:53:22 1990 Richard Stallman (rms at geech)
+
+ * texinfo.tex (\onepageout): Set \escapechar here.
+
+ * texinfo.tex (\rawbackslash): Define using \chardef.
+
+ * texinfo.tex (\@): Use ttfont.
+
+Thu Mar 1 16:37:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (Ysectionnumberandtype, Yappendixletterandtype):
+ Capitalize "chapter", "appendix" and "section".
+
+Mon Feb 19 20:26:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\xkey): Attempt to eliminate spurious space from
+ output. Look at y-or-n-p.
+
+Mon Feb 12 16:34:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\errorbox): Get \dimen0 from \tentt.
+
+Sun Feb 11 15:11:57 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\defunargs): Use ragged right for args.
+ Add large penalty at end.
+
+ * texinfo.tex: Make active definition for = using \tt, but disable.
+ (\defparsebody): Make = active.
+ (\defunheader, etc.): Make inactive again.
+
+ * texinfo.tex (\errorbox): Try to equalize outside space to both sides.
+
+Fri Feb 2 14:47:21 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\appendix): Don't use \the before \appendixletter.
+
+Sat Dec 16 14:02:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\chapter, \appendix): Make defn of \thischapter
+ refer to \thischaptername, and store actual name there.
+ (\chapternofonts): Turn off more macros.
+ (\indexdummies): Likewise.
+
+Sun Nov 19 15:29:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\titlerm): There were two definitions of this command.
+ Put them together and commented out one of them.
+ (\subtitlerm): Was same as \tenrm, so just copy that.
+ (\ninett): Always define this.
+ (\indtt): Copy from \ninett.
+
+Sat Nov 18 22:57:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\ssecrm, etc.): Scale by 1315, rather than to 13pt.
+
+Wed Nov 8 18:38:33 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\titlepage): Turn on iffinishedtitlepage so
+ bottom rule is not printed.
+ (\titlezzz): Turn it off, so bottom rule is printed.
+
+Mon Nov 6 09:23:29 1989 Karl Berry (karl at hayley)
+
+ * texinfo.tex (\chapterzzz, \appendixzzz): include `Chapter
+ \the\chapno' and `Appendix \appendixletter' in \thischapter; use
+ \xdef instead of \gdef to define \thischapter, to avoid timing
+ problems with \chapno or \appendixletter.
+ (\startcontents): don't bother putting `Table of Contents' or
+ `Short Contents' in the headline.
+
+Fri Oct 20 09:11:35 1989 Karl Berry (karl at hayley)
+
+ * texinfo.tex (\titlepage): remove obsolete code for subtitles.
+ (\titlezzz): end with \relax, to avoid misinterpretation of a
+ following `plus' or `minus'
+ (\page (inside \titlepage)): call \finishtitlepage.
+ (\Etitlepage): call \finishtitlepage, if it hasn't been.
+ (\finishtitlepage): new macro to print a rule and leave some space
+ at the bottom of the title page.
+ (\iffinishedtitlepage): new; says whether \finishtitlepage has been
+ called.
+
+Mon Nov 6 21:35:34 1989 Robert J. Chassell (bob at rice-chex)
+
+ * texinfo.tex: Replaced `GNU CC' in the copyleft of this file with
+ the phrase `this texinfo.tex file'.
+
+Fri Oct 27 10:36:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\setfilename): Do nothing except 1st time used.
+ (\titlepage): Brace misplaced in \titlezzz.
+ (\indexdummies, \indexnofonts): Handle @w.
+
+ (\readauxfile): Set \ifhavexrefs true.
+ (\refX): Warn for every use of an undefined xref,
+ but if no xref values are known, warn just once that none are known.
+
+Tue Sep 19 04:12:51 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\xrefX): Go back to `section N [Foo], page M'.
+ (\exp): Delete it.
+
+Mon Sep 18 15:29:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\chapentryfonts): Try using \rm for chap title.
+
+Tue Sep 12 03:41:10 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\titlepage): Missing closeparen after \title.
+ Delete excess paren after \page.
+
+ * texinfo.tex (\samp): Use \tclose.
+
+Mon Sep 11 23:28:04 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\tclose): Make `@ ' a full-width space.
+
+Sat Sep 9 20:11:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\balancecolumns): Handle properly the case where
+ the index ends before one page is output, so \partialpage is nonempty.
+ In this case we may need to output two pages if the data
+ would just barely fit if not for \partialpage.
+
+Wed Aug 30 22:45:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\refx): New 2nd operand, output if xref is non-null.
+ (\xrefX): Use that to output the comma after the section number.
+ (\appendixnoderef, \appendixsetref, \Yappendixletterandtype):
+ Define xrefs for appendices that say "Appendix N".
+ Used in \appendix, \appendixsec, etc.
+
+ * texinfo.tex (\smartitalic): The actual italic correction was omitted.
+
+Mon Aug 28 00:21:33 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
+
+ * texinfo.tex (\ref): New kind of cross-reference.
+ (\xrefX): Put single quotes around section name.
+ (\refx): Allow hyphenation in `undefined'.
+
+ * texinfo.tex (+): Make it active.
+ (Altmode): Delete active defn.
+
+ * texinfo.tex (\defunargs): Prevent hyphenation at `-' in args.
+ Move the penalty at the end so that it works.
+ (\defvarargs): Move the penalty at the end so that it works.
+
+ * texinfo.tex (\defparsebody): Do increase right margin.
+
+ * texinfo.tex (\defbodyindent): Now .4 inch.
+
+ * texinfo.tex (\point, \result, \expansion, \print, \equiv, \error):
+ New macros for Lisp manual.
+
+ * texinfo.tex (\tex): Set = to code 12.
+
+ * texinfo.tex (\entry): Hairier way to output dots.
+
+ * texinfo.tex (\kbd): If arg consists of one \key command, be a no op.
+
+ * texinfo.tex (\sc): Delete spurious \.
+
+ * texinfo.tex (\smartitalic): New macro, does italic correction at end.
+ (\i, \var, \dfn, \emph, \cite): Use that.
+
+ * texinfo.tex (\node): Do \ENVcheck.
+
+ * texinfo.tex (\initial): Infinite penalty at end.
+
+ * texinfo.tex (\chapternofonts): New macro, sets \code, etc. to
+ output selves into file. Also undef \frenchspacing and \rawbackslash.
+ (\xhapterzzz, etc.): Call that. Make a group to undo it.
+ (\indexdummies): Do like \chapternofonts.
+
+Sun Aug 27 16:05:23 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
+
+ * texinfo.tex (\frenchspacing): Our own definition, using
+ decimal numbers for all character codes. The standard one fails.
+
+ * texinfo.tex (\indexnofonts): Handle \file, \tt, and many more.
+
+Fri Aug 25 22:05:24 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
+
+ * texinfo.tex (\chapter, etc.): Undefine \tclose around \edef\temp.
+
+Mon Aug 21 15:42:47 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu)
+
+ * texinfo.tex (\tclose): Like \t but make space same width
+ as in surrounding text.
+ (\code, \kbd): Use \tclose.
+
+Tue Jul 4 20:53:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (titlepage): Don't set \everypar; start just one group.
+ See comments in the code.
+
+ * texinfo.tex (defop,defcv): Use defopparsebody.
+ * texinfo.tex (defopparsebody): Like defmethparsebody but defines
+ def...x for more arguments.
+
+Sat Jun 17 13:49:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\titlepage): Rename @subtext, etc., to @subtitle, etc.
+
+ * texinfo.tex (\titlepage): Don't print the title automatically.
+ Define @title to print it, and the rule underneath it.
+ This should make @titlepage upward compatible with the old one.
+
+ * texinfo.tex (\titlepage): Revert local definition of @page
+ to previous. Don't print a rule.
+
+Mon Jun 12 20:49:17 1989 Karl Berry. (karl at mote)
+
+ * texinfo.tex (\titlepage): allow intensional definition of the
+ items on the title page. New control sequences (allowed only
+ within the titlepage environment:)
+ (@subtext): may take either a paragraph (e.g., a brief
+ description of the program) or just a line (e.g., the date).
+ May appear more than once.
+ (@author): must come after all the @subtext's. Can appear more
+ than once, also.
+ Also, use the title defined by @settitle.
+ (\subtextfont, \authorfont): switch to using the appropriate
+ fonts with appropriate leading.
+ (\titlepagetopglue, \titlepagebottomglue): define space that
+ never stretches or shrinks.
+ (\realeverypar): formatting for the @subtext's.
+
+Sun Jun 4 15:04:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (\shortchapentry, \shortunnumberedentry):
+ Use dots, right justify page numbers. Don't use italics.
+
+Fri Jun 2 14:40:28 1989 Karl Berry. (karl at mote)
+
+ * texinfo.tex (\entry, \secondary): use plain TeX \dotfill for
+ better leaders than the homegrown one.
+ (\Dotsbox): Deleted.
+ (\dotfill): Deleted; use Plain TeX definition.
+
+Wed May 31 17:19:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (ignore): Undefine the chapter/section macros
+ while reading the args, since they are \outer.
+ (ifinfo): Likewise
+ (ifsetxxx, ifclearxxx): Call another macro to parse the
+ conditionalized text, and do to that macro as with \ignore.
+
+Tue May 30 15:04:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex (unnumbered): Change back from \long to \outer.
+
+ * texinfo.tex: Changes by Karl Berry for toc format.
+ Rewrite the table of contents for appearance's sake. Add a
+ synonym for \summarycontents, \shortcontents, since that is the
+ traditional name. Two subroutines are now shared by \contents and
+ \summarycontents: \prepareforcontents, to reset the page number
+ and such; and \startcontents, which begins the \unnumbered and
+ resets catcodes before \input \jobname.toc. Some other macros --
+ \labelspace, \dopageno, \shortpageno -- are shared by the printing
+ macros.
+
+ * texinfo.tex (\truesecrm): New font, section-size roman, used in the
+ new toc. (cmr12)
+
+Sun May 28 07:25:42 1989 Karl Berry. (karl at mote)
+
+ * texinfo.tex (\eatinput): Do not print the `\input texinfo' if a
+ .fmt file is being used; ignore it, instead. This is the initial
+ definition for `\' now.
+ (\fixbackslash): on the other hand, subsequent backslashes should
+ be printed, and if the file does not have an `\input texinfo', the
+ first one should be printed. This new macro makes the definition
+ for `\' be \normalbackslash, if it is \eatinput.
+ (\setfilename): use \fixbackslash.
+
+Wed May 24 15:34:59 1989 Joseph Arceneaux (jla at apple-gunkies.ai.mit.edu)
+
+ * texinfo.tex: Changed def of unnumbered from \outer to \long.
+
+Tue May 23 12:27:59 1989 Karl Berry. (karl at mote)
+
+ * texinfo.tex: Allow one to make a texinfo.fmt file (with the
+ invocation:
+ initex \&plain texinfo
+ and then saying
+ @dump
+ after texinfo.tex has been read.
+ Changes:
+ (\setfilename): Instead of being a no-op, read the xref info, and
+ open the contents and index files. These actions were done as
+ texinfo.tex was read before.
+ (\opencontents, \openindices): new macros to open those files.
+ (\readauxfile): and one to read the aux file.
+
+Sat Apr 29 22:28:02 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex: `@headings on' no longer does a page break.
+
+Sun Apr 2 11:22:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex: Defined `@headings single' and `@headings double'.
+ `@headings on' picks one of them: `@setchapternewpage odd'
+ says `@headings on' means double; otherwise it means single.
+
+Mon Jan 30 22:00:35 1989 Robert J. Chassell (bob at rice-krispies.ai.mit.edu)
+
+ * texinfo.tex: Changed the size of the subsection fonts so they
+ are scaled at13pt rather than at magstep 2. This makes them
+ smaller than the section fonts, which are scaled at magstep 2.
+ In addition, changed the ssecrm font from cmbx to cmb.
+
+Fri Jan 6 15:00:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
+
+ * texinfo.tex: Changed @lisp, @smalllisp, @display not to change
+ the right margin.
+
+Mon Dec 5 22:01:49 1988 Robert J. Chassell (bob at rice-krispies.ai.mit.edu)
+
+ * texinfo.tex: Tested the use of `cmbx10' vrs `cmb10' font and
+ stayed with cmb10 font since cmb10 looks better when the bold face
+ is part of a sentence although the cmbx10 font looks better on its own.
+
+Mon Aug 15 14:33:51 1988 Robert J. Chassell (bob at spiff)
+
+ * texinfo.tex: Changed the (undocumented) @today command from a
+ Month Day, Year format to a Day Month Year format. Left old
+ version commented out.
+
+
+Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
+1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+
+Local Variables:
+mode: indented-text
+left-margin: 8
+fill-column: 76
+version-control: never
+End:
diff --git a/contrib/texinfo/INSTALL b/contrib/texinfo/INSTALL
index 9226bbf..5834628 100644
--- a/contrib/texinfo/INSTALL
+++ b/contrib/texinfo/INSTALL
@@ -1,4 +1,4 @@
-$Id: INSTALL,v 1.2 2002/09/11 16:32:09 karl Exp $
+$Id: INSTALL,v 1.5 2004/11/19 13:08:47 karl Exp $
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
@@ -9,6 +9,27 @@ Automake-based distribution, please read the file `INSTALL.generic'.
Installation notes specific to Texinfo:
+* texinfo.tex and the other *.tex files are not installed by `make
+ install'. This is because there is no reliable way to know where to
+ install them. Instead, you have to run an additional make command
+ after the normal make install:
+ make TEXMF=/your/texmf install-tex
+ texinfo.tex is installed in ${TEXMF}/tex/texinfo/texinfo.tex, etc.
+
+* On the other hand, if you're maintaining a TeX distribution, you don't
+ want your users to see the installation warnings, because you already
+ have the files installed. (And you're keeping them up to date, right?)
+ In this case, run configure --disable-install-warnings, or set
+ enable_install_warnings=no in the environment.
+
+* On MacOSX, if configure fails with the error:
+ ac_cv_build='config.sub: invalid option -apple-darwin7.2.0
+this is probably because your uname -p is returning "unknown". Use
+/usr/bin/uname instead.
+
+* For instructions on compiling this distribution with DJGPP tools
+ for MS-DOS and MS-Windows, see the file djgpp/README.
+
* The Info tree uses a file `dir' as its root node; the `dir-example'
file in this distribution is included as a possible starting point.
Use it, modify it, or ignore it just as you like.
@@ -22,6 +43,3 @@ Installation notes specific to Texinfo:
* If your info files are not in $prefix/info, you may wish to add a line
#define DEFAULT_INFOPATH "/mydir1:/mydir2:..."
to config.h after running configure.
-
-* For instructions on compiling this distribution with DJGPP tools
- for MS-DOS and MS-Windows, see the file djgpp/README.
diff --git a/contrib/texinfo/INTRODUCTION b/contrib/texinfo/INTRODUCTION
index 49e9e33..718c1c5 100644
--- a/contrib/texinfo/INTRODUCTION
+++ b/contrib/texinfo/INTRODUCTION
@@ -1,4 +1,4 @@
-$Id: INTRODUCTION,v 1.2 2002/09/11 16:32:09 karl Exp $
+$Id: INTRODUCTION,v 1.3 2004/04/11 17:56:45 karl Exp $
Getting started with Texinfo.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
diff --git a/contrib/texinfo/NEWS b/contrib/texinfo/NEWS
index e5bd234..7d73e14 100644
--- a/contrib/texinfo/NEWS
+++ b/contrib/texinfo/NEWS
@@ -1,8 +1,9 @@
-$Id: NEWS,v 1.57 2003/06/10 20:50:03 karl Exp $
-This file records noteworthy changes.
+$Id: NEWS,v 1.103 2004/12/24 16:43:58 karl Exp $
+This file records noteworthy changes, very tersely.
+See the manual for detailed information.
- Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2003,
- 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
@@ -18,10 +19,107 @@ because the historical method of doing copyright permissions using
@ifinfo failed to output copyright information in the HTML (or XML)
formats. The manual has detailed explanations and examples. For
convenience, here's a url to one of the relevant sections:
- http://texinfo.org/manual/Document-Permissions.html
+ http://www.gnu.org/software/texinfo/manual/texinfo/html_node/Document-Permissions.html
-------------------------------------------------------------------------------
+
+4.8 (31 December 2004)
+* Language:
+ . new command @euro for the Euro currency symbol, and
+ @documentencoding has some support for ISO-8859-15.
+ . new command @abbr for general abbreviations.
+ . new command @slanted to typeset text in a slanted font,
+ and @sansserif to typeset in a sans serif font.
+* makeinfo:
+ . An empty first argument to cross-reference commands, such as @xref,
+ causes an error. This change was made in 4.1, but not mentioned in NEWS.
+ . HTML output:
+ - <a name="..."> constructs are added for the old-style
+ conversion of node names to HTML names, so that external references
+ to them can continue to work.
+ - "g_t" prefixed to targets for node names beginning with a
+ nonletter, for XHTML compatibility.
+ . Docbook output: recognize more image formats.
+* texi2dvi:
+ . new option --recode, to call recode for input character translation.
+* Distribution:
+ . new convenience script texi2pdf, equivalent to texi2dvi --pdf (from tetex).
+ . some cross-compiling support in configure && make.
+ . new configure option --disable-install-warnings, for TeX.
+ distributions which do have the files installed.
+ . automake 1.9.4.
+
+4.7 (9 April 2004)
+* Language:
+ . new commands @float, @caption, @shortcaption, @listoffloats for
+ initial implementation of floating material (figures, tables, etc).
+ Ironically, they do not yet actually float anywhere.
+ . new commands @docbook, @ifdocbook, @ifnotdocbook for conditional Docbook.
+ . new commands @ordf{} and @ordm{} for Spanish feminine/masculine ordinals.
+ . new commands @deftypecv[x] for class variables in typed OO languages.
+ . new command @registeredsymbol for the r-in-a-circle symbol.
+ . new command @headitem to make a heading row in @multitable.
+ . new command @LaTeX{} for the LaTeX logo.
+ . new command @comma{} to avoid comma-parsing problems.
+ . @url is now a synonym for @uref; new command @indicateurl has the
+ old meaning of just displaying a url as text.
+ . @quotation now accepts an optional argument for labelling the text
+ as a `Note', `Tip', etc.
+ . @defun (et al.) heading lines can now be continued with a lone @.
+ . @acronym accepts an optional argument for the meaning of the acronym.
+* makeinfo:
+ . New environment variable TEXINFO_OUTPUT_FORMAT determines the output
+ format at runtime, if no options are specified.
+ . New option --plaintext, equivalent to --no-headers with Info output.
+ . All outputs:
+ - sections are numbered by default.
+ . Info output:
+ - punctuation is inserted after @pxref and @ref, if needed to make
+ cross-references valid.
+ - line numbers included in index menus, so Info readers can go to
+ the exact line of an entry, not just a node. Also in plaintext output.
+ - ^@^H[index^@^H] cookie included in index menus, so Info readers
+ can handle the ] etc. commands better.
+ . HTML output:
+ - new algorithm for cross-references to other manuals, for maximum
+ portability and stability.
+ - include node name in <title> with split output.
+ - @multicolumn fractions become percentages.
+ - entities used for bullets, quotes, dashes, and others.
+ - index entries are links to the exact locations.
+ - <h4> and <h5> used for @sub and @subsubsections again.
+ - accented dotless i supported.
+ . XML output: many new tags and structure to preserve more source features.
+ . Docbook output:
+ - upgraded DTD to Docbook XML 4.2, no longer using Docbook SGML.
+ - improved translation in general, for instance:
+ - line annotations and marked quotations.
+* texi2dvi:
+ . if available, use etex (pdfetex if --pdf) by default.
+ . if the input file includes thumbpdf.sty (for LaTeX), then run thumbpdf.
+ . more output if --debug.
+* texinfo.tex:
+ . @defun names are now printed in typewriter (instead of bold), and
+ within the arguments, @var text is printed in slanted typewriter.
+ . @tex code is executed inside a TeX group, so that any changes must
+ be prefixed with \global (or the equivalent) to be effective. (This
+ change was actually made years ago, but never made it into the NEWS.)
+* info:
+ . new option --where (aka --location, -w) to report where an Info file
+ would be found, instead of reading it.
+ . by default, output ANSI terminal escape sequences as-is; new option
+ --no-raw-escapes overrides this.
+ . use the newly-generated index line numbers.
+* Distribution:
+ . new script gendocs.sh (not installed), for use by GNU maintainers in
+ getting their manuals on the GNU web site. Documented in
+ maintain.texi (http://www.gnu.org/prep/maintain/).
+ . Most code uses ANSI C prototypes, to some extent.
+ . New translation: nb.
+ . automake 1.8.3, autoconf 2.59, gettext 0.14.1.
+
+
4.6 (10 June 2003)
* Language:
. new command @/ specifies an allowable breakpoint within a line.
diff --git a/contrib/texinfo/README b/contrib/texinfo/README
index 057db09..879b59b 100644
--- a/contrib/texinfo/README
+++ b/contrib/texinfo/README
@@ -1,8 +1,9 @@
-$Id: README,v 1.14 2003/01/03 20:17:37 karl Exp $
-This is the README file for the GNU Texinfo distribution.
+$Id: README,v 1.16 2004/12/13 13:36:32 karl Exp $
+This is the README file for the GNU Texinfo distribution. Texinfo is
+the preferred documentation format for GNU software.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/contrib/texinfo/README.dev b/contrib/texinfo/README.dev
new file mode 100644
index 0000000..cf0dc9d
--- /dev/null
+++ b/contrib/texinfo/README.dev
@@ -0,0 +1,44 @@
+$Id: README.dev,v 1.7 2003/11/24 15:11:06 karl Exp $
+README.dev - Texinfo developer information.
+
+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved.
+
+The development sources for Texinfo is available through anonymous cvs
+at Savannah, see
+ http://savannah.gnu.org/cvs/?group=texinfo
+
+This distribution uses whatever versions of automake, autoconf, and
+gettext are listed in NEWS; usually the latest ones released. If you
+are getting the Texinfo sources from cvs, or change the Texinfo
+configure.ac, you'll need to have these tools installed to (re)build.
+You'll also need help2man. (All of these are available from
+ftp://ftp.gnu.org/gnu.)
+
+Here's the order in which to run the tools for a fresh build:
+
+ autoheader # creates config.in, not necessarily needed every time
+ aclocal -I m4 # for a new version of automake
+ automake
+ autoconf
+ configure CFLAGS=-g --enable-maintainer-mode
+ make
+
+(with arguments to taste, of course.) Or you can run
+
+ ./bootstrap
+
+instead of the various auto* tools.
+
+
+One final note: If you would like to contribute to the GNU project by
+implementing additional documentation output formats for Texinfo, that
+would be great. But please do not write a separate translator texi2foo
+for your favorite format foo! That is the hard way to do the job, and
+makes extra work in subsequent maintenance, since the Texinfo language
+is continually being enhanced and updated. Instead, the best approach
+is modify Makeinfo to generate the new format, as it does now for Info,
+HTML, XML, and DocBook.
diff --git a/contrib/texinfo/TODO b/contrib/texinfo/TODO
index e350c1b..0fcaa5c 100644
--- a/contrib/texinfo/TODO
+++ b/contrib/texinfo/TODO
@@ -1,84 +1,119 @@
-$Id: TODO,v 1.8 2003/04/27 13:12:24 karl Exp $
+$Id: TODO,v 1.26 2004/11/22 23:57:32 karl Exp $
This is the todo list for GNU Texinfo.
If you are interested in working on any of these, email bug-texinfo@gnu.org.
- Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003 Free Software Foundation.
+ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2003,
+ 2001, 2002, 2003, 2004 Free Software Foundation.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
* General:
- - Test for memory leaks, e.g., with valgrind:
- http://developer.kde.org/~sewardj/
- - Rationalize and improve the dir categories in existing manuals.
- See http://mail.gnu.org/pipermail/emacs-devel/2002-October/013094.html
- (and the containing thread).
- - Extend and improve the tests.
+ - @euro{}.
+ - Support installation of manuals in different languages, along these lines:
+ . support a LINGUAS file or variable saying which subdirs LL in the
+ source to descend into (under doc/).
+ . within each subdir LL, install the info files into $infodir/LL,
+ and run install-info on $infodir/LL/dir.
+ . info (both emacs and standalone) should read $infodir/$LANG/dir
+ as the first dir file, and likewise read info files first from
+ $infodir/$LANG, before falling back to $infodir.
+ . consider ways to avoid installing images in both places.
+ In fact, images probably need to be installed in a subdir
+ $infodir/MANUAL/ in the first place, to avoid conflicts of having
+ the same image name in different manuals.
+ For a test case, see texinfo cvs, with its one translated manual
+ (info-fr.texi).
+ From Wojciech Polak.
+ - Monitor and improve the dir categories in existing manuals,
+ following the Free Software Directory categories. Much mail to
+ developers has already been sent, what's needed now is to check new
+ releases and make sure they are using the right categories.
+ See the util/dir-example in the Texinfo distribution for our current
+ recommended categories.
+ For background, see the thread (which discusses a lot of other
+ issues too) at
+ http://mail.gnu.org/pipermail/emacs-devel/2002-10/msg00011.html,
+ especially
+ http://mail.gnu.org/archive/html/emacs-devel/2002-10/msg00090.html
+ http://mail.gnu.org/archive/html/emacs-devel/2002-10/msg00137.html
- Get Info declared as a MIME Content-Type.
+ - Likewise the `info:' URI scheme; a library consortium has proposed a
+ completely different purpose for the URI scheme, but I don't know
+ how to send comments, despite it being a "request for comments". Sigh.
+ There is mail about this in the bug-texinfo archives:
+ http://mail.gnu.org/archive/html/bug-texinfo/2003-09/msg00086.html
- Support compressed image files.
- - Handle reference card creation, perhaps by only paying attention to
+ - Support reference card creation, perhaps by only paying attention to
sectioning and @def... commands.
- Allow @end (and other?) commands to be indented in the source.
+ - Test for memory leaks, e.g., with valgrind:
+ http://developer.kde.org/~sewardj/
+ - Extend and improve the tests.
* Language:
- - @figure, something like:
-@figure [xref-label]
-@figureinclude <filename>, [<height>], [<width>]
-@figurehsize <dimen>
-@figurevsize <dimen>
-@caption ... @end caption
-<arbitrary Texinfo commands>
-@end figure
- @else for the @if... conditionals.
- @xindexterm [def] primary [,secondary [,tertiary]] or some such?
+ - Allow subitems and `see' and `see also' in indices.
- multicolumn * width to take up `the rest'.
- another table command to take N succeeding items and split them
into M columns (see eplain).
- support bibliographies with BibTeX (see web2c/doc for kludge prototype).
- @flushboth to combine @flushleft and @flushright, for RFC's.
- @part sectioning command.
- - Allow subitems and `see' and `see also' in indices.
- @exercise/@answer command for, e.g., gawk.
- Allow @hsep/@vsep at @item, instead of just in template.
- Support automatic line numbering of examples.
- Better macro syntax.
+ - Better def... command syntax.
- Allow : in node names for info files, for names like
`class::method'. Likewise index entries. A quoting mechanism such
as surrounding node names with SPACE BACKSPACE is probably the best
solution, although this is an incompatible change to Info format, sigh.
- - Change bars. This is difficult or impossible in TeX,
- unfortunately. To do it right requires device driver support.
- wdiff or ediff may be all we can do.
- - @LaTeX{} command to produce the LaTeX logo.
+ - Glossary/general definition support (dumas msg 28 Nov 2003 17:09:57 +0100).
+ - Add support for other Latin 9 (and Latin 2 and Latin 1) characters.
* Makeinfo:
+ - Translation of "Appendix" etc. should depend on @doclang not $LANG.
- Try directory of main source file.
- - Support @`{@dotless{i}} et al. in HTML.
+ - Make makeinfo -E just do macro expansion, avoiding all error checks.
+ That way, texi2dvi could run makeinfo --iftex -E.
- A detexinfo program, like detex or delatex. This command would
strip all the texinfo commands out, and would be used as a filter on
the way to a speller. An option would be to NOT strip comments out.
makeinfo --no-headers comes close.
- If node name contains an @ command, complain explicitly.
- - Call Ghostscript to get ASCII/jpg output for the @image command.
- - Better HTML output: allow settable background color, table colors
- and spacing, <head> meta tags, back link from footnote marker, etc.
+ - Use @documentlanguage instead of LANG for many translations.
+ - HTML: split output by chapter to improve context, per Akim.
+ Generate dummy files for all nodes for the sake of cross-references.
+ - HTML: support thumbnails.
+ - HTML: make images of math, maybe.
+ - HTML: allow settable background color, table colors and spacing,
+ <head> meta tags, etc. A la http://texi2html.cvshome.org. In fact:
+ - HTML: have a library of different CSS styles.
+ http://mail.gnu.org/archive/html/bug-texinfo/2004-01/msg00025.html
+ - XML: cannot be loaded directly in a browser; why not?
+ - Docbook: &euro; and other entities do not work; does anything work?
- Rewrite completely to simplify generation of different formats.
* TeX:
- Use @ as the escape character, and Texinfo syntax generally, in the
- table of contents, aux, and index files. Eliminate all the crazy
+ table of contents and index files. Eliminate all the crazy
multiple redefinitions of every Texinfo command in different contexts.
- - Handle @hsep and @vsep in @multitables.
- - Introduce new command to change \bindingoffset.
+ - Support input in any encoding and language, via ec or Latin Modern fonts.
- Reasonable way to change fonts from the default (some work has been
done), to allow for PostScript fonts, for example.
+ - @multitable: handle @hsep and @vsep.
+ - @multitable: repeat table headings if multiple pages long.
+ - @multitable: support a heading line concept (<thead> in HTML).
+ - Introduce new command to change \bindingoffset.
- How about using latex2html to produce HTML?
- - Support 8-bit input characters, perhaps via the ec fonts.
- - Repeat table headings if a @multitable is multiple pages long.
- Table of contents gets misaligned if there are 10 or more [sub]sections.
- Use url.sty (or something) to allow linebreak of url's.
+ - Include hyperlink \special's in the DVI output for xdvi, etc.
+ - PDF: make each letter of the index (A, B, ...) a section in the TOC.
+ From Carsten Dominik <dominik@astro.uva.nl>.
* Doc:
- Include a complete functional summary, as in a reference card, in
@@ -96,29 +131,37 @@ If you are interested in working on any of these, email bug-texinfo@gnu.org.
- Search all nodes of dir file at startup, then can have
INFO-DIR-SEPARATE-GROUPS and other such.
- Better dir file merging.
+ - Global dir file (as in /etc/conf/dir) and texinfo config file
+ specifying which info directories to search. From Dale Mellor.
+ http://mail.gnu.org/mailman/private/gnu-prog-discuss/2003q4/000439.html
- Steal interface ideas from Lynx: number links, use color, etc.
Perhaps code from the pinfo viewer can be reused:
http://zeus.polsl.gliwice.pl/~pborys/.
- More sample .infokey files, so people can choose without writing their own.
- q within help should quit help like C-x 0.
- - Incorporate an X-based viewer, perhaps tkinfo
+ - Incorporate an X-based viewer, perhaps saxinfo or tkinfo
http://www.math.ucsb.edu/~boldt/tkinfo/
- or saxinfo.
+ - Make "info foo bar" search for bar in foo's index(es) if no menu match.
+ - Handle M-n, C-u m, and C-u g like Emacs Info (opening new windows).
- Write technical definition of Info format.
-* PDF:
- - make each letter of the index (A, B, ...) a section in the TOC.
- From Carsten Dominik <dominik@astro.uva.nl>.
-
* install-info:
- - be able to copy the info file to compile-time $(infodir), to
+ - be able to copy the info file to compile-time $infodir, to
simplify by-hand installation.
+ - also support installing HTML files, etc., along with subsidiary
+ @image (or other) files. In subdirs. Or something.
+ - support info dir entries for other than the current info file name;
+ see comments in menu_item_equal.
+ - merge features with Debian install-info, so we can have one program.
* texindex:
- read source file (specified by new option) for @documentlanguage
- and/or @documentencoding, and change the sorting appropriately.
- From: Wojciech Polak <polak@gnu.org>, 26 Apr 2003 11:30:59 +0200.
+ and/or @documentencoding, and change the sorting appropriately.
+ From: Wojciech Polak, 26 Apr 2003 11:30:59 +0200.
+* Distribution:
+ - generate txi-??.tex from .po's to make translators' jobs easier.
+ From Akim and Karl E.
Ideas that will not be implemented:
- Process Texinfo files directly instead of converting to Info:
@@ -128,5 +171,11 @@ Ideas that will not be implemented:
[This has the disadvantage of needing to be updated when the
Texinfo language changes, so don't.]
-- Split HTML output by chapter.
- [Then cross-references in HTML cannot be generated consistently.]
+- Call Ghostscript to get ASCII/jpg output for the @image command.
+ [makeinfo should not try to be make, or assume it knows how the user
+ wants to generate images. Too many different methods are possible.]
+
+- Change bars. This is difficult or impossible in TeX,
+ unfortunately. To do it right requires device driver support.
+ wdiff or ediff may be all we can do. Merely specifying what should be
+ changed is not obvious.
diff --git a/contrib/texinfo/config.h.in b/contrib/texinfo/config.h.in
index 9af5408..cc9fc88 100644
--- a/contrib/texinfo/config.h.in
+++ b/contrib/texinfo/config.h.in
@@ -25,6 +25,9 @@
/* Define to 1 if you have the <argz.h> header file. */
#undef HAVE_ARGZ_H
+/* Define to 1 if you have the `asprintf' function. */
+#undef HAVE_ASPRINTF
+
/* Define to 1 if you have the `bzero' function. */
#undef HAVE_BZERO
@@ -32,21 +35,41 @@
*/
#undef HAVE_DCGETTEXT
+/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FEOF_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FGETS_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETC_UNLOCKED
+
/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
*/
#undef HAVE_DECL_GETENV
-/* Define if this function is declared. */
-#undef HAVE_DECL_STRCASECMP
+/* Define to 1 if you have the declaration of `memchr', and to 0 if you don't.
+ */
+#undef HAVE_DECL_MEMCHR
-/* Define if this function is declared. */
+/* Define to 1 if you have the declaration of `strcoll', and to 0 if you
+ don't. */
#undef HAVE_DECL_STRCOLL
-/* Define if this function is declared. */
+/* Define to 1 if you have the declaration of `strerror', and to 0 if you
+ don't. */
#undef HAVE_DECL_STRERROR
-/* Define if this function is declared. */
-#undef HAVE_DECL_STRNCASECMP
+/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you
+ don't. */
+#undef HAVE_DECL__SNPRINTF
+
+/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you
+ don't. */
+#undef HAVE_DECL__SNWPRINTF
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
#undef HAVE_DOPRNT
@@ -54,18 +77,12 @@
/* Define to 1 if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H
-/* Define to 1 if you have the `feof_unlocked' function. */
-#undef HAVE_FEOF_UNLOCKED
-
-/* Define to 1 if you have the `fgets_unlocked' function. */
-#undef HAVE_FGETS_UNLOCKED
+/* Define to 1 if you have the `fwprintf' function. */
+#undef HAVE_FWPRINTF
/* Define to 1 if you have the `getcwd' function. */
#undef HAVE_GETCWD
-/* Define to 1 if you have the `getc_unlocked' function. */
-#undef HAVE_GETC_UNLOCKED
-
/* Define to 1 if you have the `getegid' function. */
#undef HAVE_GETEGID
@@ -90,6 +107,9 @@
/* Define if you have the iconv() function. */
#undef HAVE_ICONV
+/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
+#undef HAVE_INTMAX_T
+
/* Define if <inttypes.h> exists and doesn't clash with <sys/types.h>. */
#undef HAVE_INTTYPES_H
@@ -115,6 +135,12 @@
/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
+/* Define if you have the 'long double' type. */
+#undef HAVE_LONG_DOUBLE
+
+/* Define if you have the 'long long' type. */
+#undef HAVE_LONG_LONG
+
/* Define to 1 if you have the <malloc.h> header file. */
#undef HAVE_MALLOC_H
@@ -148,6 +174,9 @@
/* Define to 1 if you have the <nl_types.h> header file. */
#undef HAVE_NL_TYPES_H
+/* Define if your printf() function supports format strings with positions. */
+#undef HAVE_POSIX_PRINTF
+
/* Define to 1 if you have the `putenv' function. */
#undef HAVE_PUTENV
@@ -172,6 +201,9 @@
/* Define to 1 if you have the `sigsetmask' function. */
#undef HAVE_SIGSETMASK
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
/* Define to 1 if you have the <stddef.h> header file. */
#undef HAVE_STDDEF_H
@@ -270,6 +302,15 @@
/* Define to 1 if you have the `vprintf' function. */
#undef HAVE_VPRINTF
+/* Define if you have the 'wchar_t' type. */
+#undef HAVE_WCHAR_T
+
+/* Define to 1 if you have the `wcslen' function. */
+#undef HAVE_WCSLEN
+
+/* Define if you have the 'wint_t' type. */
+#undef HAVE_WINT_T
+
/* Define to 1 if you have the `__argz_count' function. */
#undef HAVE___ARGZ_COUNT
@@ -315,12 +356,16 @@
/* Define as the return type of signal handlers (`int' or `void'). */
#undef RETSIGTYPE
+/* Define as the maximum value of type 'size_t', if the system doesn't define
+ it. */
+#undef SIZE_MAX
+
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at run-time.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown */
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
#undef STACK_DIRECTION
/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
@@ -348,9 +393,11 @@
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
-/* Define as `__inline' if that's what the C compiler calls it, or to nothing
- if it is not supported. */
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
#undef inline
+#endif
/* Define to rpl_mkstemp if the replacement function should be used. */
#undef mkstemp
@@ -358,6 +405,13 @@
/* Define to `long' if <sys/types.h> does not define. */
#undef off_t
+/* Define as the type of the result of subtracting two pointers, if the system
+ doesn't define it. */
+#undef ptrdiff_t
+
+/* Define to empty if the C compiler doesn't support this keyword. */
+#undef signed
+
/* Define to `unsigned' if <sys/types.h> does not define. */
#undef size_t
diff --git a/contrib/texinfo/doc/README b/contrib/texinfo/doc/README
index a9372123..63f1ba2 100644
--- a/contrib/texinfo/doc/README
+++ b/contrib/texinfo/doc/README
@@ -1,4 +1,4 @@
-$Id: README,v 1.3 2002/12/05 21:42:23 karl Exp $
+$Id: README,v 1.4 2004/04/11 17:56:45 karl Exp $
texinfo/doc/README
Copyright (C) 2002 Free Software Foundation, Inc.
diff --git a/contrib/texinfo/doc/info-stnd.texi b/contrib/texinfo/doc/info-stnd.texi
index 879977c..1a1df6f 100644
--- a/contrib/texinfo/doc/info-stnd.texi
+++ b/contrib/texinfo/doc/info-stnd.texi
@@ -1,5 +1,8 @@
-\input texinfo @c -*-texinfo-*-
-@comment $Id: info-stnd.texi,v 1.5 2003/02/19 13:32:54 karl Exp $
+\input texinfo.tex @c -*-texinfo-*-
+@comment $Id: info-stnd.texi,v 1.9 2004/12/14 16:58:15 karl Exp $
+@c We must \input texinfo.tex instead of texinfo, otherwise make
+@c distcheck in the Texinfo distribution fails, because the texinfo Info
+@c file is made first, and texi2dvi must include . first in the path.
@comment %**start of header
@setfilename info-stnd.info
@include version-stnd.texi
@@ -14,8 +17,8 @@ This manual is for GNU Info (version @value{VERSION}, @value{UPDATED}),
a program for viewing documents in Info format (usually created from
Texinfo source files).
-Copyright @copyright{} 1992, 1993, 1996, 1997, 1998, 1999, 2001, 2002, 2003
-Free Software Foundation, Inc.
+Copyright @copyright{} 1992, 1993, 1996, 1997, 1998, 1999, 2001, 2002,
+2003, 2004 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -201,7 +204,7 @@ Produces a relatively brief description of the available Info options.
@cindex index search, selecting from the command line
@cindex online help, using Info as
After processing all command-line arguments, go to the index in the Info
-file and search for index entries which matche @var{string}. If such an
+file and search for index entries which match @var{string}. If such an
entry is found, the Info session begins with displaying the node pointed
to by the first matching index entry; press @kbd{,} to step through the
rest of the matching entries. If no such entry exists, print @samp{no
@@ -235,17 +238,17 @@ Each node that Info visits will be output to @var{filename} instead of
interactively viewed. A value of @code{-} for @var{filename} specifies
the standard output.
-@cindex colors in man pages
-@cindex ANSI escape sequences in man pages
+@cindex colors in documents
+@cindex ANSI escape sequences in documents
@item --raw-escapes
+@itemx --no-raw-escapes
@itemx -R
-Do not remove ANSI escape sequences from man pages. Some versions of
+Do not remove ANSI escape sequences from documents. Some versions of
Groff, the GNU document formatter, produce man pages with ANSI escape
sequences for bold, italics, and underlined characters, and for
-colorized text. By default, Info removes those escape sequences
-before it displays the man page. If your terminal supports these
-escapes, use @code{--raw-escapes} to let the terminal handle them and
-display the man pages with those attributes.
+colorized text. By default, Info lets those escape sequences pass
+through directly to the terminal. If your terminal does not support
+these escapes, use @code{--no-raw-escapes} to make Info remove them.
@cindex replaying recorded keystrokes
@item --restore=@var{dribble-file}
@@ -299,6 +302,14 @@ modeled after Emacs.
(@xref{Custom Key Bindings},
for a more general way of altering GNU Info's key bindings.)
+@cindex Info manual location
+@cindex Where is an Info manual?
+@item --where
+@itemx --location
+@itemx -w
+Show the filename that would be read and exit, instead of actually
+reading it and starting Info.
+
@item @var{menu-item}
@cindex menu, following
@anchor{command-line menu items}
@@ -337,19 +348,19 @@ following all the menu items given on the command line. This is so
@cindex moving the cursor
Many people find that reading screens of text page by page is made
-easier when one is able to indicate particular pieces of text with some
-kind of pointing device. Since this is the case, GNU Info (both the
-Emacs and standalone versions) have several commands which allow you to
-move the cursor about the screen. The notation used in this manual to
-describe keystrokes is identical to the notation used within the Emacs
-manual, and the GNU Readline manual. @xref{Characters, , Character
-Conventions, emacs, the GNU Emacs Manual}, if you are unfamiliar with the
-notation@footnote{
-Here's a short summary. @kbd{C-@var{x}} means press the @kbd{CTRL} key
-and the key @var{x}. @kbd{M-@var{x}} means press the @kbd{META} key and
-the key @var{x}. On many terminals th @kbd{META} key is known as the
-@kbd{ALT} key. @kbd{SPC} is the space bar. The other keys are usually
-called by the names imprinted on them.}.
+easier when one is able to indicate particular pieces of text with
+some kind of pointing device. Since this is the case, GNU Info (both
+the Emacs and standalone versions) have several commands which allow
+you to move the cursor about the screen. The notation used in this
+manual to describe keystrokes is identical to the notation used within
+the Emacs manual, and the GNU Readline manual. @xref{User Input,,,
+emacs, the GNU Emacs Manual}, if you are unfamiliar with the
+notation.@footnote{Here's a short summary. @kbd{C-@var{x}} means
+press the @kbd{CTRL} key and the key @var{x}. @kbd{M-@var{x}} means
+press the @kbd{META} key and the key @var{x}. On many terminals th
+@kbd{META} key is known as the @kbd{ALT} key. @kbd{SPC} is the space
+bar. The other keys are usually called by the names imprinted on
+them.}
The following table lists the basic cursor movement commands in Info.
Each entry consists of the key sequence you should type to execute the
@@ -699,7 +710,7 @@ Select the `Up' node.
@end table
You can easily select a node that you have already viewed in this window
-by using the @samp{l} command -- this name stands for "last", and
+by using the @samp{l} command---this name stands for ``last'', and
actually moves backwards through the history of visited nodes for this
window. This is handy when you followed a reference to another node,
possibly to read about a related issue, and would like then to resume
@@ -977,7 +988,7 @@ is case-sensitive; otherwise Info ignores the letter case.
@cindex index, searching
@cindex searching, in the indices
Look up a string in the indices for this Info file, and select a node
-where the found index entry points to.
+to which the found index entry points.
@item @key{,} (@code{next-index-match})
@kindex ,
@@ -1028,9 +1039,10 @@ has all of its important concepts indexed, so the @samp{i} command
lets you use a manual as a reference.
If you don't know what manual documents something, try the @kbd{M-x
-index-apropos}. It prompts for a string and then looks up that string
-in all the indices of all the Info documents installed on your system.
-It can also be invoked from the command line; see @ref{--apropos}.
+index-apropos} command. It prompts for a string and then looks up
+that string in all the indices of all the Info documents installed on
+your system. It can also be invoked from the command line; see
+@ref{--apropos}.
@node Xref Commands
@@ -1290,8 +1302,7 @@ Split the current window into two windows, both showing the same node.
Each window is one half the size of the original window, and the cursor
remains in the original window. The variable @code{automatic-tiling}
can cause all of the windows on the screen to be resized for you
-automatically, please @pxref{Variables, , automatic-tiling} for more
-information.
+automatically (@pxref{Variables, , automatic-tiling}).
@item @kbd{C-x @key{0}} (@code{delete-window})
@cindex windows, deleting
@@ -1311,7 +1322,7 @@ Delete all of the windows excepting the current one.
@findex scroll-other-window
Scroll the other window, in the same fashion that @samp{C-v} might
scroll the current window. Given a negative argument, scroll the
-"other" window backward.
+``other'' window backward.
@item @kbd{C-x @key{^}} (@code{grow-window})
@kindex C-x ^
@@ -1567,7 +1578,7 @@ with @samp{fol}.
@item @key{ESC C-v} (@code{echo-area-scroll-completions-window})
@kindex ESC C-v, in the echo area
@findex echo-area-scroll-completions-window
-Scroll the completions window, if that is visible, or the "other"
+Scroll the completions window, if that is visible, or the ``other''
window if not.
@end table
@@ -1894,7 +1905,7 @@ nonzero value, Info attempts to scroll the node text by that many lines;
if that is enough to bring the cursor back into the window, that is what
is done. The default value of this variable is 0, thus placing the
cursor (and the text it is attached to) in the center of the window.
-Setting this variable to 1 causes a kind of "smooth scrolling" which
+Setting this variable to 1 causes a kind of ``smooth scrolling'' which
some people prefer.
@item show-index-match
diff --git a/contrib/texinfo/doc/info.1 b/contrib/texinfo/doc/info.1
index 085fed3..39ca1d3 100644
--- a/contrib/texinfo/doc/info.1
+++ b/contrib/texinfo/doc/info.1
@@ -1,5 +1,5 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29.
-.TH INFO "1" "June 2003" "info 4.6" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.34.
+.TH INFO "1" "December 2004" "info 4.8" "User Commands"
.SH NAME
info \- read Info documents
.SH SYNOPSIS
@@ -34,24 +34,30 @@ specify nodes in first visited Info file.
output selected nodes to FILENAME.
.TP
\fB\-R\fR, \fB\-\-raw\-escapes\fR
-don't remove ANSI escapes from man pages.
+output "raw" ANSI escapes (default).
+.TP
+\fB\-\-no\-raw\-escapes\fR
+output escapes as literal text.
.TP
\fB\-\-restore\fR=\fIFILENAME\fR
read initial keystrokes from FILENAME.
.TP
\fB\-O\fR, \fB\-\-show\-options\fR, \fB\-\-usage\fR
-go to command-line options node.
+go to command\-line options node.
.TP
\fB\-\-subnodes\fR
recursively output menu items.
.TP
+\fB\-w\fR, \fB\-\-where\fR, \fB\-\-location\fR
+print physical location of Info file.
+.TP
\fB\-\-vi\-keys\fR
-use vi-like and less-like key bindings.
+use vi\-like and less\-like key bindings.
.TP
\fB\-\-version\fR
display version information and exit.
.PP
-The first non-option argument, if present, is the menu entry to start from;
+The first non\-option argument, if present, is the menu entry to start from;
it is searched for in all `dir' files along INFOPATH.
If it is not present, info merges all `dir' files and shows the result.
Any remaining arguments are treated as the names of menu
@@ -59,10 +65,10 @@ items relative to the initial node visited.
.SH EXAMPLES
.TP
info
-show top-level dir menu
+show top\-level dir menu
.TP
info emacs
-start at emacs node from top-level dir
+start at emacs node from top\-level dir
.TP
info emacs buffers
start at buffers node within emacs manual
@@ -73,11 +79,11 @@ start at node with emacs' command line options
info \fB\-f\fR ./foo.info
show file ./foo.info, not searching dir
.SH "REPORTING BUGS"
-Email bug reports to bug-texinfo@gnu.org,
-general questions and discussion to help-texinfo@gnu.org.
+Email bug reports to bug\-texinfo@gnu.org,
+general questions and discussion to help\-texinfo@gnu.org.
Texinfo home page: http://www.gnu.org/software/texinfo/
.SH COPYRIGHT
-Copyright \(co 2003 Free Software Foundation, Inc.
+Copyright \(co 2004 Free Software Foundation, Inc.
There is NO warranty. You may redistribute this software
under the terms of the GNU General Public License.
For more information about these matters, see the files named COPYING.
diff --git a/contrib/texinfo/doc/info.5 b/contrib/texinfo/doc/info.5
index bcf5101..af9ba2e 100644
--- a/contrib/texinfo/doc/info.5
+++ b/contrib/texinfo/doc/info.5
@@ -1,5 +1,5 @@
.\" info(5)
-.\" $Id: info.5,v 1.1 2002/08/25 23:38:38 karl Exp $
+.\" $Id: info.5,v 1.2 2004/04/11 17:56:45 karl Exp $
.\"
.\" Copyright (C) 1998 Free Software Foundation, Inc.
.\"
diff --git a/contrib/texinfo/doc/info.texi b/contrib/texinfo/doc/info.texi
index bbdee41..014e916 100644
--- a/contrib/texinfo/doc/info.texi
+++ b/contrib/texinfo/doc/info.texi
@@ -1,4 +1,7 @@
-\input texinfo @c -*-texinfo-*-
+\input texinfo.tex @c -*-texinfo-*-
+@c We must \input texinfo.tex instead of texinfo, otherwise make
+@c distcheck in the Texinfo distribution fails, because the texinfo Info
+@c file is made first, and texi2dvi must include . first in the path.
@comment %**start of header
@setfilename info.info
@settitle Info
@@ -6,13 +9,12 @@
@syncodeindex vr cp
@syncodeindex ky cp
@comment %**end of header
-@comment $Id: info.texi,v 1.3 2002/11/06 00:45:36 karl Exp $
@copying
This file describes how to use Info, the on-line, menu-driven GNU
documentation system.
-Copyright (C) 1989, 1992, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+Copyright (C) 1989, 1992, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
@quotation
@@ -50,6 +52,8 @@ license to the document, as described in section 6 of the license.
@insertcopying
@end titlepage
+@contents
+
@ifnottex
@node Top
@top Info: An Introduction
@@ -58,6 +62,11 @@ The GNU Project distributes most of its on-line manuals in the
@dfn{Info format}, which you read using an @dfn{Info reader}. You are
probably using an Info reader to read this now.
+There are two primary Info readers: @code{info}, a stand-alone program
+designed just to read Info files, and the @code{info} package in GNU
+Emacs, a general-purpose editor. At present, only the Emacs reader
+supports using a mouse.
+
@ifinfo
If you are new to the Info reader and want to learn how to use it,
type the command @kbd{h} now. It brings you to a programmed
@@ -80,7 +89,7 @@ Started' chapter.
@comment node-name, next, previous, up
@chapter Getting Started
-This first part of the Info manual describes how to get around inside
+This first part of this Info manual describes how to get around inside
of Info. The second part of the manual describes various advanced
Info commands, and how to write an Info as distinct from a Texinfo
file. The third part briefly explains how to generate Info files from
@@ -107,7 +116,7 @@ stand-alone program designed just to read Info files.
@item
Type @code{emacs} at the command line; then type @kbd{C-h i}
(@kbd{Control-h}, followed by @kbd{i}). This approach uses the Info
-mode of the Emacs program, an editor with many other capabilities.
+mode of the Emacs editor.
@end enumerate
In either case, then type @kbd{mInfo} (just the letters), followed by
@@ -121,14 +130,15 @@ the screen.
@end ifnotinfo
@menu
-* Help-Small-Screen:: Starting Info on a Small Screen
-* Help:: How to use Info
-* Help-P:: Returning to the Previous node
+* Help-Small-Screen:: Starting Info on a Small Screen.
+* Help:: How to use Info.
+* Help-P:: Returning to the Previous node.
* Help-^L:: The Space, DEL, B and ^L commands.
-* Help-M:: Menus
-* Help-Xref:: Following cross-references
-* Help-Int:: Some intermediate Info commands
-* Help-Q:: Quitting Info
+* Help-Inv:: Invisible text in Emacs Info.
+* Help-M:: Menus.
+* Help-Xref:: Following cross-references.
+* Help-Int:: Some intermediate Info commands.
+* Help-Q:: Quitting Info.
@end menu
@node Help-Small-Screen
@@ -202,8 +212,8 @@ This is line 59
If you have managed to get here, go back to the beginning with
@kbd{DEL} (or @key{BACKSPACE}), and come back here again, then you
understand the about the @samp{Space} and @samp{Backspace} keys. So
-now type an @kbd{n} ---just one character; don't type the quotes and
-don't type the Return key afterward--- to get to the normal start of
+now type an @kbd{n}---just one character; don't type the quotes and
+don't type the Return key afterward---to get to the normal start of
the course.
@end ifinfo
@@ -213,6 +223,10 @@ the course.
You are talking to the program Info, for reading documentation.
+ There are two ways to use Info: from within Emacs or as a
+stand-alone reader that you can invoke from a shell using the command
+@command{info}.
+
@cindex node, in Info documents
Right now you are looking at one @dfn{Node} of Information.
A node contains text describing a specific topic at a specific
@@ -229,8 +243,8 @@ well. In Emacs, the header line is duplicated in a special typeface,
and the duplicate remains at the top of the window all the time even
if you scroll through the node.
- Besides a @samp{Next}, a node can have a @samp{Previous} or an
-@samp{Up} links, or both. As you can see, this node has all of these
+ Besides a @samp{Next}, a node can have a @samp{Previous} link, or an
+@samp{Up} link, or both. As you can see, this node has all of these
links.
@kindex n @r{(Info mode)}
@@ -261,9 +275,10 @@ command. Another @kbd{n} command now would take you to the next
node, @samp{Help-^L}.
@format
->> But do not type @kbd{n} yet. First, try the @kbd{p} command,
- or click the middle mouse button on the @samp{Prev} link. That
- takes you to the @samp{Previous} node. Then use @kbd{n} to return here.
+>> But do not type @kbd{n} yet. First, try the @kbd{p} command, or
+ (in Emacs) click the middle mouse button on the @samp{Prev} link.
+ That takes you to the @samp{Previous} node. Then use @kbd{n} to
+ return here.
@end format
If you read this in Emacs, you will see an @samp{Info} item in the
@@ -279,13 +294,13 @@ to. You could make Info skip past an important warning that was
coming up.
@format
->> Now do an @kbd{n}, or click the middle mouse button on the @samp{Next}
- link, to get to the node @samp{Help-^L} and learn more.
+>> Now do an @kbd{n}, or (in Emacs) click the middle mouse button on
+ the @samp{Next} link, to get to the node @samp{Help-^L} and learn more.
@end format
-@node Help-^L, Help-M, Help-P, Getting Started
+@node Help-^L, Help-Inv, Help-P, Getting Started
@comment node-name, next, previous, up
-@section The Space, DEL, B and ^L commands.
+@section The Space, DEL, B and ^L commands
This node's mode line tells you that you are now at node
@samp{Help-^L}, and the header line tells you that @kbd{p} would get
@@ -360,7 +375,7 @@ scroll beyond the beginning or the end of the current node.
@kindex C-l @r{(Info mode)}
If your screen is ever garbaged, you can tell Info to display it
-again by typing @kbd{C-l} (@kbd{Control-L}, that is---hold down
+again by typing @kbd{C-l} (@kbd{Control-L}---that is, hold down
@key{CTRL} and type @kbd{L} or @kbd{l}).
@format
@@ -399,8 +414,8 @@ the list, make it go away by typing a @key{SPC} repeatedly.
(If you are using the stand-alone Info reader, type @kbd{C-x 0} to
return here, that is---press and hold @key{CTRL}, type an @kbd{x},
-then release @key{CTRL} and @kbd{x}, and press @kbd{0}---a zero, not
-the letter ``o''.)
+then release @key{CTRL} and @kbd{x}, and press @kbd{0}; that's a zero,
+not the letter ``o''.)
From now on, you will encounter large nodes without warning, and
will be expected to know how to use @key{SPC} and @key{BACKSPACE} to
@@ -409,30 +424,103 @@ the same size screen, it would be impossible to warn you anyway.
@format
>> Now type @kbd{n}, or click the middle mouse button on the @samp{Next} link,
- to see the description of the @kbd{m} command.
+ to visit the next node.
@end format
-@node Help-M, Help-Xref, Help-^L, Getting Started
+@node Help-Inv, Help-M, Help-^L, Getting Started
+@comment node-name, next, previous, up
+@section Invisible text in Emacs Info
+
+ Before discussing menus, we need to make some remarks that are only
+relevant to users reading Info using Emacs. Users of the stand-alone
+version can skip this node by typing @kbd{]} now.
+
+@cindex invisible text in Emacs
+ In Emacs, certain text that appears in the stand-alone version is
+normally hidden, technically because it has the @samp{invisibility}
+property. Invisible text is really a part of the text. It becomes
+visible (by default) after killing and yanking, it appears in printed
+output, it gets saved to file just like any other text, and so on.
+Thus it is useful to know it is there.
+
+@findex visible-mode
+You can make invisible text visible by using the command @kbd{M-x
+visible-mode}. Visible mode is a minor mode, so using the command a
+second time will make the text invisible again. Watch the effects of
+the command on the ``menu'' below and the top line of this node.
+
+If you prefer to @emph{always} see the invisible text, you can set
+@code{Info-hide-note-references} to @code{nil}. Enabling Visible mode
+permanently is not a real alternative, because Emacs Info also uses
+(although less extensively) another text property that can change the
+text being displayed, the @samp{display} property. Only the
+invisibility property is affected by Visible mode. When, in this
+tutorial, we refer to the @samp{Emacs} behavior, we mean the
+@emph{default} Emacs behavior.
+
+Now type @kbd{]}, to learn about the @kbd{]} and @kbd{[} commands.
+
+@menu
+* ]: Help-]. Node telling about ].
+* stuff: Help-]. Same node.
+* Help-]:: Yet again, same node.
+@end menu
+
+@node Help-], , , Help-Inv
+@subsection The @kbd{]} and @kbd{[} commands
+
+If you type @kbd{n} now, you get an error message saying that this
+node has no next node. Similarly, if you type @kbd{p}, the error
+message tells you that there is no previous node. (The exact message
+depends on the Info reader you use.) This is because @kbd{n} and
+@kbd{p} carry you to the next and previous node @emph{at the same
+level}. The present node is contained in a menu (see next) of the
+node you came from, and hence is considered to be at a lower level.
+It is the only node in the previous node's menu (even though it was
+listed three times). Hence it has no next or previous node that
+@kbd{n} or @kbd{p} could move to.
+
+If you systematically move through a manual by typing @kbd{n}, you run
+the risk of skipping many nodes. You do not run this risk if you
+systematically use @kbd{@key{SPC}}, because, when you scroll to the
+bottom of a node and type another @kbd{@key{SPC}}, then this carries
+you to the following node in the manual @emph{regardless of level}.
+If you immediately want to go to that node, without having to scroll
+to the bottom of the screen first, you can type @kbd{]}.
+
+Similarly, @kbd{@key{BACKSPACE}} carries you to the preceding node
+regardless of level, after you scrolled to the beginning of the
+present node. If you want to go to the preceding node immediately,
+you can type @kbd{[}.
+
+For instance, typing this sequence will come back here in three steps:
+@kbd{[ n [}. To do the same backward, type @kbd{] p ]}.
+
+Now type @kbd{]} to go to the next node and learn about menus.
+
+@node Help-M, Help-Xref, Help-Inv, Getting Started
@comment node-name, next, previous, up
@section Menus and the @kbd{m} command
@cindex menus in an Info document
@cindex Info menus
- With only the @kbd{n} (next) and @kbd{p} (previous) commands for
-moving between nodes, nodes are restricted to a linear sequence.
-Menus allow a branching structure. A menu is a list of other nodes
-you can move to. It is actually just part of the text of the node
-formatted specially so that Info can interpret it. The beginning of a
-menu is always identified by a line which starts with @samp{* Menu:}.
-A node contains a menu if and only if it has a line in it which starts
-that way. The only menu you can use at any moment is the one in the
-node you are in. To use a menu in any other node, you must move to
-that node first.
+ With only the @kbd{n} (next), @kbd{p} (previous), @kbd{@key{SPC}},
+@kbd{@key{BACKSPACE}}, @kbd{]} and @kbd{[} commands for moving between
+nodes, nodes are restricted to a linear sequence. Menus allow a
+branching structure. A menu is a list of other nodes you can move to.
+It is actually just part of the text of the node formatted specially
+so that Info can interpret it. The beginning of a menu is always
+identified by a line which starts with @w{@samp{* Menu:}}. A node
+contains a menu if and only if it has a line in it which starts that
+way. The only menu you can use at any moment is the one in the node
+you are in. To use a menu in any other node, you must move to that
+node first.
After the start of the menu, each line that starts with a @samp{*}
-identifies one subtopic. The line usually contains a brief name
-for the subtopic (followed by a @samp{:}), the name of the node that talks
-about that subtopic, and optionally some further description of the
+identifies one subtopic. The line usually contains a brief name for
+the subtopic (followed by a @samp{:}, normally hidden in Emacs), the
+name of the node that talks about that subtopic (again, normally
+hidden in Emacs), and optionally some further description of the
subtopic. Lines in the menu that do not start with a @samp{*} have no
special meaning---they are only for the human reader's benefit and do
not define additional subtopics. Here is an example:
@@ -444,7 +532,11 @@ not define additional subtopics. Here is an example:
The subtopic name is Foo, and the node describing it is @samp{Node
about FOO}. The rest of the line is just for the reader's
Information. [[ But this line is not a real menu item, simply because
-there is no line above it which starts with @samp{* Menu:}.]]
+there is no line above it which starts with @w{@samp{* Menu:}}. Also,
+in a real menu item, the @samp{*} would appear at the very start of
+the line. This is why the ``normally hidden'' text in Emacs, namely
+@samp{: Node about FOO.}, is actually visible in this example, even
+when Visible mode is off.]]
When you use a menu to go to another node (in a way that will be
described soon), what you specify is the subtopic name, the first
@@ -463,7 +555,7 @@ abbreviation for this:
@noindent
This means that the subtopic name and node name are the same; they are
-both @samp{Foo}.
+both @samp{Foo}. (The @samp{::} is normally hidden in Emacs.)
@format
>> Now use @key{SPC} to find the menu in this node, then come back to
@@ -488,16 +580,18 @@ another command. The @kbd{m} command is different: it needs to know
the @dfn{name of the subtopic}. Once you have typed @kbd{m}, Info
tries to read the subtopic name.
- Now look for the line containing many dashes near the bottom of the
-screen. There is one more line beneath that one, but usually it is
-blank. When it is blank, Info is ready for a command, such as @kbd{n}
-or @kbd{b} or @key{SPC} or @kbd{m}. If that line contains text ending
-in a colon, it means Info is reading more input for the last command.
-You can't type an Info command then, because Info is trying to read
-input, not commands. You must either give the input and finish the
-command you started, or type @kbd{Control-g} to cancel the command.
-When you have done one of those things, the input entry line becomes
-blank again. Then you can type Info commands again.
+ Now, in the stand-alone Info, look for the line containing many
+dashes near the bottom of the screen. (This is the stand-alone
+equivalent for the mode line in Emacs.) There is one more line
+beneath that one, but usually it is blank. (In Emacs, this is the
+echo area.) When it is blank, Info is ready for a command, such as
+@kbd{n} or @kbd{b} or @key{SPC} or @kbd{m}. If that line contains
+text ending in a colon, it means Info is reading more input for the
+last command. You can't type an Info command then, because Info is
+trying to read input, not commands. You must either give the input
+and finish the command you started, or type @kbd{Control-g} to cancel
+the command. When you have done one of those things, the input entry
+line becomes blank again. Then you can type Info commands again.
@findex Info-menu
The command to go to a subnode via a menu is @kbd{m}. After you type
@@ -535,6 +629,8 @@ three ways of going to one place, Help-FOO:
* Help-FOO:: And yet another!
@end menu
+(Turn Visible mode on if you are using Emacs.)
+
@format
>> Now type just an @kbd{m} and see what happens:
@end format
@@ -610,14 +706,6 @@ node's header line it acts like @kbd{n}, @kbd{p}, or @kbd{u}, etc. At
end of the node's text @kbd{Mouse-2} moves to the next node, or up if
there's no next node.
- Here is another way to get to Help-FOO, a menu. You can ignore this
-if you want, or else try it by typing @key{TAB} and then @key{RET}, or
-clicking @kbd{Mouse-2} on it (but then please come back to here).
-
-@menu
-* Help-FOO::
-@end menu
-
@format
>> Type @kbd{n} to see more commands.
@end format
@@ -656,7 +744,8 @@ pointer shown in the header line (provided that you have a mouse).
In Info documentation, you will see many @dfn{cross references}.
Cross references look like this: @xref{Help-Cross, Cross}. That text
is a real, live cross reference, whose name is @samp{Cross} and which
-points to the node named @samp{Help-Cross}.
+points to the node named @samp{Help-Cross}. (The node name is hidden
+in Emacs. Do @kbd{M-x visible-mode} to show or hide it.)
@kindex f @r{(Info mode)}
@findex Info-follow-reference
@@ -699,6 +788,48 @@ to cancel the @kbd{f}.
The @key{TAB} and @kbd{M-@key{TAB}} key, which move between menu
items in a menu, also move between cross references outside of menus.
+ Sometimes a cross reference (or a node) can lead to another file (in
+other words another ``manual''), or, on occasion, even a file on a
+remote machine (although Info files distributed with Emacs or the
+stand-alone Info avoid using remote links). Such a cross reference
+looks like this: @xref{Top,, Overview of Texinfo, texinfo, Texinfo:
+The GNU Documentation Format}. (After following this link, type
+@kbd{l} to get back to this node.) Here the name @samp{texinfo}
+between parentheses (shown in the stand-alone version) refers to the
+file name. This file name appears in cross references and node names
+if it differs from the current file. In Emacs, the file name is
+hidden (along with other text). (Use @kbd{M-x visible-mode} to show
+or hide it.)
+
+ The remainder of this node applies only to the Emacs version. If
+you use the stand-alone version, you can type @kbd{n} immediately.
+
+ To some users, switching manuals is a much bigger switch than
+switching sections. These users like to know that they are going to
+be switching to another manual (and which one) before actually doing
+so, especially given that, if one does not notice, Info commands like
+@kbd{t} (see the next node) can have confusing results.
+
+ If you put your mouse over the cross reference and if the cross
+reference leads to a different manual, then the information appearing
+in a separate box (tool tip) or in the echo area, will mention the
+file the cross reference will carry you to (between parentheses).
+This is also true for menu subtopic names. If you have a mouse, just
+leave it over the @samp{Overview} cross reference above and watch what
+happens.
+
+ If you always like to have that information available without having
+to move your mouse over the cross reference, set
+@code{Info-hide-note-references} to a value other than t (@pxref{Emacs
+Info Variables}). You might also want to do that if you have a lot of
+cross references to files on remote machines and have non-permanent or
+slow access, since otherwise you might not be able to distinguish
+between local and remote links.
+
+@format
+>> Now type @kbd{n} to learn more commands.
+@end format
+
@node Help-Int, Help-Q, Help-Xref, Getting Started
@comment node-name, next, previous, up
@section Some intermediate Info commands
@@ -706,12 +837,16 @@ items in a menu, also move between cross references outside of menus.
The introductory course is almost over; please continue
a little longer to learn some intermediate-level commands.
- Most Info files have an index, which is actually a large node that
-contains nothing but a menu. The menu has one menu item for each
-topic listed in the index. You can find the index node from the main
-menu of the file, with the @kbd{m} command; then you can use the
-@kbd{m} command again in the index node to go to the node that
-describes the topic.
+ Most Info files have an index, which is actually a large node
+containing little but a menu. The menu has one menu item for each
+topic listed in the index. (As a special feature, menus for indices
+may also include the line number within the node of the index entry.
+This allows Info readers to go to the exact line of an entry, not just
+the start of the containing node.)
+
+ You can get to the index from the main menu of the file with the
+@kbd{m} command; then you can use the @kbd{m} command again in the
+index node to go to the node that describes the topic you want.
There is also a short-cut Info command, @kbd{i}, which does all of
that for you. It searches the index for a given topic (a string) and
@@ -728,23 +863,17 @@ records the nodes where you have been in a special history list. The
@kbd{l} command revisits nodes in the history list; each successive
@kbd{l} command moves one step back through the history.
- If you have been following directions, an @kbd{l} command now will get
-you back to @samp{Help-M}. Another @kbd{l} command would undo the
-@kbd{u} and get you back to @samp{Help-FOO}. Another @kbd{l} would undo
-the @kbd{m} and get you back to @samp{Help-M}.
-
In Emacs, @kbd{l} runs the command @code{Info-last}.
@format
->> Try typing three @kbd{l}'s, pausing in between to see what each
- @kbd{l} does. Then follow directions again and you will end up
- back here.
+>> Try typing @kbd{p p n} and then three @kbd{l}'s, pausing in between
+to see what each @kbd{l} does. You should wind up right back here.
@end format
Note the difference between @kbd{l} and @kbd{p}: @kbd{l} moves to
where @emph{you} last were, whereas @kbd{p} always moves to the node
which the header says is the @samp{Previous} node (from this node, the
-@samp{Prev} link leads to @samp{Help-M}).
+@samp{Prev} link leads to @samp{Help-Xref}).
@kindex d @r{(Info mode)}
@findex Info-directory
@@ -796,10 +925,10 @@ Texinfo file. (However, in most cases, writing a Texinfo file is
better, since you can use it to make a printed manual or produce other
formats, such as HTML and DocBook, as well as for generating Info
files.) @xref{Top,, Overview of Texinfo, texinfo, Texinfo: The GNU
-Documentation Format}.)
+Documentation Format}.
@menu
-* Advanced:: Advanced Info commands: g, s, e, and 1 - 5.
+* Advanced:: Advanced Info commands: g, e, and 1 - 9.
* Info Search:: How to search Info documents for specific subjects.
* Add:: Describes how to add new nodes to the hierarchy.
Also tells what nodes look like.
@@ -816,7 +945,7 @@ Documentation Format}.)
Here are some more Info commands that make it easier to move around.
-@unnumberedsubsec @kbd{g} goes to a node by name
+@subheading @kbd{g} goes to a node by name
@kindex g @r{(Info mode)}
@findex Info-goto-node
@@ -842,7 +971,7 @@ the node @samp{Top} in the Info file @file{dir}. Likewise,
all of the current file by typing @kbd{g*@key{RET}} or all of any
other file with @kbd{g(@var{filename})@key{RET}}.
-@unnumberedsubsec @kbd{1} -- @kbd{9} choose a menu subtopic by its number
+@subheading @kbd{1}--@kbd{9} choose a menu subtopic by its number
@kindex 1 @r{through} 9 @r{(Info mode)}
@findex Info-nth-menu-item
@@ -856,17 +985,18 @@ In the stand-alone reader, @kbd{0} goes through the last menu item;
this is so you need not count how many entries are there. In Emacs,
the digit keys run the command @code{Info-nth-menu-item}.
- If your display supports multiple fonts, and you are using Emacs'
-Info mode to read Info files, the @samp{*} for the fifth menu item
-stands out, either in color or in some other attribute, such as
-underline, and so is the @samp{*} for the ninth item; this makes it
-easy to see at a glance which number to use for an item.
+ If your display supports multiple fonts, colors or underlining, and
+you are using Emacs' Info mode to read Info files, the third, sixth
+and ninth menu items have a @samp{*} that stands out, either in color
+or in some other attribute, such as underline; this makes it easy to
+see at a glance which number to use for an item.
- Some terminals don't support colors or underlining. If you need to
-actually count items, it is better to use @kbd{m} instead, and specify
-the name, or use @key{TAB} to quickly move between menu items.
+ Some terminals don't support either multiple fonts, colors or
+underlining. If you need to actually count items, it is better to use
+@kbd{m} instead, and specify the name, or use @key{TAB} to quickly
+move between menu items.
-@unnumberedsubsec @kbd{e} makes Info document editable
+@subheading @kbd{e} makes Info document editable
@kindex e @r{(Info mode)}
@findex Info-edit
@@ -881,6 +1011,23 @@ only if the variable @code{Info-enable-edit} is non-@code{nil}.
edit the Info file, so typing @kbd{e} there goes to the end of the
current node.
+@subheading @kbd{M-n} creates a new independent Info buffer in Emacs
+
+@kindex M-n @r{(Info mode)}
+@findex clone-buffer
+@cindex multiple Info buffers
+ If you are reading Info in Emacs, you can select a new independent
+Info buffer in another window by typing @kbd{M-n}. The new buffer
+starts out as an exact copy of the old one, but you will be able to
+move independently between nodes in the two buffers. (In Info mode,
+@kbd{M-n} runs the Emacs command @code{clone-buffer}.)
+
+ In Emacs Info, you can also produce new Info buffers by giving a
+numeric prefix argument to the @kbd{m} and @kbd{g} commands. @kbd{C-u
+m} and @kbd{C-u g} go to a new node in exactly the same way that
+@kbd{m} and @kbd{g} do, but they do so in a new Info buffer which they
+select in another window.
+
@node Info Search, Add, Advanced, Expert Info
@comment node-name, next, previous, up
@section How to search Info documents for specific subjects
@@ -914,7 +1061,7 @@ you typed @emph{as a substring}. For each match, Info shows in the
echo area the full index entry it found. Often, the text of the full
index entry already gives you enough information to decide whether it
is relevant to what you are looking for, so we recommend that you read
-what Emacs shows in the echo are before looking at the node it
+what Info shows in the echo area before looking at the node it
displays.
Since @kbd{i} looks for a substring, you can search for subjects even
@@ -929,12 +1076,18 @@ options, and key sequences that the program provides. If you are
looking for a description of a command, an option, or a key, just type
their names when @kbd{i} prompts you for a topic. For example, if you
want to read the description of what the @kbd{C-f} key does, type
-@kbd{iC-f@key{RET}}. Here @kbd{C-f} are 3 literal characters
+@kbd{i C - f @key{RET}}. Here @kbd{C-f} are 3 literal characters
@samp{C}, @samp{-}, and @samp{f}, not the ``Control-f'' command key
you type inside Emacs to run the command bound to @kbd{C-f}.
In Emacs, @kbd{i} runs the command @code{Info-index}.
+@findex info-apropos
+If you don't know what manual documents something, try the @kbd{M-x
+info-apropos} command. It prompts for a string and then looks up that
+string in all the indices of all the Info documents installed on your
+system.
+
@kindex s @r{(Info mode)}
@findex Info-search
The @kbd{s} command allows you to search a whole file for a string.
@@ -1049,15 +1202,15 @@ The @kbd{m} command searches the current node's menu for the topic which it
reads from the terminal.
@cindex menu and menu entry format
- A menu begins with a line starting with @samp{* Menu:}. The rest of the
-line is a comment. After the starting line, every line that begins
-with a @samp{* } lists a single topic. The name of the topic--what
-the user must type at the @kbd{m}'s command prompt to select this
-topic---comes right after the star and space, and is followed by a
-colon, spaces and tabs, and the name of the node which discusses that
-topic. The node name, like node names following @samp{Next}, @samp{Previous}
-and @samp{Up}, may be terminated with a tab, comma, or newline; it may also
-be terminated with a period.
+ A menu begins with a line starting with @w{@samp{* Menu:}}. The
+rest of the line is a comment. After the starting line, every line
+that begins with a @samp{* } lists a single topic. The name of the
+topic---what the user must type at the @kbd{m}'s command prompt to
+select this topic---comes right after the star and space, and is
+followed by a colon, spaces and tabs, and the name of the node which
+discusses that topic. The node name, like node names following
+@samp{Next}, @samp{Previous} and @samp{Up}, may be terminated with a
+tab, comma, or newline; it may also be terminated with a period.
If the node name and topic name are the same, then rather than
giving the name twice, the abbreviation @samp{* @var{name}::} may be
@@ -1278,6 +1431,14 @@ the @samp{Next}, @samp{Prev}, and @samp{Up} links. A header line does
not scroll with the rest of the buffer, making these links always
visible.
+@item Info-hide-note-references
+As explained in earlier nodes, the Emacs version of Info normally
+hides some text in menus and cross-references. You can completely
+disable this feature, by setting this option to @code{nil}. Setting
+it to a value that is neither @code{nil} nor @code{t} produces an
+intermediate behavior, hiding a limited amount of text, but showing
+all text that could potentially be useful.
+
@item Info-scroll-prefer-subnodes
If set to a non-@code{nil} value, @key{SPC} and @key{BACKSPACE} (or
@key{DEL}) keys in a menu visit subnodes of the current node before
@@ -1286,7 +1447,7 @@ node's menu appears on the screen, the next @key{SPC} moves to a
subnode indicated by the following menu item. Setting this option to
@code{nil} results in behavior similar to the stand-alone Info reader
program, which visits the first subnode from the menu only when you
-hit the end of the current node. The default is @code{t}.
+hit the end of the current node. The default is @code{nil}.
@item Info-enable-active-nodes
When set to a non-@code{nil} value, allows Info to execute Lisp code
@@ -1331,3 +1492,7 @@ topics discussed in this document.
@printindex cp
@bye
+
+@ignore
+ arch-tag: 965c1638-01d6-4156-9227-b10418b9d8e8
+@end ignore
diff --git a/contrib/texinfo/doc/infokey.1 b/contrib/texinfo/doc/infokey.1
new file mode 100644
index 0000000..fb8f463
--- /dev/null
+++ b/contrib/texinfo/doc/infokey.1
@@ -0,0 +1,41 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.34.
+.TH INFOKEY "1" "December 2004" "infokey 4.8" "User Commands"
+.SH NAME
+infokey \- compile customizations for Info
+.SH SYNOPSIS
+.B infokey
+[\fIOPTION\fR]... [\fIINPUT-FILE\fR]
+.SH DESCRIPTION
+Compile infokey source file to infokey file. Reads INPUT\-FILE (default
+$HOME/.infokey) and writes compiled key file to (by default) $HOME/.info.
+.SH OPTIONS
+.TP
+\fB\-\-output\fR FILE
+output to FILE instead of $HOME/.info
+.TP
+\fB\-\-help\fR
+display this help and exit.
+.TP
+\fB\-\-version\fR
+display version information and exit.
+.SH "REPORTING BUGS"
+Email bug reports to bug\-texinfo@gnu.org,
+general questions and discussion to help\-texinfo@gnu.org.
+Texinfo home page: http://www.gnu.org/software/texinfo/
+.SH COPYRIGHT
+Copyright \(co 2003 Free Software Foundation, Inc.
+There is NO warranty. You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING.
+.SH "SEE ALSO"
+The full documentation for
+.B infokey
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B infokey
+programs are properly installed at your site, the command
+.IP
+.B info infokey
+.PP
+should give you access to the complete manual.
diff --git a/contrib/texinfo/doc/install-info.1 b/contrib/texinfo/doc/install-info.1
index 312e13b..004d5d0 100644
--- a/contrib/texinfo/doc/install-info.1
+++ b/contrib/texinfo/doc/install-info.1
@@ -1,22 +1,22 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29.
-.TH INSTALL-INFO "1" "June 2003" "install-info 4.6" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.34.
+.TH INSTALL-INFO "1" "December 2004" "install-info 4.8" "User Commands"
.SH NAME
install-info \- update info/dir entries
.SH SYNOPSIS
.B install-info
[\fIOPTION\fR]... [\fIINFO-FILE \fR[\fIDIR-FILE\fR]]
.SH DESCRIPTION
-Install or delete dir entries from INFO-FILE in the Info directory file
-DIR-FILE.
+Install or delete dir entries from INFO\-FILE in the Info directory file
+DIR\-FILE.
.SH OPTIONS
.TP
\fB\-\-delete\fR
-delete existing entries for INFO-FILE from DIR-FILE;
+delete existing entries for INFO\-FILE from DIR\-FILE;
don't insert any new entries.
.TP
\fB\-\-dir\-file\fR=\fINAME\fR
specify file name of Info directory file.
-This is equivalent to using the DIR-FILE argument.
+This is equivalent to using the DIR\-FILE argument.
.TP
\fB\-\-entry\fR=\fITEXT\fR
insert TEXT as an Info directory entry.
@@ -31,7 +31,7 @@ display this help and exit.
.TP
\fB\-\-info\-file\fR=\fIFILE\fR
specify Info file to install in the directory.
-This is equivalent to using the INFO-FILE argument.
+This is equivalent to using the INFO\-FILE argument.
.TP
\fB\-\-info\-dir\fR=\fIDIR\fR
same as \fB\-\-dir\-file\fR=\fIDIR\fR/dir.
@@ -56,11 +56,11 @@ from information in the Info file itself.
\fB\-\-version\fR
display version information and exit.
.SH "REPORTING BUGS"
-Email bug reports to bug-texinfo@gnu.org,
-general questions and discussion to help-texinfo@gnu.org.
+Email bug reports to bug\-texinfo@gnu.org,
+general questions and discussion to help\-texinfo@gnu.org.
Texinfo home page: http://www.gnu.org/software/texinfo/
.SH COPYRIGHT
-Copyright \(co 2003 Free Software Foundation, Inc.
+Copyright \(co 2004 Free Software Foundation, Inc.
There is NO warranty. You may redistribute this software
under the terms of the GNU General Public License.
For more information about these matters, see the files named COPYING.
diff --git a/contrib/texinfo/doc/makeinfo.1 b/contrib/texinfo/doc/makeinfo.1
index 75e9fe4..7b46491 100644
--- a/contrib/texinfo/doc/makeinfo.1
+++ b/contrib/texinfo/doc/makeinfo.1
@@ -1,5 +1,5 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29.
-.TH MAKEINFO "1" "June 2003" "makeinfo 4.6" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.34.
+.TH MAKEINFO "1" "December 2004" "makeinfo 4.8" "User Commands"
.SH NAME
makeinfo \- translate Texinfo documents
.SH SYNOPSIS
@@ -20,7 +20,7 @@ preserve output even if errors.
display this help and exit.
.TP
\fB\-\-no\-validate\fR
-suppress node cross-reference validation.
+suppress node cross\-reference validation.
.TP
\fB\-\-no\-warn\fR
suppress warnings (but not errors).
@@ -36,17 +36,20 @@ display version information and exit.
.SS "Output format selection (default is to produce Info):"
.TP
\fB\-\-docbook\fR
-output DocBook XML rather than Info.
+output Docbook XML rather than Info.
.TP
\fB\-\-html\fR
output HTML rather than Info.
.TP
\fB\-\-xml\fR
output Texinfo XML rather than Info.
+.TP
+\fB\-\-plaintext\fR
+output plain text rather than Info.
.SS "General output options:"
.TP
\fB\-E\fR, \fB\-\-macro\-expand\fR FILE
-output macro-expanded source to FILE.
+output macro\-expanded source to FILE.
ignoring any @setfilename.
.TP
\fB\-\-no\-headers\fR
@@ -91,7 +94,12 @@ split Info files at size NUM (default 300000).
.TP
\fB\-\-css\-include\fR=\fIFILE\fR
include FILE in HTML <style> output;
-read stdin if FILE is -.
+read stdin if FILE is \-.
+.SS "Options for XML and Docbook:"
+.TP
+\fB\-\-output\-indent\fR=\fIVAL\fR
+indent XML elements by VAL spaces (default 2).
+If VAL is 0, ignorable whitespace is dropped.
.SS "Input file options:"
.TP
\fB\-\-commands\-in\-node\-names\fR
@@ -110,6 +118,10 @@ prepend DIR to the @include search path.
undefine the variable VAR, as with @clear.
.SS "Conditional processing in input:"
.TP
+\fB\-\-ifdocbook\fR
+process @ifdocbook and @docbook even if
+not generating Docbook.
+.TP
\fB\-\-ifhtml\fR
process @ifhtml and @html even if not generating HTML.
.TP
@@ -125,6 +137,9 @@ process @iftex and @tex; implies \fB\-\-no\-split\fR.
\fB\-\-ifxml\fR
process @ifxml and @xml.
.TP
+\fB\-\-no\-ifdocbook\fR
+do not process @ifdocbook and @docbook text.
+.TP
\fB\-\-no\-ifhtml\fR
do not process @ifhtml and @html text.
.TP
@@ -140,6 +155,8 @@ do not process @iftex and @tex text.
\fB\-\-no\-ifxml\fR
do not process @ifxml and @xml text.
.IP
+Also, for the \fB\-\-no\-ifFORMAT\fR options, do process @ifnotFORMAT text.
+.IP
The defaults for the @if... conditionals depend on the output format:
if generating HTML, \fB\-\-ifhtml\fR is on and the others are off;
if generating Info, \fB\-\-ifinfo\fR is on and the others are off;
@@ -166,11 +183,11 @@ makeinfo \fB\-\-html\fR \fB\-\-no\-headers\fR foo.texi write html without node l
makeinfo \fB\-\-number\-sections\fR foo.texi write Info with numbered sections
makeinfo \fB\-\-no\-split\fR foo.texi write one Info file however big
.SH "REPORTING BUGS"
-Email bug reports to bug-texinfo@gnu.org,
-general questions and discussion to help-texinfo@gnu.org.
+Email bug reports to bug\-texinfo@gnu.org,
+general questions and discussion to help\-texinfo@gnu.org.
Texinfo home page: http://www.gnu.org/software/texinfo/
.SH COPYRIGHT
-Copyright \(co 2003 Free Software Foundation, Inc.
+Copyright \(co 2004 Free Software Foundation, Inc.
There is NO warranty. You may redistribute this software
under the terms of the GNU General Public License.
For more information about these matters, see the files named COPYING.
diff --git a/contrib/texinfo/doc/texindex.1 b/contrib/texinfo/doc/texindex.1
index 6882c45..732e12b 100644
--- a/contrib/texinfo/doc/texindex.1
+++ b/contrib/texinfo/doc/texindex.1
@@ -1,5 +1,5 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29.
-.TH TEXINDEX "1" "June 2003" "texindex 4.6" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.34.
+.TH TEXINDEX "1" "December 2004" "texindex 4.8" "User Commands"
.SH NAME
texindex \- sort Texinfo index files
.SH SYNOPSIS
@@ -25,11 +25,11 @@ send output to FILE
\fB\-\-version\fR
display version information and exit
.SH "REPORTING BUGS"
-Email bug reports to bug-texinfo@gnu.org,
-general questions and discussion to help-texinfo@gnu.org.
+Email bug reports to bug\-texinfo@gnu.org,
+general questions and discussion to help\-texinfo@gnu.org.
Texinfo home page: http://www.gnu.org/software/texinfo/
.SH COPYRIGHT
-Copyright \(co 2003 Free Software Foundation, Inc.
+Copyright \(co 2004 Free Software Foundation, Inc.
There is NO warranty. You may redistribute this software
under the terms of the GNU General Public License.
For more information about these matters, see the files named COPYING.
diff --git a/contrib/texinfo/doc/texinfo.5 b/contrib/texinfo/doc/texinfo.5
index 991c269..3f8a2b2 100644
--- a/contrib/texinfo/doc/texinfo.5
+++ b/contrib/texinfo/doc/texinfo.5
@@ -1,5 +1,5 @@
.\" texinfo(5)
-.\" $Id: texinfo.5,v 1.1 2002/09/03 23:44:57 karl Exp $
+.\" $Id: texinfo.5,v 1.2 2004/04/11 17:56:45 karl Exp $
.\"
.\" Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
.\"
diff --git a/contrib/texinfo/doc/texinfo.txi b/contrib/texinfo/doc/texinfo.txi
index ab7e112..15ef1dd 100644
--- a/contrib/texinfo/doc/texinfo.txi
+++ b/contrib/texinfo/doc/texinfo.txi
@@ -1,5 +1,5 @@
\input texinfo.tex @c -*-texinfo-*-
-@c $Id: texinfo.txi,v 1.48 2003/06/02 12:32:28 karl Exp $
+@c $Id: texinfo.txi,v 1.128 2004/12/29 15:06:41 karl Exp $
@c Ordinarily, Texinfo files have the extension .texi. But texinfo.texi
@c clashes with texinfo.tex on 8.3 filesystems, so we use texinfo.txi.
@@ -27,7 +27,6 @@
@syncodeindex vr cp
@syncodeindex pg cp
-@footnotestyle separate
@paragraphindent 2
@c finalout
@@ -39,7 +38,7 @@ a documentation system that can produce both online information and a
printed manual from a single source.
Copyright (C) 1988, 1990, 1991, 1992, 1993, 1995, 1996, 1997, 1998,
-1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -60,6 +59,7 @@ Software Foundation raise funds for GNU development.''
* Texinfo: (texinfo). The GNU documentation format.
* install-info: (texinfo)Invoking install-info. Update info/dir entries.
* texi2dvi: (texinfo)Format with texi2dvi. Print Texinfo documents.
+* texi2pdf: (texinfo)PDF Output. PDF output for Texinfo.
* texindex: (texinfo)Format with tex/texindex. Sort Texinfo index files.
* makeinfo: (texinfo)Invoking makeinfo. Translate Texinfo source.
@end direntry
@@ -82,7 +82,7 @@ Software Foundation raise funds for GNU development.''
@c nwnode (Same as node, but no warnings; for `makeinfo'.)
-@shorttitlepage Texinfo
+@shorttitlepage GNU Texinfo
@titlepage
@title Texinfo
@@ -131,44 +131,41 @@ the menu lists all the lower level nodes in the document.
@end ifnottex
@menu
-* Copying Conditions:: Your rights.
-* Overview:: Texinfo in brief.
-* Texinfo Mode:: How to use Texinfo mode.
-* Beginning a File:: What is at the beginning of a Texinfo file?
-* Ending a File:: What is at the end of a Texinfo file?
-* Structuring:: How to create chapters, sections, subsections,
- appendices, and other parts.
-* Nodes:: How to write nodes.
-* Menus:: How to write menus.
-* Cross References:: How to write cross references.
-* Marking Text:: How to mark words and phrases as code,
- keyboard input, meta-syntactic
- variables, and the like.
-* Quotations and Examples:: How to write quotations, examples, etc.
-* Lists and Tables:: How to write lists and tables.
-* Indices:: How to create indices.
-* Insertions:: How to insert @@-signs, braces, etc.
-* Breaks:: How to force and prevent line and page breaks.
-* Definition Commands:: How to describe functions and the like
- in a uniform manner.
-* Conditionals:: How to specify text for either @TeX{} or Info.
-* Internationalization::
-* Defining New Texinfo Commands::
-* Hardcopy:: How to convert a Texinfo file to a file
- for printing and how to print that file.
-* Creating and Installing Info Files::
-* Command List:: All the Texinfo @@-commands.
-* Tips:: Hints on how to write a Texinfo document.
-* Sample Texinfo Files:: Complete examples, including full texts.
-* Include Files:: How to incorporate other Texinfo files.
-* Headings:: How to write page headings and footings.
-* Catching Mistakes:: How to find formatting mistakes.
-* Refilling Paragraphs:: All about paragraph refilling.
-* Command Syntax:: A description of @@-Command syntax.
-* Obtaining TeX:: How to Obtain @TeX{}.
-* Copying This Manual:: The GNU Free Documentation License.
-* Command and Variable Index:: A menu containing commands and variables.
-* Concept Index:: A menu covering many topics.
+* Copying Conditions:: Your rights.
+* Overview:: Texinfo in brief.
+* Texinfo Mode:: Using the GNU Emacs Texinfo mode.
+* Beginning a File:: What is at the beginning of a Texinfo file?
+* Ending a File:: What is at the end of a Texinfo file?
+* Structuring:: Creating chapters, sections, appendices, etc.
+* Nodes:: Writing nodes, the basic unit of Texinfo.
+* Menus:: Writing menus.
+* Cross References:: Writing cross references.
+* Marking Text:: Marking words and phrases as code,
+ keyboard input, meta-syntactic
+ variables, and the like.
+* Quotations and Examples:: Block quotations, examples, etc.
+* Lists and Tables:: Itemized or numbered lists, and tables.
+* Special Displays:: Floating figures and footnotes.
+* Indices:: Creating indices.
+* Insertions:: Inserting @@-signs, braces, etc.
+* Breaks:: Forcing or preventing line and page breaks.
+* Definition Commands:: Describing functions and the like uniformly.
+* Conditionals:: Specifying text for only some output cases.
+* Internationalization:: Supporting languages other than English.
+* Defining New Texinfo Commands:: User-defined macros and aliases.
+* Hardcopy:: Output for paper, with @TeX{}.
+* Creating and Installing Info Files:: Details on Info output.
+* Generating HTML:: Details on HTML output.
+
+* Command List:: All the Texinfo @@-commands.
+* Tips:: Hints on how to write a Texinfo document.
+* Sample Texinfo Files:: Complete examples, including full texts.
+* Include Files:: How to incorporate other Texinfo files.
+* Headings:: How to write page headings and footings.
+* Catching Mistakes:: How to find formatting mistakes.
+* Copying This Manual:: The GNU Free Documentation License.
+* Command and Variable Index:: A menu containing commands and variables.
+* Concept Index:: A menu covering many topics.
@detailmenu
--- The Detailed Node Listing ---
@@ -231,8 +228,8 @@ Texinfo File Header
Document Permissions
-* copying:: Declare the document's copying permissions.
-* insertcopying:: Where to insert the permissions.
+* copying:: Declare the document's copying permissions.
+* insertcopying:: Where to insert the permissions.
Title and Copyright Pages
@@ -302,7 +299,7 @@ The @code{@@node} Command
Menus
-* Menu Location:: Put a menu in a short node.
+* Menu Location:: Menus go at the ends of short nodes.
* Writing a Menu:: What is a menu?
* Menu Parts:: A menu entry has three parts.
* Less Cluttered Menu Entry:: Two part menu entry.
@@ -349,8 +346,9 @@ Indicating Definitions, Commands, etc.
* option:: Indicating option names.
* dfn:: Specifying definitions.
* cite:: Referring to books not in the Info system.
+* abbr:: Indicating abbreviations.
* acronym:: Indicating acronyms.
-* url:: Indicating a World Wide Web reference.
+* indicateurl:: Indicating a World Wide Web reference.
* email:: Indicating an electronic mail address.
Emphasizing Text
@@ -390,16 +388,38 @@ Making a Two-column Table
* ftable vtable:: Automatic indexing for two-column tables.
* itemx:: How to put more entries in the first column.
-Multi-column Tables
+@code{@@multitable}: Multi-column Tables
* Multitable Column Widths:: Defining multitable column widths.
* Multitable Rows:: Defining multitable rows, with examples.
+Special Displays
+
+* Floats:: Figures, tables, and the like.
+* Images:: Including graphics and images.
+* Footnotes:: Writing footnotes.
+
+Floats
+
+* float:: Producing floating material.
+* caption shortcaption:: Specifying descriptions for floats.
+* listoffloats:: A table of contents for floats.
+
+Inserting Images
+
+* Image Syntax::
+* Image Scaling::
+
+Footnotes
+
+* Footnote Commands:: How to write a footnote in Texinfo.
+* Footnote Styles:: Controlling how footnotes appear in Info.
+
Indices
* Index Entries:: Choose different words for index entries.
* Predefined Indices:: Use different indices for different kinds
- of entry.
+ of entries.
* Indexing Commands:: How to make an index entry.
* Combining Indices:: How to combine indices.
* New Indices:: How to define your own indices.
@@ -413,25 +433,25 @@ Combining Indices
Special Insertions
-* Braces Atsigns:: How to insert braces, @samp{@@}.
+* Atsign Braces Comma:: Inserting @@ and @{@} and ,.
* Inserting Space:: How to insert the right amount of space
within a sentence.
* Inserting Accents:: How to insert accents and special characters.
* Dots Bullets:: How to insert dots and bullets.
* TeX and copyright:: How to insert the @TeX{} logo
and the copyright symbol.
+* euro:: How to insert the Euro currency symbol.
* pounds:: How to insert the pounds currency symbol.
* minus:: How to insert a minus sign.
* math:: How to format a mathematical expression.
* Glyphs:: How to indicate results of evaluation,
expansion of macros, errors, etc.
-* Footnotes:: How to include footnotes.
-* Images:: How to include graphics.
-Inserting @@ and Braces
+Inserting @@ and @{@} and @comma{}
-* Inserting An Atsign:: How to insert @samp{@@}.
-* Inserting Braces:: How to insert @samp{@{} and @samp{@}}.
+* Inserting an Atsign::
+* Inserting Braces::
+* Inserting a Comma::
Inserting Space
@@ -445,10 +465,11 @@ Inserting Ellipsis and Bullets
* dots:: How to insert dots @dots{}
* bullet:: How to insert a bullet.
-Inserting @TeX{} and the Copyright Symbol
+Inserting @TeX{} and Legal Symbols: @copyright{}, @registeredsymbol{}
-* tex:: How to insert the @TeX{} logo.
-* copyright symbol:: How to use @code{@@copyright@{@}}.
+* tex:: The @TeX{} logos.
+* copyright symbol:: The copyright symbol (c in a circle).
+* registered symbol:: The registered symbol (R in a circle).
Glyphs for Examples
@@ -469,17 +490,7 @@ Glyphs Summary
* Equivalence::
* Point Glyph::
-Footnotes
-
-* Footnote Commands:: How to write a footnote in Texinfo.
-* Footnote Styles:: Controlling how footnotes appear in Info.
-
-Inserting Images
-
-* Image Syntax::
-* Image Scaling::
-
-Making and Preventing Breaks
+Forcing and Preventing Breaks
* Break Commands:: Summary of break-related commands.
* Line Breaks:: Forcing line breaks.
@@ -493,13 +504,13 @@ Making and Preventing Breaks
Definition Commands
-* Def Cmd Template:: How to structure a description using a
- definition command.
-* Optional Arguments:: How to handle optional and repeated arguments.
-* deffnx:: How to group two or more `first' lines.
-* Def Cmds in Detail:: All the definition commands.
+* Def Cmd Template:: Writing descriptions using definition commands.
+* Def Cmd Continuation Lines:: Continuing the heading over source lines.
+* Optional Arguments:: Handling optional and repeated arguments.
+* deffnx:: Group two or more `first' lines.
+* Def Cmds in Detail:: Reference for all the definition commands.
* Def Cmd Conventions:: Conventions for writing definitions.
-* Sample Function Definition::
+* Sample Function Definition:: An example.
The Definition Commands
@@ -507,17 +518,21 @@ The Definition Commands
* Variables Commands:: Commands for variables and similar entities.
* Typed Functions:: Commands for functions in typed languages.
* Typed Variables:: Commands for variables in typed languages.
-* Abstract Objects:: Commands for object-oriented programming.
* Data Types:: The definition command for data types.
+* Abstract Objects:: Commands for object-oriented programming.
+
+Object-Oriented Programming
+
+* Variables: Object-Oriented Variables.
+* Methods: Object-Oriented Methods.
Conditionally Visible Text
-* Conditional Commands:: Specifying text for HTML, Info, or @TeX{}.
-* Conditional Not Commands:: Specifying text for not HTML, Info, or @TeX{}.
-* Raw Formatter Commands:: Using raw @TeX{} or HTML commands.
-* set clear value:: Designating which text to format (for
- all output formats); and how to set a
- flag to a string that you can insert.
+* Conditional Commands:: Text for a given format.
+* Conditional Not Commands:: Text for any format other than a given one.
+* Raw Formatter Commands:: Using raw formatter commands.
+* set clear value:: Variable tests and substitutions.
+* Conditional Nesting:: Using conditionals inside conditionals.
@code{@@set}, @code{@@clear}, and @code{@@value}
@@ -534,7 +549,7 @@ Defining New Texinfo Commands
* Defining Macros:: Defining and undefining new commands.
* Invoking Macros:: Using a macro, once you've defined it.
-* Macro Details:: Beyond basic macro usage.
+* Macro Details:: Limitations of Texinfo macros.
* alias:: Command aliases.
* definfoenclose:: Customized highlighting.
@@ -556,6 +571,7 @@ Formatting and Printing Hardcopy
* Cropmarks and Magnification:: How to print marks to indicate the size
of pages and how to print scaled up output.
* PDF Output:: Portable Document Format output.
+* Obtaining TeX:: How to Obtain @TeX{}.
Creating and Installing Info Files
@@ -575,13 +591,6 @@ Creating an Info File
* Batch Formatting:: How to format for Info in Emacs Batch mode.
* Tag and Split Files:: How tagged and split files help Info
to run better.
-* Generating HTML:: Generating HTML output with makeinfo.
-
-Generating HTML
-
-* HTML Translation:: Details of the HTML output.
-* HTML Splitting:: How HTML output is split.
-* HTML CSS:: HTML output and Cascading Style Sheets.
Installing an Info File
@@ -593,6 +602,25 @@ Installing an Info File
to the Info directory.
* Invoking install-info:: @code{install-info} options.
+Generating HTML
+
+* HTML Translation:: Details of the HTML output.
+* HTML Splitting:: How HTML output is split.
+* HTML CSS:: Influencing HTML output with Cascading Style Sheets.
+* HTML Xref:: Cross-references in HTML output.
+
+HTML Cross-references
+
+* Link Basics: HTML Xref Link Basics.
+* Node Expansion: HTML Xref Node Name Expansion.
+* Command Expansion: HTML Xref Command Expansion.
+* 8-bit Expansion: HTML Xref 8-bit Character Expansion.
+* Mismatch: HTML Xref Mismatch.
+
+@@-Command List
+
+* Command Syntax:: General syntax for varieties of @@-commands.
+
Sample Texinfo Files
* Short Sample Texinfo File::
@@ -608,12 +636,12 @@ Include Files
* Using Include Files:: How to use the @code{@@include} command.
* texinfo-multiple-files-update:: How to create and update nodes and
- menus when using included files.
-* Include Files Requirements:: What @code{texinfo-multiple-files-update} expects.
+ menus when using included files.
+* Include Files Requirements:: @code{texinfo-multiple-files-update} needs.
* Sample Include File:: A sample outer file with included files
- within it; and a sample included file.
+ within it; and a sample included file.
* Include Files Evolution:: How use of the @code{@@include} command
- has changed over time.
+ has changed over time.
Page Headings
@@ -759,9 +787,9 @@ better to include too much than to leave out something important.
@cindex Patches, contributing
Patches are most welcome; if possible, please make them with
-@samp{@w{diff -c}} (@pxref{Top,, Overview, diffutils, Comparing and
-Merging Files}) and include @file{ChangeLog} entries (@pxref{Change
-Log,,, emacs, The GNU Emacs Manual}).
+@samp{@w{diff -c}} (@pxref{Top,, Overview, diff, Comparing and Merging
+Files}) and include @file{ChangeLog} entries (@pxref{Change Log,,,
+emacs, The GNU Emacs Manual}).
When sending patches, if possible please do not encode or split them in
any way; it's much easier to deal with one plain text message, however
@@ -777,34 +805,14 @@ for email.
@cindex Texinfo, introduction to
@cindex Introduction to Texinfo
-Using Texinfo, you can create a printed document with the normal
-features of a book, including chapters, sections, cross references, and
-indices. From the same Texinfo source file, you can create a
-menu-driven, online Info file with nodes, menus, cross references, and
-indices. You can also create from that same source file an HTML output
-file suitable for use with a web browser, or an XML file. @cite{The GNU
-Emacs Manual} is a good example of a Texinfo file, as is this manual.
-
-To make a printed document, you process a Texinfo source file with the
-@TeX{} typesetting program (but the Texinfo language is very different
-from and much stricter than @TeX{}'s usual languages, plain @TeX{} and
-La@TeX{}). This creates a DVI file that you can typeset and print as
-a book or report (@pxref{Hardcopy}).
-
-@pindex makeinfo
-To output an Info file, process your Texinfo source with the
-@code{makeinfo} utility. You can install the result in your Info tree
-(@pxref{Installing an Info File}).
-
-To output an HTML file, run @code{makeinfo --html} on your Texinfo
-source. You can (for example) install the result on a web site.
-
-@cindex Docbook, converting to Texinfo
-@cindex Conversion, from Docbook to Texinfo
-To output an XML file, run @code{makeinfo --xml} on your Texinfo source.
-To output DocBook (a particular form of XML), run @code{makeinfo
---docbook}. If you want to convert from Docbook @emph{to} Texinfo,
-please see @uref{http://docbook2X.sourceforge.net/}.
+Using Texinfo, you can create a printed document (via the @TeX{}
+typesetting system) the normal features of a book, including chapters,
+sections, cross references, and indices. From the same Texinfo source
+file, you can create an Info file with special features to make
+documentation browsing easy. You can also create from that same
+source file an HTML output file suitable for use with a web browser,
+or an XML file. See the next section (@pxref{Output Formats}) for
+details and the exact commands to generate output from the source.
@TeX{} works with virtually all printers; Info works with virtually all
computer terminals; the HTML output works with virtually all web
@@ -813,16 +821,12 @@ browsers. Thus Texinfo can be used by almost any computer user.
@cindex Source file format
A Texinfo source file is a plain @sc{ascii} file containing text
interspersed with @dfn{@@-commands} (words preceded by an @samp{@@})
-that tell the typesetting and formatting programs what to do. You may
-edit a Texinfo file with any text editor; but it is especially
+that tell the typesetting and formatting programs what to do. You can
+edit a Texinfo file with any text editor, but it is especially
convenient to use GNU Emacs since that editor has a special mode,
called Texinfo mode, that provides various Texinfo-related features.
(@xref{Texinfo Mode}.)
-Before writing a Texinfo source file, you should learn about nodes,
-menus, cross references, and the rest, for example by reading this
-manual.
-
You can use Texinfo to create both online help and printed manuals;
moreover, Texinfo is freely redistributable. For these reasons, Texinfo
is the official documentation format of the GNU project. More
@@ -841,20 +845,21 @@ Texinfo.
@table @asis
@item Info
@cindex Info output
-(Generated via @command{makeinfo}.) This format is a plain text
-transliteration of the Texinfo source. It uses control characters to
-separate nodes and provide other navigational information. See the
+(Generated via @command{makeinfo}.) This format is essentially a
+plain text transliteration of the Texinfo source. It adds a few
+control characters to separate nodes and provide navigational
+information for menus, cross-references, indices, and so on. See the
next section (@pxref{Info Files}) for more details on this format.
The Emacs Info subsystem (@pxref{Top,,Getting Started,info, Info}),
-and the standalone @command{info} program (@pxref{info
-standalone,,,info-stnd, GNU Info}), among others, can read these
+and the standalone @command{info} program (@pxref{Top
+,, Info Standalone, info-stnd, GNU Info}), among others, can read these
files. @xref{Creating and Installing Info Files}.
@item Plain text
@cindex Plain text output
(Generated via @command{makeinfo --no-headers}.) This is almost the
same as Info output, except the navigational control characters are
-omitted.
+omitted. Also, standard output is used by default.
@item HTML
@cindex HTML output
@@ -873,45 +878,57 @@ details of the HTML language and much related information, see
@item DVI
@cindex DVI output
-@pindex Dvips
-@pindex Xdvi
+@pindex dvips
+@pindex xdvi
(Generated via @command{texi2dvi}.) This DeVice Independent binary
format is output by the @TeX{} typesetting program
-(@uref{http://tug.org}). It is then read by a DVI `driver', which
+(@uref{http://tug.org}). This is then read by a DVI `driver', which
writes the actual device-specific commands that can be viewed or
-printed, notably Dvips for translation to PostScript (@pxref{dvips
-invocation,,, dvips, Dvips}) and Xdvi for viewing on an X display
+printed, notably Dvips for translation to PostScript (@pxref{Invoking
+Dvips,,, dvips, Dvips}) and Xdvi for viewing on an X display
(@uref{http://sourceforge.net/projects/xdvi/}). @xref{Hardcopy}.
+Be aware that the Texinfo language is very different from and much
+stricter than @TeX{}'s usual languages, plain @TeX{} and @LaTeX{}.
+For more information on @TeX{} in general, please see the book
+@cite{@TeX{} for the Impatient}, available from
+@uref{http://savannah.gnu.org/projects/teximpatient}.
+
@item PDF
@cindex PDF output
@cindex Beebe, Nelson
@pindex pdftex
-(Generated via @command{texi2dvi --pdf}.) This format, based on
-PostScript, was developed by Adobe Systems for document interchange.
-It is intended to be platform-independent and easily viewable, among
-other design goals; for a discussion, see
-@uref{http://tug.org/tugboat/Articles/tb22-3/tb72beebeI.pdf}. Texinfo
-uses the @command{pdftex} program, a variant of @TeX{}, to output pdf;
+(Generated via @command{texi2dvi --pdf} or @command{texi2pdf}.) This
+was developed by Adobe Systems for portable document interchange,
+based on their previous PostScript language. It can represent the exact
+appearance of a document, including fonts, and supporting arbitrary
+scaling. It is intended to be platform-independent and easily
+viewable, among other design goals; for a discussion, see
+@uref{http://tug.org/TUGboat/Articles/tb22-3/tb72beebeI.pdf}. Texinfo
+uses the @command{pdftex} program, a variant of @TeX{}, to output PDF;
see @uref{http://tug.org/applications/pdftex}. @xref{PDF Output}.
@item XML
@cindex XML output
@cindex DTD, for Texinfo XML
+@pindex texinfo.dtd
(Generated via @command{makeinfo --xml}.) XML is a generic syntax
specification usable for any sort of content (see, for example,
@uref{http://www.w3.org/XML/}). The @command{makeinfo} xml output,
-unlike all the formats above, interprets very little of the Texinfo
+unlike all the formats above, interprets very little of the Texinfo
source. Rather, it merely translates the Texinfo markup commands into
XML syntax, for processing by further XML tools. The particular
syntax output is defined in the file @file{texinfo.dtd} included in
the Texinfo source distribution.
-@item DocBook
-@cindex DocBook output
-(Generated via @command{makeinfo --docbook}.) This is an XML format
-of long standing used primarily for technical documentation. See
-@uref{http://www.docbook.org/}.
+@item Docbook
+@cindex Docbook output
+(Generated via @command{makeinfo --docbook}.) This is an XML-based
+format developed some years ago, primarily for technical
+documentation. It therefore bears some resemblance, in broad
+outlines, to Texinfo. See @uref{http://www.docbook.org}. If you want
+to convert from Docbook @emph{to} Texinfo, please see
+@uref{http://docbook2X.sourceforge.net}.
@end table
@@ -962,9 +979,7 @@ which are identified by their names. The Info program displays one node
at a time, and provides commands with which the user can move to other
related nodes.
-@ifinfo
-@inforef{Top, info, info}, for more information about using Info.
-@end ifinfo
+@xref{Top,,, info, GNU Info}, for more information about using Info.
Each node of an Info file may have any number of child nodes that
describe subtopics of the node's topic. The names of child
@@ -1020,7 +1035,7 @@ the command line (@pxref{Top,,, info, Info}).
If you want to read through an Info file in sequence, as if it were a
printed manual, you can hit @key{SPC} repeatedly, or you get the whole
-file with the advanced Info command @kbd{g *}. (@inforef{Expert,
+file with the advanced Info command @kbd{g *}. (@inforef{Advanced,
Advanced Info commands, info}.)@refill
@c !!! dir file may be located in one of many places:
@@ -1128,9 +1143,8 @@ by @samp{@@}; they are called @dfn{@@-commands}. For example,
@code{@@node} is the command to indicate a node and @code{@@chapter}
is the command to indicate the start of a chapter.@refill
-@quotation
-@strong{Please note:} All the @@-commands, with the exception of the
-@code{@@TeX@{@}} command, must be written entirely in lower case.
+@quotation Note
+Almost all @@ command names are entirely lower case.
@end quotation
The Texinfo @@-commands are a strictly limited set of constructs. The
@@ -1194,9 +1208,9 @@ they do not need braces.@refill
As you gain experience with Texinfo, you will rapidly learn how to
write the different commands: the different ways to write commands
-make it easier to write and read Texinfo files than if all commands
-followed exactly the same syntax. (For details about @@-command
-syntax, see @ref{Command Syntax, , @@-Command Syntax}.)@refill
+actually make it easier to write and read Texinfo files than if all
+commands followed exactly the same syntax. @xref{Command Syntax, ,
+@@-Command Syntax}, for all the details.
@node Conventions
@@ -1204,6 +1218,7 @@ syntax, see @ref{Command Syntax, , @@-Command Syntax}.)@refill
@cindex General syntactic conventions
@cindex Syntactic conventions
@cindex Conventions, syntactic
+@cindex Characters, basic input
This section describes the general conventions used in all Texinfo documents.
@@ -1215,7 +1230,7 @@ All printable @sc{ascii} characters except @samp{@@}, @samp{@{} and
@samp{@@} is the escape character which introduces commands, while
@samp{@{} and @samp{@}} are used to surround arguments to certain
commands. To put one of these special characters into the document, put
-xan @samp{@@} character in front of it, like this: @samp{@@@@},
+an @samp{@@} character in front of it, like this: @samp{@@@@},
@samp{@@@{}, and @samp{@@@}}.
@item
@@ -1232,9 +1247,8 @@ paragraph indentation if required (@pxref{noindent,,@code{@@noindent}}).
@item
@cindex Quotation characters (`'), in source
Use doubled single-quote characters to begin and end quotations:
-@w{@t{`@w{}`@dots{}'@w{}'}}. (Texinfo takes this convention from
-@TeX{}.) @TeX{} converts two single quotes to left- and right-hand
-doubled quotation marks,
+@w{@t{`@w{}`@dots{}'@w{}'}}. @TeX{} converts two single quotes to
+left- and right-hand doubled quotation marks,
@c this comes out as "like this" in Info, which is just confusing.
@iftex
``like this'',
@@ -1242,38 +1256,46 @@ doubled quotation marks,
and Info converts doubled single-quote characters to @sc{ascii}
double-quotes: @w{@t{`@w{}`@dots{}'@w{}'}} becomes @w{@t{"@dots{}"}}.
-@item
-@cindex Dashes, in source
-Use three hyphens in a row, @samp{---}, for a dash---like this. In
-@TeX{}, a single or double hyphen produces a printed dash that is
-shorter than the usual typeset dash. Info reduces three hyphens to two
-for display on the screen.
+You may occasionally need to produce two consecutive single quotes;
+for example, in documenting a computer language such as Maxima where
+@t{'@w{}'} is a valid command. You can do this with the input
+@t{'@@w@{@}'}; the empty @code{@@w} command stops the combination into
+the double-quote characters.
-@item
-If you mark off a region of the Texinfo file with the @code{@@iftex}
-and @w{@code{@@end iftex}} commands, that region will appear only in
-the printed copy; in that region, you can use certain commands
-borrowed from plain @TeX{} that you cannot use in Info. Conversely,
-text surrounded by @code{@@ifnottex} and @code{@@end ifnottex} will
-appear in all output formats @emph{except} @TeX{}.
+@cindex Unicode quotation characters
+@cindex Grave accent, vs.@: left quote
+The left quote character (@t{`}, ASCII code 96) used in Texinfo is a
+grave accent in ANSI and ISO character set standards. We use it as a
+quote character because that is how @TeX{} is set up, by default. We
+hope to eventually support the various quotation characters in
+Unicode.
-Each of the other output formats (@code{html}, @code{info},
-@code{plaintext}, @code{xml}) have an analogous pair of commands.
-@xref{Conditionals}.
+@item
+@cindex Multiple dashes in source
+@cindex Dashes in source
+@cindex Hyphens in source, two or three in a row
+@cindex Em dash, producing
+@cindex En dash, producing
+Use three hyphens in a row, @samp{---}, to produce a long dash---like
+this (called an @dfn{em dash}), used for punctuation in sentences.
+Use two hyphens, @samp{--}, to produce a medium dash (called an
+@dfn{en dash}), used primarily for numeric ranges, as in ``June
+25--26''. Use a single hyphen, @samp{-}, to produce a standard hyphen
+used in compound words. For display on the screen, Info reduces three
+hyphens to two and two hyphens to one (not transitively!). Of course,
+any number of hyphens in the source remain as they are in literal
+contexts, such as @code{@@code} and @code{@@example}.
@item
-@iftex
-@vskip-@baselineskip
-@end iftex
@cindex Tabs; don't use!
-@quotation
-@strong{Caution:} Do not use tab characters in a Texinfo file (except in
-verbatim modes)! @TeX{} uses variable-width fonts, which means that it
-is impractical at best to define a tab to work in all circumstances.
-Consequently, @TeX{} treats tabs like single spaces, and that is not
-what they look like. Furthermore, @code{makeinfo} does nothing special
-with tabs, and thus a tab character in your input file may appear
-differently in the output, for example, in indented text.
+@strong{Caution:} Last and most important, do not use tab characters
+in a Texinfo file (except in verbatim modes)! @TeX{} uses
+variable-width fonts, which means that it is impractical at best to
+define a tab to work in all circumstances. Consequently, @TeX{}
+treats tabs like single spaces, and that is not what they look like in
+the source. Furthermore, @code{makeinfo} does nothing special with
+tabs, and thus a tab character in your input file will usually appear
+differently in the output.
@noindent
To avoid this problem, Texinfo mode causes GNU Emacs to insert multiple
@@ -1281,10 +1303,9 @@ spaces when you press the @key{TAB} key.
@noindent
Also, you can run @code{untabify} in Emacs to convert tabs in a region
-to multiple spaces.
-@end quotation
-@end itemize
+to multiple spaces, or use the @code{unexpand} command from the shell.
+@end itemize
@node Comments
@section Comments
@@ -1505,7 +1526,7 @@ which it is distributed. @xref{GNU Sample Texts}.
@@copying
This is a short example of a complete Texinfo file, version 1.0.
-Copyright @@copyright@{@} 2003 Free Software Foundation, Inc.
+Copyright @@copyright@{@} 2004 Free Software Foundation, Inc.
@@end copying
@end group
@end example
@@ -1728,14 +1749,11 @@ chapters which describe the Texinfo formatting language in detail.
* Texinfo Mode Summary:: Summary of all the Texinfo mode commands.
@end menu
-@node Texinfo Mode Overview, Emacs Editing, Texinfo Mode, Texinfo Mode
-@ifinfo
-@heading Texinfo Mode Overview
-@end ifinfo
+@node Texinfo Mode Overview
+@section Texinfo Mode Overview
-Texinfo mode provides special features for working with Texinfo
-files.
-You can:@refill
+Texinfo mode provides special features for working with Texinfo files.
+You can:
@itemize @bullet
@item
@@ -1767,7 +1785,7 @@ Typeset and print part or all of a file.@refill
Perhaps the two most helpful features are those for inserting frequently
used @@-commands and for creating node pointers and menus.@refill
-@node Emacs Editing, Inserting, Texinfo Mode Overview, Texinfo Mode
+@node Emacs Editing
@section The Usual GNU Emacs Editing Commands
In most cases, the usual Text mode commands work the same in Texinfo
@@ -1808,7 +1826,7 @@ mode as you wish. In particular, the keybindings are very easy to
change. The keybindings described here are the default or standard
ones.@refill
-@node Inserting, Showing the Structure, Emacs Editing, Texinfo Mode
+@node Inserting
@comment node-name, next, previous, up
@section Inserting Frequently Used Commands
@cindex Inserting frequently used commands
@@ -1950,7 +1968,7 @@ whole job. You must edit the inserted text since a title tends to use
the same words as a node name but a useful description uses different
words.@refill
-@node Showing the Structure, Updating Nodes and Menus, Inserting, Texinfo Mode
+@node Showing the Structure
@comment node-name, next, previous, up
@section Showing the Section Structure of a File
@cindex Showing the section structure of a file
@@ -2013,7 +2031,7 @@ commands to move forward and backward by chapter, and to use the
@xref{Pages, , , emacs, The GNU Emacs Manual}, for more information
about the page commands.@refill
-@node Updating Nodes and Menus, Info Formatting, Showing the Structure, Texinfo Mode
+@node Updating Nodes and Menus
@comment node-name, next, previous, up
@section Updating Nodes and Menus
@cindex Updating nodes and menus
@@ -2040,10 +2058,8 @@ node pointers by hand, which is a tedious task.@refill
nodes in sequence.
@end menu
-@node Updating Commands, Updating Requirements, Updating Nodes and Menus, Updating Nodes and Menus
-@ifinfo
-@subheading The Updating Commands
-@end ifinfo
+@node Updating Commands
+@subsection The Updating Commands
You can use the updating commands to:@refill
@@ -2196,11 +2212,10 @@ This updates all the nodes and menus.@refill
The @code{texinfo-column-for-description} variable specifies the
column to which menu descriptions are indented. By default, the value
is 32 although it is often useful to reduce it to as low as 24. You
-can set the variable with the @kbd{M-x edit-options} command
-(@pxref{Edit Options, , Editing Variable Values, emacs, The GNU Emacs
-Manual}) or with the @kbd{M-x set-variable} command (@pxref{Examining,
-, Examining and Setting Variables, emacs, The GNU Emacs
-Manual}).@refill
+can set the variable via customization (@pxref{Changing an Option,,,
+emacs, The GNU Emacs Manual}) or with the @kbd{M-x set-variable}
+command (@pxref{Examining, , Examining and Setting Variables, emacs,
+The GNU Emacs Manual}).
Also, the @code{texinfo-indent-menu-description} command may be used to
indent existing menu descriptions to a specified column. Finally, if
@@ -2323,13 +2338,7 @@ update all the menus and all the `Next', `Previous', and `Up' pointers
of all the included files before creating and inserting a master menu in
the outer file. The @code{texinfo-multiple-files-update} command is
described in the appendix on @code{@@include} files.
-@ifinfo
-@xref{texinfo-multiple-files-update}.@refill
-@end ifinfo
-@iftex
-@xref{texinfo-multiple-files-update, ,
-@code{texinfo-multiple-files-update}}.@refill
-@end iftex
+@xref{texinfo-multiple-files-update}.
@item M-x texinfo-indent-menu-description
@findex texinfo-indent-menu-description
@@ -2355,7 +2364,7 @@ interactive), the @code{texinfo-sequential-node-update} command
sequentially updates all the nodes in the region.@refill
@end table
-@node Info Formatting, Printing, Updating Nodes and Menus, Texinfo Mode
+@node Info Formatting
@comment node-name, next, previous, up
@section Formatting for Info
@cindex Formatting for Info
@@ -2414,9 +2423,9 @@ include a line that has @code{@@setfilename} in its header.
@xref{Creating an Info File}, for details about Info formatting.@refill
-@node Printing, Texinfo Mode Summary, Info Formatting, Texinfo Mode
+@node Printing
@comment node-name, next, previous, up
-@section Formatting and Printing
+@section Printing
@cindex Formatting for printing
@cindex Printing a region or buffer
@cindex Region formatting and printing
@@ -2478,7 +2487,7 @@ end-of-header lines.)@refill
@xref{Hardcopy}, for a description of the other @TeX{} related
commands, such as @code{tex-show-print-queue}.@refill
-@node Texinfo Mode Summary, , Printing, Texinfo Mode
+@node Texinfo Mode Summary
@comment node-name, next, previous, up
@section Texinfo Mode Summary
@@ -2672,7 +2681,14 @@ document, and the Top node. A table of contents is also generally
produced here.
This chapter expands on the minimal complete Texinfo source file
-previously given (@pxref{Six Parts}).
+previously given (@pxref{Six Parts}). It describes the numerous
+commands for handling the traditional frontmatter items in Texinfo.
+
+@cindex Frontmatter, text in
+Straight text outside of any command before the Top node should be
+avoided. Such text is treated differently in the different output
+formats: visible in @TeX{} and HTML, by default not shown in Info
+readers, and so on.
@menu
* Sample Beginning:: A sample beginning for a Texinfo file.
@@ -2946,20 +2962,20 @@ anything on the line after the command is considered part of the title,
including what would otherwise be a comment.
The @code{@@settitle} command should precede everything that generates
-actual output in @TeX{}.
+actual output. The best place for it is right after the
+@code{@@setfilename} command (see the previous section).
@cindex <title> HTML tag
-In the HTML file produced by @command{makeinfo}, @var{title} also serves
-as the document @samp{<title>} and the default document description in
-the @samp{<head>} part; see @ref{documentdescription}, for how to change
-that.
+In the HTML file produced by @command{makeinfo}, @var{title} serves as
+the document @samp{<title>}. It also becomes the default document
+description in the @samp{<head>} part (@pxref{documentdescription}).
The title in the @code{@@settitle} command does not affect the title as
it appears on the title page. Thus, the two do not need not match
exactly. A practice we recommend is to include the version or edition
number of the manual in the @code{@@settitle} title; on the title page,
the version number generally appears as a @code{@@subtitle} so it would
-be omitted from the @code{@@title}. (@xref{titlepage}.)
+be omitted from the @code{@@title}. @xref{titlepage}.
Conventionally, when @TeX{} formats a Texinfo file for double-sided
output, the title is printed in the left-hand (even-numbered) page
@@ -3008,8 +3024,8 @@ this text once, and another command (@code{@@insertcopying}) to
insert the text at appropriate points.
@menu
-* copying:: Declare the document's copying permissions.
-* insertcopying:: Where to insert the permissions.
+* copying:: Declare the document's copying permissions.
+* insertcopying:: Where to insert the permissions.
@end menu
@@ -3219,8 +3235,8 @@ the sections below.
@findex shorttitlepage
@cindex Bastard title page
@cindex Title page, bastard
-For extremely simple applications, and for the bastard title page in
-traditional book front matter, Texinfo also provides a command
+For extremely simple documents, and for the bastard title page in
+traditional book frontmatter, Texinfo also provides a command
@code{@@shorttitlepage} which takes the rest of the line as the title.
The argument is typeset on a page by itself and followed by a blank
page.
@@ -3240,6 +3256,11 @@ Use the @code{@@titlefont} command to select a large font suitable for
the title itself. You can use @code{@@titlefont} more than once if you
have an especially long title.
+For HTML output, each @code{@@titlefont} command produces an
+@code{<h1>} heading, but the HTML document @code{<title>} is not
+affected. For that, you must put an @code{@@settitle} command before
+the @code{@@titlefont} command (@pxref{settitle}).
+
@need 700
For example:
@@ -3287,6 +3308,9 @@ A template for this method looks like this:
The spacing of the example fits an 8.5 by 11 inch manual.
+You can in fact use these commands anywhere, not just on a title page,
+but since they are not logical markup commands, we don't recommend
+them.
@node title subtitle author
@subsection @code{@@title}, @code{@@subtitle}, and @code{@@author}
@@ -3302,7 +3326,8 @@ needed to adjust vertical spacing.
Write the @code{@@title}, @code{@@subtitle}, or @code{@@author}
commands at the beginning of a line followed by the title, subtitle,
-or author.
+or author. These commands are only effective in @TeX{} output; it's
+an error to use them anywhere except within @code{@@titlepage}.
The @code{@@title} command produces a line in which the title is set
flush to the left-hand side of the page in a larger than normal font.
@@ -3444,9 +3469,11 @@ Cover art by @dots{}
@cindex Titlepage end starts headings
@cindex End titlepage starts headings
-The @code{@@end titlepage} command must be written on a line by itself.
-It not only marks the end of the title and copyright pages, but also
-causes @TeX{} to start generating page headings and page numbers.
+Like all @code{@@end} commands (@pxref{Quotations and Examples}), the @code{@@end titlepage} command
+must be written at the beginning of a line by itself, with only one
+space between the @code{@@end} and the @code{titlepage}. It not only
+marks the end of the title and copyright pages, but also causes @TeX{}
+to start generating page headings and page numbers.
To repeat what is said elsewhere, Texinfo has two standard page heading
formats, one for documents which are printed on one side of each sheet of paper
@@ -3562,9 +3589,10 @@ the manual. To do this, you must use the @code{@@contents} and/or
@item @@contents
Generates a table of contents in a printed manual, including all
chapters, sections, subsections, etc., as well as appendices and
-unnumbered chapters. Headings generated by the @code{@@majorheading},
-@code{@@chapheading}, and @code{@@heading} commands do not appear in
-the table of contents.
+unnumbered chapters. Headings generated by @code{@@majorheading},
+@code{@@chapheading}, and the other @code{@@@dots{}heading} commands
+do not appear in the table of contents (@pxref{Structuring Command
+Types}).
@item @@shortcontents
@itemx @@summarycontents
@@ -3926,11 +3954,10 @@ Header}.
A peculiarity of the @code{texinfo-format-buffer} and
@code{texinfo-format-region} commands is that they do not indent (nor
fill) paragraphs that contain @code{@@w} or @code{@@*} commands.
-@xref{Refilling Paragraphs}, for further information.
@node firstparagraphindent
-@subsection @code{@@firstparagraphindent}: Indentation After Headings
+@subsection @code{@@firstparagraphindent}: Indenting After Headings
@cindex First paragraph, suppressing indentation of
@cindex Suppressing first paragraph indentation
@cindex Preventing first paragraph indentation
@@ -3988,7 +4015,8 @@ beginning of a line followed by either @samp{asis} or a number:
@@exampleindent @var{indent}
@end example
-The indentation is according to the value of @var{indent}:
+@code{@@exampleindent} is ignored for HTML output. Otherwise, the
+indentation is according to the value of @var{indent}:
@table @asis
@item @code{asis}
@@ -4003,8 +4031,9 @@ Indent environments by @var{n} space characters in Info output, by
@end table
-The default value of @var{indent} is 5. @code{@@exampleindent} is
-ignored for HTML output.
+The default value of @var{indent} is 5 spaces in Info, and 0.4@dmn{in}
+in @TeX{}, which is somewhat less. (The reduction is to help @TeX{}
+fit more characters onto physical lines.)
It is best to write the @code{@@exampleindent} command before the
end-of-header line at the beginning of a Texinfo file, so the region
@@ -4067,7 +4096,6 @@ For example:
@node Printing Indices & Menus
@section Printing Indices and Menus
-@findex printindex
@cindex Printing an index
@cindex Indices, printing and menus
@cindex Generating menus with indices
@@ -4084,39 +4112,25 @@ process of creating a printed manual, you must run a program called
sorted index file. The sorted index file is what is actually used to
print the index.
-Texinfo offers six separate types of predefined index, each with a
-two-letter abbreviation, as illustrated in the following table.
-However, you may merge indices (@pxref{Combining Indices}) or define
-your own indices (@pxref{New Indices}).
-
-Here are the predefined indices, their abbreviations, and the
-corresponding index entry commands:
-
-@table @samp
-@item cp
-concept index (@code{@@cindex})
-@item fn
-function index (@code{@@findex})
-@item vr
-variable index (@code{@@index})
-@item ky
-key index (@code{@@kindex})
-@item pg
-program index (@code{@@pindex})
-@item tp
-data type index (@code{@@tindex})
-@end table
-
-The @code{@@printindex} command takes a two-letter index abbreviation,
-reads the corresponding sorted index file and formats it appropriately
-into an index.
+Texinfo offers six separate types of predefined index, which suffice
+in most cases. @xref{Indices}, for information on this, as well
+defining your own new indices, combining indices, and, most
+importantly advice on writing the actual index entries. This section
+focuses on printing indices, which is done with the
+@code{@@printindex} command.
-The @code{@@printindex} command does not generate a chapter heading for
-the index. Consequently, you should precede the @code{@@printindex}
-command with a suitable section or chapter command (usually
-@code{@@appendix} or @code{@@unnumbered}) to supply the chapter heading
-and put the index into the table of contents. Precede the
-@code{@@unnumbered} command with an @code{@@node} line.
+@findex printindex
+@code{@@printindex} takes one argument, a two-letter index
+abbreviation. It reads the corresponding sorted index file (for
+printed output), and formats it appropriately into an index.
+
+The @code{@@printindex} command does not generate a chapter heading
+for the index, since different manuals have different needs.
+Consequently, you should precede the @code{@@printindex} command with
+a suitable section or chapter command (usually @code{@@appendix} or
+@code{@@unnumbered}) to supply the chapter heading and put the index
+into the table of contents. Precede the chapter heading with an
+@code{@@node} line as usual.
For example:
@@ -4136,11 +4150,44 @@ For example:
@end group
@end smallexample
-@noindent
+If you have more than one index, we recommend placing the concept index last.
+
+@itemize
+@item
+In printed output, @code{@@printindex} produces a traditional
+two-column index, with dot leaders between the index terms and page
+numbers.
-We recommend placing the concept index last, since that makes it easiest
-to find. We also recommend having a single index whenever possible,
-since then readers have only one place to look (@pxref{Combining Indices}).
+@item
+In Info output, @code{@@printindex} produces a special menu containing
+the line number of the entry, relative to the start of the node. Info
+readers can use this to go to the exact line of an entry, not just the
+containing node. (Older Info readers will just go to the node.)
+Here's an example:
+
+@smallexample
+* First index entry: Top. (line 7)
+@end smallexample
+
+@noindent The actual number of spaces is variable, to right-justify
+the line number; it's been reduced here to make the line fit in the
+printed manual.
+
+@item
+In plain text output, @code{@@printindex} produces the same menu, but
+the line numbers are relative to the start of the file, since that's
+more convenient for that format.
+
+@item
+In HTML and Docbook output, @code{@@printindex} produces links
+to the index entries.
+
+@item
+In XML output, it simply records the index to be printed.
+@end itemize
+
+It's not possible to generate an index when writing to standard
+output; @command{makeinfo} generates a warning in this case.
@node File End
@@ -4271,17 +4318,20 @@ its table of contents.@refill
The @code{@@unnumbered} series of commands produce unnumbered entries
both in the body of a printed work and in its table of contents. The
@code{@@top} command, which has a special use, is a member of this
-series (@pxref{makeinfo top, , @code{@@top}}).@refill
+series (@pxref{makeinfo top, , @code{@@top}}). An @code{@@unnumbered}
+section should be associated with a node and be a normal part of the
+document structure.
@item
-The @code{@@heading} series of commands produce unnumbered headings
-that do not appear in a table of contents. The heading commands never
-start a new page.@refill
+The @code{@@heading} series of commands produce simple unnumbered
+headings that do not appear in a table of contents, are not associated
+with nodes, and cannot be cross-referenced. The heading commands
+never start a new page.
@item
-The @code{@@majorheading} command produces results similar to using
-the @code{@@chapheading} command but generates a larger vertical
-whitespace before the heading.@refill
+The @code{@@majorheading} command is similar to @code{@@chapheading},
+except that it generates a larger vertical whitespace before the
+heading.
@item
When an @code{@@setchapternewpage} command says to do so, the
@@ -4299,7 +4349,7 @@ Here are the four groups of chapter structuring commands:
@multitable @columnfractions .19 .30 .29 .22
@item @tab @tab @tab No new page
@item @i{Numbered} @tab @i{Unnumbered} @tab @i{Lettered/numbered} @tab @i{Unnumbered}
-@item In contents @tab In contents @tab In contents @tab Omitted from@*contents
+@item In contents @tab In contents @tab In contents @tab Not in contents
@item @tab @code{@@top} @tab @tab @code{@@majorheading}
@item @code{@@chapter} @tab @code{@@unnumbered} @tab @code{@@appendix} @tab @code{@@chapheading}
@item @code{@@section} @tab @code{@@unnumberedsec} @tab @code{@@appendixsec} @tab @code{@@heading}
@@ -4318,7 +4368,7 @@ The @code{@@top} command is a special sectioning command that you use
only after an @samp{@@node Top} line at the beginning of a Texinfo file.
The @code{@@top} command tells the @code{makeinfo} formatter which node
is the `Top' node, so it can use it as the root of the node tree if your
-manual uses implicit pointers. It has the same typesetting effect as
+manual uses implicit node pointers. It has the same typesetting effect as
@code{@@unnumbered} (@pxref{unnumbered & appendix, , @code{@@unnumbered}
and @code{@@appendix}}). For detailed information, see @ref{makeinfo
top command, , The @code{@@top} Command}.
@@ -4328,7 +4378,7 @@ an @code{@@ifnottex} conditional so that it will appear only in Info and
HTML output, not @TeX{}.
-@node chapter, unnumbered & appendix, makeinfo top, Structuring
+@node chapter
@comment node-name, next, previous, up
@section @code{@@chapter}
@findex chapter
@@ -4385,7 +4435,7 @@ line and follow it on the same line by the title, as you would if you
were creating a chapter.@refill
-@node majorheading & chapheading, section, unnumbered & appendix, Structuring
+@node majorheading & chapheading
@section @code{@@majorheading}, @code{@@chapheading}
@findex majorheading
@findex chapheading
@@ -4399,7 +4449,7 @@ or an entry in the table of contents; and neither command causes
In @TeX{}, an @code{@@majorheading} command generates a larger vertical
whitespace before the heading than an @code{@@chapheading} command but
-is otherwise the same.@refill
+is otherwise the same.
In Info,
the @code{@@majorheading} and
@@ -4407,7 +4457,8 @@ the @code{@@majorheading} and
@code{@@chapter}: the title is printed on a line by itself with a line
of asterisks underneath. (@xref{chapter, , @code{@@chapter}}.)@refill
-@node section, unnumberedsec appendixsec heading, majorheading & chapheading, Structuring
+
+@node section
@comment node-name, next, previous, up
@section @code{@@section}
@findex section
@@ -4447,7 +4498,8 @@ This is a section
@noindent
in Info.
-@node unnumberedsec appendixsec heading, subsection, section, Structuring
+
+@node unnumberedsec appendixsec heading
@comment node-name, next, previous, up
@section @code{@@unnumberedsec}, @code{@@appendixsec}, @code{@@heading}
@findex unnumberedsec
@@ -4479,7 +4531,8 @@ You may use the @code{@@heading} command anywhere you wish for a
section-style heading that will not appear in the table of contents.@refill
@end table
-@node subsection, unnumberedsubsec appendixsubsec subheading, unnumberedsec appendixsec heading, Structuring
+
+@node subsection
@comment node-name, next, previous, up
@section The @code{@@subsection} Command
@findex subsection
@@ -4505,7 +4558,7 @@ This is a subsection
In a printed manual, subsections are listed in the table of contents
and are numbered three levels deep.@refill
-@node unnumberedsubsec appendixsubsec subheading, subsubsection, subsection, Structuring
+@node unnumberedsubsec appendixsubsec subheading
@comment node-name, next, previous, up
@section The @code{@@subsection}-like Commands
@cindex Subsection-like commands
@@ -4528,8 +4581,7 @@ subsection-like heading labelled with a letter and numbers; both of
these commands produce headings that appear in the table of
contents.@refill
-@node subsubsection, Raise/lower sections, unnumberedsubsec appendixsubsec subheading, Structuring
-@comment node-name, next, previous, up
+@node subsubsection
@section The `subsub' Commands
@cindex Subsub commands
@findex subsubsection
@@ -4583,66 +4635,29 @@ This is a subsubsection
@end group
@end example
-@node Raise/lower sections, , subsubsection, Structuring
-@comment node-name, next, previous, up
+
+@node Raise/lower sections
@section @code{@@raisesections} and @code{@@lowersections}
@findex raisesections
@findex lowersections
@cindex Raising and lowering sections
+@cindex Lowering and raising sections
@cindex Sections, raising and lowering
-The @code{@@raisesections} and @code{@@lowersections} commands raise and
-lower the hierarchical level of chapters, sections, subsections and the
-like. The @code{@@raisesections} command changes sections to chapters,
-subsections to sections, and so on. The @code{@@lowersections} command
-changes chapters to sections, sections to subsections, and so on.
-
-@cindex Include files, and section levels
-An @code{@@lowersections} command is useful if you wish to include text
-that is written as an outer or standalone Texinfo file in another
-Texinfo file as an inner, included file. If you write the command at
-the beginning of the file, all your @code{@@chapter} commands are
-formatted as if they were @code{@@section} commands, all your
-@code{@@section} command are formatted as if they were
-@code{@@subsection} commands, and so on.
-
-@need 1000
-@code{@@raisesections} raises a command one level in the chapter
-structuring hierarchy:@refill
-
-@example
-@group
- @r{Change} @r{To}
-
-@@subsection @@section,
-@@section @@chapter,
-@@heading @@chapheading,
- @r{etc.}
-@end group
-@end example
-
-@need 1000
-@code{@@lowersections} lowers a command one level in the chapter
-structuring hierarchy:@refill
+The @code{@@raisesections} and @code{@@lowersections} commands
+implicitly raise and lower the hierarchical level of following
+chapters, sections and the other sectioning commands.
-@example
-@group
- @r{Change} @r{To}
+That is, the @code{@@raisesections} command changes sections to
+chapters, subsections to sections, and so on. Conversely, the
+@code{@@lowersections} command changes chapters to sections, sections
+to subsections, and so on. Thus, an @code{@@lowersections} command
+cancels an @code{@@raisesections} command, and vice versa.
-@@chapter @@section,
-@@subsection @@subsubsection,
-@@heading @@subheading,
- @r{etc.}
-@end group
-@end example
-
-An @code{@@raisesections} or @code{@@lowersections} command changes only
-those structuring commands that follow the command in the Texinfo file.
-Write an @code{@@raisesections} or @code{@@lowersections} command on a
-line of its own.
-
-An @code{@@lowersections} command cancels an @code{@@raisesections}
-command, and vice versa. Typically, the commands are used like this:
+@cindex Include files, and section levels
+You can use @code{@@lowersections} to include text written as an outer
+or standalone Texinfo file in another Texinfo file as an inner,
+included file. Typical usage looks like this:
@example
@@lowersections
@@ -4650,27 +4665,51 @@ command, and vice versa. Typically, the commands are used like this:
@@raisesections
@end example
-Without the @code{@@raisesections}, all the subsequent sections in your
-document will be lowered.
+@noindent (Without the @code{@@raisesections}, all the subsequent
+sections in the document would be lowered.)
-Repeated use of the commands continue to raise or lower the hierarchical
-level a step at a time.
+If the included file being lowered has a @code{@@top} node, you'll
+need to conditionalize its inclusion with a flag (@pxref{set value}).
+
+Another difficulty can arise with documents that use the (recommended)
+feature of @command{makeinfo} for implicitly determining node
+pointers. Since @command{makeinfo} must assume a hierarchically
+organized document to determine the pointers, you cannot just
+arbitrarily sprinkle @code{@@raisesections} and @code{@@lowersections}
+commands in the document. The final result has to have menus that
+take the raising and lowering into account. Therefore, as a practical
+matter, you generally only want to raise or lower large chunks,
+usually in external files as shown above.
+
+Repeated use of the commands continue to raise or lower the
+hierarchical level a step at a time. An attempt to raise above
+`chapter' reproduces chapter commands; an attempt to lower below
+`subsubsection' reproduces subsubsection commands. Also, lowered
+subsubsections and raised chapters will not work with
+@command{makeinfo}'s feature of implicitly determining node pointers,
+since the menu structure won't be correct.
+
+Write each @code{@@raisesections} and @code{@@lowersections} command
+on a line of its own.
-An attempt to raise above `chapters' reproduces chapter commands; an
-attempt to lower below `subsubsections' reproduces subsubsection
-commands.
@node Nodes
@chapter Nodes
@dfn{Nodes} are the primary segments of a Texinfo file. They do not
-themselves impose a hierarchical or any other kind of structure on a file.
-Nodes contain @dfn{node pointers} that name other nodes, and can contain
-@dfn{menus} which are lists of nodes. In Info, the movement commands
-can carry you to a pointed-to node or to a node listed in a menu. Node
-pointers and menus provide structure for Info files just as chapters,
-sections, subsections, and the like, provide structure for printed
-books.@refill
+in and of themselves impose a hierarchical or any other kind of
+structure on a file. Nodes contain @dfn{node pointers} that name
+other nodes, and can contain @dfn{menus} which are lists of nodes. In
+Info, the movement commands can carry you to a pointed-to node or to a
+node listed in a menu.
+
+Node pointers and menus provide structure for Info files just as
+chapters, sections, subsections, and the like, provide structure for
+printed books.
+
+Because node names are used in cross-references, it is not desirable
+to casually change them. Such name changes invalidate references from
+other manuals, from mail archives, and so on.
@menu
* Two Paths:: Different commands to structure
@@ -4758,7 +4797,7 @@ This @code{@@node} line says that the name of this node is ``Chapter
hierarchically organized (@pxref{makeinfo Pointer Creation}), but the
pointer relationships still obtain.
-@quotation
+@quotation Note
@strong{Please Note:} `Next' refers to the next node at the same
hierarchical level in the manual, not necessarily to the next node
within the Texinfo file. In the Texinfo file, the subsequent node may
@@ -4859,8 +4898,8 @@ immediately after an @code{@@node} line---for example, an
@code{@@section} or @code{@@subsection} line. (@xref{Structuring
Command Types}.)
-@quotation
-@strong{Please note:} The GNU Emacs Texinfo mode updating commands work
+@quotation Note
+The GNU Emacs Texinfo mode updating commands work
only with Texinfo files in which @code{@@node} lines are followed by chapter
structuring lines. @xref{Updating Requirements}.
@end quotation
@@ -5020,9 +5059,10 @@ node containing the pointer.
@item
@@-commands in node names are not allowed. This includes punctuation
characters that are escaped with a @samp{@@}, such as @code{@@} and
-@code{@{}. (For a few rare cases when this is useful, Texinfo has
-limited support for using @w{@@-commands} in node names; see
-@ref{Pointer Validation}.)
+@code{@{}, and accent commands such as @samp{@@'}. (For a few cases
+when this is useful, Texinfo has limited support for using
+@w{@@-commands} in node names; see @ref{Pointer Validation}.) Perhaps
+this limitation will be removed some day.
@item
@cindex Colon in nodename
@@ -5033,7 +5073,8 @@ limited support for using @w{@@-commands} in node names; see
@cindex Invalid characters in node names
@cindex Node names, invalid characters in
Unfortunately, you cannot use periods, commas, colons or parentheses
-within a node name; these confuse the Texinfo processors.
+within a node name; these confuse the Texinfo processors. Perhaps
+this limitation will be removed some day, too.
@need 700
For example, the following is a section title in this manual:
@@ -5051,7 +5092,22 @@ unnumberedsec appendixsec heading
@cindex Case in node name
@item
-Case is significant.
+Case is significant in node names.
+
+@cindex White space in node name
+@cindex Spaces in node name
+Spaces before and after names on the @samp{@@node} line are ignored,
+but spaces ``inside'' a name are significant. For example:
+
+@example
+@@node foo bar,
+@@node foo bar ,
+@@node foo bar ,
+@end example
+
+@noindent all define the same node, @samp{foo bar}. References to the
+node should all use that name, without the leading or trailing spaces,
+but with the internal spaces.
@end itemize
@@ -5149,8 +5205,8 @@ Thus, in practice, a Top node starts like this:
@cindex Pointer creation with @code{makeinfo}
@cindex Automatic pointer creation with @code{makeinfo}
-The @code{makeinfo} program has a feature for automatically defining
-node pointers for a hierarchically organized file.
+The @code{makeinfo} program has a feature for automatically determining
+node pointers for a hierarchically organized document.
When you take advantage of this feature, you do not need to write the
`Next', `Previous', and `Up' pointers after the name of a node.
@@ -5166,15 +5222,18 @@ Finally, you must write the name of each node (except for the `Top'
node) in a menu that is one or more hierarchical levels above the
node's hierarchical level.
-This node pointer insertion feature in @code{makeinfo} relieves you from
-the need to update menus and pointers manually or with Texinfo mode
-commands. (@xref{Updating Nodes and Menus}.)
+This implicit node pointer insertion feature in @code{makeinfo}
+relieves you from the need to update menus and pointers manually or
+with Texinfo mode commands. (@xref{Updating Nodes and Menus}.)
In most cases, you will want to take advantage of this feature and not
redundantly specify node pointers. However, Texinfo documents are not
-required to be organized hierarchically or in fact contain sectioning
-commands at all. For example, if you never intend the document to be
-printed. In those cases, you will need to explicitly specify the pointers.
+required to be organized hierarchically or in fact to contain
+sectioning commands at all (for example, if you never intend the
+document to be printed). The special procedure for handling the short
+text before a menu (@pxref{Menus}) also disables this
+feature, for that group of nodes. In those cases, you will need to
+explicitly specify the pointers.
@node anchor
@@ -5227,25 +5286,19 @@ an argument. (@xref{goto-node,,,info-stnd,GNU Info}.)
@cindex Menus
@findex menu
-@dfn{Menus} contain pointers to subordinate nodes.@footnote{Menus can
-carry you to any node, regardless of the hierarchical structure; even to
-nodes in a different Info file. However, the GNU Emacs Texinfo mode
-updating commands work only to create menus of subordinate nodes.
-Conventionally, cross references are used to refer to other nodes.} In
-Info, you use menus to go to such nodes. Menus have no effect in
-printed manuals and do not appear in them.
-
-By convention, a menu is put at the end of a node since a reader who
-uses the menu may not see text that follows it. Furthermore, a node
-that has a menu should not contain much text. If you have a lot of text
-and a menu, move most of the text into a new subnode---all but a few
-lines. Otherwise, a reader with a terminal that displays only a few
-lines may miss the menu and its associated text. As a practical matter,
-you should locate a menu within 20 lines of the beginning of the
-node.
+@dfn{Menus} contain pointers to subordinate nodes. In online output,
+you use menus to go to such nodes. Menus have no effect in printed
+manuals and do not appear in them.
+
+A node with a menu should not contain much text. If you find yourself
+writing a lot of before a menu, we generally recommend moving most of
+the text into a new subnode---all but a paragraph or two. Otherwise,
+a reader with a terminal that displays only a few lines may miss the
+menu and its associated text. As a practical matter, it is best to
+locate a menu within 20 or so lines of the beginning of the node.
@menu
-* Menu Location:: Put a menu in a short node.
+* Menu Location:: Menus go at the ends of short nodes.
* Writing a Menu:: What is a menu?
* Menu Parts:: A menu entry has three parts.
* Less Cluttered Menu Entry:: Two part menu entry.
@@ -5254,59 +5307,53 @@ node.
@end menu
-@node Menu Location, Writing a Menu, Menus, Menus
-@ifinfo
-@heading Menus Need Short Nodes
-@end ifinfo
+@node Menu Location
+@section Menu Location
@cindex Menu location
@cindex Location of menus
-@cindex Nodes for menus are short
-@cindex Short nodes for menus
-
-The short text before a menu may look awkward in a printed manual. To
-avoid this, you can write a menu near the beginning of its node and
-follow the menu by an @code{@@node} line, and then an @code{@@heading}
-line located within @code{@@ifinfo} and @code{@@end ifinfo}. This way,
-the menu, @code{@@node} line, and title appear only in the Info file,
-not the printed document.
-
-For example, the preceding two paragraphs follow an Info-only menu,
-@code{@@node} line, and heading, and look like this:
-
-@example
-@group
-@@menu
-* Menu Location:: Put a menu in a short node.
-* Writing a Menu:: What is a menu?
-* Menu Parts:: A menu entry has three parts.
-* Less Cluttered Menu Entry:: Two part menu entry.
-* Menu Example:: Two and three part entries.
-* Other Info Files:: How to refer to a different
- Info file.
-@@end menu
-@@node Menu Location, Writing a Menu, , Menus
-@@ifinfo
-@@heading Menus Need Short Nodes
-@@end ifinfo
-@end group
-@end example
-
-The Texinfo file for this document contains a number of
-examples of this procedure; one is at the beginning of this chapter.
-
-
-@node Writing a Menu, Menu Parts, Menu Location, Menus
+A menu must be located at the end of a node, without any regular text
+or additional commands between the @code{@@end menu} and the beginning
+of the next node. (As a consequence, there may be at most one menu in
+a node.)
+
+@cindex Info format, and menus
+This is actually a useful restriction, since a reader who uses the
+menu could easily miss any such text. Technically, it is necessary
+because in Info format, there is no marker for the end of a menu, so
+Info-reading programs would have no way to know when the menu ends and
+normal text resumes.
+
+@cindex Hierarchical documents, and menus
+Technically, menus can carry you to any node, regardless of the
+structure of the document; even to nodes in a different Info file.
+However, we do not recommend ever making use of this, because the
+@command{makeinfo} implicit pointer creation feature (@pxref{makeinfo
+Pointer Creation}) and GNU Emacs Texinfo mode updating commands work
+only to create menus of subordinate nodes in a hierarchically
+structured document. Instead, use cross references to refer to
+arbitrary nodes.
+
+In the past, we recommended using a @samp{@@heading} command within an
+@code{@@ifinfo} conditional instead of the normal sectioning commands
+after a very short node with a menu. This had the advantage of making
+the printed output look better, because there was no very short text
+between two headings on the page. But aside from not working with
+@command{makeinfo}'s implicit pointer creation, it also makes the XML
+output incorrect, since it does not reflect the true document
+structure. So, unfortunately we can no longer recommend this.
+
+
+@node Writing a Menu
@section Writing a Menu
@cindex Writing a menu
@cindex Menu writing
-A menu consists of an @code{@@menu} command on a line by
-itself followed by menu entry lines or menu comment lines
-and then by an @code{@@end menu} command on a line by
-itself.@refill
+A menu consists of an @code{@@menu} command on a line by itself
+followed by menu entry lines or menu comment lines and then by an
+@code{@@end menu} command on a line by itself.
-A menu looks like this:@refill
+A menu looks like this:
@example
@group
@@ -5331,7 +5378,7 @@ entries. Space characters in a menu are preserved as-is; this allows
you to format the menu as you wish.
-@node Menu Parts, Less Cluttered Menu Entry, Writing a Menu, Menus
+@node Menu Parts
@section The Parts of a Menu
@cindex Parts of a menu
@cindex Menu parts
@@ -5372,7 +5419,7 @@ authors prefer to indent the second line while others prefer to align it
with the first (and all others). It's up to you.
-@node Less Cluttered Menu Entry, Menu Example, Menu Parts, Menus
+@node Less Cluttered Menu Entry
@comment node-name, next, previous, up
@section Less Cluttered Menu Entry
@cindex Two part menu entry
@@ -5403,7 +5450,7 @@ instead of
You should use the node name for the menu entry name whenever possible,
since it reduces visual clutter in the menu.@refill
-@node Menu Example, Other Info Files, Less Cluttered Menu Entry, Menus
+@node Menu Example
@comment node-name, next, previous, up
@section A Menu Example
@cindex Menu example
@@ -5473,7 +5520,7 @@ Since no file name is specified with either @samp{Files} or
@samp{Buffers}, they must be the names of nodes in the same Info file
(@pxref{Other Info Files, , Referring to Other Info Files}).@refill
-@node Other Info Files, , Menu Example, Menus
+@node Other Info Files
@comment node-name, next, previous, up
@section Referring to Other Info Files
@cindex Referring to other Info files
@@ -5565,10 +5612,8 @@ places to which cross references can refer.
* uref:: How to refer to a uniform resource locator.
@end menu
-@node References, Cross Reference Commands, Cross References, Cross References
-@ifinfo
-@heading What References Are For
-@end ifinfo
+@node References
+@section What References Are For
Often, but not always, a printed document should be designed so that
it can be read sequentially. People tire of flipping back and forth
@@ -5588,9 +5633,9 @@ In a printed manual, a cross reference results in a page reference,
unless it is to another manual altogether, in which case the cross
reference names that manual.@refill
-In Info, a cross reference results in an entry that you can follow using
-the Info @samp{f} command. (@inforef{Help-Adv, Some advanced Info
-commands, info}.)@refill
+In Info, a cross reference results in an entry that you can follow
+using the Info @samp{f} command. (@inforef{Help-Xref, Following
+cross-references, info}.)
The various cross reference commands use nodes (or anchors,
@pxref{anchor,,@code{@@anchor}}) to define cross reference locations.
@@ -5604,7 +5649,7 @@ printed, and will not be used online, you must nonetheless write
references.@refill
@need 800
-@node Cross Reference Commands, Cross Reference Parts, References, Cross References
+@node Cross Reference Commands
@comment node-name, next, previous, up
@section Different Cross Reference Commands
@cindex Different cross reference commands
@@ -5636,7 +5681,7 @@ manual.@refill
manuals for which there is no corresponding Info file and, therefore,
no node to which to point. @xref{cite, , @code{@@cite}}.)@refill
-@node Cross Reference Parts, xref, Cross Reference Commands, Cross References
+@node Cross Reference Parts
@comment node-name, next, previous, up
@section Parts of a Cross Reference
@cindex Cross reference parts
@@ -5749,7 +5794,7 @@ how Info and @TeX{} format the output of each of the various commands:
write @code{@@xref} at the beginning of a sentence; write
@code{@@pxref} only within parentheses, and so on.@refill
-@node xref, Top Node Naming, Cross Reference Parts, Cross References
+@node xref
@comment node-name, next, previous, up
@section @code{@@xref}
@findex xref
@@ -5771,10 +5816,8 @@ manual.@refill
* Four and Five Arguments:: @code{@@xref} with four and five arguments.
@end menu
-@node Reference Syntax, One Argument, xref, xref
-@ifinfo
-@subheading What a Reference Looks Like and Requires
-@end ifinfo
+@node Reference Syntax
+@subsection What a Reference Looks Like and Requires
Most often, an Info cross reference looks like this:@refill
@@ -5809,8 +5852,8 @@ You must write that period or comma yourself; otherwise, Info will not
recognize the end of the reference. (The @code{@@pxref} command works
differently. @xref{pxref, , @code{@@pxref}}.)@refill
-@quotation
-@strong{Please note:} A period or comma @strong{must} follow the closing
+@quotation Caution
+A period or comma @strong{must} follow the closing
brace of an @code{@@xref}. It is required to terminate the cross
reference. This period or comma will appear in the output, both in
the Info file and in the printed manual.@refill
@@ -5826,13 +5869,13 @@ A cross reference requires only the name of a node; but it may contain
up to four additional arguments. Each of these variations produces a
cross reference that looks somewhat different.@refill
-@quotation
-@strong{Please note:} Commas separate arguments in a cross reference;
+@quotation Note
+Commas separate arguments in a cross reference;
avoid including them in the title or other part lest the formatters
mistake them for separators.@refill
@end quotation
-@node One Argument, Two Arguments, Reference Syntax, xref
+@node One Argument
@subsection @code{@@xref} with One Argument
The simplest form of @code{@@xref} takes one argument, the name of
@@ -5890,7 +5933,7 @@ See Section 3.1 [Tropical Storms], page 24, for more info.
(Note that in the preceding example the closing brace is followed by a
comma, and then by the clause, which is followed by a period.)@refill
-@node Two Arguments, Three Arguments, One Argument, xref
+@node Two Arguments
@subsection @code{@@xref} with Two Arguments
With two arguments, the second is used as the name of the Info cross
@@ -5954,7 +5997,7 @@ See Section 5.2 [Electrical Effects], page 57, for more info.
(Note that in the preceding example the closing brace is followed by a
comma, and then by the clause, which is followed by a period.)@refill
-@node Three Arguments, Four and Five Arguments, Two Arguments, xref
+@node Three Arguments
@subsection @code{@@xref} with Three Arguments
A third argument replaces the node name in the @TeX{} output. The third
@@ -6052,7 +6095,7 @@ Here are several examples from @cite{The GNU Awk User's Guide}:@refill
@@xref@{Regexp, , Regular Expressions as Patterns@}.
@end smallexample
-@node Four and Five Arguments, , Three Arguments, xref
+@node Four and Five Arguments
@subsection @code{@@xref} with Four and Five Arguments
In a cross reference, a fourth argument specifies the name of another
@@ -6166,7 +6209,7 @@ incorporated into the same @TeX{} run but make separate Info files.
In this case, you need to specify only the fourth argument, and not
the fifth.@refill
-@node Top Node Naming, ref, xref, Cross References
+@node Top Node Naming
@section Naming a `Top' Node
@cindex Naming a `Top' Node in references
@cindex @samp{@r{Top}} node naming for references
@@ -6205,9 +6248,10 @@ See section ``Overview'' in @i{The GNU Make Manual}.
@noindent
In this example, @samp{Top} is the name of the first node, and
-@samp{Overview} is the name of the first section of the manual.@refill
-@node ref, pxref, Top Node Naming, Cross References
-@comment node-name, next, previous, up
+@samp{Overview} is the name of the first section of the manual.
+
+
+@node ref
@section @code{@@ref}
@cindex Cross references using @code{@@ref}
@cindex References using @code{@@ref}
@@ -6215,75 +6259,59 @@ In this example, @samp{Top} is the name of the first node, and
@code{@@ref} is nearly the same as @code{@@xref} except that it does
not generate a `See' in the printed output, just the reference itself.
-This makes it useful as the last part of a sentence.@refill
+This makes it useful as the last part of a sentence.
-@need 700
-@noindent
-For example,
+@noindent For example,
@cindex Hurricanes
@example
For more information, see @@ref@{Hurricanes@}.
@end example
-@noindent
-produces
+@noindent produces (in Info):
@example
For more information, see *Note Hurricanes::.
@end example
-@noindent
-and
+@noindent and (in printed output):
@quotation
For more information, see Section 8.2 [Hurricanes], page 123.
@end quotation
-The @code{@@ref} command sometimes leads writers to express themselves
-in a manner that is suitable for a printed manual but looks awkward
-in the Info format. Bear in mind that your audience will be using
-both the printed and the Info format.@refill
-
-@need 800
-@noindent
-For example,
+The @code{@@ref} command sometimes tempts writers to express
+themselves in a manner that is suitable for a printed manual but looks
+awkward in the Info format. Bear in mind that your audience will be
+using both the printed and the Info format. For example:
@cindex Sea surges
@example
-@group
Sea surges are described in @@ref@{Hurricanes@}.
-@end group
@end example
-@need 800
-@noindent
-produces
+@noindent looks ok in the printed output:
@quotation
Sea surges are described in Section 6.7 [Hurricanes], page 72.
@end quotation
-@need 800
-@noindent
-in a printed document, and the following in Info:
+@noindent but is awkward to read in Info:
@example
Sea surges are described in *Note Hurricanes::.
@end example
-@quotation
-@strong{Caution:} You @emph{must} write a period, comma, or right
-parenthesis immediately after an @code{@@ref} command with two or more
-arguments. Otherwise, Info will not find the end of the cross reference
-entry and its attempt to follow the cross reference will fail. As a
-general rule, you should write a period or comma after every
-@code{@@ref} command. This looks best in both the printed and the Info
-output.@refill
-@end quotation
+As a general rule, you should write a period or comma immediately
+after an @code{@@ref} command with two or more arguments.
-@node pxref, inforef, ref, Cross References
-@comment node-name, next, previous, up
+If there is no such following punctuation, @command{makeinfo} will
+generate a (grammatically incorrect) period in the Info output;
+otherwise, the cross-reference would fail completely, due to the
+current syntax of Info format.
+
+
+@node pxref
@section @code{@@pxref}
@cindex Cross references using @code{@@pxref}
@cindex References using @code{@@pxref}
@@ -6291,9 +6319,9 @@ output.@refill
The parenthetical reference command, @code{@@pxref}, is nearly the
same as @code{@@xref}, but you use it @emph{only} inside parentheses
-and you do @emph{not} type a comma or period after the command's
-closing brace. The command differs from @code{@@xref} in two
-ways:@refill
+and you do @emph{not} type a comma or period (or anything else) after
+the command's closing brace. The command differs from @code{@@xref}
+in two ways:
@enumerate
@item
@@ -6308,8 +6336,9 @@ closing colon or period.@refill
Because one type of formatting automatically inserts closing
punctuation and the other does not, you should use @code{@@pxref}
@emph{only} inside parentheses as part of another sentence. Also, you
-yourself should not insert punctuation after the reference, as you do
-with @code{@@xref}.@refill
+yourself should not insert punctuation after the reference (or any
+other text), as you do with @code{@@xref}. In the Info
+output, such text would follow a period, which is grammatically wrong.
@code{@@pxref} is designed so that the output looks right and works
right between parentheses both in printed output and in an Info file.
@@ -6371,27 +6400,30 @@ and
@code{@@pxref} can be used with up to five arguments just like
@code{@@xref} (@pxref{xref, , @code{@@xref}}).@refill
-@quotation
-@strong{Please note:} Use @code{@@pxref} only as a parenthetical
+@quotation Caution
+Use @code{@@pxref} only as a parenthetical
reference. Do not try to use @code{@@pxref} as a clause in a sentence.
It will look bad in either the Info file, the printed output, or
both.@refill
-
-Also, parenthetical cross references look best at the ends of sentences.
-Although you may write them in the middle of a sentence, that location
-breaks up the flow of text.@refill
@end quotation
-@node inforef, uref, pxref, Cross References
+Parenthetical cross references look best at the ends of sentences.
+Although they technically work in the middle of a sentence, that
+location breaks up the flow of reading.
+
+
+@node inforef
@section @code{@@inforef}
@cindex Cross references using @code{@@inforef}
@cindex References using @code{@@inforef}
@findex inforef
-@code{@@inforef} is used for cross references to Info files for which
-there are no printed manuals. Even in a printed manual,
-@code{@@inforef} generates a reference directing the user to look in
-an Info file.@refill
+@code{@@inforef} is used for making cross references to Info
+documents---even from a printed manual. This might be because you
+want to refer to conditional @code{@@ifinfo} text
+(@pxref{Conditionals}), or because printed output is not available
+(perhaps because there is no Texinfo source), among other
+possibilities.
The command takes either two or three arguments, in the following
order:@refill
@@ -6421,67 +6453,44 @@ The template is:
@need 800
@noindent
-Thus,
+For example,
@example
@group
-@@inforef@{Expert, Advanced Info commands, info@},
+@@inforef@{Advanced, Advanced Info commands, info@},
for more information.
@end group
@end example
@need 800
@noindent
-produces
+produces (in Info):
@example
@group
-*Note Advanced Info commands: (info)Expert,
+*Note Advanced Info commands: (info)Advanced,
for more information.
@end group
@end example
@need 800
@noindent
-and
+and (in the printed output):
@quotation
-See Info file @file{info}, node @samp{Expert}, for more information.
+See Info file @file{info}, node @samp{Advanced}, for more information.
@end quotation
-@need 800
-@noindent
-Similarly,
-
-@example
-@group
-@@inforef@{Expert, , info@}, for more information.
-@end group
-@end example
-
-@need 800
-@noindent
-produces
-
-@example
-*Note (info)Expert::, for more information.
-@end example
-
-@need 800
-@noindent
-and
-
-@quotation
-See Info file @file{info}, node @samp{Expert}, for more information.
-@end quotation
+(This particular example is not realistic, since the Info manual is
+written in Texinfo, so all formats are available.)
The converse of @code{@@inforef} is @code{@@cite}, which is used to
refer to printed works for which no Info form exists. @xref{cite, ,
-@code{@@cite}}.@refill
+@code{@@cite}}.
@node uref
-@section @code{@@uref@{@var{url}[, @var{text}][, @var{replacement}]@}}
+@section @code{@@url}, @code{@@uref@{@var{url}[, @var{text}][, @var{replacement}]@}}
@findex uref
@cindex Uniform resource locator, referring to
@cindex URL, referring to
@@ -6492,6 +6501,12 @@ It takes one mandatory argument, the url, and two optional arguments
which control the text that is displayed. In HTML output, @code{@@uref}
produces a link you can follow.
+@code{@@url} is a synonym for @code{@@uref}. Originally, @code{@@url}
+had the meaning of @code{@@indicateurl}
+(@pxref{indicateurl,,@code{@@indicateurl}}), but in actual practice it
+was misused the vast majority of the time. So we've changed the
+definitions.
+
The second argument, if specified, is the text to display (the default
is the url itself); in Info and DVI output, but not in HTML output, the
url is also output.
@@ -6562,7 +6577,7 @@ The <a href="/man.cgi/1/ls">ls(1)</a> program @dots{}
@end example
To merely indicate a url without creating a link people can follow, use
-@code{@@url} (@pxref{url, @code{@@url}}).
+@code{@@indicateurl} (@pxref{indicateurl, @code{@@indicateurl}}).
Some people prefer to display url's in the unambiguous format:
@@ -6599,7 +6614,7 @@ program. Also, you can emphasize text, in several different ways.
@end menu
-@node Indicating, Emphasis, Marking Text, Marking Text
+@node Indicating
@section Indicating Definitions, Commands, etc.
@cindex Highlighting text
@cindex Indicating commands, definitions, etc.
@@ -6627,25 +6642,24 @@ not something else that should not be changed.@refill
* code:: Indicating program code.
* kbd:: Showing keyboard input.
* key:: Specifying keys.
-* samp:: A literal sequence of characters.
-* verb:: A verbatim sequence of characters.
+* samp:: Indicating a literal sequence of characters.
+* verb:: Indicating a verbatim sequence of characters.
* var:: Indicating metasyntactic variables.
* env:: Indicating environment variables.
* file:: Indicating file names.
* command:: Indicating command names.
* option:: Indicating option names.
* dfn:: Specifying definitions.
-* cite:: Referring to books not in the Info system.
+* cite:: Referring to books not in the Info system.
+* abbr:: Indicating abbreviations.
* acronym:: Indicating acronyms.
-* url:: Indicating a World Wide Web reference.
+* indicateurl:: Indicating an example URL.
* email:: Indicating an electronic mail address.
@end menu
-@node Useful Highlighting, code, Indicating, Indicating
-@ifinfo
-@subheading Highlighting Commands are Useful
-@end ifinfo
+@node Useful Highlighting
+@subsection Highlighting Commands are Useful
The highlighting commands can be used to extract useful information
from the file, such as lists of functions or file names. It is
@@ -6659,46 +6673,68 @@ The commands serve a variety of purposes:@refill
@table @code
@item @@code@{@var{sample-code}@}
-Indicate text that is a literal example of a piece of a program.@refill
+Indicate text that is a literal example of a piece of a program.
+@xref{code,,@code{@@code}}.
@item @@kbd@{@var{keyboard-characters}@}
-Indicate keyboard input.@refill
+Indicate keyboard input.
+@xref{kbd,,@code{@@kbd}}.
@item @@key@{@var{key-name}@}
-Indicate the conventional name for a key on a keyboard.@refill
+Indicate the conventional name for a key on a keyboard.
+@xref{key,,@code{@@key}}.
@item @@samp@{@var{text}@}
-Indicate text that is a literal example of a sequence of characters.@refill
+Indicate text that is a literal example of a sequence of characters.
+@xref{samp,,@code{@@samp}}.
+
+@item @@verb@{@var{text}@}
+Write a verbatim sequence of characters.
+@xref{verb,,@code{@@verb}}.
@item @@var@{@var{metasyntactic-variable}@}
-Indicate a metasyntactic variable.@refill
+Indicate a metasyntactic variable.
+@xref{var,,@code{@@var}}.
@item @@env@{@var{environment-variable}@}
-Indicate an environment variable.@refill
+Indicate an environment variable.
+@xref{env,,@code{@@kenv}}.
@item @@file@{@var{file-name}@}
-Indicate the name of a file.@refill
+Indicate the name of a file.
+@xref{file,,@code{@@file}}.
@item @@command@{@var{command-name}@}
-Indicate the name of a command.@refill
+Indicate the name of a command.
+@xref{command,,@code{@@command}}.
@item @@option@{@var{option}@}
-Indicate a command-line option.@refill
+Indicate a command-line option.
+@xref{option,,@code{@@option}}.
@item @@dfn@{@var{term}@}
-Indicate the introductory or defining use of a term.@refill
+Indicate the introductory or defining use of a term.
+@xref{dfn,,@code{@@dfn}}.
@item @@cite@{@var{reference}@}
-Indicate the name of a book.@refill
+Indicate the name of a book.
+@xref{cite,,@code{@@cite}}.
+
+@item @@abbr@{@var{abbreviation}@}
+Indicate an abbreviation.
@item @@acronym@{@var{acronym}@}
-Indicate an acronym.@refill
+Indicate an acronym.
+@xref{acronym,,@code{@@acronym}}.
-@item @@url@{@var{uniform-resource-locator}@}
-Indicate a uniform resource locator for the World Wide Web.
+@item @@indicateurl@{@var{uniform-resource-locator}@}
+Indicate an example (that is, nonfunctional) uniform resource locator.
+@xref{indicateurl,,@code{@@indicateurl}}. (Use @code{@@url}
+(@pxref{uref,,@code{@@url}}) for live url's.)
@item @@email@{@var{email-address}[, @var{displayed-text}]@}
Indicate an electronic mail address.
+@xref{email,,@code{@@email}}.
@ignore
@item @@ctrl@{@var{ctrl-char}@}
@@ -6816,26 +6852,31 @@ long-standing manuals do so.
@cindex Keyboard input
Use the @code{@@kbd} command for characters of input to be typed by
-users. For example, to refer to the characters @kbd{M-a},
-write@refill
+users. For example, to refer to the characters @kbd{M-a}, write:
@example
@@kbd@{M-a@}
@end example
@noindent
-and to refer to the characters @kbd{M-x shell}, write@refill
+and to refer to the characters @kbd{M-x shell}, write:
@example
@@kbd@{M-x shell@}
@end example
-@cindex user input
-@cindex slanted typewriter font, for @code{@@kbd}
-The @code{@@kbd} command has the same effect as @code{@@code} in Info,
-but by default produces a different font (slanted typewriter instead of
-normal typewriter) in the printed manual, so users can distinguish the
-characters they are supposed to type from those the computer outputs.
+@cindex User input
+@cindex Slanted typewriter font, for @code{@@kbd}
+By default, the @code{@@kbd} command produces a different font
+(slanted typewriter instead of normal typewriter) in the printed
+manual, so users can distinguish the characters that they are supposed
+to type from those that the computer outputs.
+
+In Info output, @code{@@kbd} is usually the same as @code{@@code},
+producing `quotes' around its argument. However, in typewriter-like
+contexts such as the @code{@@example} environment (@pxref{example})
+and @code{@@code} command itself, the quotes are omitted, since Info
+format cannot use distinguishing fonts.
@findex kbdinputstyle
Since the usage of @code{@@kbd} varies from manual to manual, you can
@@ -6843,9 +6884,10 @@ control the font switching with the @code{@@kbdinputstyle} command.
This command has no effect on Info output. Write this command at the
beginning of a line with a single word as an argument, one of the
following:
-@vindex distinct@r{, arg to @@kbdinputstyle}
-@vindex example@r{, arg to @@kbdinputstyle}
-@vindex code@r{, arg to @@kbdinputstyle}
+
+@vindex distinct@r{, value for @code{@@kbdinputstyle}}
+@vindex example@r{, value for @code{@@kbdinputstyle}}
+@vindex code@r{, value for @code{@@kbdinputstyle}}
@table @samp
@item code
Always use the same font for @code{@@kbd} as @code{@@code}.
@@ -6858,18 +6900,19 @@ and similar environments.
You can embed another @@-command inside the braces of an @code{@@kbd}
command. Here, for example, is the way to describe a command that
-would be described more verbosely as ``press an @samp{r} and then
-press the @key{RET} key'':@refill
+would be described more verbosely as ``press the @samp{r} key and then
+press the @key{RETURN} key'':
@example
@@kbd@{r @@key@{RET@}@}
@end example
@noindent
-This produces: @kbd{r @key{RET}}
+This produces: @kbd{r @key{RET}}. (The present manual accepts the
+default for @code{@@kbdinputstyle}.)
You also use the @code{@@kbd} command if you are spelling out the letters
-you type; for example:@refill
+you type; for example:
@example
To give the @@code@{logout@} command,
@@ -6885,11 +6928,11 @@ type the characters @kbd{l o g o u t @key{RET}}.
@end quotation
(Also, this example shows that you can add spaces for clarity. If you
-really want to mention a space character as one of the characters of
+explicitly want to mention a space character as one of the characters of
input, write @kbd{@@key@{SPC@}} for it.)@refill
-@node key, samp, kbd, Indicating
+@node key
@comment node-name, next, previous, up
@subsection @code{@@key}@{@var{key-name}@}
@findex key
@@ -7023,7 +7066,7 @@ In English, the vowels are @samp{a}, @samp{e},
Use the @code{@@verb} command to print a verbatim sequence of
characters.
-Like La@TeX{}'s @code{\verb} command, the verbatim text can be quoted using
+Like @LaTeX{}'s @code{\verb} command, the verbatim text can be quoted using
any unique delimiter character. Enclose the verbatim text, including the
delimiters, in braces. Text is printed in a fixed-width font:
@@ -7040,10 +7083,16 @@ How many @verb{|@|}-escapes does one need to print this
@verb{.@a @b @c.} string or these @verb{+@'e?`{}!`\+} this?
@end example
-This is in contrast to @code{@@samp} (see the previous
-section), whose argument is normal Texinfo text, where the characters
-@code{@@@{@}} are special; with @code{@@verb}, nothing is special except
-the delimiter character you choose.
+This is in contrast to @code{@@samp} (see the previous section),
+@code{@@code}, and similar commands; in those cases, the argument is
+normal Texinfo text, where the three characters @code{@@@{@}} are
+special. With @code{@@verb}, nothing is special except the delimiter
+character you choose.
+
+It is not reliable to use @code{@@verb} inside other Texinfo
+constructs. In particular, it does not work to use @code{@@verb} in
+anything related to cross-referencing, such as section titles or
+figure captions.
@node var
@@ -7314,46 +7363,145 @@ identify that control character: an uparrow followed by the character
@end ignore
+@node abbr
+@subsection @code{@@abbr}@{@var{abbreviation}[, @var{meaning}]@}
+@findex abbr
+
+@cindex Abbreviations, tagging
+You can use the @code{@@abbr} command for general abbreviations. The
+abbreviation is given as the single argument in braces, as in
+@samp{@@abbr@{Comput.@}}. As a matter of style, or for particular
+abbreviations, you may prefer to omit periods, as in
+@samp{@@abbr@{Mr@} Stallman}.
+
+@code{@@abbr} accepts an optional second argument, intended to be used
+for the meaning of the abbreviation.
+
+If the abbreviation ends with a lowercase letter and a period, and is
+not at the end of a sentence, and has no second argument, remember to
+use the @code{@@.} command (@pxref{Not Ending a
+Sentence}) to get the correct spacing. However, you do not have to
+use @code{@@.} within the abbreviation itself; Texinfo automatically
+assumes periods within the abbreivation do not end a sentence.
+
+@cindex <abbr> tag
+In @TeX{} and in the Info output, the first argument is printed as-is;
+if the second argument is present, it is printed in parentheses after
+the abbreviation. In HTML and XML, the @code{<abbr>} tag is
+used; in Docbook, the @code{<abbrev>} tag is used. For instance:
+
+@example
+@@abbr@{Comput. J., Computer Journal@}
+@end example
+
+@noindent produces:
+
+@display
+@abbr{Comput. J., Computer Journal}
+@end display
+
+For abbreviations consisting of all capital letters, you may prefer to
+use the @code{@@acronym} command instead. See the next section for
+more on the usage of these two commands.
+
+
@node acronym
-@subsection @code{@@acronym}@{@var{acronym}@}
+@subsection @code{@@acronym}@{@var{acronym}[, @var{meaning}]@}
@findex acronym
@cindex NASA, as acronym
-@cindex F.B.I., as acronym
-@cindex Abbreviations, tagging
@cindex Acronyms, tagging
Use the @code{@@acronym} command for abbreviations written in all
capital letters, such as `@acronym{NASA}'. The abbreviation is given as
the single argument in braces, as in @samp{@@acronym@{NASA@}}. As
-a matter of style, or for particular abbreviations, you may prefer to
-use periods, as in @samp{@@acronym@{F.B.I.@}}.
+a matter of style, or for particular acronyms, you may prefer to
+use periods, as in @samp{@@acronym@{N.A.S.A.@}}.
+
+@code{@@acronym} accepts an optional second argument, intended to be
+used for the meaning of the acronym.
+
+If the acronym is at the end of a sentence, and if there is no second
+argument, remember to use the @code{@@.} or similar command
+(@pxref{Ending a Sentence}) to get the correct spacing.
+
+@cindex <acronym> tag
+In @TeX{}, the acronym is printed in slightly smaller font. In the
+Info output, the argument is printed as-is. In either format, if the
+second argument is present, it is printed in parentheses after the
+acronym. In HTML, Docbook, and XML, the @code{<acronym>} tag is
+used.
+
+For instance (since GNU is a recursive acronym, we use
+@code{@@acronym} recursively):
+
+@example
+@@acronym@{GNU, @@acronym@{GNU@}'s Not Unix@}
+@end example
+
+@noindent produces:
+
+@display
+@acronym{GNU, @acronym{GNU}'s Not Unix}
+@end display
+
+In some circumstances, it is conventional to print family names in all
+capitals. Don't use @code{@@acronym} for this, since a name is not an
+acronym. Use @code{@@sc} instead (@pxref{Smallcaps}).
+
+@code{@@abbr} and @code{@@acronym} are closely related commands: they
+both signal to the reader that a shortened form is being used, and
+possibly give a meaning. When choosing whether to use these two
+commands, please bear the following in mind.
+
+@itemize @minus
+@item
+In standard English usage, acronyms are a subset of abbreviations:
+they include pronounceable words like `@acronym{NATO}', `radar', and
+`snafu', and some sources also include syllable acronyms like
+`Usenet', hybrids like `@acronym{SIGGRAPH}', and unpronounceable
+initialisms like `@acronym{FBI}'.
+
+@item
+In Texinfo, an acronym (but not an abbreviation) should consist only
+of capital letters and periods, no lowercase.
+
+@item
+In @TeX{}, an acronym (but not an abbreviation) is printed in a
+slightly smaller font.
+
+@item
+Some browsers place a dotted bottom border under abbreviations but not
+acronyms.
-In @TeX{} and HTML, the argument is printed in a slightly smaller font
-size. In Info or plain text output, this command changes nothing.
+@item
+It's not essential to use these commands for all abbreviations. Text
+is perfectly readable without them, and for common abbreviations like
+`etc.@:', we consider them to be overkill.
+@end itemize
-@node url
-@subsection @code{@@url}@{@var{uniform-resource-locator}@}
-@findex url
+
+@node indicateurl
+@subsection @code{@@indicateurl}@{@var{uniform-resource-locator}@}
+@findex indicateurl
@cindex Uniform resource locator, indicating
@cindex URL, indicating
-Use the @code{@@url} command to indicate a uniform resource locator on
-the World Wide Web. This is analogous to @code{@@file}, @code{@@var},
-etc., and is purely for markup purposes. It does not produce a link you
-can follow in HTML output (use the @code{@@uref} command for that,
-@pxref{uref,, @code{@@uref}}). It is useful for url's which do
-not actually exist. For example:
+Use the @code{@@indicateurl} command to indicate a uniform resource
+locator on the World Wide Web. This is analogous to @code{@@file},
+@code{@@var}, etc., and is purely for markup purposes. It does not
+produce a link you can follow in HTML output (use the @code{@@uref}
+command for that, @pxref{uref,, @code{@@uref}}). It is useful for
+url's which do not actually exist. For example:
-@c Two lines because one is too long for smallbook format.
@example
-For example, the url might be @@url@{http://example.org/path@}.
+For example, the url might be @@indicateurl@{http://example.org/path@}.
@end example
@noindent which produces:
@display
-For example, the url might be @url{http://example.org/path}.
+For example, the url might be @indicateurl{http://example.org/path}.
@end display
@@ -7365,11 +7513,11 @@ Use the @code{@@email} command to indicate an electronic mail address.
It takes one mandatory argument, the address, and one optional argument, the
text to display (the default is the address itself).
-@cindex mailto link
-In Info and @TeX{}, the address is shown in angle brackets, preceded by
-the text to display if any. In HTML output, @code{@@email} produces a
-@samp{mailto} link that usually brings up a mail composition window.
-For example:
+@cindex Mailto link
+In Info, the address is shown in angle brackets, preceded by the text
+to display if any. In @TeX{}, the angle brackets are omitted. In
+HTML output, @code{@@email} produces a @samp{mailto} link that usually
+brings up a mail composition window. For example:
@example
Send bug reports to @@email@{bug-texinfo@@@@gnu.org@},
@@ -7412,38 +7560,29 @@ The @code{@@emph} and @code{@@strong} commands are for emphasis;
@code{@@strong} is stronger. In printed output, @code{@@emph} produces
@emph{italics} and @code{@@strong} produces @strong{bold}.
-@need 800
For example,
@example
@group
-@@quotation
-@@strong@{Caution:@} @@samp@{rm * .[^.]*@} removes @@emph@{all@}
-files in the directory.
-@@end quotation
+@@strong@{Caution:@} @@samp@{rm * .[^.]*@}
+removes @@emph@{all@} files in the directory.
@end group
@end example
-@iftex
@noindent
-produces the following in printed output:
+produces the following in printed output and HTML:
@quotation
-@strong{Caution}: @samp{rm * .[^.]*} removes @emph{all}
-files in the directory.
+@strong{Caution}: @samp{rm * .[^.]*}
+removes @emph{all} files in the directory.
@end quotation
@noindent
and the following in Info:
-@end iftex
-@ifinfo
-@noindent
-produces:
-@end ifinfo
@example
- *Caution*: `rm * .[^.]*' removes _all_
- files in the directory.
+*Caution:* `rm * .[^.]*' removes _all_
+files in the directory.
@end example
The @code{@@strong} command is seldom used except to mark what is, in
@@ -7453,10 +7592,12 @@ preceding example.
In the Info output, @code{@@emph} surrounds the text with underscores
(@samp{_}), and @code{@@strong} puts asterisks around the text.
-@quotation
-@strong{Caution:} Do not use @code{@@strong} with the word @samp{Note};
-Info will mistake the combination for a cross reference. Use a phrase
-such as @strong{Please note} or @strong{Caution} instead.
+@quotation Caution
+Do not use @code{@@strong} with the word @samp{Note}; Info will
+mistake the combination for a cross reference. (It's usually
+redundant, anyway.) Use a phrase such as @strong{Please notice} or
+@strong{Caution} instead, or the optional argument to
+@code{@@quotation}---@samp{Note} is allowable there.
@end quotation
@@ -7465,68 +7606,103 @@ such as @strong{Please note} or @strong{Caution} instead.
@cindex Small caps font
@findex sc @r{(small caps font)}
-Use the @samp{@@sc} command to set text in the printed and the HTML
-output in @sc{a small caps font} and set text in the Info file in upper
-case letters. Write the text you want to be in small caps (where
-possible) between braces in lower case, like this:
+Use the @samp{@@sc} command to set text in @sc{a small caps font}
+(where possible). Write the text you want to be in small caps between
+braces in lower case, like this:
@example
-The @@sc@{acm@} and @@sc@{ieee@} are technical societies.
+Richard @@sc@{Stallman@} founded @@acronym@{GNU@}.
@end example
@noindent
This produces:
@display
-The @sc{acm} and @sc{ieee} are technical societies.
+Richard @sc{Stallman} founded @acronym{GNU}.
@end display
-@TeX{} typesets the small caps font in a manner that prevents the
-letters from `jumping out at you on the page'. This makes small caps
-text easier to read than text in all upper case---but it's usually
-better to use regular mixed case anyway. The Info formatting commands
-set all small caps text in upper case. In HTML, the text is upper-cased
-and a smaller font is used to render it.
+As shown here, we recommend using @code{@@acronym} for actual
+acronyms (@pxref{acronym}), and reserving @code{@@sc} for special
+cases where you want small caps. The output is not the same
+(@code{@@acronym} prints in a smaller text font, not the small caps
+font), but more importantly it describes the actual text more
+accurately.
-If the text between the braces of an @code{@@sc} command is uppercase,
-@TeX{} typesets in FULL-SIZE CAPITALS. Use full-size capitals
-sparingly, if ever, and since it's redundant to mark all-uppercase text
-with @code{@@sc}, @command{makeinfo} warns about such usage.
+Family names are one case where small capitals are sometimes desirable,
+also as shown here.
-You may also use the small caps font for a jargon word such as
-@sc{ato} (a @sc{nasa} word meaning `abort to orbit').
+@cindex <small> tag
+@TeX{} typesets any uppercase letters between the braces of an
+@code{@@sc} command in full-size capitals; only lowercase letters are
+printed in the small caps font. In the Info output, the argument to
+@code{@@sc} is printed in all upper case. In HTML, the argument is
+uppercased and the output marked with the @code{<small>} tag to reduce
+the font size.
-There are subtleties to using the small caps font with a jargon word
-such as @sc{cdr}, a word used in Lisp programming. In this case, you
-should use the small caps font when the word refers to the second and
-subsequent elements of a list (the @sc{cdr} of the list), but you
-should use @samp{@@code} when the word refers to the Lisp function of
-the same spelling.
+Since it's redundant to mark all-uppercase text with @code{@@sc},
+@command{makeinfo} warns about such usage.
+
+We recommend using regular mixed case wherever possible.
@node Fonts
@subsection Fonts for Printing, Not Info
-@cindex Fonts for printing, not for Info
-@findex i @r{(italic font)}
+@cindex Fonts for printing, not Info
+
+Texinfo provides a number of font commands that specify font changes
+in the printed manual and (where possible) in the HTML output, but
+have no effect in the Info file. All the commands apply to an
+argument that follows, surrounded by braces.
+
+@table @code
+@item @@b
@findex b @r{(bold font)}
+@cindex Bold font
+selects @b{bold} face;
+
+@item @@i
+@findex i @r{(italic font)}
+@cindex Italic font
+selects an @i{italic} font;
+
+@item @@r
+@findex r @r{(roman font)}
+@cindex Roman font
+@cindex Default font
+selects a @r{roman} font, which is the usual font in which text is
+printed. It may or may not be seriffed.
+
+@item @@sansserif
+@findex sansserif @r{(sans serif font)}
+@cindex Sans serif font
+selects a @sansserif{sans serif} font;
+
+@item @@slanted
+@findex slanted @r{(slanted font)}
+@cindex Slanted font
+@cindex Oblique font
+rselects a @slanted{slanted} font;
+
+@item @@t
@findex t @r{(typewriter font)}
-@findex r @r{(Roman font)}
-
-Texinfo provides four font commands that specify font changes in the
-printed manual but have no effect in the Info file. @code{@@i}
-requests @i{italic} font (in some versions of @TeX{}, a slanted font
-is used), @code{@@b} requests @b{bold} face, @code{@@t} requests the
-@t{fixed-width}, typewriter-style font used by @code{@@code}, and @code{@@r} requests a
-@r{roman} font, which is the usual font in which text is printed. All
-four commands apply to an argument that follows, surrounded by
-braces.@refill
-
-Only the @code{@@r} command has much use: in example programs, you
-can use the @code{@@r} command to convert code comments from the
-fixed-width font to a roman font. This looks better in printed
-output.@refill
+@cindex Monospace font
+@cindex Fixed-width font
+@cindex Typewriter font
+selects the @t{fixed-width}, typewriter-style font used by @code{@@code};
+
+@end table
+
+(The commands with longer names were invented much later than the
+others, when it did not seem desirable to use very short names for
+such an infrequently needed feature.)
+
+@cindex <lineannotation> Docbook tag
+Only the @code{@@r} command has much use: in example-like
+environments, you can use the @code{@@r} command to write comments in
+the standard roman font instead of the fixed-width font. This looks
+better in printed output, and produces a @code{<lineannotation>} tag
+in Docbook output.
-@need 700
For example,
@example
@@ -7544,9 +7720,9 @@ produces
(+ 2 2) ; @r{Add two plus two.}
@end lisp
-If possible, you should avoid using the other three font commands. If
-you need to use one, it probably indicates a gap in the Texinfo
-language.
+In general, you should avoid using the other font commands. Some of
+them are only useful when documenting functionality with specific font
+effects, such as in \TeX\ and related packages.
@node Quotations and Examples
@@ -7554,16 +7730,17 @@ language.
Quotations and examples are blocks of text consisting of one or more
whole paragraphs that are set off from the bulk of the text and
-treated differently. They are usually indented.@refill
+treated differently. They are usually indented in the output.
+@findex end
In Texinfo, you always begin a quotation or example by writing an
@@-command at the beginning of a line by itself, and end it by writing
an @code{@@end} command that is also at the beginning of a line by
itself. For instance, you begin an example by writing @code{@@example}
by itself at the beginning of a line and end the example by writing
@code{@@end example} on a line by itself, at the beginning of that
-line.
-@findex end
+line, and with only one space between the @code{@@end} and the
+@code{example}.
@menu
* Block Enclosing Commands:: Different constructs for different purposes.
@@ -7591,8 +7768,8 @@ following sections:
@table @code
@item @@quotation
-Indicate text that is quoted. The text is filled, indented, and
-printed in a roman font by default.
+Indicate text that is quoted. The text is filled, indented (from both
+margins), and printed in a roman font by default.
@item @@example
Illustrate code, commands, and the like. The text is printed
@@ -7641,47 +7818,50 @@ The @code{@@noindent} command may be used after one of the above
constructs to prevent the following text from being indented as a new
paragraph.
-You can use the @code{@@cartouche} command within one of the above
+You can use the @code{@@cartouche} environment around one of the above
constructs to highlight the example or quotation by drawing a box with
rounded corners around it. @xref{cartouche, , Drawing Cartouches Around
Examples}.
@node quotation
-@section @code{@@quotation}
+@section @code{@@quotation}: Block quotations
@cindex Quotations
@findex quotation
-The text of a quotation is processed normally except that:
+The text of a quotation is processed normally (regular font, text is
+filled) except that:
@itemize @bullet
@item
the margins are closer to the center of the page, so the whole of the
-quotation is indented;@refill
+quotation is indented;
@item
-the first lines of paragraphs are indented no more than other
-lines;@refill
+and the first lines of paragraphs are indented no more than other lines.
-@item
-in the printed output, interparagraph spacing is reduced.@refill
@end itemize
@quotation
This is an example of text written between an @code{@@quotation}
command and an @code{@@end quotation} command. An @code{@@quotation}
command is most often used to indicate text that is excerpted from
-another (real or hypothetical) printed work.@refill
+another (real or hypothetical) printed work.
@end quotation
Write an @code{@@quotation} command as text on a line by itself. This
line will disappear from the output. Mark the end of the quotation
with a line beginning with and containing only @code{@@end quotation}.
The @code{@@end quotation} line will likewise disappear from the
-output. Thus, the following,@refill
+output.
+
+@code{@@quotation} takes one optional argument, given on the remainder
+of the line. This text, if present, is included at the beginning of
+the quotation in bold or otherwise emphasized, and followed with a
+@samp{:}. For example:
@example
-@@quotation
+@@quotation Note
This is
a foo.
@@end quotation
@@ -7690,10 +7870,23 @@ a foo.
@noindent
produces
-@quotation
-This is a foo.
+@quotation Note
+This is
+a foo.
@end quotation
+If the @code{@@quotation} argument is exactly one of these words:
+
+@example
+Caution Important Note Tip Warning
+@end example
+
+@cindex <note> Docbook tag
+@cindex <blockquote> HTML tag
+@noindent then the Docbook output uses corresponding special tags
+(@code{<note>}, etc.) instead of the default @code{<blockquote>}.
+HTML output always uses @code{<blockquote>}.
+
@node example
@section @code{@@example}: Example Text
@@ -7714,10 +7907,9 @@ An @code{@@example} environment has the following characteristics:
the source text is not filled as it normally is.
@item Extra spaces and blank lines are significant.
@item The output is indented.
-@item The output uses a fixed-width font (for formats where this is
-possible and meaningful).
-@item Texinfo commands @emph{are} expanded; if you want the input to
-be the output verbatim, use the @code{@@verbatim} environment instead
+@item The output uses a fixed-width font.
+@item Texinfo commands @emph{are} expanded; if you want the output to
+be the input verbatim, use the @code{@@verbatim} environment instead
(@pxref{verbatim,,@code{@@verbatim}}).
@end itemize
@@ -7745,12 +7937,11 @@ after the @code{@@end example}. Blank lines inside the beginning
@code{@@example} and the ending @code{@@end example}, on the other
hand, do appear in the output.
-@quotation
-@strong{Caution:} Do not use tabs in the lines of an example! (Or
-anywhere else in Texinfo, except in verbatim environments.) @TeX{}
-treats tabs as single spaces, and that is not what they look like. In
-Emacs, you can use @kbd{M-x untabify} to convert tabs in a region to
-multiple spaces.
+@quotation Caution
+Do not use tabs in the lines of an example! (Or anywhere else in
+Texinfo, except in verbatim environments.) @TeX{} treats tabs as
+single spaces, and that is not what they look like. In Emacs, you can
+use @kbd{M-x untabify} to convert tabs in a region to multiple spaces.
@end quotation
Examples are often, logically speaking, ``in the middle'' of a
@@ -7763,6 +7954,9 @@ If you want to embed code fragments within sentences, instead of
displaying them, use the @code{@@code} command or its relatives
(@pxref{code,,@code{@@code}}).
+If you wish to write a ``comment'' on a line of an example in the
+normal roman font, you can use the @code{@@r} command (@pxref{Fonts}).
+
@node verbatim
@section @code{@@verbatim}: Literal Text
@@ -7797,12 +7991,12 @@ For example:
@c oops, got to trick this a bit: can't use @end verbatim inside @verbatim
@example
-@exdent @@verbatim
-@exdent @{
-@exdent <tab>@@command with strange characters: @@'e
-@exdent expand<tab>me
-@exdent @}
-@exdent @@end verbatim
+@exdent @t{@@verbatim}
+@exdent @t{@{}
+@exdent @key{TAB}@t{@@command with strange characters: @@'e}
+@exdent @t{expand@key{TAB}me}
+@exdent @t{@}}
+@exdent @t{@@end verbatim}
@end example
@noindent
@@ -7810,16 +8004,18 @@ produces
@verbatim
{
- @command with strange characters: @'e
+ @command with strange characters: @'e
expand me
}
@end verbatim
Since the lines containing @code{@@verbatim} and @code{@@end verbatim}
-produce no output, tyically you should put a blank line before the
+produce no output, typically you should put a blank line before the
@code{@@verbatim} and another blank line after the @code{@@end
-verbatim}. Blank lines between the beginning @code{@@verbatim} and the
-ending @code{@@end verbatim} will appear in the output.
+verbatim}. Blank lines between the beginning @code{@@verbatim} and
+the ending @code{@@end verbatim} will appear in the output.
+
+It is not reliable to use @code{@@verbatim} inside other Texinfo constructs.
@node verbatiminclude
@@ -7837,7 +8033,10 @@ You can include the exact contents of a file in the document with the
The contents of @var{filename} is printed in a verbatim environment
(@pxref{verbatim,,@code{@@verbatim}}). Generally, the file is printed
-exactly as it is, with all special characters and white space retained.
+exactly as it is, with all special characters and white space
+retained. No indentation is added; if you want indentation, enclose
+the @code{@@verbatiminclude} within @code{@@example}
+(@pxref{example,,@code{@@example}}).
The name of the file is taken literally, with a single exception:
@code{@@value@{@var{var}@}} references are expanded. This makes it
@@ -7929,13 +8128,13 @@ consistently within a chapter.
@cindex Display formatting
@findex display
-The @code{@@display} command begins a kind of example. It is like the
-@code{@@example} command
-except that, in
-a printed manual, @code{@@display} does not select the fixed-width
-font. In fact, it does not specify the font at all, so that the text
-appears in the same font it would have appeared in without the
-@code{@@display} command.@refill
+The @code{@@display} command begins a kind of example, where each line
+of input produces a line of output, and the output is indented. It is
+thus like the @code{@@example} command except that, in a printed
+manual, @code{@@display} does not select the fixed-width font. In
+fact, it does not specify the font at all, so that the text appears in
+the same font it would have appeared in without the @code{@@display}
+command.
@display
This is an example of text written between an @code{@@display} command
@@ -7948,6 +8147,11 @@ Texinfo also provides a command @code{@@smalldisplay}, which is like
@code{@@display} but uses a smaller font in @code{@@smallbook} format.
@xref{small}.
+The @code{@@table} command (@pxref{table}) does not work inside
+@code{@@display}. Since @code{@@display} is line-oriented, it doesn't
+make sense to use them together. If you want to indent a table, try
+@code{@@quotation} (@pxref{quotation}).
+
@node format
@section @code{@@format} and @code{@@smallformat}
@@ -8016,8 +8220,8 @@ returning the page to its normal width.@refill
@section @code{@@flushleft} and @code{@@flushright}
@findex flushleft
@findex flushright
-@cindex ragged right
-@cindex ragged left
+@cindex Ragged right
+@cindex Ragged left
The @code{@@flushleft} and @code{@@flushright} commands line up the
ends of lines on the left and right margins of a page,
@@ -8173,45 +8377,44 @@ paragraphs (@pxref{Command Syntax}).
@cindex Rounded rectangles, around examples
In a printed manual, the @code{@@cartouche} command draws a box with
-rounded corners around its contents. You can use this command to
-further highlight an example or quotation. For instance, you could
-write a manual in which one type of example is surrounded by a cartouche
-for emphasis.
+rounded corners around its contents. In HTML, a normal rectangle is
+drawn (that's the best HTML can do). @code{@@cartouche} has no effect
+in Info output.
-@code{@@cartouche} affects only the printed manual; it has no effect in
-other output files.
+You can use this command to further highlight an example or quotation.
+For instance, you could write a manual in which one type of example is
+surrounded by a cartouche for emphasis.
-@need 1500
For example,
@example
-@group
-@@example
@@cartouche
+@@example
% pwd
/usr/local/share/emacs
-@@end cartouche
@@end example
-@end group
+@@end cartouche
@end example
@noindent
surrounds the two-line example with a box with rounded corners, in the
printed manual.
-@iftex
-In a printed manual, the example looks like this:@refill
+The output from the example looks like this (if you're reading this in
+Info, you'll see the @code{@@cartouche} had no effect):
-@example
-@group
@cartouche
+@example
% pwd
-/usr/local/lib/emacs/info
-@end cartouche
-@end group
+/usr/local/info
@end example
-@end iftex
+@end cartouche
+
+For proper output in HTML, it's necessary to put the
+@code{@@cartouche} around the @code{@@example}, and not the other way
+around. This limitation of @command{makeinfo} may be removed one day.
+@code{@@cartouche} also implies @code{@@group} (@pxref{group}).
@node Lists and Tables
@chapter Lists and Tables
@@ -8231,10 +8434,8 @@ the first column; multi-column tables are also supported.
* Multi-column Tables:: How to construct generalized tables.
@end menu
-@node Introducing Lists, itemize, Lists and Tables, Lists and Tables
-@ifinfo
-@heading Introducing Lists
-@end ifinfo
+@node Introducing Lists
+@section Introducing Lists
Texinfo automatically indents the text in lists or tables, and numbers
an enumerated list. This last feature is useful if you modify the
@@ -8662,10 +8863,16 @@ See the example for @code{@@table} in the previous section.
Use the @code{@@itemx} command inside a table when you have two or more
first column entries for the same item, each of which should appear on a
-line of its own. Use @code{@@itemx} for all but the first entry;
-@code{@@itemx} should always follow an @code{@@item} command. The
-@code{@@itemx} command works exactly like @code{@@item} except that it
-does not generate extra vertical space above the first column text.
+line of its own.
+
+Use @code{@@item} for the first entry, and @code{@@itemx} for all
+subsequent entries; @code{@@itemx} must always follow an @code{@@item}
+command, with no blank line intervening.
+
+The @code{@@itemx} command works exactly like @code{@@item} except
+that it does not generate extra vertical space above the first column
+text. If you have multiple consecutive @code{@@itemx} commands, do
+not insert any blank lines between them.
For example,
@@ -8697,8 +8904,8 @@ case) character or string.@refill
a two-column table.)@refill
-@node Multi-column Tables, , Two-column Tables, Lists and Tables
-@section Multi-column Tables
+@node Multi-column Tables
+@section @code{@@multitable}: Multi-column Tables
@cindex Tables, making multi-column
@findex multitable
@@ -8732,15 +8939,15 @@ entirely on the same line as the @code{@@multitable} command.
@cindex Line length, column widths as fraction of
To specify column widths as fractions of the line length, write
@code{@@columnfractions} and the decimal numbers (presumably less than
-1) after the @code{@@multitable} command, as in:
+1; a leading zero is allowed and ignored) after the
+@code{@@multitable} command, as in:
@example
@@multitable @@columnfractions .33 .33 .33
@end example
-@noindent The fractions need not add up exactly to 1.0, as these do
-not. This allows you to produce tables that do not need the full line
-length. You can use a leading zero if you wish.
+The fractions need not add up exactly to 1.0, as these do not. This
+allows you to produce tables that do not need the full line length.
@item
@cindex Prototype row, column widths defined by
@@ -8764,7 +8971,7 @@ particularly likely to be useful.
@end enumerate
-@node Multitable Rows, , Multitable Column Widths, Multi-column Tables
+@node Multitable Rows
@subsection Multitable Rows
@cindex Multitable rows
@cindex Rows, of a multitable
@@ -8777,13 +8984,20 @@ with @code{@@item}, and separate the column entries with @code{@@tab}.
Line breaks are not special within the table body, and you may break
input lines in your source file as necessary.
+@findex headitem
+@cindex Heading row, in table
+@cindex <thead> HTML tag
+You can also use @code{@@headitem} instead of @code{@@item} to produce
+a @dfn{heading row}. The @TeX{} output for such a row is in bold, and
+the HTML, XML, and Docbook output uses the @code{<thead>} tag.
+
Here is a complete example of a multi-column table (the text is from
@cite{The GNU Emacs Manual}, @pxref{Split Window,, Splitting Windows,
emacs, The GNU Emacs Manual}):
@example
@@multitable @@columnfractions .15 .45 .4
-@@item Key @@tab Command @@tab Description
+@@headitem Key @@tab Command @@tab Description
@@item C-x 2
@@tab @@code@{split-window-vertically@}
@@tab Split the selected window into two windows,
@@ -8802,7 +9016,7 @@ split that window.
@noindent produces:
@multitable @columnfractions .15 .45 .4
-@item Key @tab Command @tab Description
+@headitem Key @tab Command @tab Description
@item C-x 2
@tab @code{split-window-vertically}
@tab Split the selected window into two windows,
@@ -8818,8 +9032,561 @@ split that window.
@end multitable
-@node Indices, Insertions, Lists and Tables, Top
-@comment node-name, next, previous, up
+@node Special Displays
+@chapter Special Displays
+@cindex Special displays
+
+The commands in this chapter allow you to write text that is specially
+displayed (output format permitting), outside of the normal document
+flow.
+
+One set of such commands is for creating ``floats'', that is, figures,
+tables, and the like, set off from the main text, possibly numbered,
+captioned, and/or referred to from elsewhere in the document. Images
+are often included in these displays.
+
+Another group of commands is for creating footnotes in Texinfo.
+
+@menu
+* Floats:: Figures, tables, and the like.
+* Images:: Including graphics and images.
+* Footnotes:: Writing footnotes.
+@end menu
+
+
+@node Floats
+@section Floats
+@cindex Floats, in general
+
+A @dfn{float} is a display which is set off from the main text. It is
+typically labelled as being a ``Figure'', ``Table'', ``Example'', or
+some similar type.
+
+@cindex Floating, not yet implemented
+A float is so-named because, in principle, it can be moved to the
+bottom or top of the current page, or to a following page, in the
+printed output. (Floating does not make sense in other output
+formats.) In the present version of Texinfo, however, this floating
+is unfortunately not yet implemented. Instead, the floating material
+is simply output at the current location, more or less as if it were
+an @code{@@group} (@pxref{group,,@code{@@group}}).
+
+@menu
+* float:: Producing floating material.
+* caption shortcaption:: Specifying descriptions for floats.
+* listoffloats:: A table of contents for floats.
+@end menu
+
+
+@node float
+@subsection @code{@@float} [@var{type}][,@var{label}]: Floating material
+@findex float
+@cindex Float environment
+
+To produce floating material, enclose the material you want to be
+displayed separate between @code{@@float} and @code{@@end float}
+commands, on lines by themselves.
+
+Floating material uses @code{@@image} to display an already-existing
+graphic (@pxref{Images}), or @code{@@multitable} to display a table
+(@pxref{Multi-column Tables}). However, the contents of the float can
+be anything. Here's an example with simple text:
+
+@example
+@@float Figure,fig:ex1
+This is an example float.
+@@end float
+@end example
+
+@noindent And the output:
+
+@float Figure,fig:ex1
+This is an example float.
+@end float
+
+As shown in the example, @code{@@float} takes two arguments (separated
+by a comma), @var{type} and @var{label}. Both are optional.
+
+@table @var
+@item type
+Specifies the sort of float this is; typically a word such as
+``Figure'', ``Table'', etc. If not given, and @var{label} is, any
+cross-referencing will simply use a bare number.
+
+@item label
+Specifies a cross-reference label for this float. If given, this
+float is automatically given a number, and will appear in any
+@code{@@listofloats} output (@pxref{listoffloats}). Cross-references
+to @var{label} are allowed.
+
+@cindex Floats, making unnumbered
+@cindex Unnumbered float, creating
+On the other hand, if @var{label} is not given, then the float will
+not be numbered and consequently will not appear in the
+@code{@@listoffloats} output or be cross-referenceable.
+@end table
+
+@noindent Normally, you specify both @var{type} and @var{label}, to get a
+labeled and numbered float.
+
+@cindex Floats, numbering of
+@cindex Numbering of floats
+In Texinfo, all floats are numbered the same way: with the chapter
+number (or appendix letter), a period, and the float number, which
+simply counts 1, 2, 3, @dots{}, and is reset at each chapter. Each
+float type is counted independently.
+
+Floats within an @code{@@unnumbered} are numbered, or outside of any
+chapter, are simply numbered consecutively from 1.
+
+These numbering conventions are not, at present, changeable.
+
+
+@node caption shortcaption
+@subsection @code{@@caption} & @code{@@shortcaption}
+@findex caption
+@findex shortcaption
+@cindex Captions, for floats
+@cindex Short captions, for lists of floats
+
+You may write an @code{@@caption} anywhere within a @code{@@float}
+environment, to define a caption for the float. It is not allowed in
+any other context. @code{@@caption} takes a single argument, enclosed
+in braces. Here's an example:
+
+@example
+@@float
+An example float, with caption.
+@@caption@{Caption for example float.@}
+@@end float
+@end example
+
+@noindent The output is:
+
+@float
+An example float, with caption.
+@caption{Caption for example float.}
+@end float
+
+@code{@@caption} can appear anywhere within the float; it is not
+processed until the @code{@@end float}. The caption text is usually a
+sentence or two, but may consist of several paragraphs if necessary.
+
+In the output, the caption always appears below the float; this is not
+currently changeable. It is preceded by the float type and/or number,
+as specified to the @code{@@float} command (see the previous section).
+
+The @code{@@shortcaption} command likewise may be used only within
+@code{@@float}, and takes a single argument in braces. The short
+caption text is used instead of the caption text in a list of floats
+(see the next section). Thus, you can write a long caption for the
+main document, and a short title to appear in the list of floats. For
+example:
+
+@example
+@@float
+... as above ...
+@@shortcaption@{Text for list of floats.@}
+@@end float
+@end example
+
+The text for @code{@@caption} and @code{@@shortcaption} may not
+contain comments (@code{@@c}), verbatim text (@code{@@verb}),
+environments such as @code{@@example}, or other complex constructs.
+
+
+@node listoffloats
+@subsection @code{@@listoffloats}: Tables of contents for floats
+@findex listoffloats
+@cindex List of floats
+@cindex Floats, list of
+@cindex Table of contents, for floats
+
+You can write a @code{@@listoffloats} command to generate a list of
+floats for a given float type (@pxref{float}), analogous to the
+document's overall table of contents. Typically, it is written in its
+own @code{@@unnumbered} node to provide a heading and structure,
+rather like @code{@@printindex} (@pxref{Printing Indices & Menus}).
+
+@code{@@listoffloats} takes one optional argument, the float type.
+Here's an example:
+
+@example
+@@node List of Figures
+@@unnumbered List of Figures
+@@listoffloats Figure
+@end example
+
+@noindent And the output from @code{@@listoffloats}:
+
+@display
+@listoffloats Figure
+@end display
+
+Without any argument, @code{@@listoffloats} generates a list of
+floats for which no float type was specified, i.e., no first argument
+to the @code{@@float} command (@pxref{float}).
+
+Each line in the list of floats contains the float type (if any),
+the float number, and the caption, if any---the @code{@@shortcaption}
+argument, if it was specified, else the @code{@@caption} argument.
+In Info, the result is a menu where each float can be selected. In
+HTML, each line is a link to the float. In printed output, the page
+number is included.
+
+Unnumbered floats (those without cross-reference labels) are omitted
+from the list of floats.
+
+
+@node Images
+@section Inserting Images
+
+@cindex Images, inserting
+@cindex Pictures, inserting
+@findex image
+
+You can insert an image given in an external file with the
+@code{@@image} command. Although images can be used anywhere,
+including the middle of a paragraph, we describe them in this chapter
+since they are most often part of a displayed figure or example.
+
+@menu
+* Image Syntax::
+* Image Scaling::
+@end menu
+
+
+@node Image Syntax
+@subsection Image Syntax
+
+Here is the basic synopsis of the @code{@@image} command:
+
+@example
+@@image@{@var{filename}@r{[,} @var{width}@r{[,} @var{height}@r{[,} @var{alttext}@r{[, }@var{extension}@r{]]]]}@}
+@end example
+
+@cindex Formats for images
+@cindex Image formats
+The @var{filename} argument is mandatory, and must not have an
+extension, because the different processors support different formats:
+
+@itemize @bullet
+@item
+@TeX{} reads the file @file{@var{filename}.eps} (Encapsulated PostScript
+format).
+@item
+@pindex pdftex@r{, and images}
+PDF@TeX{} reads @file{@var{filename}.pdf} (Adobe's Portable Document Format).
+@item
+@code{makeinfo} includes @file{@var{filename}.txt} verbatim for
+Info output (more or less as if it was an @code{@@example}).
+@item
+@code{makeinfo} uses the optional fifth argument @var{extension} to
+@code{@@image} for the filename extension, if it is specified. For example:
+
+@pindex XPM image format
+@example
+@@image@{foo,,,,.xpm@}
+@end example
+
+@noindent
+will cause @code{makeinfo} to look for @file{foo.xpm} before any others.
+
+@end itemize
+
+The @var{width} and @var{height} arguments are described in the next
+section.
+
+For @TeX{} output, if an image is the first thing in a paragraph, for
+example if you want two images side-by-side, you must precede it with
+@code{@@noindent} (@pxref{noindent,,@code{@@noindent}}). Otherwise it
+will be displayed on a line by itself. If you want it centered,
+use @code{@@center} (@pxref{titlefont center sp,,@code{@@titlefont
+@@center @@sp}}).
+
+@cindex Alt attribute for images
+@cindex Images, alternate text for
+When producing html, @code{makeinfo} sets the @dfn{alt attribute} for
+inline images to the optional @var{alttext} (fourth) argument to
+@code{@@image}, if supplied. If not supplied, @code{makeinfo} uses
+the full file name of the image being displayed. If you want an empty
+@code{alt} string, use @code{@@-}. The @var{alttext} is taken as
+Texinfo text, so special characters such as @samp{"} and @samp{<} and
+@samp{&} are escaped in the HTML and XML output.
+
+@cindex GIF images, unsupported due to patents
+@cindex PNG image format
+@cindex JPG image format
+If you do not supply the optional @var{extension} (fifth) argument,
+@code{makeinfo} first tries @file{@var{filename}.png}; if that does
+not exist, it tries @file{@var{filename}.jpg}. If that does not exist
+either, it complains. (We cannot support GIF format directly due to
+software patents.)
+
+In Info output, @code{makeinfo} writes a reference to the binary image
+file (trying @var{filename} suffixed with @file{@var{extension}},
+@file{@var{.extension}}, @file{.png}, or @file{.jpg}, in that order)
+if one exists. It also literally includes the @file{.txt} file if one
+exists. This way, Info readers which can display images (such as the
+Emacs Info browser, running under X) can do so, whereas Info readers
+which can only use text (such as the standalone Info reader) can
+display the textual version.
+
+The implementation of this is to put the following construct into the
+Info output:
+
+@example
+^@@^H[image src="@var{binaryfile}" text="@var{txtfile}"
+ alt="@var{alttext} ... ^@@^H]
+@end example
+
+@noindent where @samp{^@@} and @samp{^H} stand for the actual null and
+backspace control characters. If one of the files is not present, the
+corresponding argument is omitted.
+
+The reason for mentioning this here is that older Info browsers (this
+feature was introduced in Texinfo version 4.6) will display the above
+literally, which, although not pretty, should not be harmful.
+
+
+@node Image Scaling
+@subsection Image Scaling
+
+@cindex Images, scaling
+@cindex Scaling images
+@cindex Width of images
+@cindex Height of images
+@cindex Aspect ratio of images
+@cindex Distorting images
+The optional @var{width} and @var{height} arguments to the
+@code{@@image} command (see the previous section) specify the size to
+scale the image to. They are ignored for Info output. If neither is
+specified, the image is presented in its natural size (given in the
+file); if only one is specified, the other is scaled proportionately;
+and if both are specified, both are respected, thus possibly distorting
+the original image by changing its aspect ratio.
+
+@cindex Dimensions and image sizes
+The @var{width} and @var{height} may be specified using any valid @TeX{}
+dimension, namely:
+
+@table @asis
+@item pt
+@cindex Points (dimension)
+point (72.27pt = 1in)
+@item pc
+@cindex Picas
+pica (1pc = 12pt)
+@item bp
+@cindex Big points
+big point (72bp = 1in)
+@item in
+@cindex Inches
+inch
+@item cm
+@cindex Centimeters
+centimeter (2.54cm = 1in)
+@item mm
+@cindex Millimeters
+millimeter (10mm = 1cm)
+@item dd
+@cindex Did@^ot points
+did@^ot point (1157dd = 1238pt)
+@item cc
+@cindex Ciceros
+cicero (1cc = 12dd)
+@item sp
+@cindex Scaled points
+scaled point (65536sp = 1pt)
+@end table
+
+@pindex ridt.eps
+For example, the following will scale a file @file{ridt.eps} to one
+inch vertically, with the width scaled proportionately:
+
+@example
+@@image@{ridt,,1in@}
+@end example
+
+@pindex epsf.tex
+For @code{@@image} to work with @TeX{}, the file @file{epsf.tex} must be
+installed somewhere that @TeX{} can find it. (The standard location is
+@file{@var{texmf}/tex/generic/dvips/epsf.tex}, where @var{texmf} is a
+root of your @TeX{} directory tree.) This file is included in the
+Texinfo distribution and is also available from
+@uref{ftp://tug.org/tex/epsf.tex}, among other places.
+
+@code{@@image} can be used within a line as well as for displayed
+figures. Therefore, if you intend it to be displayed, be sure to leave
+a blank line before the command, or the output will run into the
+preceding text.
+
+Image scaling is presently implemented only in @TeX{}, not in HTML or
+any other sort of output.
+
+
+@node Footnotes
+@section Footnotes
+@cindex Footnotes
+@findex footnote
+
+A @dfn{footnote} is for a reference that documents or elucidates the
+primary text.@footnote{A footnote should complement or expand upon
+the primary text, but a reader should not need to read a footnote to
+understand the primary text. For a thorough discussion of footnotes,
+see @cite{The Chicago Manual of Style}, which is published by the
+University of Chicago Press.} Footnotes are distracting; use them
+sparingly, if at all. Standard bibliographical references are better
+placed in a bibliography at the end of a document than in footnotes
+throughout.
+
+@menu
+* Footnote Commands:: How to write a footnote in Texinfo.
+* Footnote Styles:: Controlling how footnotes appear in Info.
+@end menu
+
+
+@node Footnote Commands
+@subsection Footnote Commands
+
+In Texinfo, footnotes are created with the @code{@@footnote} command.
+This command is followed immediately by a left brace, then by the text
+of the footnote, and then by a terminating right brace. Footnotes may
+be of any length (they will be broken across pages if necessary), but
+are usually short. The template is:
+
+@example
+ordinary text@@footnote@{@var{text of footnote}@}
+@end example
+
+As shown here, the @code{@@footnote} command should come right after the
+text being footnoted, with no intervening space; otherwise, the footnote
+marker might end up starting a line.
+
+For example, this clause is followed by a sample footnote@footnote{Here
+is the sample footnote.}; in the Texinfo source, it looks like
+this:
+
+@example
+@dots{}a sample footnote@@footnote@{Here is the sample
+footnote.@}; in the Texinfo source@dots{}
+@end example
+
+As you can see, the source includes two punctuation marks next to each
+other; in this case, @samp{.@};} is the sequence. This is normal (the
+first ends the footnote and the second belongs to the sentence being
+footnoted), so don't worry that it looks odd.
+
+In a printed manual or book, the reference mark for a footnote is a
+small, superscripted number; the text of the footnote appears at the
+bottom of the page, below a horizontal line.
+
+In Info, the reference mark for a footnote is a pair of parentheses
+with the footnote number between them, like this: @samp{(1)}. The
+reference mark is followed by a cross-reference link to the footnote's
+text.
+
+In the HTML output, footnote references are marked with a small,
+superscripted number which is rendered as a hypertext link to the
+footnote text.
+
+By the way, footnotes in the argument of an @code{@@item} command for a
+@code{@@table} must be on the same line as the @code{@@item}
+(as usual). @xref{Two-column Tables}.
+
+
+@node Footnote Styles
+@subsection Footnote Styles
+
+Info has two footnote styles, which determine where the text of the
+footnote is located:
+
+@itemize @bullet
+@cindex @samp{@r{End}} node footnote style
+@item
+In the `End' node style, all the footnotes for a single node
+are placed at the end of that node. The footnotes are separated from
+the rest of the node by a line of dashes with the word
+@samp{Footnotes} within it. Each footnote begins with an
+@samp{(@var{n})} reference mark.
+
+@need 700
+@noindent
+Here is an example of a single footnote in the end of node style:@refill
+
+@example
+@group
+--------- Footnotes ---------
+
+(1) Here is a sample footnote.
+@end group
+@end example
+
+@cindex @samp{@r{Separate}} footnote style
+@item
+In the `Separate' node style, all the footnotes for a single
+node are placed in an automatically constructed node of
+their own. In this style, a ``footnote reference'' follows
+each @samp{(@var{n})} reference mark in the body of the
+node. The footnote reference is actually a cross reference
+which you use to reach the footnote node.
+
+The name of the node with the footnotes is constructed
+by appending @w{@samp{-Footnotes}} to the name of the node
+that contains the footnotes. (Consequently, the footnotes'
+node for the @file{Footnotes} node is
+@w{@file{Footnotes-Footnotes}}!) The footnotes' node has an
+`Up' node pointer that leads back to its parent node.
+
+@noindent
+Here is how the first footnote in this manual looks after being
+formatted for Info in the separate node style:
+
+@smallexample
+@group
+File: texinfo.info Node: Overview-Footnotes, Up: Overview
+
+(1) The first syllable of "Texinfo" is pronounced like "speck", not
+"hex". @dots{}
+@end group
+@end smallexample
+@end itemize
+
+Unless your document has long and important footnotes (as in, say,
+Gibbon's @cite{Decline and Fall @dots{}}), we recommend the @samp{end}
+style, as it is simpler for readers to follow.
+
+@findex footnotestyle
+Use the @code{@@footnotestyle} command to specify an Info file's
+footnote style. Write this command at the beginning of a line followed
+by an argument, either @samp{end} for the end node style or
+@samp{separate} for the separate node style.
+
+@need 700
+For example,
+
+@example
+@@footnotestyle end
+@end example
+@noindent
+or
+@example
+@@footnotestyle separate
+@end example
+
+Write an @code{@@footnotestyle} command before or shortly after the
+end-of-header line at the beginning of a Texinfo file. (If you
+include the @code{@@footnotestyle} command between the start-of-header
+and end-of-header lines, the region formatting commands will format
+footnotes as specified.)@refill
+
+If you do not specify a footnote style, the formatting commands use
+their default style. Currently, @code{texinfo-format-buffer} and
+@code{texinfo-format-region} use the `separate' style and
+@code{makeinfo} uses the `end' style.
+
+
+@node Indices
@chapter Indices
@cindex Indices
@@ -8828,24 +9595,27 @@ collate entries manually. In an index, the entries are listed in
alphabetical order, together with information on how to find the
discussion of each entry. In a printed manual, this information
consists of page numbers. In an Info file, this information is a menu
-entry leading to the first node referenced.@refill
+entry leading to the first node referenced.
Texinfo provides several predefined kinds of index: an index
for functions, an index for variables, an index for concepts, and so
on. You can combine indices or use them for other than their
-canonical purpose. If you wish, you can define your own indices.@refill
+canonical purpose. Lastly, you can define your own new indices.
+
+@xref{Printing Indices & Menus}, for information on how to print
+indices.
@menu
* Index Entries:: Choose different words for index entries.
* Predefined Indices:: Use different indices for different kinds
- of entry.
+ of entries.
* Indexing Commands:: How to make an index entry.
* Combining Indices:: How to combine indices.
* New Indices:: How to define your own indices.
@end menu
-@node Index Entries, Predefined Indices, Indices, Indices
-@comment node-name, next, previous, up
+
+@node Index Entries
@section Making Index Entries
@cindex Index entries, making
@cindex Entries, making index
@@ -8869,45 +9639,65 @@ need to do it yourself.@refill
@xref{Printing Indices & Menus}, for information about printing an index
at the end of a book or creating an index menu in an Info file.@refill
-@node Predefined Indices, Indexing Commands, Index Entries, Indices
-@comment node-name, next, previous, up
-@section Predefined Indices
-Texinfo provides six predefined indices:@refill
+@node Predefined Indices
+@section Predefined Indices
-@itemize @bullet
-@item
-A @dfn{concept index} listing concepts that are discussed.@refill
+Texinfo provides six predefined indices. Here are their nominal
+meanings, abbreviations, and the corresponding index entry commands:
-@item
-A @dfn{function index} listing functions (such as entry points of
-libraries).@refill
+@table @samp
+@item cp
+@cindex @code{cp} (concept) index
+(@code{@@cindex}) concept index, for general concepts.
+@item fn
+@cindex @code{fn} (function) index
+(@code{@@findex}) function index, for function and function-like
+names (such as entry points of libraries).
+@item ky
+@cindex @code{ky} (keystroke) index
+(@code{@@kindex}) keystroke index, for keyboard commands.
+@item pg
+@cindex @code{pg} (program) index
+(@code{@@pindex}) program index, for names of programs.
+@item tp
+@cindex @code{tp} (data type) index
+(@code{@@tindex}) data type index, for type names (such as structures
+defined in header files).
+@item vr
+@cindex @code{vr} (variable) index
+(@code{@@vindex}) variable index, for variable names (such as global
+variables of libraries).
+@end table
-@item
-A @dfn{variables index} listing variables (such as global variables
-of libraries).@refill
+@noindent
+Not every manual needs all of these, and most manuals use only two or
+three at most. The present manual, for example, has two indices: a
+concept index and an @@-command index (that is actually the function
+index but is called a command index in the chapter heading).
-@item
-A @dfn{keystroke index} listing keyboard commands.@refill
+You are not required to use the predefined indices strictly for their
+canonical purposes. For example, suppose you wish to index some C
+preprocessor macros. You could put them in the function index along
+with actual functions, just by writing @code{@@findex} commands for
+them; then, when you print the ``Function Index'' as an unnumbered
+chapter, you could give it the title `Function and Macro Index' and
+all will be consistent for the reader.
-@item
-A @dfn{program index} listing names of programs.@refill
+On the other hand, it is best not to stray too far from the meaning of
+the predefined indices. Otherwise, in the event that your text is
+combined with other text from other manuals, the index entries will
+not match up. Instead, define your own new index (@pxref{New
+Indices}).
-@item
-A @dfn{data type index} listing data types (such as structures defined in
-header files).@refill
-@end itemize
+We recommend having a single index in the final document whenever
+possible, however many source indices you use, since then readers have
+only one place to look. Two or more source indices can be combined
+into one output index using the @code{@@synindex} or
+@code{@@syncodeindex} commands (@pxref{Combining Indices}).
-@noindent
-Not every manual needs all of these, and most manuals use two or three
-of them. This manual has two indices: a
-concept index and an @@-command index (that is actually the function
-index but is called a command index in the chapter heading). Two or
-more indices can be combined into one using the @code{@@synindex} or
-@code{@@syncodeindex} commands. @xref{Combining Indices}.@refill
-@node Indexing Commands, Combining Indices, Predefined Indices, Indices
-@comment node-name, next, previous, up
+@node Indexing Commands
@section Defining the Entries of an Index
@cindex Defining indexing entries
@cindex Index entries
@@ -8928,7 +9718,7 @@ the concept index:@refill
@example
@@cindex Defining indexing entries
-@@cindex Index entries
+@@cindex Index entries, defining
@@cindex Entries for an index
@@cindex Specifying index entries
@@cindex Creating index entries
@@ -8936,7 +9726,7 @@ the concept index:@refill
Each predefined index has its own indexing command---@code{@@cindex}
for the concept index, @code{@@findex} for the function index, and so
-on.@refill
+on, as listed in the previous section.
@cindex Writing index entries
@cindex Index entry writing
@@ -8961,84 +9751,43 @@ Entries in indices other than the concept index are symbol names in
programming languages, or program names; these names are usually
case-sensitive, so use upper and lower case as required for them.
+@cindex Index font types
By default, entries for a concept index are printed in a small roman
font and entries for the other indices are printed in a small
@code{@@code} font. You may change the way part of an entry is
printed with the usual Texinfo commands, such as @code{@@file} for
-file names and @code{@@emph} for emphasis (@pxref{Marking
-Text}).@refill
-@cindex Index font types
-
-@cindex Predefined indexing commands
-@cindex Indexing commands, predefined
-The six indexing commands for predefined indices are:
-
-@table @code
-@item @@cindex @var{concept}
-@findex cindex
-Make an entry in the concept index for @var{concept}.@refill
-
-@item @@findex @var{function}
-@findex findex
-Make an entry in the function index for @var{function}.@refill
-
-@item @@vindex @var{variable}
-@findex vindex
-Make an entry in the variable index for @var{variable}.@refill
-
-@item @@kindex @var{keystroke}
-@findex kindex
-Make an entry in the key index for @var{keystroke}.@refill
-
-@item @@pindex @var{program}
-@findex pindex
-Make an entry in the program index for @var{program}.@refill
-
-@item @@tindex @var{data type}
-@findex tindex
-Make an entry in the data type index for @var{data type}.@refill
-@end table
-
-@quotation
-@strong{Caution:} Do not use a colon in an index entry. In Info, a
-colon separates the menu entry name from the node name, so a colon in
-the entry itself confuses Info. @xref{Menu Parts, , The Parts of a
-Menu}, for more information about the structure of a menu entry.
+file names (@pxref{Marking Text}), and @code{@@r} for the normal roman
+font (@pxref{Fonts}).
+
+@quotation Caution
+Do not use a colon in an index entry. In Info, a colon separates the
+menu entry name from the node name, so a colon in the entry itself
+confuses Info. @xref{Menu Parts}, for more information about the
+structure of a menu entry.
@end quotation
-You are not actually required to use the predefined indices for their
-canonical purposes. For example, suppose you wish to index some C
-preprocessor macros. You could put them in the function index along
-with actual functions, just by writing @code{@@findex} commands for
-them; then, when you print the ``Function Index'' as an unnumbered
-chapter, you could give it the title `Function and Macro Index' and
-all will be consistent for the reader. Or you could put the macros in
-with the data types by writing @code{@@tindex} commands for them, and
-give that index a suitable title so the reader will understand.
-(@xref{Printing Indices & Menus}.)@refill
-@node Combining Indices, New Indices, Indexing Commands, Indices
-@comment node-name, next, previous, up
+@node Combining Indices
@section Combining Indices
@cindex Combining indices
@cindex Indices, combining them
-Sometimes you will want to combine two disparate indices such as functions
-and concepts, perhaps because you have few enough of one of them that
-a separate index for them would look silly.@refill
+Sometimes you will want to combine two disparate indices such as
+functions and concepts, perhaps because you have few enough entries
+that a separate index would look silly.
You could put functions into the concept index by writing
@code{@@cindex} commands for them instead of @code{@@findex} commands,
and produce a consistent manual by printing the concept index with the
title `Function and Concept Index' and not printing the `Function
Index' at all; but this is not a robust procedure. It works only if
-your document is never included as part of another
-document that is designed to have a separate function index; if your
-document were to be included with such a document, the functions from
-your document and those from the other would not end up together.
-Also, to make your function names appear in the right font in the
-concept index, you would need to enclose every one of them between
-the braces of @code{@@code}.@refill
+your document is never included as part of another document that is
+designed to have a separate function index; if your document were to
+be included with such a document, the functions from your document and
+those from the other would not end up together. Also, to make your
+function names appear in the right font in the concept index, you
+would need to enclose every one of them between the braces of
+@code{@@code}.
@menu
* syncodeindex:: How to merge two indices, using @code{@@code}
@@ -9055,7 +9804,6 @@ When you want to combine functions and concepts into one index, you
should index the functions with @code{@@findex} and index the concepts
with @code{@@cindex}, and use the @code{@@syncodeindex} command to
redirect the function index entries into the concept index.@refill
-@findex syncodeindex
The @code{@@syncodeindex} command takes two arguments; they are the name
of the index to redirect, and the name of the index to redirect it to.
@@ -9117,7 +9865,7 @@ now directed. This way, if you direct function names from a function
index into a concept index, all the function names are printed in the
@code{@@code} font as you would expect.@refill
-@node synindex, , syncodeindex, Combining Indices
+@node synindex
@subsection @code{@@synindex}
@findex synindex
@@ -9130,7 +9878,8 @@ merge a concept index into a function index.@refill
@xref{Printing Indices & Menus}, for information about printing an index
at the end of a book or creating an index menu in an Info file.@refill
-@node New Indices, , Combining Indices, Indices
+
+@node New Indices
@section Defining New Indices
@cindex Defining new indices
@cindex Indices, defining new
@@ -9141,15 +9890,15 @@ at the end of a book or creating an index menu in an Info file.@refill
In addition to the predefined indices, you may use the
@code{@@defindex} and @code{@@defcodeindex} commands to define new
indices. These commands create new indexing @@-commands with which
-you mark index entries. The @code{@@defindex }command is used like
-this:@refill
+you mark index entries. The @code{@@defindex} command is used like
+this:
@example
@@defindex @var{name}
@end example
The name of an index should be a two letter word, such as @samp{au}.
-For example:@refill
+For example:
@example
@@defindex au
@@ -9157,11 +9906,11 @@ For example:@refill
This defines a new index, called the @samp{au} index. At the same
time, it creates a new indexing command, @code{@@auindex}, that you
-can use to make index entries. Use the new indexing command just as
-you would use a predefined indexing command.@refill
+can use to make index entries. Use this new indexing command just as
+you would use a predefined indexing command.
For example, here is a section heading followed by a concept index
-entry and two @samp{au} index entries.@refill
+entry and two @samp{au} index entries.
@example
@@section Cognitive Semantics
@@ -9172,29 +9921,30 @@ entry and two @samp{au} index entries.@refill
@noindent
(Evidently, @samp{au} serves here as an abbreviation for ``author''.)
-Texinfo constructs the new indexing command by concatenating the name
-of the index with @samp{index}; thus, defining an @samp{au} index
-leads to the automatic creation of an @code{@@auindex} command.@refill
+
+In general, Texinfo constructs the new indexing command by
+concatenating the name of the index with @samp{index}; thus, defining
+an @samp{xy} index leads to the automatic creation of an
+@code{@@xyindex} command.
Use the @code{@@printindex} command to print the index, as you do with
-the predefined indices. For example:@refill
+the predefined indices. For example:
@example
@group
-@@node Author Index, Subject Index, , Top
+@@node Author Index
@@unnumbered Author Index
@@printindex au
@end group
@end example
-The @code{@@defcodeindex} is like the @code{@@defindex} command, except
-that, in the printed output, it prints entries in an @code{@@code} font
-instead of a roman font. Thus, it parallels the @code{@@findex} command
-rather than the @code{@@cindex} command.@refill
+The @code{@@defcodeindex} is like the @code{@@defindex} command,
+except that, in the printed output, it prints entries in an
+@code{@@code} font by default instead of a roman font.
-You should define new indices within or right after the end-of-header
-line of a Texinfo file, before any @code{@@synindex} or
+You should define new indices before the end-of-header line of a
+Texinfo file, and (of course) before any @code{@@synindex} or
@code{@@syncodeindex} commands (@pxref{Texinfo File Header}).
@@ -9211,7 +9961,7 @@ elements that do not correspond to simple characters you can type.
These are:
@itemize @bullet
-@item Braces and @samp{@@}.
+@item @samp{@@} and braces and commas.
@item Whitespace within and around a sentence.
@item Accents.
@item Dots and bullets.
@@ -9226,28 +9976,25 @@ These are:
@end iftex
@menu
-* Braces Atsigns:: How to insert braces, @samp{@@}.
+* Atsign Braces Comma:: Inserting @@ and @{@} and ,.
* Inserting Space:: How to insert the right amount of space
within a sentence.
* Inserting Accents:: How to insert accents and special characters.
* Dots Bullets:: How to insert dots and bullets.
* TeX and copyright:: How to insert the @TeX{} logo
and the copyright symbol.
+* euro:: How to insert the Euro currency symbol.
* pounds:: How to insert the pounds currency symbol.
* minus:: How to insert a minus sign.
* math:: How to format a mathematical expression.
* Glyphs:: How to indicate results of evaluation,
expansion of macros, errors, etc.
-* Footnotes:: How to include footnotes.
-* Images:: How to include graphics.
@end menu
-@node Braces Atsigns, Inserting Space, Insertions, Insertions
-@section Inserting @@ and Braces
-@cindex Inserting @@, braces
-@cindex Braces, inserting
-@cindex Special characters, commands to insert
+@node Atsign Braces Comma
+@section Inserting @@ and @{@} and @comma{}
+@cindex Special characters, inserting
@cindex Commands to insert special characters
@samp{@@} and curly braces are special characters in Texinfo. To insert
@@ -9255,17 +10002,20 @@ these characters so they appear in text, you must put an @samp{@@} in
front of these characters to prevent Texinfo from misinterpreting
them.
-Do not put braces after any of these commands; they are not
-necessary.
+The comma `,' is a special character only in one uncommon context:
+it separates arguments to commands that take multiple arguments.
@menu
-* Inserting An Atsign:: How to insert @samp{@@}.
-* Inserting Braces:: How to insert @samp{@{} and @samp{@}}.
+* Inserting an Atsign::
+* Inserting Braces::
+* Inserting a Comma::
@end menu
-@node Inserting An Atsign, Inserting Braces, Braces Atsigns, Braces Atsigns
-@subsection Inserting @samp{@@} with @@@@
+
+@node Inserting an Atsign
+@subsection Inserting `@@' with @code{@@@@}
@findex @@ @r{(literal @samp{@@})}
+@cindex Inserting @@ @r{(literal @samp{@@})}
@code{@@@@} stands for a single @samp{@@} in either printed or Info
output.
@@ -9274,7 +10024,8 @@ Do not put braces after an @code{@@@@} command.
@node Inserting Braces
-@subsection Inserting @samp{@{} and @samp{@}}with @@@{ and @@@}
+@subsection Inserting `@{' and `@}' with @code{@@@{} and @code{@@@}}
+@cindex Braces, inserting
@findex @{ @r{(literal @samp{@{})}
@findex @} @r{(literal @samp{@}})}
@@ -9285,7 +10036,35 @@ output.
output.
Do not put braces after either an @code{@@@{} or an @code{@@@}}
-command.
+command.ppp
+
+
+@node Inserting a Comma
+@subsection Inserting `,' with @code{@@comma@{@}}
+@cindex Commas, inserting
+@findex comma
+
+Ordinarily, a comma `,' is a normal character that can be simply typed
+in your input where you need it.
+
+However, Texinfo uses the comma as a special character in one uncommon
+context: some commands, such as @code{@@acronym} (@pxref{acronym}) and
+@code{@@xref} (@pxref{Cross References}), as well as user-defined
+macros (@pxref{Defining Macros}), can take more than one argument. In
+these cases, the comma character is used to separate arguments.
+
+Since a comma chacter would confuse Texinfo's parsing for these
+commands, you must use the command @samp{@comma{}} instead if you want
+to have an actual comma in the output. Here are some examples:
+
+@example
+@@acronym@{ABC, A Bizarre @@comma@{@}@}
+@@xref@{Comma,, The @@comma@{@} symbol@}
+@@mymac@{One argument@@comma@{@} containing a comma@}
+@end example
+
+Although @comma{} can be used anywhere, there is no need for it
+anywhere except in this unusual case.
@node Inserting Space
@@ -9320,7 +10099,7 @@ use the special commands; you just enter a period as you would if you
were using a typewriter, which means you put two spaces after the
period, question mark, or exclamation mark that ends a sentence.
-@findex <colon> @r{(suppress widening)}
+@findex <colon> @r{(suppress end-of-sentence space)}
Use the @code{@@:}@: command after a period, question mark,
exclamation mark, or colon that should not be followed by extra space.
For example, use @code{@@:}@: after periods that end abbreviations
@@ -9334,13 +10113,13 @@ The s.o.p. has three parts @dots{}
@end example
@noindent
-@ifinfo
+@ifnottex
produces
-@end ifinfo
+@end ifnottex
@iftex
produces the following. If you look carefully at this printed output,
-you will see a little more whitespace after @samp{s.o.p.} in the second
-line.@refill
+you will see a little extraneous space after @samp{s.o.p.} in the second
+line.
@end iftex
@quotation
@@ -9352,11 +10131,16 @@ The s.o.p. has three parts @dots{}
(Incidentally, @samp{s.o.p.} is an abbreviation for ``Standard Operating
Procedure''.)
-@code{@@:} has no effect on the Info output. Do not put braces after
-@code{@@:}.
+@code{@@:} has no effect on the Info and HTML output. In Docbook and
+XML, the previous punctuation character (.?!:) is output as an entity
+instead of as the normal character: @samp{&period; &quest; &excl;
+&colon;}. This gives further processors a chance to notice and not
+add the usual extra space.
+
+Do not put braces after @code{@@:} (or any non-alphabetic command).
-@node Ending a Sentence, Multiple Spaces, Not Ending a Sentence, Inserting Space
+@node Ending a Sentence
@subsection Ending a Sentence
@cindex Ending a Sentence
@@ -9367,7 +10151,7 @@ Procedure''.)
@findex ? @r{(end of sentence)}
Use @code{@@.}@: instead of a period, @code{@@!}@: instead of an
exclamation point, and @code{@@?}@: instead of a question mark at the end
-of a sentence that ends with a single capital letter. Otherwise, @TeX{}
+of a sentence that ends with a capital letter. Otherwise, @TeX{}
will think the letter is an abbreviation and will not insert the correct
end-of-sentence spacing. Here is an example:
@@ -9377,9 +10161,9 @@ Give it to M.I.B. and to M.E.W. Also, give it to R.J.C.
@end example
@noindent
-@ifinfo
+@ifnottex
produces
-@end ifinfo
+@end ifnottex
@iftex
produces the following. If you look carefully at this printed output,
you will see a little more whitespace after the @samp{W} in the first
@@ -9407,9 +10191,9 @@ Do not put braces after any of these commands.
@cindex Multiple spaces
@cindex Whitespace, inserting
@cindex Space, inserting horizontal
-@findex (space)
-@findex (tab)
-@findex (newline)
+@findex <space>
+@findex <tab>
+@findex <newline>
Ordinarily, @TeX{} collapses multiple whitespace characters (space, tab,
and newline) into a single space. Info output, on the other hand,
@@ -9534,8 +10318,10 @@ option to @command{makeinfo} (@pxref{makeinfo options}).
@findex udotaccent
@cindex Underdot accent
@findex v @r{(check accent)}
+@cindex Hacek accent
@cindex Check accent
-@multitable {@@questiondown@{@}} {Output} {macron/overbar accent}
+@cindex Caron accent
+@multitable {@@questiondown@{@}} {Output} {hacek/check/caron accent}
@item Command @tab Output @tab What
@item @t{@@"o} @tab @"o @tab umlaut accent
@item @t{@@'o} @tab @'o @tab acute accent
@@ -9551,7 +10337,7 @@ option to @command{makeinfo} (@pxref{makeinfo options}).
@item @t{@@u@{o@}} @tab @u{o} @tab breve accent
@item @t{@@ubaraccent@{o@}} @tab @ubaraccent{o} @tab underbar accent
@item @t{@@udotaccent@{o@}} @tab @udotaccent{o} @tab underdot accent
-@item @t{@@v@{o@}} @tab @v{o} @tab hacek or check accent
+@item @t{@@v@{o@}} @tab @v{o} @tab hacek/check/caron accent
@end multitable
This table lists the Texinfo commands for inserting other characters
@@ -9570,8 +10356,8 @@ commonly used in languages other than English.
@findex AE
@cindex @AE{}
@findex dotless
-@cindex @dotless{i}
-@cindex @dotless{j}
+@cindex @dotless{i} (dotless i)
+@cindex @dotless{j} (dotless j)
@cindex Dotless i, j
@findex l
@cindex @l{}
@@ -9585,21 +10371,30 @@ commonly used in languages other than English.
@cindex @oe{}
@findex OE
@cindex @OE{}
+@cindex Romance ordinals
+@cindex Ordinals, Romance
+@cindex Feminine ordinal
+@findex ordf
+@cindex @ordf{}
+@cindex Masculine ordinal
+@findex ordm
+@cindex @ordm{}
@findex ss
@cindex @ss{}
@cindex Es-zet
@cindex Sharp S
@cindex German S
-@multitable {x@@questiondown@{@}} {oe,OE} {es-zet or sharp S}
+@multitable {x@@questiondown@{@}} {oe OE} {es-zet or sharp S}
@item @t{@@exclamdown@{@}} @tab @exclamdown{} @tab upside-down !
@item @t{@@questiondown@{@}} @tab @questiondown{} @tab upside-down ?
-@item @t{@@aa@{@},@@AA@{@}} @tab @aa{},@AA{} @tab a,A with circle
-@item @t{@@ae@{@},@@AE@{@}} @tab @ae{},@AE{} @tab ae,AE ligatures
+@item @t{@@aa@{@} @@AA@{@}} @tab @aa{} @AA{} @tab a,A with circle
+@item @t{@@ae@{@} @@AE@{@}} @tab @ae{} @AE{} @tab ae,AE ligatures
@item @t{@@dotless@{i@}} @tab @dotless{i} @tab dotless i
@item @t{@@dotless@{j@}} @tab @dotless{j} @tab dotless j
-@item @t{@@l@{@},@@L@{@}} @tab @l{},@L{} @tab suppressed-L,l
-@item @t{@@o@{@},@@O@{@}} @tab @o{},@O{} @tab O,o with slash
-@item @t{@@oe@{@},@@OE@{@}} @tab @oe{},@OE{} @tab oe,OE ligatures
+@item @t{@@l@{@} @@L@{@}} @tab @l{} @L{} @tab suppressed-L,l
+@item @t{@@o@{@} @@O@{@}} @tab @o{} @O{} @tab O,o with slash
+@item @t{@@oe@{@} @@OE@{@}} @tab @oe{} @OE{} @tab oe,OE ligatures
+@item @t{@@ordf@{@} @@ordm@{@}} @tab @ordf{} @ordm{} @tab Spanish ordinals
@item @t{@@ss@{@}} @tab @ss{} @tab es-zet or sharp S
@end multitable
@@ -9637,13 +10432,14 @@ the braces, the formatters would be confused. @xref{Command Syntax, ,
@cindex Dots, inserting
Use the @code{@@dots@{@}} command to generate an ellipsis, which is
-three dots in a row, appropriately spaced, like this: `@dots{}'. Do
+three dots in a row, appropriately spaced @dots{} like so. Do
not simply write three periods in the input file; that would work for
the Info file output, but would produce the wrong amount of space
between the periods in the printed manual.
Similarly, the @code{@@enddots@{@}} command generates an
-end-of-sentence ellipsis (four dots) @enddots{}
+end-of-sentence ellipsis, which has different spacing afterwards,
+@enddots{} Look closely to see the difference.
@iftex
Here is an ellipsis: @dots{}
@@ -9668,57 +10464,100 @@ type the braces, because @code{@@itemize} supplies them.
(@xref{itemize, , @code{@@itemize}}.)@refill
-@node TeX and copyright, pounds, Dots Bullets, Insertions
-@section Inserting @TeX{} and the Copyright Symbol
+@node TeX and copyright
+@section Inserting @TeX{} and Legal Symbols: @copyright{}, @registeredsymbol{}
The logo `@TeX{}' is typeset in a special fashion and it needs an
-@@-command. The copyright symbol, `@copyright{}', is also special.
-Each of these commands is followed by a pair of braces, @samp{@{@}},
-without any whitespace between the name of the command and the
-braces.@refill
+@@-command. The copyright and registered symbols, `@copyright{}' and
+`@registeredsymbol{}', is also special. Each of these commands is
+followed by a pair of braces, @samp{@{@}}, without any whitespace
+between the name of the command and the braces.
@menu
-* tex:: How to insert the @TeX{} logo.
-* copyright symbol:: How to use @code{@@copyright@{@}}.
+* tex:: The @TeX{} logos.
+* copyright symbol:: The copyright symbol (c in a circle).
+* registered symbol:: The registered symbol (R in a circle).
@end menu
@node tex
-@subsection @code{@@TeX}@{@} (@TeX{})
-@findex tex (command)
+@subsection @code{@@TeX}@{@} (@TeX{}) and @code{@@LaTeX}@{@} (@LaTeX{})
+@findex TeX
+@findex LaTeX
Use the @code{@@TeX@{@}} command to generate `@TeX{}'. In a printed
manual, this is a special logo that is different from three ordinary
-letters. In Info, it just looks like @samp{TeX}. The
-@code{@@TeX@{@}} command is unique among Texinfo commands in that the
-@samp{T} and the @samp{X} are in upper case.@refill
+letters. In Info, it just looks like @samp{TeX}.
+
+Similarly, use the @code{@@LaTeX@{@}} command to generate `@LaTeX{}',
+which is even more special in printed manuals (and different from the
+incorrect @code{La@@TeX@{@}}. In Info, the result is just
+@samp{LaTeX}. (@LaTeX{} is another macro package built on top of
+@TeX{}, very loosely analogous to Texinfo in that it emphasizes
+logical structure, but much (much) larger.)
+
+The spelling of these commands are unusual among Texinfo commands in
+that they use both uppercase and lowercase letters.
@node copyright symbol
@subsection @code{@@copyright@{@}} (@copyright{})
@findex copyright
-Use the @code{@@copyright@{@}} command to generate `@copyright{}'. In
-a printed manual, this is a @samp{c} inside a circle, and in Info,
-this is @samp{(C)}.
+Use the @code{@@copyright@{@}} command to generate the copyright
+symbol, `@copyright{}'. Where possible, this is a @samp{c}
+inside a circle; in Info, this is @samp{(C)}.
+
+@node registered symbol
+@subsection @code{@@registeredsymbol@{@}} (@registeredsymbol{})
+@findex registeredsymbol
-@node pounds, minus, TeX and copyright, Insertions
+Use the @code{@@registeredsymbol@{@}} command to generate the
+registered symbol, `@registeredsymbol{}'. Where possible, this is an
+@samp{R} inside a circle; in Info, this is @samp{(R)}.
+
+
+@node euro
+@section @code{@@euro}@{@} (@euro{}): Euro currency symbol
+@findex euro
+
+Use the @code{@@euro@{@}} command to generate `@euro{}'. Where
+possible, this is the symbol for the Euro currency, invented as part
+of the European economic unification relatively recently. In plain
+Info, it is the word @samp{Euro }. (The space is included in the text
+transliteration since typically there would be no space after the
+symbol, so it would be inappropriate to have a space in the source document.)
+
+Texinfo cannot magically synthesize support for the Euro symbol where
+the underlying system (fonts, software, whatever) does not support
+it. Therefore, in many cases it is preferable to use the word
+``Euro''. (In banking circles, the abbreviation for the Euro is EUR.)
+
+@cindex ISO 8859-15
+@cindex Latin 9
+In order to get the Euro symbol in encoded Info output, for example,
+it is necessary to specify @code{@@documentencoding ISO-8859-15}.
+(@xref{documentencoding,,@code{@@documentencoding}}.) The Euro symbol
+is in ISO 8859-15 (aka Latin@tie{}9), and is @emph{not} in the more
+widely-used and supported ISO 8859-1 (Latin@tie{}1).
+
+
+@node pounds
@section @code{@@pounds}@{@} (@pounds{}): Pounds Sterling
@findex pounds
-Use the @code{@@pounds@{@}} command to generate `@pounds{}'. In a
-printed manual, this is the symbol for the currency pounds sterling.
-In Info, it is a @samp{#}. Other currency symbols are unfortunately not
-available.
+Use the @code{@@pounds@{@}} command to generate `@pounds{}'. Where
+possible, this is the symbol for the currency pounds sterling. In
+Info, it is a @samp{#}.
-@node minus, math, pounds, Insertions
+@node minus
@section @code{@@minus}@{@} (@minus{}): Inserting a Minus Sign
@findex minus
-@cindex em-dash
-@cindex hyphen
+@cindex Em dash, compared to minus sign
+@cindex Hyphen, compared to minus
Use the @code{@@minus@{@}} command to generate a minus sign. In a
fixed-width font, this is a single hyphen, but in a proportional font,
the symbol is the customary length for a minus sign---a little longer
@@ -9742,7 +10581,7 @@ fixed-width font they use.
When you use @code{@@minus} to specify the mark beginning each entry in
an itemized list, you do not need to type the braces
-(@pxref{itemize, , @code{@@itemize}}.)
+(@pxref{itemize, , @code{@@itemize}}).
@node math
@@ -9765,19 +10604,19 @@ command. Write the mathematical expression between braces, like this:
@math{(a + b)(a + b) = a^2 + 2ab + b^2}
@end display
-@noindent and the following in Info:
+@noindent and the following in other formats:
@end iftex
-@ifinfo
-@noindent This produces the following in Info:
-@end ifinfo
+@ifnottex
+@noindent This produces the following in Info and HTML:
+@end ifnottex
@example
(a + b)(a + b) = a^2 + 2ab + b^2
@end example
-Thus, the @code{@@math} command has no effect on the Info output;
-@command{makeinfo} just reproduces the input, it does not try to
-interpret the mathematics in any way.
+Thus, the @code{@@math} command has no effect on the Info and HTML
+output; @command{makeinfo} just reproduces the input, it does not try
+to interpret the mathematics in any way.
@code{@@math} implies @code{@@tex}. This not only makes it possible to
write superscripts and subscripts (as in the above example), but also
@@ -9892,13 +10731,13 @@ Use the @code{@@result@{@}} command to indicate the result of
evaluating an expression.@refill
@iftex
-The @code{@@result@{@}} command is displayed as @samp{=>} in Info and
-as @samp{@result{}} in the printed output.
+The @code{@@result@{@}} command is displayed as @samp{@result{}} in
+the printed output and as @samp{=>} in other formats.
@end iftex
-@ifinfo
-The @code{@@result@{@}} command is displayed as @samp{@result{}} in Info
-and as a double stemmed arrow in the printed output.@refill
-@end ifinfo
+@ifnottex
+The @code{@@result@{@}} command is displayed as @samp{@result{}} in
+Info and HTML and as a true double stemmed arrow in the printed output.
+@end ifnottex
Thus, the following,
@@ -9911,9 +10750,10 @@ Thus, the following,
may be read as ``@code{(cdr '(1 2 3))} evaluates to @code{(2 3)}''.
-@node expansion, Print Glyph, result, Glyphs
+@node expansion
@subsection @code{@@expansion@{@}} (@expansion{}): Indicating an Expansion
-@cindex Expansion, indicating it
+@cindex Expansion, indicating
+@cindex Macro expansion, indicating
@findex expansion
When an expression is a macro call, it expands into a new expression.
@@ -9921,13 +10761,14 @@ You can indicate the result of the expansion with the
@code{@@expansion@{@}} command.@refill
@iftex
-The @code{@@expansion@{@}} command is displayed as @samp{==>} in Info and
-as @samp{@expansion{}} in the printed output.
+The @code{@@expansion@{@}} command is displayed as @samp{@expansion{}}
+in the printed output. and as @samp{==>} in other formats.
@end iftex
-@ifinfo
+@ifnottex
The @code{@@expansion@{@}} command is displayed as @samp{@expansion{}}
-in Info and as a long arrow with a flat base in the printed output.@refill
-@end ifinfo
+in Info and HTML, and as a long arrow with a flat base in the printed
+output.
+@end ifnottex
@need 700
For example, the following
@@ -9963,13 +10804,12 @@ the result of evaluating the expression is @code{c}.
@noindent
Often, as in this case, an example looks better if the
-@code{@@expansion@{@}} and @code{@@result@{@}} commands are indented
-five spaces.@refill
+@code{@@expansion@{@}} and @code{@@result@{@}} commands are indented.
-@node Print Glyph, Error Glyph, expansion, Glyphs
+@node Print Glyph
@subsection @code{@@print@{@}} (@print{}): Indicating Printed Output
-@cindex Printed output, indicating it
+@cindex Printed output, indicating
@findex print
Sometimes an expression will print output during its execution. You
@@ -9977,17 +10817,17 @@ can indicate the printed output with the @code{@@print@{@}} command.@refill
@iftex
The @code{@@print@{@}} command is displayed as @samp{-|} in Info and
-as @samp{@print{}} in the printed output.
+HTML and as @samp{@print{}} in the printed output.
@end iftex
-@ifinfo
+@ifnottex
The @code{@@print@{@}} command is displayed as @samp{@print{}} in Info
-and similarly, as a horizontal dash butting against a vertical bar, in
-the printed output.@refill
-@end ifinfo
+and HTML and (similarly) as a horizontal dash butting against a
+vertical bar in the printed output.
+@end ifnottex
In the following example, the printed text is indicated with
@samp{@print{}}, and the value of the expression follows on the
-last line.@refill
+last line.
@lisp
@group
@@ -10013,9 +10853,9 @@ In a Texinfo source file, this example is written as follows:
@end lisp
-@node Error Glyph, Equivalence, Print Glyph, Glyphs
+@node Error Glyph
@subsection @code{@@error@{@}} (@error{}): Indicating an Error Message
-@cindex Error message, indicating it
+@cindex Error message, indicating
@findex error
A piece of code may cause an error when you evaluate it. You can
@@ -10023,12 +10863,12 @@ designate the error message with the @code{@@error@{@}} command.@refill
@iftex
The @code{@@error@{@}} command is displayed as @samp{error-->} in Info
-and as @samp{@error{}} in the printed output.
+and HTML and as @samp{@error{}} in the printed output.
@end iftex
-@ifinfo
+@ifnottex
The @code{@@error@{@}} command is displayed as @samp{@error{}} in Info
-and as the word `error' in a box in the printed output.@refill
-@end ifinfo
+and HTML and as the word `error' in a box in the printed output.
+@end ifnottex
@need 700
Thus,
@@ -10059,9 +10899,9 @@ Wrong type argument: integer-or-marker-p, x
@samp{@error{}} itself is not part of the error message.
-@node Equivalence, Point Glyph, Error Glyph, Glyphs
+@node Equivalence
@subsection @code{@@equiv@{@}} (@equiv{}): Indicating Equivalence
-@cindex Equivalence, indicating it
+@cindex Equivalence, indicating
@findex equiv
Sometimes two expressions produce identical results. You can indicate the
@@ -10069,12 +10909,13 @@ exact equivalence of two forms with the @code{@@equiv@{@}} command.@refill
@iftex
The @code{@@equiv@{@}} command is displayed as @samp{==} in Info and
-as @samp{@equiv{}} in the printed output.
+HTML and as @samp{@equiv{}} in the printed output.
@end iftex
-@ifinfo
+@ifnottex
The @code{@@equiv@{@}} command is displayed as @samp{@equiv{}} in Info
-and as a three parallel horizontal lines in the printed output.@refill
-@end ifinfo
+and HTML and as a standard mathematical equivalence sign (three
+parallel horizontal lines) in the printed output.
+@end ifnottex
Thus,
@@ -10113,12 +10954,13 @@ two characters where point is located.)@refill
@iftex
The @code{@@point@{@}} command is displayed as @samp{-!-} in Info and
-as @samp{@point{}} in the printed output.
+HTML and as @samp{@point{}} in the printed output.
@end iftex
-@ifinfo
+@ifnottex
The @code{@@point@{@}} command is displayed as @samp{@point{}} in Info
-and as a small five pointed star in the printed output.@refill
-@end ifinfo
+and HTML and as a small five pointed star in the printed
+output.
+@end ifnottex
The following example shows the contents of buffer @file{foo} before
and after evaluating a Lisp command to insert the word @code{changed}.@refill
@@ -10160,376 +11002,9 @@ This is the changed @@point@{@}contents of foo.
@end example
-@node Footnotes
-@section Footnotes
-@cindex Footnotes
-@findex footnote
-
-A @dfn{footnote} is for a reference that documents or elucidates the
-primary text.@footnote{A footnote should complement or expand upon
-the primary text, but a reader should not need to read a footnote to
-understand the primary text. For a thorough discussion of footnotes,
-see @cite{The Chicago Manual of Style}, which is published by the
-University of Chicago Press.}
-
-@menu
-* Footnote Commands:: How to write a footnote in Texinfo.
-* Footnote Styles:: Controlling how footnotes appear in Info.
-@end menu
-
-
-@node Footnote Commands
-@subsection Footnote Commands
-
-In Texinfo, footnotes are created with the @code{@@footnote} command.
-This command is followed immediately by a left brace, then by the text
-of the footnote, and then by a terminating right brace. Footnotes may
-be of any length (they will be broken across pages if necessary), but
-are usually short. The template is:
-
-@example
-ordinary text@@footnote@{@var{text of footnote}@}
-@end example
-
-As shown here, the @code{@@footnote} command should come right after the
-text being footnoted, with no intervening space; otherwise, the footnote
-marker might end up starting a line.
-
-For example, this clause is followed by a sample footnote@footnote{Here
-is the sample footnote.}; in the Texinfo source, it looks like
-this:
-
-@example
-@dots{}a sample footnote@@footnote@{Here is the sample
-footnote.@}; in the Texinfo source@dots{}
-@end example
-
-As you can see, the source includes two punctuation marks next to each
-other; in this case, @samp{.@};} is the sequence. This is normal (the
-first ends the footnote and the second belongs to the sentence being
-footnoted), so don't worry that it looks odd.
-
-In a printed manual or book, the reference mark for a footnote is a
-small, superscripted number; the text of the footnote appears at the
-bottom of the page, below a horizontal line.
-
-In Info, the reference mark for a footnote is a pair of parentheses
-with the footnote number between them, like this: @samp{(1)}. The
-reference mark is followed by a cross-reference link to the footnote's
-text.
-
-In the HTML output, footnote references are marked with a small,
-superscripted number which is rendered as a hypertext link to the
-footnote text.
-
-By the way, footnotes in the argument of an @code{@@item} command for a
-@code{@@table} must be on the same line as the @code{@@item}
-(as usual). @xref{Two-column Tables}.
-
-
-@node Footnote Styles
-@subsection Footnote Styles
-
-Info has two footnote styles, which determine where the text of the
-footnote is located:@refill
-
-@itemize @bullet
-@cindex @samp{@r{End}} node footnote style
-@item
-In the `End' node style, all the footnotes for a single node
-are placed at the end of that node. The footnotes are separated from
-the rest of the node by a line of dashes with the word
-@samp{Footnotes} within it. Each footnote begins with an
-@samp{(@var{n})} reference mark.@refill
-
-@need 700
-@noindent
-Here is an example of a single footnote in the end of node style:@refill
-
-@example
-@group
---------- Footnotes ---------
-
-(1) Here is a sample footnote.
-@end group
-@end example
-
-@cindex @samp{@r{Separate}} footnote style
-@item
-In the `Separate' node style, all the footnotes for a single
-node are placed in an automatically constructed node of
-their own. In this style, a ``footnote reference'' follows
-each @samp{(@var{n})} reference mark in the body of the
-node. The footnote reference is actually a cross reference
-which you use to reach the footnote node.@refill
-
-The name of the node with the footnotes is constructed
-by appending @w{@samp{-Footnotes}} to the name of the node
-that contains the footnotes. (Consequently, the footnotes'
-node for the @file{Footnotes} node is
-@w{@file{Footnotes-Footnotes}}!) The footnotes' node has an
-`Up' node pointer that leads back to its parent node.@refill
-
-@noindent
-Here is how the first footnote in this manual looks after being
-formatted for Info in the separate node style:@refill
-
-@smallexample
-@group
-File: texinfo.info Node: Overview-Footnotes, Up: Overview
-
-(1) The first syllable of "Texinfo" is pronounced like "speck", not
-"hex". @dots{}
-@end group
-@end smallexample
-@end itemize
-
-A Texinfo file may be formatted into an Info file with either footnote
-style.@refill
-
-@findex footnotestyle
-Use the @code{@@footnotestyle} command to specify an Info file's
-footnote style. Write this command at the beginning of a line followed
-by an argument, either @samp{end} for the end node style or
-@samp{separate} for the separate node style.
-
-@need 700
-For example,
-
-@example
-@@footnotestyle end
-@end example
-@noindent
-or
-@example
-@@footnotestyle separate
-@end example
-
-Write an @code{@@footnotestyle} command before or shortly after the
-end-of-header line at the beginning of a Texinfo file. (If you
-include the @code{@@footnotestyle} command between the start-of-header
-and end-of-header lines, the region formatting commands will format
-footnotes as specified.)@refill
-
-If you do not specify a footnote style, the formatting commands use
-their default style. Currently, @code{texinfo-format-buffer} and
-@code{texinfo-format-region} use the `separate' style and
-@code{makeinfo} uses the `end' style.@refill
-
-@c !!! note: makeinfo's --footnote-style option overrides footnotestyle
-@ignore
-If you use @code{makeinfo} to create the Info file, the
-@samp{--footnote-style} option determines which style is used,
-@samp{end} for the end of node style or @samp{separate} for the
-separate node style. Thus, to format the Texinfo manual in the
-separate node style, you would use the following shell command:@refill
-
-@example
-makeinfo --footnote-style=separate texinfo.texi
-@end example
-
-@noindent
-To format the Texinfo manual in the end of node style, you would
-type:@refill
-
-@example
-makeinfo --footnote-style=end texinfo.texi
-@end example
-@end ignore
-@ignore
-If you use @code{texinfo-format-buffer} or
-@code{texinfo-format-region} to create the Info file, the value of the
-@code{texinfo-footnote-style} variable controls the footnote style.
-It can be either @samp{"separate"} for the separate node style or
-@samp{"end"} for the end of node style. (You can change the value of
-this variable with the @kbd{M-x edit-options} command (@pxref{Edit
-Options, , Editing Variable Values, emacs, The GNU Emacs Manual}), or
-with the @kbd{M-x set-variable} command (@pxref{Examining, , Examining
-and Setting Variables, emacs, The GNU Emacs Manual}).@refill
-
-The @code{texinfo-footnote-style} variable also controls the style if
-you use the @kbd{M-x makeinfo-region} or @kbd{M-x makeinfo-buffer}
-command in Emacs.@refill
-@end ignore
-@ifinfo
-This chapter contains two footnotes.@refill
-@end ifinfo
-
-
-@c This should be described along with figures when we have them;
-@c perhaps in the quotation/example chapter.
-@node Images
-@section Inserting Images
-
-@cindex Images, inserting
-@cindex Pictures, inserting
-@findex image
-
-You can insert an image given in an external file with the
-@code{@@image} command.
-
-@menu
-* Image Syntax::
-* Image Scaling::
-@end menu
-
-
-@node Image Syntax
-@subsection Image Syntax
-
-Here is the basic synopsis of the @code{@@image} command:
-
-@example
-@@image@{@var{filename} @r{[,}@var{width}@r{]} @r{[,}@var{height}@r{]} @r{[,}@var{alttext}@r{]} @r{[,}@var{extension}@r{]}@}
-@end example
-
-@cindex Formats for images
-@cindex Image formats
-The @var{filename} argument is mandatory, and must not have an
-extension, because the different processors support different formats:
-
-@itemize @bullet
-@item
-@TeX{} reads the file @file{@var{filename}.eps} (Encapsulated PostScript
-format).
-@item
-@pindex pdftex@r{, and images}
-PDF@TeX{} reads @file{@var{filename}.pdf} (Adobe's Portable Document Format).
-@item
-@code{makeinfo} includes @file{@var{filename}.txt} verbatim for
-Info output (more or less as if it was an @code{@@example}).
-@item
-@code{makeinfo} uses the optional fifth argument @var{extension} to
-@code{@@image} for the filename extension, if it is specified. For example:
-
-@pindex XPM image format
-@example
-@@image@{foo,,,,xpm@}
-@end example
-
-@noindent
-will cause @code{makeinfo} to look for @file{foo.xpm} before any others.
-
-@end itemize
-
-The @var{width} and @var{height} arguments are described in the next
-section.
-
-@cindex alt attribute for images
-@cindex alternate text for images
-When producing html, @code{makeinfo} sets the @dfn{alt attribute} for
-inline images to the optional fourth argument to @code{@@image}, if
-supplied. If not supplied, @code{makeinfo} uses the full file name of
-the image being displayed.
-
-@cindex GIF, unsupported due to patents
-@cindex PNG image format
-@cindex JPG image format
-If you do not supply the optional fifth argument, @code{makeinfo}
-first tries @file{@var{filename}.png}; if that does not exist, it
-tries @file{@var{filename}.jpg}. If that does not exist either, it
-complains. (We cannot support GIF format directly due to software
-patents.)
-
-In Info output, @code{makeinfo} writes a reference to the binary image
-file (with the @file{.@var{extension}}, @file{.png}, or @file{.jpg}
-suffix) if it exists. It also physically includes the @file{.txt}
-file if that exists. This way, Info readers which can display images
-(such as the Emacs Info browser) can do so, whereas Info readers which
-can only use text (such as the standalone Info reader) can display the
-textual version.
-
-The implementation of this is to put the following construct into the
-Info output:
-
-@example
-^@^H[image src="@var{binaryfile}" text="@var{txtfile}"
- alt="@var{alttext} ... ^@^H]
-@end example
-
-@noindent (If one of the files is not present, the corresponding argument
-is omitted.)
-
-The reason for mentioning this here is that older Info browsers (this
-feature was introduced in Texinfo version 4.6) will display the above
-literally, which, although not ideal, should not be harmful.
-
-
-@node Image Scaling
-@subsection Image Scaling
-
-@cindex Images, scaling
-@cindex Scaling images
-@cindex Width of images
-@cindex Height of images
-@cindex Aspect ratio of images
-@cindex Distorting images
-The optional @var{width} and @var{height} arguments to the
-@code{@@image} command (see the previous section) specify the size to
-scale the image to. They are ignored for Info output. If neither is
-specified, the image is presented in its natural size (given in the
-file); if only one is specified, the other is scaled proportionately;
-and if both are specified, both are respected, thus possibly distorting
-the original image by changing its aspect ratio.
-
-@cindex Dimensions and image sizes
-The @var{width} and @var{height} may be specified using any valid @TeX{}
-dimension, namely:
-
-@table @asis
-@item pt
-@cindex Points (dimension)
-point (72.27pt = 1in)
-@item pc
-@cindex Picas
-pica (1pc = 12pt)
-@item bp
-@cindex Big points
-big point (72bp = 1in)
-@item in
-@cindex Inches
-inch
-@item cm
-@cindex Centimeters
-centimeter (2.54cm = 1in)
-@item mm
-@cindex Millimeters
-millimeter (10mm = 1cm)
-@item dd
-@cindex Did@^ot points
-did@^ot point (1157dd = 1238pt)
-@item cc
-@cindex Ciceros
-cicero (1cc = 12dd)
-@item sp
-@cindex Scaled points
-scaled point (65536sp = 1pt)
-@end table
-
-@pindex ridt.eps
-For example, the following will scale a file @file{ridt.eps} to one
-inch vertically, with the width scaled proportionately:
-
-@example
-@@image@{ridt,,1in@}
-@end example
-
-@pindex epsf.tex
-For @code{@@image} to work with @TeX{}, the file @file{epsf.tex} must be
-installed somewhere that @TeX{} can find it. (The standard location is
-@file{@var{texmf}/tex/generic/dvips/epsf.tex}, where @var{texmf} is a
-root of your @TeX{} directory tree.) This file is included in the
-Texinfo distribution and is also available from
-@uref{ftp://tug.org/tex/epsf.tex}, among other places.
-
-@code{@@image} can be used within a line as well as for displayed
-figures. Therefore, if you intend it to be displayed, be sure to leave
-a blank line before the command, or the output will run into the
-preceding text.
-
-
@node Breaks
-@chapter Making and Preventing Breaks
+@chapter Forcing and Preventing Breaks
+@cindex Forcing line and page breaks
@cindex Making line and page breaks
@cindex Preventing line and page breaks
@@ -10637,11 +11112,6 @@ in two places.
@end group
@end example
-Do not write an @code{@@refill} command at the end of a paragraph
-containing an @code{@@*} command; it will cause the paragraph to be
-refilled after the line break occurs, negating the effect of the line
-break. @xref{Refilling Paragraphs}.
-
The @code{@@/} command can be useful within a url
(@pxref{uref,,@code{@@uref}}), which tend to be long and are otherwise
unbreakable. For example:
@@ -10696,33 +11166,18 @@ words match exactly, so give all necessary variants.
Info output is not hyphenated, so these commands have no effect there.
+
@node w
@section @code{@@w}@{@var{text}@}: Prevent Line Breaks
@findex w @r{(prevent line break)}
@cindex Line breaks, preventing
-@cindex Hyphenation, preventing
@code{@@w@{@var{text}@}} outputs @var{text} and prohibits line breaks
-within @var{text}.
-
-You can use the @code{@@w} command to prevent @TeX{} from automatically
-hyphenating a long name or phrase that happens to fall near the end of a
-line. For example:
-
-@example
-You can copy GNU software from @@w@{@@samp@{ftp.gnu.org@}@}.
-@end example
-
-@noindent
-produces
-
-@quotation
-You can copy GNU software from @w{@samp{ftp.gnu.org}}.
-@end quotation
+within @var{text}, for both @TeX{} and @command{makeinfo}.
@cindex Non-breakable space, fixed
@cindex Unbreakable space, fixed
-You can also use @code{@@w} to produce a non-breakable space, fixed at
+Thus, you can use @code{@@w} to produce a non-breakable space, fixed at
the width of a normal interword space:
@example
@@ -10735,11 +11190,24 @@ the width of a normal interword space:
@w{ } @w{ } @w{ } indentation.
@end display
-The space from @code{@@w@{@w{ }@}}, as well as being non-breakable, also
-will not stretch or shrink. Sometimes that is what you want, for
-instance if you're doing some manual indenting. However, usually you
-want a normal interword space that does stretch and shrink (in the
-printed output); see the @code{@@tie} command in the next section.
+The space from @code{@@w@{@w{ }@}}, as well as being non-breakable,
+also will not stretch or shrink. Sometimes that is what you want, for
+instance if you're doing indenting manual. However, usually you want
+a normal interword space that does stretch and shrink (in the printed
+output); see the @code{@@tie} command in the next section.
+
+@cindex Hyphenation, preventing
+You can also use the @code{@@w} command to prevent @TeX{} from
+automatically hyphenating a long name or phrase that happens to fall
+near the end of a line. @command{makeinfo} does not ever hyphenate
+words.
+
+@cindex Keyword expansion, preventing
+@cindex Version control keywords, preventing expansion of
+@cindex $Id expansion, preventing
+You can also use @code{@@w} to avoid unwanted keyword expansion in
+source control systems. For example, to literally write @t{@w{$}Id$}
+in your document, use @code{@@w@{$@}Id$}.
@node tie
@@ -10854,7 +11322,7 @@ paginated. An @code{@@page} command is often used in the @code{@@titlepage}
section of a Texinfo file to start the copyright page.
-@node group, need, page, Breaks
+@node group
@comment node-name, next, previous, up
@section @code{@@group}: Prevent Page Breaks
@cindex Group (hold text together vertically)
@@ -10911,7 +11379,7 @@ considerable text. It is a good rule of thumb to look for a missing
@code{@@end group} if you get incomprehensible error messages in
@TeX{}.@refill
-@node need, , group, Breaks
+@node need
@comment node-name, next, previous, up
@section @code{@@need @var{mils}}: Prevent Page Breaks
@cindex Need space at page bottom
@@ -10958,23 +11426,24 @@ output formats, the body of the definition is indented. Also, the
name of the entity is entered into the appropriate index:
@code{@@deffn} enters the name into the index of functions,
@code{@@defvr} enters it into the index of variables, and so
-on.@refill
+on (@pxref{Predefined Indices}).
A manual need not and should not contain more than one definition for
a given name. An appendix containing a summary should use
@code{@@table} rather than the definition commands.@refill
@menu
-* Def Cmd Template:: How to structure a description using a
- definition command.
-* Optional Arguments:: How to handle optional and repeated arguments.
-* deffnx:: How to group two or more `first' lines.
-* Def Cmds in Detail:: All the definition commands.
+* Def Cmd Template:: Writing descriptions using definition commands.
+* Def Cmd Continuation Lines:: Continuing the heading over source lines.
+* Optional Arguments:: Handling optional and repeated arguments.
+* deffnx:: Group two or more `first' lines.
+* Def Cmds in Detail:: Reference for all the definition commands.
* Def Cmd Conventions:: Conventions for writing definitions.
-* Sample Function Definition::
+* Sample Function Definition:: An example.
@end menu
-@node Def Cmd Template, Optional Arguments, Definition Commands, Definition Commands
+
+@node Def Cmd Template
@section The Template for a Definition
@cindex Definition template
@cindex Template for a definition
@@ -10986,8 +11455,12 @@ and follow it on the same line by the category of the entity, the name
of the entity itself, and its arguments (if any). Then write the body
of the definition on succeeding lines. (You may embed examples in the
body.) Finally, end the definition with an @code{@@end deffn} command
-written on a line of its own. (The other definition commands follow
-the same format.)@refill
+written on a line of its own.
+
+The other definition commands follow the same format: a line with the
+@code{@@def@dots{}} command and whatever arguments are appropriate for
+that command; the body of the definition; and a corresponding
+@code{@@end} line.
The template for a definition looks like this:
@@ -11024,7 +11497,7 @@ This function moves point forward @var{count} words
Capitalize the category name like a title. If the name of the
category contains spaces, as in the phrase `Interactive Command',
-write braces around it. For example:@refill
+enclose it in braces. For example:
@example
@group
@@ -11036,68 +11509,91 @@ write braces around it. For example:@refill
@noindent
Otherwise, the second word will be mistaken for the name of the
-entity.@refill
+entity. As a general rule, when any of the arguments in the heading
+line @emph{except} the last one are more than one word, you need to
+enclose them in braces.
Some of the definition commands are more general than others. The
@code{@@deffn} command, for example, is the general definition command
-for functions and the like---for entities that may take arguments. When
-you use this command, you specify the category to which the entity
-belongs. The @code{@@deffn} command possesses three predefined,
-specialized variations, @code{@@defun}, @code{@@defmac}, and
-@code{@@defspec}, that specify the category for you: ``Function'',
-``Macro'', and ``Special Form'' respectively. (In Lisp, a special form
-is an entity much like a function.) The @code{@@defvr} command also is
-accompanied by several predefined, specialized variations for describing
-particular kinds of variables.@refill
+for functions and the like---for entities that may take arguments.
+When you use this command, you specify the category to which the
+entity belongs. Three predefined, specialized variations
+(@code{@@defun}, @code{@@defmac}, and @code{@@defspec}) specify the
+category for you: ``Function'', ``Macro'', and ``Special Form''
+respectively. (In Lisp, a special form is an entity much like a
+function.) Similarly, the general @code{@@defvr} command is
+accompanied by several specialized variations for describing
+particular kinds of variables.
+
+@xref{Sample Function Definition}, for a detailed example of a
+function definition, including the use of @code{@@example} inside the
+definition.
-The template for a specialized definition, such as @code{@@defun}, is
-similar to the template for a generalized definition, except that you
-do not need to specify the category:@refill
+@cindex Macros in definition commands
+Unfortunately, due to implementation difficulties, macros are not expanded
+in @code{@@deffn} and all the other definition commands.
-@example
-@group
-@@defun @var{name} @var{arguments}@dots{}
-@var{body-of-definition}
-@@end defun
-@end group
-@end example
-@noindent
-Thus,
+@node Def Cmd Continuation Lines
+@section Definition Command Continuation Lines
+@cindex Continuation lines in definition commands
+@cindex Definition command headings, continuing
+@cindex @samp{@@} as continuation in definition commands
+
+The heading line of a definition command can get very long.
+Therefore, Texinfo has a special syntax allowing them to be continued
+over multiple lines of the source file: a lone @samp{@@} at the end of
+each line to be continued. Here's an example:
@example
-@group
-@@defun buffer-end flag
-This function returns @@code@{(point-min)@} if @@var@{flag@}
-is less than 1, @@code@{(point-max)@} otherwise.
-@dots{}
+@@defun fn-name @@
+ arg1 arg2 arg3
+This is the basic continued defun.
@@end defun
-@end group
@end example
-@noindent
-produces
+@noindent produces:
-@quotation
-@defun buffer-end flag
-This function returns @code{(point-min)} if @var{flag} is less than 1,
-@code{(point-max)} otherwise. @dots{}
+@defun fn-name @
+ arg1 arg2 arg3
+This is the basic continued defun.
@end defun
-@end quotation
@noindent
-@xref{Sample Function Definition, Sample Function Definition, A Sample
-Function Definition}, for a more detailed example of a function
-definition, including the use of @code{@@example} inside the
-definition.@refill
+As you can see, the continued lines are combined, as if they had been
+typed on one source line.
-The other specialized commands work like @code{@@defun}.@refill
+Although this example only shows a one-line continuation,
+continuations may extend over any number of lines; simply put an
+@code{@@} at the end of each line to be continued.
-@cindex Macros in definition commands
-Note that, due to implementation difficulties, macros are not expanded
-in @code{@@deffn} and all the other definition commands.
+The @code{@@} character does not have to be the last character on the
+physical line: whitespace is allowed (and ignored) afterwards.
+
+@cindex Whitespace, collapsed around continuations
+@cindex Collapsing whitespace around continuations
+In general, any number of spaces or tabs around the @code{@@}
+continuation character, both on the line with the @code{@@} and on the
+continued line, are collapsed into a single space. There is one
+exception: the Texinfo processors will not fully collapse whitespace
+around a continuation inside braces. For example:
+
+@example
+@@deffn @{Category @@
+ Name@} @dots{}
+@end example
-@node Optional Arguments, deffnx, Def Cmd Template, Definition Commands
+@noindent The output (not shown) has excess space between `Category'
+and `Name'. In this case, simply elide any unwanted whitespace in
+your input, or put the continuation @code{@@} outside braces.
+
+@code{@@} does not (currently) function as a continuation character in
+@emph{any} other context. Ordinarily, @samp{@@} followed by a
+whitespace character (space, tab, newline) produces a normal interword
+space (@pxref{Multiple Spaces}).
+
+
+@node Optional Arguments
@section Optional and Repeated Arguments
@cindex Optional and repeated arguments
@cindex Repeated and optional arguments
@@ -11109,34 +11605,20 @@ Some entities take optional or repeated arguments, which may be
specified by a distinctive glyph that uses square brackets and
ellipses. For @w{example}, a special form often breaks its argument list
into separate arguments in more complicated ways than a
-straightforward function.@refill
+straightforward function.
-@iftex
-An argument enclosed within square brackets is optional.
-Thus, the phrase
-@samp{@code{@r{[}@var{optional-arg}@r{]}}} means that
-@var{optional-arg} is optional.
-An argument followed by an ellipsis is optional
-and may be repeated more than once.
@c This is consistent with Emacs Lisp Reference manual
-Thus, @samp{@var{repeated-args}@dots{}} stands for zero or more arguments.
-Parentheses are used when several arguments are grouped
-into additional levels of list structure in Lisp.
-@end iftex
-@c The following looks better in Info (no `r', `samp' and `code'):
-@ifinfo
An argument enclosed within square brackets is optional.
Thus, [@var{optional-arg}] means that @var{optional-arg} is optional.
An argument followed by an ellipsis is optional
and may be repeated more than once.
@c This is consistent with Emacs Lisp Reference manual
-Thus, @var{repeated-args}@dots{} stands for zero or more arguments.
-Parentheses are used when several arguments are grouped
+Thus, @var{repeated-args}@samp{@dots{}} stands for zero or more
+arguments. Parentheses are used when several arguments are grouped
into additional levels of list structure in Lisp.
-@end ifinfo
Here is the @code{@@defspec} line of an example of an imaginary
-special form:@refill
+special form:
@quotation
@defspec foobar (@var{var} [@var{from} @var{to} [@var{inc}]]) @var{body}@dots{}
@@ -11169,7 +11651,8 @@ example).@refill
The function is listed in the Command and Variable Index under
@samp{foobar}.@refill
-@node deffnx, Def Cmds in Detail, Optional Arguments, Definition Commands
+
+@node deffnx
@section Two or More `First' Lines
@cindex Two `First' Lines for @code{@@deffn}
@cindex Grouping two definitions together
@@ -11205,9 +11688,10 @@ These two search commands are similar except @dots{}
Each definition command has an `x' form: @code{@@defunx},
@code{@@defvrx}, @code{@@deftypefunx}, etc.
-The `x' forms work just like @code{@@itemx}; see @ref{itemx, , @code{@@itemx}}.
+The `x' forms work similarly to @code{@@itemx} (@pxref{itemx}).
+
-@node Def Cmds in Detail, Def Cmd Conventions, deffnx, Definition Commands
+@node Def Cmds in Detail
@section The Definition Commands
Texinfo provides more than a dozen definition commands, all of which
@@ -11227,11 +11711,11 @@ can be used for other programming languages.@refill
* Variables Commands:: Commands for variables and similar entities.
* Typed Functions:: Commands for functions in typed languages.
* Typed Variables:: Commands for variables in typed languages.
-* Abstract Objects:: Commands for object-oriented programming.
* Data Types:: The definition command for data types.
+* Abstract Objects:: Commands for object-oriented programming.
@end menu
-@node Functions Commands, Variables Commands, Def Cmds in Detail, Def Cmds in Detail
+@node Functions Commands
@subsection Functions and Similar Entities
This section describes the commands for describing functions and similar
@@ -11265,12 +11749,19 @@ Move point forward @@var@{nchars@} characters.
This shows a rather terse definition for a ``command'' named
@code{forward-char} with one argument, @var{nchars}.
-@code{@@deffn} prints argument names such as @var{nchars} in italics or
-upper case, as if @code{@@var} had been used, because we think of these
-names as metasyntactic variables---they stand for the actual argument
-values. Within the text of the description, write an argument name
-explicitly with @code{@@var} to refer to the value of the argument. In
-the example above, we used @samp{@@var@{nchars@}} in this way.
+@code{@@deffn} and prints argument names such as @var{nchars} in slanted
+type in the printed output, because we think of these names as
+metasyntactic variables---they stand for the actual argument values.
+Within the text of the description, however, write an argument name
+explicitly with @code{@@var} to refer to the value of the argument.
+In the example above, we used @samp{@@var@{nchars@}} in this way.
+
+In the unusual case when an argument name contains @samp{--}, or
+another character sequence which is treated specially
+(@pxref{Conventions}), use @code{@@var} around the argument. This
+causes the name to be printed in slanted typewriter, instead of the
+regular slanted font, exactly as input.
+@c except for ?` and !`, but we won't explain that.
The template for @code{@@deffn} is:
@@ -11285,30 +11776,9 @@ The template for @code{@@deffn} is:
@findex defun
@item @@defun @var{name} @var{arguments}@dots{}
The @code{@@defun} command is the definition command for functions.
-@code{@@defun} is equivalent to @samp{@@deffn Function
-@dots{}}.@refill
-
-@need 800
-@noindent
-For example,
-
-@example
-@group
-@@defun set symbol new-value
-Change the value of the symbol @@var@{symbol@}
-to @@var@{new-value@}.
-@@end defun
-@end group
-@end example
-
-@noindent
-shows a rather terse definition for a function @code{set} whose
-arguments are @var{symbol} and @var{new-value}. The argument names on
-the @code{@@defun} line automatically appear in italics or upper case as
-if they were enclosed in @code{@@var}. Terminate the definition with
-@code{@@end defun} on a line of its own.@refill
-
-The template is:
+@code{@@defun} is equivalent to @samp{@@deffn Function @dots{}}.
+Terminate the definition with @code{@@end defun} on a line of its own.
+Thus, the template is:
@example
@group
@@ -11318,13 +11788,11 @@ The template is:
@end group
@end example
-@code{@@defun} creates an entry in the index of functions.
-
@findex defmac
@item @@defmac @var{name} @var{arguments}@dots{}
The @code{@@defmac} command is the definition command for macros.
@code{@@defmac} is equivalent to @samp{@@deffn Macro @dots{}} and
-works like @code{@@defun}.@refill
+works like @code{@@defun}.
@findex defspec
@item @@defspec @var{name} @var{arguments}@dots{}
@@ -11332,10 +11800,13 @@ The @code{@@defspec} command is the definition command for special
forms. (In Lisp, a special form is an entity much like a function,
@pxref{Special Forms,,, elisp, GNU Emacs Lisp Reference Manual}.)
@code{@@defspec} is equivalent to @samp{@@deffn @{Special Form@}
-@dots{}} and works like @code{@@defun}.@refill
+@dots{}} and works like @code{@@defun}.
@end table
-@node Variables Commands, Typed Functions, Functions Commands, Def Cmds in Detail
+All these commands create entries in the index of functions.
+
+
+@node Variables Commands
@subsection Variables and Similar Entities
Here are the commands for defining variables and similar
@@ -11419,11 +11890,12 @@ The @code{@@defopt} command is the definition command for @dfn{user
options}, i.e., variables intended for users to change according to
taste; Emacs has many such (@pxref{Variables,,, emacs, The GNU Emacs
Manual}). @code{@@defopt} is equivalent to @samp{@@defvr @{User
-Option@} @dots{}} and works like @code{@@defvar}.@refill
+Option@} @dots{}} and works like @code{@@defvar}. It creates an entry
+in the index of variables.
@end table
-@node Typed Functions, Typed Variables, Variables Commands, Def Cmds in Detail
+@node Typed Functions
@subsection Functions in Typed Languages
The @code{@@deftypefn} command and its variations are for describing
@@ -11480,12 +11952,15 @@ This means that @code{foobar} is a ``library function'' that returns an
@code{int}, and its arguments are @var{foo} (an @code{int}) and
@var{bar} (a @code{float}).@refill
-The argument names that you write in @code{@@deftypefn} are not subject
-to an implicit @code{@@var}---since the actual names of the arguments in
-@code{@@deftypefn} are typically scattered among data type names and
-keywords, Texinfo cannot find them without help. Instead, you must write
-@code{@@var} explicitly around the argument names. In the example
-above, the argument names are @samp{foo} and @samp{bar}.@refill
+Since in typed languages, the actual names of the arguments are
+typically scattered among data type names and keywords, Texinfo cannot
+find them without help. You can either (a)@tie{}write everything
+as straight text, and it will be printed in slanted type; (b)@tie{}use
+@code{@@var} for the variable names, which will uppercase the
+variable names in Info and use the slanted typewriter font in printed
+output; (c)@tie{}use @code{@@var} for the variable names and
+@code{@@code} for the type names and keywords, which will be dutifully
+obeyed.
The template for @code{@@deftypefn} is:@refill
@@ -11504,16 +11979,12 @@ word then it must be enclosed in braces to make it a single argument.@refill
If you are describing a procedure in a language that has packages,
such as Ada, you might consider using @code{@@deftypefn} in a manner
somewhat contrary to the convention described in the preceding
-paragraphs.@refill
-
-@need 800
-@noindent
-For example:
+paragraphs. For example:
@example
@group
-@@deftypefn stacks private push
- (@@var@{s@}:in out stack;
+@@deftypefn stacks private push @@
+ (@@var@{s@}:in out stack; @@
@@var@{n@}:in integer)
@dots{}
@@end deftypefn
@@ -11521,8 +11992,9 @@ For example:
@end example
@noindent
-(The @code{@@deftypefn} arguments are shown split into three lines, but
-would be a single line in a real Texinfo file.)
+(The @code{@@deftypefn} arguments are shown using continuations
+(@pxref{Def Cmd Continuation Lines}), but could be on a single line in
+a real Texinfo file.)
In this instance, the procedure is classified as belonging to the
package @code{stacks} rather than classified as a `procedure' and its
@@ -11530,50 +12002,13 @@ data type is described as @code{private}. (The name of the procedure
is @code{push}, and its arguments are @var{s} and @var{n}.)@refill
@code{@@deftypefn} creates an entry in the index of functions for
-@var{name}.@refill
+@var{name}.
@item @@deftypefun @var{data-type} @var{name} @var{arguments}@dots{}
@findex deftypefun
The @code{@@deftypefun} command is the specialized definition command
for functions in typed languages. The command is equivalent to
-@samp{@@deftypefn Function @dots{}}.@refill
-
-@need 800
-@noindent
-Thus,
-
-@smallexample
-@group
-@@deftypefun int foobar (int @@var@{foo@}, float @@var@{bar@})
-@dots{}
-@@end deftypefun
-@end group
-@end smallexample
-
-@noindent
-produces the following in Info:
-
-@example
-@group
--- Function: int foobar (int FOO, float BAR)
-@dots{}
-@end group
-@end example
-@iftex
-
-@need 800
-@noindent
-and the following in a printed manual:
-
-@quotation
-@deftypefun int foobar (int @var{foo}, float @var{bar})
-@dots{}
-@end deftypefun
-@end quotation
-@end iftex
-
-@need 800
-The template is:
+@samp{@@deftypefn Function @dots{}}. The template is:
@example
@group
@@ -11584,12 +12019,12 @@ The template is:
@end example
@code{@@deftypefun} creates an entry in the index of functions for
-@var{name}.@refill
+@var{name}.
@end table
-@node Typed Variables, Abstract Objects, Typed Functions, Def Cmds in Detail
+@node Typed Variables
@subsection Variables in Typed Languages
Variables in typed languages are handled in a manner similar to
@@ -11654,87 +12089,103 @@ The template is:
@@end deftypevr
@end example
-@code{@@deftypevr} creates an entry in the index of variables for
-@var{name}.@refill
-
@findex deftypevar
@item @@deftypevar @var{data-type} @var{name}
The @code{@@deftypevar} command is the specialized definition command
for variables in typed languages. @code{@@deftypevar} is equivalent
-to @samp{@@deftypevr Variable @dots{}}.@refill
-
-@need 800
-@noindent
-For example:
+to @samp{@@deftypevr Variable @dots{}}. The template is:
@example
@group
-@@deftypevar int fubar
-@dots{}
+@@deftypevar @var{data-type} @var{name}
+@var{body-of-description}
@@end deftypevar
@end group
@end example
+@end table
-@noindent
-produces the following in Info:
+These commands create entries in the index of variables.
+
+@node Data Types
+@subsection Data Types
+
+Here is the command for data types:@refill
+
+@table @code
+@findex deftp
+@item @@deftp @var{category} @var{name} @var{attributes}@dots{}
+The @code{@@deftp} command is the generic definition command for data
+types. The command is written at the beginning of a line and is
+followed on the same line by the category, by the name of the type
+(which is a word like @code{int} or @code{float}), and then by names of
+attributes of objects of that type. Thus, you could use this command
+for describing @code{int} or @code{float}, in which case you could use
+@code{data type} as the category. (A data type is a category of
+certain objects for purposes of deciding which operations can be
+performed on them.)@refill
+
+In Lisp, for example, @dfn{pair} names a particular data
+type, and an object of that type has two slots called the
+@sc{car} and the @sc{cdr}. Here is how you would write the first line
+of a definition of @code{pair}.@refill
@example
@group
--- Variable: int fubar
+@@deftp @{Data type@} pair car cdr
@dots{}
+@@end deftp
@end group
@end example
-@iftex
-@need 800
-@noindent
-and the following in a printed manual:
-
-@quotation
-@deftypevar int fubar
-@dots{}
-@end deftypevar
-@end quotation
-@end iftex
-
-@need 800
-@noindent
+@need 950
The template is:
@example
@group
-@@deftypevar @var{data-type} @var{name}
-@var{body-of-description}
-@@end deftypevar
+@@deftp @var{category} @var{name-of-type} @var{attributes}@dots{}
+@var{body-of-definition}
+@@end deftp
@end group
@end example
-@code{@@deftypevar} creates an entry in the index of variables for
-@var{name}.@refill
+@code{@@deftp} creates an entry in the index of data types.
@end table
+
@node Abstract Objects
@subsection Object-Oriented Programming
+@cindex Object-oriented programming
+
Here are the commands for formatting descriptions about abstract
objects, such as are used in object-oriented programming. A class is
a defined type of abstract object. An instance of a class is a
particular object that has the type of the class. An instance
variable is a variable that belongs to the class but for which each
-instance has its own value.@refill
+instance has its own value.
-In a definition, if the name of a class is truly a name defined in the
-programming system for a class, then you should write an @code{@@code}
-around it. Otherwise, it is printed in the usual text font.@refill
+@menu
+* Variables: Object-Oriented Variables.
+* Methods: Object-Oriented Methods.
+@end menu
+
+
+@node Object-Oriented Variables
+@subsubsection Object-Oriented Variables
+
+@cindex Variables, object-oriented
+
+These commands allow you to define different sorts of variables in
+object-oriented programming languages.
@table @code
-@findex defcv
@item @@defcv @var{category} @var{class} @var{name}
+@findex defcv
The @code{@@defcv} command is the general definition command for
variables associated with classes in object-oriented programming. The
@code{@@defcv} command is followed by three arguments: the category of
thing being defined, the class to which it belongs, and its
-name. Thus,@refill
+name. For instance:
@example
@group
@@ -11744,52 +12195,104 @@ name. Thus,@refill
@end group
@end example
-@noindent
-illustrates how you would write the first line of a definition of the
-@code{border-pattern} class option of the class @code{Window}.@refill
+@noindent produces:
+@defcv {Class Option} Window border-pattern
+@dots{}
+@end defcv
+
+@code{@@defcv} creates an entry in the index of variables.
+
+@item @@deftypecv @var{category} @var{class} @var{data-type} @var{name}
+@findex deftypecv
+The @code{@@deftypecv} command is the definition command for typed
+class variables in object-oriented programming. It is analogous to
+@code{@@defcv} with the addition of the @var{data-type} parameter to
+specify the type of the instance variable. Ordinarily, the data type
+is a programming language construct that should be marked with
+@code{@@code}. For instance:
-The template is:
@example
@group
-@@defcv @var{category} @var{class} @var{name}
+@@deftypecv @{Class Option@} Window @@code@{int@} border-pattern
@dots{}
-@@end defcv
+@@end deftypecv
@end group
@end example
-@code{@@defcv} creates an entry in the index of variables.
+@noindent produces:
+
+@deftypecv {Class Option} Window @code{int} border-pattern
+@dots{}
+@end deftypecv
+
+@code{@@deftypecv} creates an entry in the index of variables.
-@findex defivar
@item @@defivar @var{class} @var{name}
+@findex defivar
The @code{@@defivar} command is the definition command for instance
variables in object-oriented programming. @code{@@defivar} is
-equivalent to @samp{@@defcv @{Instance Variable@} @dots{}}@refill
+equivalent to @samp{@@defcv @{Instance Variable@} @dots{}}. For
+instance:
-The template is:
@example
@group
-@@defivar @var{class} @var{instance-variable-name}
-@var{body-of-definition}
+@@defivar Window border-pattern
+@dots{}
@@end defivar
@end group
@end example
+@noindent produces:
+
+@defivar Window border-pattern
+@dots{}
+@end defivar
+
@code{@@defivar} creates an entry in the index of variables.
-@findex deftypeivar
@item @@deftypeivar @var{class} @var{data-type} @var{name}
+@findex deftypeivar
The @code{@@deftypeivar} command is the definition command for typed
-instance variables in object-oriented programming. It is similar to
+instance variables in object-oriented programming. It is analogous to
@code{@@defivar} with the addition of the @var{data-type} parameter to
-specify the type of the instance variable. @code{@@deftypeivar} creates an
-entry in the index of variables.
+specify the type of the instance variable. Ordinarily, the data type
+is a programming language construct that should be marked with
+@code{@@code}. For instance:
+
+@example
+@group
+@@deftypeivar Window @@code@{int@} border-pattern
+@dots{}
+@@end deftypeivar
+@end group
+@end example
+
+@noindent produces:
+
+@deftypeivar Window @code{int} border-pattern
+@dots{}
+@end deftypeivar
+
+@code{@@deftypeivar} creates an entry in the index of variables.
+
+@end table
+
+@node Object-Oriented Methods
+@subsubsection Object-Oriented Methods
+
+@cindex Methods, object-oriented
+
+These commands allow you to define different sorts of function-like
+entities resembling methods in object-oriented programming languages.
+These entities take arguments, as functions do, but are associated with
+particular classes of objects.
+
+@table @code
@findex defop
@item @@defop @var{category} @var{class} @var{name} @var{arguments}@dots{}
-The @code{@@defop} command is the general definition command for
-entities that may resemble methods in object-oriented programming.
-These entities take arguments, as functions do, but are associated with
-particular classes of objects.@refill
+The @code{@@defop} command is the general definition command for these
+method-like entities.
For example, some systems have constructs called @dfn{wrappers} that
are associated with classes as methods are, but that act more like
@@ -11871,21 +12374,9 @@ For example:
@noindent
illustrates the definition for a method called @code{bar-method} of
-the class @code{bar-class}. The method takes an argument.@refill
-
-The template is:
-
-@example
-@group
-@@defmethod @var{class} @var{method-name} @var{arguments}@dots{}
-@var{body-of-definition}
-@@end defmethod
-@end group
-@end example
-
-@code{@@defmethod} creates an entry, such as `@code{bar-method} on
-@code{bar-class}', in the index of functions.@refill
+the class @code{bar-class}. The method takes an argument.
+@code{@@defmethod} creates an entry in the index of functions.
@item @@deftypemethod @var{class} @var{data-type} @var{name} @var{arguments}@dots{}
@findex defmethod
@@ -11893,56 +12384,12 @@ The @code{@@deftypemethod} command is the definition command for methods
in object-oriented typed languages, such as C++ and Java. It is similar
to the @code{@@defmethod} command with the addition of the
@var{data-type} parameter to specify the return type of the method.
+@code{@@deftypemethod} creates an entry in the index of functions.
@end table
-@node Data Types
-@subsection Data Types
-
-Here is the command for data types:@refill
-
-@table @code
-@findex deftp
-@item @@deftp @var{category} @var{name} @var{attributes}@dots{}
-The @code{@@deftp} command is the generic definition command for data
-types. The command is written at the beginning of a line and is
-followed on the same line by the category, by the name of the type
-(which is a word like @code{int} or @code{float}), and then by names of
-attributes of objects of that type. Thus, you could use this command
-for describing @code{int} or @code{float}, in which case you could use
-@code{data type} as the category. (A data type is a category of
-certain objects for purposes of deciding which operations can be
-performed on them.)@refill
-
-In Lisp, for example, @dfn{pair} names a particular data
-type, and an object of that type has two slots called the
-@sc{car} and the @sc{cdr}. Here is how you would write the first line
-of a definition of @code{pair}.@refill
-
-@example
-@group
-@@deftp @{Data type@} pair car cdr
-@dots{}
-@@end deftp
-@end group
-@end example
-
-@need 950
-The template is:
-
-@example
-@group
-@@deftp @var{category} @var{name-of-type} @var{attributes}@dots{}
-@var{body-of-definition}
-@@end deftp
-@end group
-@end example
-
-@code{@@deftp} creates an entry in the index of data types.
-@end table
-
-@node Def Cmd Conventions, Sample Function Definition, Def Cmds in Detail, Definition Commands
+@node Def Cmd Conventions
@section Conventions for Writing Definitions
@cindex Definition conventions
@cindex Conventions for writing definitions
@@ -11954,7 +12401,8 @@ to the @code{forward-word} function. Also, if the name of an argument
contains the name of a type, such as @var{integer}, take care that the
argument actually is of that type.@refill
-@node Sample Function Definition, , Def Cmd Conventions, Definition Commands
+
+@node Sample Function Definition
@section A Sample Function Definition
@cindex Function definitions
@cindex Command definitions
@@ -12061,67 +12509,89 @@ that for functions except that variables do not take arguments.
@cindex Visibility of conditional text
@cindex If text conditionally visible
-Sometimes it is good to use different text for different output formats.
-For example, you can use the @dfn{conditional commands} to specify
-different text for the printed manual and the Info output.
-
-Conditional commands may not be nested.
+The @dfn{conditional commands} allow you to use different text for
+different output formats, or for general conditions that you define.
+For example, you can use them to specify different text for the
+printed manual and the Info output.
The conditional commands comprise the following categories.
@itemize @bullet
-@item Commands for HTML, Info, or @TeX{}.
-@item Commands for not HTML, Info, or @TeX{}.
-@item Raw @TeX{} or HTML commands.
@item
-Substituting text for all formats, and testing if a flag is set or clear.
+Commands specific to an output format (Info, @TeX{}, HTML, @dots{}).
+
+@item
+Commands specific to any output format @emph{other} than a given
+one (not Info, not @TeX{}, @dots{}).
+
+@item
+`Raw' formatter text for any output format, passed straight
+through with no interpretation of @@-commands.
+
+@item
+Format-independent variable substitutions, and testing if a variable
+is set or clear.
+
@end itemize
@menu
-* Conditional Commands:: Specifying text for HTML, Info, or @TeX{}.
-* Conditional Not Commands:: Specifying text for not HTML, Info, or @TeX{}.
-* Raw Formatter Commands:: Using raw @TeX{} or HTML commands.
-* set clear value:: Designating which text to format (for
- all output formats); and how to set a
- flag to a string that you can insert.
+* Conditional Commands:: Text for a given format.
+* Conditional Not Commands:: Text for any format other than a given one.
+* Raw Formatter Commands:: Using raw formatter commands.
+* set clear value:: Variable tests and substitutions.
+* Conditional Nesting:: Using conditionals inside conditionals.
@end menu
@node Conditional Commands
@section Conditional Commands
-Texinfo has an @code{@@if@dots{}} environment for each output format, to
-allow conditional inclusion of text for a particular output format.
+Texinfo has an @code{@@if@var{format}} environment for each output
+format, to allow conditional inclusion of text for a particular output
+format.
@findex ifinfo
-@code{@@ifinfo} begins segments of text that should be ignored by @TeX{}
-when it typesets the printed manual. The segment of text appears only
-in the Info file and (for historical compatibility) the plain text
-output. The @code{@@ifinfo} command should appear on a line by itself;
-end the Info-only text with a line containing @code{@@end ifinfo} by
-itself.
+@code{@@ifinfo} begins segments of text that should be ignored by
+@TeX{} when it typesets the printed manual, and by @command{makeinfo}
+when not producing Info output. The segment of text appears only in
+the Info file and, for historical compatibility, the plain text
+output.
+@findex ifdocbook
@findex ifhtml
@findex ifplaintext
@findex iftex
@findex ifxml
-The @code{@@iftex} and @code{@@end iftex} commands are analogous to the
-@code{@@ifinfo} and @code{@@end ifinfo} commands; they specify text that
-will appear in the printed manual but not in the Info file. Likewise
-for @code{@@ifhtml} and @code{@@end ifhtml}, which specify text to
-appear only in HTML output. And for @code{@@ifplaintext} and
-@code{@@end ifplaintext}, which specify text to appear only in plain
-text output. And for @code{@@ifxml} and
-@code{@@end ifxml}, for the XML output.
+The environments for the other formats are analogous:
-For example,
+@table @code
+@item @@ifdocbook @dots{} @@end ifdocbook
+Text to appear only in the Docbook output.
+
+@item @@ifhtml @dots{} @@end ifhtml
+Text to appear only in the HTML output.
+
+@item @@ifplaintext @dots{} @@end ifplaintext
+Text to appear only in the plain text output.
+
+@item @@iftex @dots{} @@end iftex
+Text to appear only in the printed manual.
+
+@item @@ifxml @dots{} @@end ifxml
+Text to appear only in the XML output.
+@end table
+
+The @code{@@if@dots{}} and @code{@@end if@dots{}} commands must appear
+on lines by themselves in your source file.
+
+Here is an example showing all these conditionals:
@example
@@iftex
This text will appear only in the printed manual.
@@end iftex
@@ifinfo
-However, this text will appear only in Info (or plain text).
+However, this text will appear only in Info and plain text.
@@end ifinfo
@@ifhtml
And this text will only appear in HTML.
@@ -12130,17 +12600,21 @@ And this text will only appear in HTML.
Whereas this text will only appear in plain text.
@@end ifplaintext
@@ifxml
-And this will only appear in XML output.
+Notwithstanding that this will only appear in XML.
@@end ifxml
+@@ifdocbook
+Nevertheless, this will only appear in Docbook.
+@@end ifdocbook
@end example
@noindent
The preceding example produces the following line:
+
@iftex
This text will appear only in the printed manual.
@end iftex
@ifinfo
-However, this text will appear only in Info (or plain text).
+However, this text will appear only in Info and plain text.
@end ifinfo
@ifhtml
And this text will only appear in HTML.
@@ -12149,8 +12623,11 @@ And this text will only appear in HTML.
Whereas this text will only appear in plain text.
@end ifplaintext
@ifxml
-And this will only appear in XML output.
+Notwithstanding that this will only appear in XML.
@end ifxml
+@ifdocbook
+Nevertheless, this will only appear in Docbook.
+@end ifdocbook
@noindent
Notice that you only see one of the input lines, depending on which
@@ -12159,6 +12636,7 @@ version of the manual you are reading.
@node Conditional Not Commands
@section Conditional Not Commands
+@findex ifnotdocbook
@findex ifnothtml
@findex ifnotinfo
@findex ifnotplaintext
@@ -12166,14 +12644,17 @@ version of the manual you are reading.
@findex ifnotxml
You can specify text to be included in any output format @emph{other}
-than some given one with the @code{@@ifnot@dots{}} commands:
+than a given one with the @code{@@ifnot@dots{}} environments:
+
@example
+@@ifnotdocbook @dots{} @@end ifnotdocbook
@@ifnothtml @dots{} @@end ifnothtml
@@ifnotinfo @dots{} @@end ifnotinfo
@@ifnotplaintext @dots{} @@end ifnotplaintext
@@ifnottex @dots{} @@end ifnottex
@@ifnotxml @dots{} @@end ifnotxml
@end example
+
@noindent
The @code{@@ifnot@dots{}} command and the @code{@@end} command must
appear on lines by themselves in your actual source file.
@@ -12181,10 +12662,11 @@ appear on lines by themselves in your actual source file.
If the output file is being made in the given format, the
region is @emph{ignored}. Otherwise, it is included.
-With one exception (for historical compatibility): @code{@@ifnotinfo}
-text is omitted for both Info and plain text output, not just Info. To
-specify text which appears only in Info and not in plain text, use
-@code{@@ifnotplaintext}, like this:
+There is one exception (for historical compatibility):
+@code{@@ifnotinfo} text is omitted for both Info and plain text
+output, not just Info. To specify text which appears only in Info and
+not in plain text, use @code{@@ifnotplaintext}, like this:
+
@example
@@ifinfo
@@ifnotplaintext
@@ -12204,9 +12686,10 @@ with @code{@@iftex}, not raw formatter source as with @code{@@tex}
@cindex @TeX{} commands, using ordinary
@cindex Ordinary @TeX{} commands, using
@cindex Commands using raw @TeX{}
+@cindex Docbook, including raw
@cindex HTML, including raw
@cindex XML, including raw
-@cindex plain @TeX{}
+@cindex Plain @TeX{}
Inside a region delineated by @code{@@iftex} and @code{@@end iftex},
you can embed some raw @TeX{} commands. The Texinfo processors will
@@ -12268,17 +12751,23 @@ $$ \chi^2 = \sum_{i=1}^N
@findex html
Analogously, you can use @code{@@ifhtml @dots{} @@end ifhtml} to delimit
a region to be included in HTML output only, and @code{@@html @dots{}
-@@end html} for a region of raw HTML (again, except that @code{@@} is
-still the escape character, so the @code{@@end} command can be
-recognized.)
+@@end html} for a region of raw HTML.
@findex ifxml
@findex xml
-Analogously, you can use @code{@@ifxml @dots{} @@end ifxml} to delimit
+Likewise, you can use @code{@@ifxml @dots{} @@end ifxml} to delimit
a region to be included in XML output only, and @code{@@xml @dots{}
-@@end xml} for a region of raw XML (again, except that @code{@@} is
-still the escape character, so the @code{@@end} command can be
-recognized.)
+@@end xml} for a region of raw XML.
+
+@findex ifdocbook
+@findex docbook
+Again likewise, you can use @code{@@ifdocbook @dots{} @@end ifdocbook}
+to delimit a region to be included in Docbook output only, and
+@code{@@docbook @dots{} @@end docbook} for a region of raw Docbook.
+
+In all cases, the exception to the raw processing is that @code{@@} is
+still an escape character, so the @code{@@end} command can be
+recognized.
@node set clear value
@@ -12286,9 +12775,10 @@ recognized.)
You can direct the Texinfo formatting commands to format or ignore parts
of a Texinfo file with the @code{@@set}, @code{@@clear}, @code{@@ifset},
-and @code{@@ifclear} commands.@refill
+and @code{@@ifclear} commands.
-Brief descriptions:
+Here are brief descriptions of these commands, see the following
+sections for more details:
@table @code
@item @@set @var{flag} [@var{value}]
@@ -12319,12 +12809,13 @@ is ignored. If @var{flag} is clear, text through the following
@subsection @code{@@set} and @code{@@value}
@findex value
-You use the @code{@@set} command to specify a value for a flag, which is
-later expanded by the @code{@@value} command.
+You use the @code{@@set} command to specify a value for a flag, which
+is later expanded by the @code{@@value} command.
-A @dfn{flag} is an identifier. In general, it is best to use only
-letters and numerals in a flag name, not @samp{-} or @samp{_}---they
-will work in some contexts, but not all, due to limitations in @TeX{}.
+A @dfn{flag} (aka @dfn{variable}) is an identifier. It is best to use
+only letters and numerals in a flag name, not @samp{-} or
+@samp{_}---they will work in some contexts, but not all, due to
+limitations in @TeX{}.
The value is the remainder of the input line, and can contain anything.
@@ -12364,10 +12855,10 @@ without specifying a string, the value of @code{foo} is the empty string.
If you clear a previously set flag with @code{@@clear @var{flag}}, a
subsequent @code{@@value@{flag@}} command will report an error.
-For example, if you set @code{foo} as follows:@refill
+For example, if you set @code{foo} as follows:
@example
-@@set how-much very, very, very
+@@set howmuch very, very, very
@end example
@noindent
@@ -12375,7 +12866,7 @@ then the formatters transform
@example
@group
-It is a @@value@{how-much@} wet day.
+It is a @@value@{howmuch@} wet day.
@exdent @r{into}
It is a very, very, very wet day.
@end group
@@ -12384,7 +12875,7 @@ It is a very, very, very wet day.
If you write
@example
-@@clear how-much
+@@clear howmuch
@end example
@noindent
@@ -12392,9 +12883,9 @@ then the formatters transform
@example
@group
-It is a @@value@{how-much@} wet day.
+It is a @@value@{howmuch@} wet day.
@exdent @r{into}
-It is a @{No value for "how-much"@} wet day.
+It is a @{No value for "howmuch"@} wet day.
@end group
@end example
@@ -12423,7 +12914,7 @@ and @code{@@end ifset} commands, like this:
For example, you can create one document that has two variants, such as
a manual for a `large' and `small' model:
-@cindex shrubbery
+@cindex Shrubbery
@example
You can use this machine to dig up shrubs
without hurting them.
@@ -12473,13 +12964,13 @@ command looks like this:
@node value Example
@subsection @code{@@value} Example
-You can use the @code{@@value} command to minimize the number of places
-you need to change when you record an update to a manual. @xref{GNU
-Sample Texts}, for an example of this same principle can work with
-Automake distributions, and full texts.
+You can use the @code{@@value} command to minimize the number of
+places you need to change when you record an update to a manual.
+@xref{GNU Sample Texts}, for the full text of an example of using this
+to work with Automake distributions.
-Here is an example adapted from @ref{Top,, Overview, make, The GNU Make
-Manual}):
+This example is adapted from @ref{Top,, Overview, make, The GNU Make
+Manual}.
@enumerate
@item
@@ -12563,6 +13054,53 @@ When you update the manual, you change only the values of the flags; you
do not need to edit the three sections.
+@node Conditional Nesting
+@section Conditional Nesting
+@cindex Conditionals, nested
+@cindex Nesting conditionals
+
+Conditionals can be nested; however, the details are a little tricky.
+The difficulty comes with failing conditionals, such as
+@code{@@ifhtml} when HTML is not being produced, where the included
+text is to be ignored. However, it is not to be @emph{completely}
+ignored, since it is useful to have one @code{@@ifset} inside another,
+for example---that is a way to include text only if two conditions are
+met. Here's an example:
+
+@example
+@@ifset somevar
+@@ifset anothervar
+Both somevar and anothervar are set.
+@@end ifset
+@@ifclear anothervar
+Somevar is set, anothervar is not.
+@@end ifclear
+@@end ifset
+@end example
+
+Technically, Texinfo requires that for a failing conditional, the
+ignored text must be properly nested with respect to that failing
+conditional. Unfortunately, it's not always feasible to check that
+@emph{all} conditionals are properly nested, because then the
+processors could have to fully interpret the ignored text, which
+defeats the purpose of the command. Here's an example illustrating
+these rules:
+
+@example
+@@ifset a
+@@ifset b
+@@ifclear ok - ok, ignored
+@@end junky - ok, ignored
+@@end ifset
+@@c WRONG - missing @@end ifset.
+@end example
+
+Finally, as mentioned above, all conditional commands must be on lines
+by themselves, with no text (even spaces) before or after. Otherwise,
+the processors cannot reliably determine which commands to consider
+for nesting purposes.
+
+
@node Internationalization
@chapter Internationalization
@@ -12811,18 +13349,23 @@ The @code{@@documentencoding} command declares the input document
encoding. Write it on a line by itself, with a valid encoding
specification following.
-At present, Texinfo supports only three encodings:
+At present, Texinfo supports only these encodings:
@table @code
@item US-ASCII
This has no particular effect, but it's included for completeness.
+
@itemx ISO-8859-1
+@itemx ISO-8859-15
@item ISO-8859-2
-These specify the standard encodings for Western European and
-Eastern European languages, respectively. A full description of the
-encodings is beyond our scope here;
-@uref{http://czyborra.com/charsets/iso8859.html} is one of many useful
-references.
+These specify the standard encodings for Western European (the first
+two) and Eastern European languages (the third), respectively. ISO
+8859-15 replaces some little-used characters from 8859-1 (e.g.,
+precomposed fractions) with more commonly needed ones, such as the
+Euro symbol.
+
+A full description of the encodings is beyond our scope here;
+one useful reference is @uref{http://czyborra.com/charsets/iso8859.html}.
@end table
Specifying an encoding @var{enc} has the following effects:
@@ -12830,11 +13373,11 @@ Specifying an encoding @var{enc} has the following effects:
@opindex --enable-encoding
@cindex Local Variables: section, for encoding
@cindex Info output, and encoding
-In Info output, if the option @option{--enable-encoding} is also given
+In Info output, if the option @option{--enable-encoding} is given
to @command{makeinfo}, a so-called `Local Variables' section
(@pxref{File Variables,,,emacs,The GNU Emacs Manual}) is output
including @var{enc}. This allows Info readers to set the encoding
-appropriately:
+appropriately.
@example
Local Variables:
@@ -12843,12 +13386,12 @@ End:
@end example
@cindex HTML output, and encodings
-@cindex http-equiv, and charset specification
-@cindex meta HTML tag, and charset specification
+@cindex @code{http-equiv}, and charset specification
+@cindex @code{<meta>} HTML tag, and charset specification
In HTML output, a @samp{<meta>} tag is output, in the @samp{<head>}
section of the HTML, that specifies @var{enc}. Web servers and
browsers cooperate to use this information so the correct encoding is
-used to display the page.
+used to display the page, if supported by the system.
@example
<meta http-equiv="Content-Type" content="text/html;
@@ -12892,7 +13435,7 @@ customized output in the Info file.
@menu
* Defining Macros:: Defining and undefining new commands.
* Invoking Macros:: Using a macro, once you've defined it.
-* Macro Details:: Beyond basic macro usage.
+* Macro Details:: Limitations of Texinfo macros.
* alias:: Command aliases.
* definfoenclose:: Customized highlighting.
@end menu
@@ -13085,35 +13628,87 @@ Twice: a,b & a,b.
@node Macro Details
-@section Macro Details
+@section Macro Details and Caveats
@cindex Macro details
@cindex Details of macro usage
+@cindex Caveats for macro usage
Due to unavoidable limitations, certain macro-related constructs cause
problems with @TeX{}. If you get macro-related errors when producing
the printed version of a manual, try expanding the macros with
@command{makeinfo} by invoking @command{texi2dvi} with the @samp{-E}
-option (@ref{Format with texi2dvi}).
+option (@pxref{Format with texi2dvi}).
@itemize @bullet
@item
+As mentioned earlier, macro names must consist entirely of letters.
+
+@item
+It is not advisable to redefine any @TeX{} primitive, plain, or
+Texinfo command name as a macro. Unfortunately this is a very large
+set of names, and the possible resulting errors are unpredictable.
+
+@item
All macros are expanded inside at least one @TeX{} group. This means
that @code{@@set} and other such commands have no effect inside a
macro.
@item
-Macros containing a command which must be on a line by itself, such as a
-conditional, cannot be invoked in the middle of a line.
-
-@item
Commas in macro arguments, even if escaped by a backslash, don't
always work.
@item
-It is best to avoid comments inside macro definitions.
+Macro arguments cannot cross lines.
@item
-Macro arguments cannot cross lines.
+It is (usually) best to avoid comments inside macro definitions, but
+see the next item.
+
+@item
+Macros containing a command which must be on a line by itself, such as
+a conditional, cannot be invoked in the middle of a line. In general,
+the interaction of newlines in the macro definitions and invocations
+depends on the precise commands and context. You may be able to work
+around some problems with judicious use of @code{@@c}. Suppose you
+define a macro that is always intended to be used on a line by itself:
+
+@example
+@@macro linemac
+@@cindex whatever
+@@c
+@@end macro
+...
+foo
+@@linemac
+bar
+@end example
+
+Without the @code{@@c}, there will be an unwanted blank line between
+the @samp{@@cindex whatever} and the @samp{bar} (one newline comes
+from the macro definition, one from after the invocation), causing a
+paragraph break.
+
+On the other hand, you wouldn't want the @code{@@c} if the macro was
+sometimes invoked in the middle of a line (the text after the
+invocation would be treated as a comment).
+
+@item
+In general, you can't arbitrarily substitute a macro call for Texinfo
+command arguments, even when the text is the same. It might work with
+some commands, it fails with others. Best not to do it at all. For
+instance, this fails:
+
+@example
+@@macro offmacro
+off
+@@end macro
+@@headings @@offmacro
+@end example
+
+@noindent
+You would expect this to be equivalent to @code{@@headings off}, but
+for @TeX{}nical reasons, it fails with a mysterious error message
+(@code{Paragraph ended before @@headings was complete}).
@item
Macros cannot define macros in the natural way. To do this, you must
@@ -13135,6 +13730,33 @@ something involving \arg\ somehow
@end itemize
+The @command{makeinfo} implementation also has limitations:
+
+@itemize
+@item
+@code{@@verbatim} and macros do not mix; for instance, you can't start
+a verbatim block inside a macro and end it outside.
+(@xref{verbatim}.) Starting any environment inside a macro and ending
+it outside may or may not work, for that matter.
+
+@item
+Macros that completely define macros are ok, but it's not possible to
+have incorrectly nested macro definitions. That is, @code{@@macro}
+and @code{@@end macro} (likewise for @code{@@rmacro}) must be
+correctly paired. For example, you cannot start a macro definition
+within a macro, and then end the nested definition outside the macro.
+
+@item
+@code{@@rmacro} is a kludge.
+
+@end itemize
+
+One more limitation is common to both implementations: white space is
+ignored at the beginnings of lines.
+
+Future major revisions of Texinfo may ease some of these limitations
+(by introducing a new macro syntax).
+
@node alias
@section @samp{@@alias @var{new}=@var{existing}}
@@ -13164,12 +13786,18 @@ You'd do this as follows:
@@alias moviecite = cite
@end example
-Macros do not always have the same effect due to vagaries of argument
-parsing. Also, aliases are much simpler to define than macros. So the
-command is not redundant. (It was also heavily used in the Jargon File!)
+Macros do not always have the same effect as aliases, due to vagaries
+of argument parsing. Also, aliases are much simpler to define than
+macros. So the command is not redundant. (It was also heavily used
+in the Jargon File!)
Aliases must not be recursive, directly or indirectly.
+It is not advisable to redefine any @TeX{} primitive, plain, or
+Texinfo command name as an alias. Unfortunately this is a very large
+set of names, and the possible resulting errors are completely random.
+
+
@node definfoenclose
@section @samp{definfoenclose}: Customized Highlighting
@cindex Highlighting, customized
@@ -13293,6 +13921,7 @@ print queue, and delete a job from the print queue.
* Cropmarks and Magnification:: How to print marks to indicate the size
of pages and how to print scaled up output.
* PDF Output:: Portable Document Format output.
+* Obtaining TeX:: How to Obtain @TeX{}.
@end menu
@node Use TeX
@@ -13316,8 +13945,8 @@ File}).
@cindex Formatting with @code{tex} and @code{texindex}
@cindex DVI file
-Format the Texinfo file with the shell command @code{tex} followed by
-the name of the Texinfo file. For example:
+You can format the Texinfo file with the shell command @code{tex}
+followed by the name of the Texinfo file. For example:
@example
tex foo.texi
@@ -13330,13 +13959,12 @@ any device (see the following sections).
@pindex texindex
The @code{tex} formatting command itself does not sort the indices; it
-writes an output file of unsorted index data. (The @code{texi2dvi}
-command automatically generates indices; @pxref{Format with texi2dvi,,
-Format with @code{texi2dvi}}.) To generate a printed index after
-running the @code{tex} command, you first need a sorted index to work
-from. The @code{texindex} command sorts indices. (The source file
-@file{texindex.c} comes as part of the standard Texinfo distribution,
-among other places.)@refill
+writes an output file of unsorted index data. To generate a printed
+index after running the @command{tex} command, you first need a sorted
+index to work from. The @command{texindex} command sorts indices.
+(The source file @file{texindex.c} comes as part of the standard
+Texinfo distribution, among other places.) (@command{texi2dvi} runs
+@command{tex} and @command{texindex} as necessary.)
@cindex Names of index files
@cindex Index file names
@@ -13374,9 +14002,9 @@ whose name is made by appending @samp{s} to the input file name. The
(@pxref{Printing Indices & Menus}). @code{texindex} does not alter the
raw index output file.
-After you have sorted the indices, you need to rerun the @code{tex}
-formatting command on the Texinfo file. This regenerates the DVI file,
-this time with up-to-date index entries.
+After you have sorted the indices, you need to rerun @code{tex} on the
+Texinfo file. This regenerates the DVI file, this time with
+up-to-date index entries.
Finally, you may need to run @code{tex} one more time, to get the page
numbers in the cross-references correct.
@@ -13444,10 +14072,10 @@ your file would look approximately like this:
@section Format with @code{texi2dvi}
@pindex texi2dvi @r{(shell script)}
-The @code{texi2dvi} command automatically runs both @code{tex} and
-@code{texindex} as many times as necessary to produce a DVI file with
-sorted indices and all cross-references resolved. It is therefore
-simpler than manually executing the
+The @code{texi2dvi} command automatically runs both @TeX{} and
+@command{texindex} as many times as necessary to produce a DVI file
+with sorted indices and all cross-references resolved. It is
+therefore simpler than manually executing the
@code{tex}---@code{texindex}---@code{tex}---@code{tex} sequence
described in the previous section.
@@ -13474,9 +14102,20 @@ formats, such as @code{@@smallbook} (@pxref{smallbook}),
(You can also do this on a site-wide basis with @file{texinfo.cnf};
@pxref{Preparing for TeX,,Preparing for @TeX{}}).
-@cindex La@TeX{}, processing with @command{texi2dvi}
-@command{texi2dvi} can also be used to process La@TeX{} files; simply
-run @samp{texi2dvi doc.tex}.
+With the @option{--pdf} option, @command{texi2dvi} produces PDF output
+instead of DVI (@pxref{PDF Output}), by running @command{pdftex}
+instead of @command{tex}. Alternatively, the command
+@command{texi2pdf} is an abbreviation for running @samp{texi2dvi --pdf}.
+
+@cindex @LaTeX{}, processing with @command{texi2dvi}
+@command{texi2dvi} can also be used to process @LaTeX{} files; simply
+run @samp{texi2dvi filename.ext}.
+
+@command{texi2dvi} will use @command{etex} (or @command{pdfetex}) if
+they are available; these extended versions of @TeX{} are not
+required, and the DVI (or PDF) output is identical, but they simplify
+the @TeX{} programming in some cases, and provide additional tracing
+information when debugging @file{texinfo.tex}.
For a list of other options, run @samp{texi2dvi --help}.
@@ -13542,7 +14181,7 @@ lpr -Qdvi -hprint.server.domain bison.dvi
@end example
@item Convert the DVI file to a Postscript or PCL file and send it to your
-local printer. @xref{dvips invocation,,, dvips, Dvips}, and the man
+local printer. @xref{Invoking Dvips,,, dvips, Dvips}, and the man
pages for @code{dvilj}, for detailed description of these tools. Once
the DVI file is converted to the format your local printer understands
directly, just send it to the appropriate port, usually @samp{PRN}.
@@ -13576,14 +14215,12 @@ texi2dvi gcc.texinfo
lpr -d gcc.dvi
@end group
@end example
-@ifinfo
-@xref{Texinfo Mode Printing}, for more information about formatting
-and printing in Texinfo mode.@refill
-@end ifinfo
+See the next section for more information about formatting
+and printing in Texinfo mode.
-@node Texinfo Mode Printing, Compile-Command, Within Emacs, Hardcopy
+@node Texinfo Mode Printing
@section Formatting and Printing in Texinfo Mode
@cindex Region printing in Texinfo mode
@cindex Format and print in Texinfo mode
@@ -13684,11 +14321,10 @@ tex-show-queue-command "lpq"
@end example
You can change the values of these variables with the @kbd{M-x
-edit-options} command (@pxref{Edit Options, , Editing Variable Values,
-emacs, The GNU Emacs Manual}), with the @kbd{M-x set-variable} command
-(@pxref{Examining, , Examining and Setting Variables, emacs, The GNU
-Emacs Manual}), or with your @file{.emacs} initialization file
-(@pxref{Init File, , , emacs, The GNU Emacs Manual}).@refill
+set-variable} command (@pxref{Examining, , Examining and Setting
+Variables, emacs, The GNU Emacs Manual}), or with your @file{.emacs}
+initialization file (@pxref{Init File, , , emacs, The GNU Emacs
+Manual}).
@cindex Customize Emacs package (@t{Development/Docs/Texinfo})
Beginning with version 20, GNU Emacs offers a user-friendly interface,
@@ -13762,13 +14398,14 @@ command, a title page, a copyright page, and permissions. Besides an
contents. (And of course most manuals contain a body of text as well.)
For more information, see:
+
@itemize @bullet
-@item @ref{settitle, , @code{@@settitle}}
-@item @ref{setchapternewpage, , @code{@@setchapternewpage}}
-@item @ref{Headings, ,Page Headings}
-@item @ref{Titlepage & Copyright Page}
-@item @ref{Printing Indices & Menus}
-@item @ref{Contents}
+@item @ref{settitle, , @code{@@settitle}}.
+@item @ref{setchapternewpage, , @code{@@setchapternewpage}}.
+@item @ref{Headings, ,Page Headings}.
+@item @ref{Titlepage & Copyright Page}.
+@item @ref{Printing Indices & Menus}.
+@item @ref{Contents}.
@end itemize
@@ -13776,8 +14413,6 @@ For more information, see:
@section Preparing for @TeX{}
@cindex Preparing for @TeX{}
@cindex @TeX{} input initialization
-@cindex @code{TEXINPUTS} environment variable
-@vindex TEXINPUTS
@cindex @b{.profile} initialization file
@cindex @b{.cshrc} initialization file
@cindex Initialization file for @TeX{} input
@@ -13786,7 +14421,10 @@ For more information, see:
@samp{\input texinfo} command on the first line reads. The
@file{texinfo.tex} file tells @TeX{} how to handle @@-commands; it is
included in all standard GNU distributions. The latest version is
-always available at @uref{ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex}.
+always available from the Texinfo source repository:
+@smalldisplay
+@uref{http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/doc/texinfo.tex?rev=HEAD}
+@end smalldisplay
@pindex texinfo.tex@r{, installing}
@@ -13819,6 +14457,7 @@ example, if @file{texinfo.cnf} contains the line @samp{@@afourpaper}
that page size in effect. If you have nothing to put in
@file{texinfo.cnf}, you do not need to create it.
+@cindex Environment variable @code{TEXINPUTS}
@vindex TEXINPUTS
If neither of the above locations for these system files suffice for
you, you can specify the directories explicitly. For
@@ -14142,27 +14781,83 @@ magnifications. Be prepared to experiment.
@cindex PDF output
@pindex pdftex
-You can generate a PDF output file from Texinfo source by using the
-@command{pdftex} program to process your file instead of plain
-@command{tex}. That is, run @samp{pdftex foo.texi} instead of @samp{tex
-foo.texi}, or give the @samp{--pdf} option to @command{texi2dvi}.
+The simplest way to generate PDF output from Texinfo source is to run
+the convenience script @command{texi2pdf}; this simply executes the
+@command{texi2dvi} script with the @option{--pdf} option
+(@pxref{Format with texi2dvi}). If for some reason you want to
+process by hand, simply run the @command{pdftex} program instead of
+plain @command{tex}. That is, run @samp{pdftex foo.texi} instead of
+@samp{tex foo.texi}.
@dfn{PDF} stands for `Portable Document Format'. It was invented by
Adobe Systems some years ago for document interchange, based on their
-PostScript language. A @uref{http://www.foolabs.com/xpdf/, PDF
-reader} for the X window system is freely available, as is the
-@uref{http://partners.adobe.com/asn/developer/technotes/, definition
-of the file format}. At present, there are no @samp{@@ifpdf} or
-@samp{@@pdf} commands as with the other output formats.
+PostScript language. Related links:
+
+@itemize
+@item
+GNU GV, a @uref{http://www.foolabs.com/xpdf/, Ghostscript-based PDF
+reader}. (It can also preview PostScript documents.)
-Despite the `portable' in the name, PDF files are nowhere near as
-portable in practice as the plain ASCII formats (Info, HTML) that
-Texinfo supports (DVI portability is arguable). They also tend to be
-much larger and do not support the bitmap fonts used by @TeX{} (by
-default) very well. Nevertheless, a PDF file does preserve an actual
-printed document on a screen as faithfully as possible, so it has its place.
+@item
+A freely available standalone @uref{http://www.foolabs.com/xpdf/,
+PDF reader} for the X window system.
-PDF support in Texinfo is fairly rudimentary.
+@item
+@uref{http://partners.adobe.com/asn/acrobat/sdk/public/docs/, PDF definition}.
+
+@end itemize
+
+At present, Texinfo does not provide
+@samp{@@ifpdf} or @samp{@@pdf} commands as for the other output
+formats, since PDF documents contain many internal links that would be
+hard or impossible to get right at the Texinfo source level.
+
+PDF files require special software to be displayed, unlike the plain
+ASCII formats (Info, HTML) that Texinfo supports. They also tend to
+be much larger than the DVI files output by @TeX{} by default.
+Nevertheless, a PDF file does define an actual typeset document in a
+self-contained file, so it has its place.
+
+
+@node Obtaining TeX
+@section How to Obtain @TeX{}
+@cindex Obtaining @TeX{}
+@cindex @TeX{}, how to obtain
+
+@c !!! Here is information about obtaining TeX. Update it whenever.
+@c !!! Also consider updating TeX.README on ftp.gnu.org.
+@c Updated by RJC on 1 March 1995, conversation with MacKay.
+@c Updated by kb@cs.umb.edu on 29 July 1996.
+@c Updated by kb@cs.umb.edu on 25 April 1997.
+@c Updated by kb@cs.umb.edu on 27 February 1998.
+@TeX{} is freely redistributable. You can obtain @TeX{} for Unix
+systems via anonymous ftp or on physical media. The core material
+consists of the Web2c @TeX{} distribution (@uref{http://tug.org/web2c}).
+
+Instructions for retrieval by anonymous ftp and information on other
+available distributions:
+@uref{http://tug.org/unixtex.ftp}.
+
+The Free Software Foundation provides a core distribution on its Source
+Code CD-ROM suitable for printing Texinfo manuals. To order it, contact:
+
+@display
+@group
+Free Software Foundation, Inc.
+59 Temple Place Suite 330
+Boston, MA @ @ 02111-1307
+USA
+Telephone: @w{+1-617-542-5942}
+Fax: (including Japan) @w{+1-617-542-2652}
+Free Dial Fax (in Japan):
+@w{ } @w{ } @w{ } 0031-13-2473 (KDD)
+@w{ } @w{ } @w{ } 0066-3382-0158 (IDC)
+Electronic mail: @code{gnu@@gnu.org}
+@end group
+@end display
+
+Many other @TeX{} distributions are available; see
+@uref{http://tug.org/}.
@node Creating and Installing Info Files
@@ -14203,7 +14898,6 @@ For information on installing the Info file in the Info system,
* Batch Formatting:: How to format for Info in Emacs Batch mode.
* Tag and Split Files:: How tagged and split files help Info
to run better.
-* Generating HTML:: Generating HTML output with makeinfo.
@end menu
@@ -14219,17 +14913,18 @@ that are too small to run Emacs. You can run @code{makeinfo} in any one
of three ways: from an operating system shell, from a shell inside
Emacs, or by typing the @kbd{C-c C-m C-r} or the @kbd{C-c C-m C-b}
command in Texinfo mode in Emacs.
-@refill
The @code{texinfo-format-region} and the @code{texinfo-format-buffer}
commands are useful if you cannot run @code{makeinfo}. Also, in some
circumstances, they format short regions or buffers more quickly than
-@code{makeinfo}.@refill
+@code{makeinfo}.
+
@node Invoking makeinfo
@subsection Running @code{makeinfo} from a Shell
+@pindex makeinfo
-To create an Info file from a Texinfo file, type @code{makeinfo}
+To create an Info file from a Texinfo file, invoke @command{makeinfo}
followed by the name of the Texinfo file. Thus, to create the Info
file for Bison, type the following to the shell:
@@ -14237,19 +14932,10 @@ file for Bison, type the following to the shell:
makeinfo bison.texinfo
@end example
-(You can run a shell inside Emacs by typing @kbd{M-x shell}.)@refill
-
-@ifinfo
-Sometimes you will want to specify options. For example, if you wish
-to discover which version of @code{makeinfo} you are using,
-type:@refill
-
-@example
-makeinfo --version
-@end example
+(You can run a shell inside Emacs by typing @kbd{M-x shell}.)
-@xref{makeinfo options}, for more information.
-@end ifinfo
+@command{makeinfo} has many options to control its actions and output;
+see the next section.
@node makeinfo options
@@ -14257,15 +14943,17 @@ makeinfo --version
@cindex @code{makeinfo} options
@cindex Options for @code{makeinfo}
-The @code{makeinfo} command takes a number of options. Most often,
-options are used to set the value of the fill column and specify the
-footnote style. Each command line option is a word preceded by
-@samp{--} or a letter preceded by @samp{-}. You can use abbreviations
-for the long option names as long as they are unique.@refill
+The @command{makeinfo} program accepts many options. Perhaps the most
+commonly needed are those that change the output format. By default,
+@command{makeinfo} outputs Info files.
+
+Each command line option is a word preceded by @samp{--} or a letter
+preceded by @samp{-}. You can use abbreviations for the long option
+names as long as they are unique.
For example, you could use the following shell command to create an Info
file for @file{bison.texinfo} in which each line is filled to only 68
-columns:@refill
+columns:
@example
makeinfo --fill-column=68 bison.texinfo
@@ -14279,7 +14967,7 @@ makeinfo --no-split --fill-column=70 @dots{}
@noindent
This would keep the Info file together as one possibly very long
-file and would also set the fill column to 70.@refill
+file and would also set the fill column to 70.
The options are:
@@ -14307,7 +14995,7 @@ input.
@item --docbook
@opindex --docbook
-Generate DocBook output rather than Info.
+Generate Docbook output rather than Info.
@item --enable-encoding
@opindex --enable-encoding
@@ -14377,21 +15065,22 @@ not given, the current directory @file{.} is appended. Note that
usual path separator character (@samp{:} on Unix, @samp{;} on
MS-DOS/MS-Windows).
-@item --ifhtml
-@itemx --ifinfo
-@itemx --ifplaintext
-@itemx --iftex
-@itemx --ifxml
+@item --ifdocbook
+@opindex --ifdocbook
+@itemx --ifhtml
@opindex --ifhtml
+@itemx --ifinfo
@opindex --ifinfo
+@itemx --ifplaintext
@opindex --ifplaintext
+@itemx --iftex
@opindex --iftex
+@itemx --ifxml
@opindex --ifxml
For the specified format, process @samp{@@if@var{format}} and
@samp{@@@var{format}} commands even if not generating the given output
format. For instance, if @option{--iftex} is specified, then
-@samp{@@iftex} and @samp{@@tex} blocks will be read. This can be useful
-when postprocessing the output.
+@samp{@@iftex} and @samp{@@tex} blocks will be read.
@item --macro-expand=@var{file}
@itemx -E @var{file}
@@ -14400,21 +15089,23 @@ when postprocessing the output.
Output the Texinfo source with all the macros expanded to the named
file. Normally, the results of macro expansion are used internally by
@code{makeinfo} and then discarded. This option is used by
-@command{texi2dvi} if you are using an old version of @file{texinfo.tex}
-that does not support @code{@@macro}.
+@command{texi2dvi}.
@item --no-headers
+@item --plaintext
@opindex --no-headers
+@opindex --plaintext
@cindex Plain text output
@cindex ASCII text output
@cindex Generating plain text files
@cindex @file{INSTALL} file, generating
@cindex Node separators, omitting
@cindex Menus, omitting
-For Info output, do not include menus or node separator lines in the
-output. This results in a simple plain text file that you can (for
-example) send in email without complications, or include in a
-distribution (as in an @file{INSTALL} file).
+Do not include menus or node separator lines in the output, and
+implicitly @option{--enable-encoding} (see above). This results in a
+simple plain text file that you can (for example) send in email
+without complications, or include in a distribution (as in an
+@file{INSTALL} file).
@cindex Navigation links, omitting
For HTML output, likewise omit menus. And if @samp{--no-split} is also
@@ -14422,23 +15113,37 @@ specified, do not include a navigation links at the top of each node
(these are never included in the default case of split output).
@xref{Generating HTML}.
-In both cases, write to standard output by default (can still be
-overridden by @option{-o}).
+In both cases, ignore @code{@@setfilename} and write to standard
+output by default---can be overridden with @option{-o}.
-@item --no-ifhtml
-@itemx --no-ifinfo
-@itemx --no-ifplaintext
-@itemx --no-iftex
-@itemx --no-ifxml
+@item --no-ifdocbook
+@opindex --no-ifdocbook
+@itemx --no-ifhtml
@opindex --no-ifhtml
+@itemx --no-ifinfo
@opindex --no-ifinfo
+@itemx --no-ifplaintext
@opindex --no-ifplaintext
+@itemx --no-iftex
@opindex --no-iftex
+@itemx --no-ifxml
@opindex --no-ifxml
Do not process @samp{@@if@var{format}} and @samp{@@@var{format}}
-commands even if generating the given format. For instance, if
-@option{--no-ifhtml} is specified, then @samp{@@ifhtml} and
-@samp{@@html} blocks will not be read.
+commands, and do process @samp{@@ifnot@var{format}}, even if
+generating the given format. For instance, if @option{--no-ifhtml} is
+specified, then @samp{@@ifhtml} and @samp{@@html} blocks will not be
+read, and @samp{@@ifnothtml} blocks will be.
+
+@item --no-number-footnotes
+@opindex --no-number-footnotes
+Suppress automatic footnote numbering. By default, @code{makeinfo}
+numbers each footnote sequentially in a single node, resetting the
+current footnote number to 1 at the start of each node.
+
+@item --no-number-sections
+@opindex --no-number-sections
+Do not output chapter, section, and appendix numbers.
+You need to specify this if your manual is not hierarchically-structured.
@item --no-split
@opindex --no-split
@@ -14454,28 +15159,21 @@ For HTML output, each file contains one node (@pxref{Generating HTML}).
@opindex --no-pointer-validate
@opindex --no-validate
@cindex Pointer validation, suppressing
-Suppress the pointer-validation phase of @code{makeinfo}. This can also
-be done with the @code{@@novalidate} command (@pxref{Use TeX,,Use
-@TeX{}}). Normally, after a Texinfo file is processed, some consistency
-checks are made to ensure that cross references can be resolved, etc.
-@xref{Pointer Validation}.
+Suppress the pointer-validation phase of @code{makeinfo}---a dangerous
+thing to do. This can also be done with the @code{@@novalidate}
+command (@pxref{Use TeX,,Use @TeX{}}). Normally, after a Texinfo file
+is processed, some consistency checks are made to ensure that cross
+references can be resolved, etc. @xref{Pointer Validation}.
@item --no-warn
@opindex --no-warn
-Suppress warning messages (but @emph{not} error messages). You might
-want this if the file you are creating has examples of Texinfo cross
-references within it, and the nodes that are referenced do not actually
-exist.
+Suppress warning messages (but @emph{not} error messages).
@item --number-sections
@opindex --number-sections
Output chapter, section, and appendix numbers as in printed manuals.
-
-@item --no-number-footnotes
-@opindex --no-number-footnotes
-Suppress automatic footnote numbering. By default, @code{makeinfo}
-numbers each footnote sequentially in a single node, resetting the
-current footnote number to 1 at the start of each node.
+This is the default. It works only with hierarchically-structured
+manuals.
@item --output=@var{file}
@itemx -o @var{file}
@@ -14549,6 +15247,18 @@ Generate XML output rather than Info.
@end table
+@vindex TEXINFO_OUTPUT_FORMAT
+@cindex Environment variable @code{TEXINFO_OUTPUT_FORMAT}
+@command{makeinfo} also reads the environment variable
+@env{TEXINFO_OUTPUT_FORMAT} to determine the output format, if not
+overridden by a command line option. The possible values are:
+
+@example
+docbook html info plaintext xml
+@end example
+
+If not set, Info output is the default.
+
@node Pointer Validation
@subsection Pointer Validation
@@ -14596,7 +15306,8 @@ cross-reference.@refill
@cindex @@-commands in @@node, limited support
Some Texinfo documents might fail during the validation phase because
they use commands like @code{@@value} and @code{@@definfoenclose} in
-node definitions and cross-references inconsistently. Consider the
+node definitions and cross-references inconsistently. (Your best bet
+is to avoid using @@-commands in node names.) Consider the
following example:
@example
@@ -14707,8 +15418,8 @@ Printing}.)@refill
You can specify options for @code{makeinfo} by setting the
@code{makeinfo-options} variable with either the @kbd{M-x
-edit-options} or the @kbd{M-x set-variable} command, or by setting the
-variable in your @file{.emacs} initialization file.@refill
+customize} or the @kbd{M-x set-variable} command, or by setting the
+variable in your @file{.emacs} initialization file.
For example, you could write the following in your @file{.emacs} file:@refill
@@ -14720,28 +15431,25 @@ For example, you could write the following in your @file{.emacs} file:@refill
@end group
@end example
+@noindent
@c If you write these three cross references using xref, you see
@c three references to the same named manual, which looks strange.
@iftex
For more information, see @ref{makeinfo options, , Options for
-@code{makeinfo}}, as well as ``Editing Variable Values,'' ``Examining
+@code{makeinfo}}, as well as ``Easy Customization Interface,'' ``Examining
and Setting Variables,'' and ``Init File'' in @cite{The GNU Emacs
Manual}.
@end iftex
-@noindent
-@ifinfo
+@ifnottex
For more information, see@*
-@ref{Edit Options, , Editing Variable Values, emacs, The GNU Emacs Manual},@*
+@ref{Easy Customization, , Easy Customization Interface, emacs, The GNU Emacs Manual},@*
@ref{Examining, , Examining and Setting Variables, emacs, The GNU Emacs Manual},@*
@ref{Init File, , , emacs, The GNU Emacs Manual}, and@*
@ref{makeinfo options, , Options for @code{makeinfo}}.
-@end ifinfo
+@end ifnottex
@node texinfo-format commands
-@comment node-name, next, previous, up
@subsection The @code{texinfo-format@dots{}} Commands
-@findex texinfo-format-region
-@findex texinfo-format-buffer
In GNU Emacs in Texinfo mode, you can format part or all of a Texinfo
file with the @code{texinfo-format-region} command. This formats the
@@ -14758,13 +15466,13 @@ Texinfo file.@refill
@table @kbd
@item C-c C-e C-r
@itemx @code{texinfo-format-region}
-Format the current region for Info.
@findex texinfo-format-region
+Format the current region for Info.
@item C-c C-e C-b
@itemx @code{texinfo-format-buffer}
-Format the current buffer for Info.
@findex texinfo-format-buffer
+Format the current buffer for Info.
@end table
The @code{texinfo-format-region} and @code{texinfo-format-buffer}
@@ -14782,8 +15490,8 @@ provides better error checking (@pxref{makeinfo in Emacs}).@refill
You can format Texinfo files for Info using @code{batch-texinfo-format}
and Emacs Batch mode. You can run Emacs in Batch mode from any shell,
-including a shell inside of Emacs. (@xref{Command Switches, , Command
-Line Switches and Arguments, emacs, The GNU Emacs Manual}.)@refill
+including a shell inside of Emacs. (@xref{Command Arguments,,,
+emacs, The GNU Emacs Manual}.)
Here is a shell command to format all the files that end in
@file{.texinfo} in the current directory:
@@ -14892,172 +15600,7 @@ you may want to run the @code{Info-validate} command. (The
need @code{Info-validate}.) However, you cannot run the @kbd{M-x
Info-validate} node-checking command on indirect files. For
information on how to prevent files from being split and how to
-validate the structure of the nodes, see @ref{Using
-Info-validate}.@refill
-
-
-@node Generating HTML
-@subsection Generating HTML
-@cindex HTML, generating
-
-Besides generating output in the Info format, you can use the
-@samp{--html} option to @command{makeinfo} to generate output in HTML
-format, for use by web browsers (for example).
-
-@menu
-* HTML Translation:: Details of the HTML output.
-* HTML Splitting:: How HTML output is split.
-* HTML CSS:: HTML output and Cascading Style Sheets.
-@end menu
-
-@node HTML Translation
-@subsubsection HTML Translation
-
-@command{makeinfo} will include segments of Texinfo source between
-@code{@@ifhtml} and @code{@@end ifhtml} in the HTML output (but not
-any of the other conditionals, by default). Source between
-@code{@@html} and @code{@@end html} is passed without change to the
-output (i.e., suppressing the normal escaping of input @samp{<},
-@samp{>} and @samp{&} characters which have special significance in
-HTML). @xref{Conditional Commands}.
-
-@opindex --footnote-style@r{, ignored in HTML output}
-The @option{--footnote-style} option is currently ignored for HTML output;
-footnotes are always linked to the end of the output file.
-
-@cindex Navigation bar, in HTML output
-By default, a navigation bar is inserted at the start of each node,
-analogous to Info output. The @samp{--no-headers} option suppresses
-this if used with @samp{--no-split}. Header @code{<link>} elements in
-split output can support info-like navigation with browsers like Lynx
-and @w{Emacs W3} which implement this HTML@tie{}1.0 feature.
-
-@cindex HTML output, browser compatibility of
-The HTML generated is mostly standard (i.e., HTML@tie{}2.0, RFC-1866).
-The exception is that HTML 3.2 tables are generated from the
-@code{@@multitable} command, but tagged to degrade as well as possible
-in browsers without table support. The HTML@tie{}4 @samp{lang}
-attribute on the @samp{<html>} attribute is also used. (Please report
-output from an error-free run of @code{makeinfo} which has browser
-portability problems as a bug.)
-
-
-@node HTML Splitting
-@subsubsection HTML Splitting
-
-@cindex Split HTML output
-@cindex HTML output, split
-
-By default, @command{makeinfo} splits HTML output into one output file
-per Texinfo source node.
-
-When splitting, the HTML output files are written into a subdirectory.
-The subdirectory is named according to the name from
-@code{@@setfilename} with any extension removed; for example, HTML
-output for @code{@@setfilename emacs.info} would be written into a
-subdirectory named @samp{emacs}. If that directory cannot be created
-for any reason, then @samp{.html} is appended to the directory name, as
-in @samp{emacs.html} (this is necessary because sometimes the info file
-is named without an extension, e.g., @samp{texinfo}). If the
-@samp{@var{name}.html} directory can't be created either,
-@code{makeinfo} gives up. In any case, the top-level output file within
-the directory is always named @samp{index.html}.
-
-Monolithic output (@code{--no-split}) is named according to
-@code{@@setfilename} or @code{--outfile}.
-
-@samp{@@xref} commands to other documents are generated assuming the
-other document is available in split HTML form, and installed in the
-same HTML documentation tree, at @file{../<info-document>/}.
-Cross-document node references are not supported in monolithic HTML.
-
-
-@node HTML CSS
-@subsubsection HTML CSS
-@cindex HTML, and CSS
-@cindex CSS, and HTML output
-@cindex Cascading Style Sheets, and HTML output
-
-Cascading Style Sheets (CSS for short) is a network standard for
-influencing the display of HTML documents:
-@uref{http://www.w3.org/Style/CSS/}.
-
-By default, @command{makeinfo} includes a few simple CSS commands to
-better implement the appearance of some of the environments. Here is
-a couple of them:
-
-@example
-pre.display @{ font-family:inherit @}
-pre.smalldisplay @{ font-family:inherit; font-size:smaller @}
-@end example
-
-A full explanation of CSS is (far) beyond this manual; please see the
-references above. In brief, however, this specification tells the web
-browser to use a `smaller' font size for @code{@@smalldisplay} text,
-and to use the `inherited' font (generally a regular roman typeface)
-for both @code{@@smalldisplay} and @code{@@display}. By default, the
-HTML @samp{<pre>} command uses a monospaced font.
-
-You can influence the CSS in the HTML output with the
-@option{--css-include=@var{file}} option to @command{makeinfo}. This
-includes the contents @var{file} in the HTML output, as you might
-expect. However, the details are somewhat tricky, to provide maximum
-flexibility.
-
-@cindex @@import specifications, in CSS files
-The CSS file may begin with so-called @samp{@@import} directives,
-which link to external CSS specifications for browsers to use when
-interpreting the document. Again, a full description is beyond our
-scope here, but we'll describe how they work syntactically, so we can
-explain how @command{makeinfo} handles them.
-
-@cindex Comments, in CSS files
-There can be more than one @samp{@@import}, but they have to come
-first in the file, with only whitespace and comments interspersed, no
-normal definitions. (Technical exception: an @samp{@@charset}
-directive may precede the @samp{@@import}'s. This does not alter
-@command{makeinfo}'s behavior.) Comments in CSS files are delimited
-by @samp{/* ... */}, as in C. An @samp{@@import} directive must be in
-one of these two forms:
-
-@example
-@@import url(http://example.org/foo.css);
-@@import "http://example.net/bar.css";
-@end example
-
-As far as @command{makeinfo} is concerned, the crucial characters are
-the @samp{@@} at the beginning and the semicolon terminating the
-directive. CSS provides for a number of different
-@samp{@@}-directives, and @command{makeinfo} treats them all the same
-way. When reading the CSS file, it simply copies any such
-@samp{@@}-directive into the output, as follows:
-
-@itemize
-@item If @var{file} contains only normal CSS declarations, it is
-included after @command{makeinfo}'s default CSS, thus overriding it.
-
-@item If @var{file} begins with @samp{@@import} specifications (see
-below), then the @samp{import}'s are included first (they have to come
-first, according to the standard), and then @command{makeinfo}'s
-default CSS is included. If you need to override @command{makeinfo}'s
-defaults from an @samp{@@import}, you can do so with the @samp{!
-important} CSS construct, as in:
-@example
-pre.smallexample @{ font-size: inherit ! important @}
-@end example
-
-@item If @var{file} contains both @samp{@@import} and inline CSS
-specifications, the @samp{@@import}'s are included first, then
-@command{makeinfo}'s defaults, and lastly the inline CSS from
-@var{file}.
-@end itemize
-
-If the CSS file is malformed or erroneous, @command{makeinfo}'s output
-is unspecified. @command{makeinfo} does not try to interpret the
-meaning of the CSS file in any way; it just looks for the special
-@samp{@@} and @samp{;} characters and blindly copies the text into the
-output. Comments in the CSS file may or may not be included in the
-output.
+validate the structure of the nodes, see @ref{Using Info-validate}.
@node Installing an Info File
@@ -15230,6 +15773,7 @@ file in @file{/home/bob/info}. Thus, Info will list the
to recompose the @file{dir} file.
@vindex INFOPATH
+@cindex Environment variable @code{INFOPATH}
Finally, you can tell Info where to look by setting the @code{INFOPATH}
environment variable in your shell startup file, such as @file{.cshrc},
@file{.profile} or @file{autoexec.bat}. If you use a Bourne-compatible
@@ -15278,7 +15822,7 @@ merges any files named @file{dir} in any directory listed in the
@env{INFOPATH} variable into a single menu presented to you in the node
called @samp{(dir)Top}.
-@cindex colon, last in @env{INFOPATH}
+@cindex Colon, last in @env{INFOPATH}
However you set @env{INFOPATH}, if its last character is a
colon@footnote{On MS-DOS/MS-Windows systems, use semi-colon instead.}, this
is replaced by the default (compiled-in) path. This gives you a way to
@@ -15356,11 +15900,11 @@ each usage specifies the `current' category; any subsequent
@cindex Free Software Directory
@cindex Dir categories, choosing
@cindex Categories, choosing
-When choosing the categories for @code{@@dircategory}, we recommend
-consulting the @uref{Free Sofware Directory,
-http://www.gnu.org/directory}. If your program is not listed there, or
-listed incorrectly or incompletely, please report the situation to the
-directory maintainers (@email{bug-directory@@gnu.org}) so that the
+When choosing a category name for the @code{@@dircategory} command, we
+recommend consulting the @uref{http://www.gnu.org/directory,
+Free Software Directory}. If your program is not listed there,
+or listed incorrectly or incompletely, please report the situation to
+the directory maintainers (@email{bug-directory@@gnu.org}) so that the
category names can be kept in sync.
Here are a few examples (see the @file{util/dir-example} file in the
@@ -15458,7 +16002,7 @@ Equivalent to using the @var{info-file} argument.
@itemx -D @var{dir}
@opindex --info-dir=@var{dir}
@opindex -D @var{dir}
-Specify the directory where @file{dir} resides.
+Specify the directory where the directory file @file{dir} resides.
Equivalent to @samp{--dir-file=@var{dir}/dir}.
@item --item=@var{text}
@@ -15489,12 +16033,619 @@ information in the Info file itself.
@itemx -V
@opindex --version
@opindex -V
-@cindex version number, for install-info
+@cindex Version number, for install-info
Display version information and exit successfully.
@end table
+@node Generating HTML
+@chapter Generating HTML
+@cindex HTML output
+
+@command{makeinfo} generates Info output by default, but given the
+@option{--html} option, it will generate HTML, for web browsers and
+other programs. This chapter gives some details on such HTML output.
+
+
+@command{makeinfo} can also write in XML and Docbook format, but we do
+not as yet describe these further. @xref{Output Formats}, for a brief
+overview of all the output formats.
+
+@menu
+* HTML Translation:: Details of the HTML output.
+* HTML Splitting:: How HTML output is split.
+* HTML CSS:: Influencing HTML output with Cascading Style Sheets.
+* HTML Xref:: Cross-references in HTML output.
+@end menu
+
+
+@node HTML Translation
+@section HTML Translation
+
+@command{makeinfo} will include segments of Texinfo source between
+@code{@@ifhtml} and @code{@@end ifhtml} in the HTML output (but not
+any of the other conditionals, by default). Source between
+@code{@@html} and @code{@@end html} is passed without change to the
+output (i.e., suppressing the normal escaping of input @samp{<},
+@samp{>} and @samp{&} characters which have special significance in
+HTML). @xref{Conditional Commands}.
+
+@opindex --footnote-style@r{, ignored in HTML output}
+The @option{--footnote-style} option is currently ignored for HTML output;
+footnotes are always linked to the end of the output file.
+
+@cindex Navigation bar, in HTML output
+By default, a navigation bar is inserted at the start of each node,
+analogous to Info output. The @samp{--no-headers} option suppresses
+this if used with @samp{--no-split}. Header @code{<link>} elements in
+split output can support info-like navigation with browsers like Lynx
+and @w{Emacs W3} which implement this HTML@tie{}1.0 feature.
+
+@cindex HTML output, browser compatibility of
+The HTML generated is mostly standard (i.e., HTML@tie{}2.0, RFC-1866).
+One exception is that HTML@tie{}3.2 tables are generated from the
+@code{@@multitable} command, but tagged to degrade as well as possible
+in browsers without table support. The HTML@tie{}4 @samp{lang}
+attribute on the @samp{<html>} attribute is also used. (Please report
+output from an error-free run of @code{makeinfo} which has browser
+portability problems as a bug.)
+
+
+@node HTML Splitting
+@section HTML Splitting
+@cindex Split HTML output
+@cindex HTML output, split
+
+When splitting output (which is the default), @command{makeinfo}
+writes HTML output into (generally) one output file per Texinfo source
+@code{@@node}.
+
+The output file name is the node name with special characters replaced
+by @samp{-}'s, so it can work as a filename. In the unusual case of
+two different nodes having the same name after this treatment, they
+are written consecutively to the same file, with HTML anchors so each
+can be referred to separately. If @command{makeinfo} is run on a
+system which does not distinguish case in filenames, nodes which are
+the same except for case will also be folded into the same output
+file.
+
+When splitting, the HTML output files are written into a subdirectory,
+with the name chosen as follows:
+@enumerate
+@item
+@command{makeinfo} first tries the subdirectory with the base name
+from @code{@@setfilename} (that is, any extension is removed). For
+example, HTML output for @code{@@setfilename gcc.info} would be
+written into a subdirectory named @samp{gcc}.
+
+@item
+If that directory cannot be created for any reason, then
+@command{makeinfo} tries appending @samp{.html} to the directory name.
+For example, output for @code{@@setfilename texinfo} would be written
+to @samp{texinfo.html}.
+
+@item
+If the @samp{@var{name}.html} directory can't be
+created either, @code{makeinfo} gives up.
+
+@end enumerate
+
+@noindent In any case, the top-level output file within the directory
+is always named @samp{index.html}.
+
+Monolithic output (@code{--no-split}) is named according to
+@code{@@setfilename} (with any @samp{.info} extension is replaced with
+@samp{.html}) or @code{--output} (the argument is used literally).
+
+
+@node HTML CSS
+@section HTML CSS
+@cindex HTML, and CSS
+@cindex CSS, and HTML output
+@cindex Cascading Style Sheets, and HTML output
+
+Cascading Style Sheets (CSS for short) is an Internet standard for
+influencing the display of HTML documents: see
+@uref{http://www.w3.org/Style/CSS/}.
+
+By default, @command{makeinfo} includes a few simple CSS commands to
+better implement the appearance of some of the environments. Here
+are two of them, as an example:
+
+@example
+pre.display @{ font-family:inherit @}
+pre.smalldisplay @{ font-family:inherit; font-size:smaller @}
+@end example
+
+A full explanation of CSS is (far) beyond this manual; please see the
+reference above. In brief, however, this specification tells the web
+browser to use a `smaller' font size for @code{@@smalldisplay} text,
+and to use the `inherited' font (generally a regular roman typeface)
+for both @code{@@smalldisplay} and @code{@@display}. By default, the
+HTML @samp{<pre>} command uses a monospaced font.
+
+You can influence the CSS in the HTML output with the
+@option{--css-include=@var{file}} option to @command{makeinfo}. This
+includes the contents @var{file} in the HTML output, as you might
+expect. However, the details are somewhat tricky, as described in the
+following, to provide maximum flexibility.
+
+@cindex @@import specifications, in CSS files
+The CSS file may begin with so-called @samp{@@import} directives,
+which link to external CSS specifications for browsers to use when
+interpreting the document. Again, a full description is beyond our
+scope here, but we'll describe how they work syntactically, so we can
+explain how @command{makeinfo} handles them.
+
+@cindex Comments, in CSS files
+There can be more than one @samp{@@import}, but they have to come
+first in the file, with only whitespace and comments interspersed, no
+normal definitions. (Technical exception: an @samp{@@charset}
+directive may precede the @samp{@@import}'s. This does not alter
+@command{makeinfo}'s behavior, it just copies the @samp{@@charset} if
+present.) Comments in CSS files are delimited by @samp{/* ... */}, as
+in C. An @samp{@@import} directive must be in one of these two forms:
+
+@example
+@@import url(http://example.org/foo.css);
+@@import "http://example.net/bar.css";
+@end example
+
+As far as @command{makeinfo} is concerned, the crucial characters are
+the @samp{@@} at the beginning and the semicolon terminating the
+directive. When reading the CSS file, it simply copies any such
+@samp{@@}-directive into the output, as follows:
+
+@itemize
+@item If @var{file} contains only normal CSS declarations, it is
+included after @command{makeinfo}'s default CSS, thus overriding it.
+
+@item If @var{file} begins with @samp{@@import} specifications (see
+below), then the @samp{import}'s are included first (they have to come
+first, according to the standard), and then @command{makeinfo}'s
+default CSS is included. If you need to override @command{makeinfo}'s
+defaults from an @samp{@@import}, you can do so with the @samp{!@:
+important} CSS construct, as in:
+@example
+pre.smallexample @{ font-size: inherit ! important @}
+@end example
+
+@item If @var{file} contains both @samp{@@import} and inline CSS
+specifications, the @samp{@@import}'s are included first, then
+@command{makeinfo}'s defaults, and lastly the inline CSS from
+@var{file}.
+
+@item Any @@-directive other than @samp{@@import} and @samp{@@charset}
+is treated as a CSS declaration, meaning @command{makeinfo} includes
+its default CSS and then the rest of the file.
+
+@end itemize
+
+If the CSS file is malformed or erroneous, @command{makeinfo}'s output
+is unspecified. @command{makeinfo} does not try to interpret the
+meaning of the CSS file in any way; it just looks for the special
+@samp{@@} and @samp{;} characters and blindly copies the text into the
+output. Comments in the CSS file may or may not be included in the
+output.
+
+
+@node HTML Xref
+@section HTML Cross-references
+@cindex HTML cross-references
+@cindex Cross-references, in HTML output
+
+Cross-references between Texinfo manuals in HTML format amount, in the
+end, to a standard HTML @code{<a>} link, but the details are
+unfortunately complex. This section describes the algorithm used in
+detail, so that Texinfo can cooperate with other programs, such as
+@command{texi2html}, by writing mutually compatible HTML files.
+
+This algorithm may or may not be used for links @emph{within} HTML
+output for a Texinfo file. Since no issues of compatibility arise in
+such cases, we do not need to specify this.
+
+We try to support references to such ``external'' manuals in both
+monolithic and split forms. A @dfn{monolithic} (mono) manual is
+entirely contained in one file, and a @dfn{split} manual has a file
+for each node. (@xref{HTML Splitting}.)
+
+@cindex Dumas, Patrice
+Acknowledgement: this algorithm was primarily devised by Patrice Dumas
+in 2003--04.
+
+@menu
+* Link Basics: HTML Xref Link Basics.
+* Node Expansion: HTML Xref Node Name Expansion.
+* Command Expansion: HTML Xref Command Expansion.
+* 8-bit Expansion: HTML Xref 8-bit Character Expansion.
+* Mismatch: HTML Xref Mismatch.
+@end menu
+
+
+@node HTML Xref Link Basics
+@subsection HTML Cross-reference Link Basics
+@cindex HTML cross-reference link basics
+
+For our purposes, an HTML link consists of four components: a host
+name, a directory part, a file part, and a target part. We
+always assume the @code{http} protocol. For example:
+
+@example
+http://@var{host}/@var{dir}/@var{file}.html#@var{target}
+@end example
+
+The information to construct a link comes from the node name and
+manual name in the cross-reference command in the Texinfo source
+(@pxref{Cross References}), and from @dfn{external information}, which
+is currently simply hardwired. In the future, it may come from an
+external data file.
+
+We now consider each part in turn.
+
+The @var{host} is hardwired to be the local host. This could either
+be the literal string @samp{localhost}, or, according to the rules for
+HTML links, the @samp{http://localhost/} could be omitted entirely.
+
+The @var{dir} and @var{file} parts are more complicated, and depend on
+the relative split/mono nature of both the manual being processed and
+the manual that the cross-reference refers to. The underlying idea is
+that there is one directory for Texinfo manuals in HTML, and each
+manual is either available as a monolithic file @file{manual.html}, or a
+split subdirectory @file{manual/*.html}. Here are the cases:
+
+@itemize @bullet
+@item
+If the present manual is split, and the referent manual is also split,
+the directory is @samp{../@var{referent/}} and the file is the
+expanded node name (described later).
+
+@item
+If the present manual is split, and the referent manual is mono, the
+directory is @samp{../} and the file is @file{@var{referent}.html}.
+
+@item
+If the present manual is mono, and the referent manual is split, the
+directory is @file{@var{referent}/} and the file is the expanded node
+name.
+
+@item
+If the present manual is mono, and the referent manual is also mono,
+the directory is @file{./} (or just the empty string), and the file is
+@file{@var{referent}.html}.
+
+@end itemize
+
+One exception: the algorithm for node name expansion prefixes the
+string @samp{g_t} when the node name begins with a non-letter. This
+kludge (due to XHTML rules) is not necessary for filenames, and is
+therefore omitted.
+
+Any directory part in the filename argument of the source
+cross-reference command is ignored. Thus, @code{@@xref@{,,,../foo@}}
+and @code{@@xref@{,,,foo@}} both use @samp{foo} as the manual name.
+This is because any such attempted hardwiring of the directory is very
+unlikely to be useful for both Info and HTML output.
+
+Finally, the @var{target} part is always the expanded node name.
+
+Whether the present manual is split or mono is determined by user
+option; @command{makeinfo} defaults to split, with the
+@option{--no-split} option overriding this.
+
+Whether the referent manual is split or mono is another bit of the
+external information. For now, @command{makeinfo} simply assumes the
+referent manual is the same as the present manual.
+
+There can be a mismatch between the format of the referent manual that
+the generating software assumes, and the format it's actually present
+in. @xref{HTML Xref Mismatch}.
+
+
+@node HTML Xref Node Name Expansion
+@subsection HTML Cross-reference Node Name Expansion
+@cindex HTML cross-reference node name expansion
+@cindex node name expansion, in HTML cross-references
+@cindex expansion, of node names in HTML cross-references
+
+As mentioned in the previous section, the key part of the HTML
+cross-reference algorithm is the conversion of node names in the
+Texinfo source into strings suitable for XHTML identifiers and
+filenames. The restrictions are similar for each: plain ASCII
+letters, numbers, and the @samp{-} and @samp{_} characters are all
+that can be used. (Although HTML anchors can contain most characters,
+XHTML is more restrictive.)
+
+Cross-references in Texinfo can actually refer either to nodes or
+anchors (@pxref{anchor}), but anchors are treated identically to nodes
+in this context, so we'll continue to say ``node'' names for
+simplicity.
+
+(@@-commands and 8-bit characters are not presently handled by
+@command{makeinfo} for HTML cross-references. See the next section.)
+
+A special exception: the Top node (@pxref{The Top Node}) is always
+mapped to the file @file{index.html}, to match web server software.
+However, the HTML @emph{target} is @samp{Top}. Thus (in the split case):
+
+@example
+@@xref@{Top, Introduction,, emacs, The GNU Emacs Manual@}.
+@result{} <a href="emacs/index.html#Top">
+@end example
+
+@enumerate
+@item
+The standard ASCII letters (a-z and A-Z) are not modified. All other
+characters are changed as specified below.
+
+@item
+The standard ASCII numbers (0-9) are not modified except when a number
+is the first character of the node name. In that case, see below.
+
+@item
+Multiple consecutive space, tab and newline characters are transformed
+into just one space. (It's not possible to have newlines in node
+names with the current implementation, but we specify it anyway, just
+in case.)
+
+@item
+Leading and trailing spaces are removed.
+
+@item
+After the above has been applied, each remaining space character is
+converted into a @samp{-} character.
+
+@item
+Other ASCII 7-bit characters are transformed into @samp{_00@var{xx}},
+where @var{xx} is the ASCII character code in (lowercase) hexadecimal.
+This includes @samp{_}, which is mapped to @samp{_005f}.
+
+@item
+If the node name does not begin with a letter, the literal string
+@samp{g_t} is prefixed to the result. (Due to the rules above, that
+string can never occur otherwise; it is an arbitrary choice, standing
+for ``GNU Texinfo''.) This is necessary because XHTML requires that
+identifiers begin with a letter.
+
+@end enumerate
+
+For example:
+
+@example
+@@node A node --- with _'%
+@result{} A-node-_002d_002d_002d-with-_005f_0027_0025
+@end example
+
+Notice in particular:
+
+@itemize @bullet
+@item @samp{_} @result{} @samp{_005f}
+@item @samp{-} @result{} @samp{_002d}
+@item @samp{A node} @result{} @samp{A-node}
+@end itemize
+
+On case-folding computer systems, nodes differing only by case will be
+mapped to the same file.
+
+In particular, as mentioned above, Top always maps to the file
+@file{index.html}. Thus, on a case-folding system, Top and a node
+named `Index' will both be written to @file{index.html}.
+
+Fortunately, the targets serve to distinguish these cases, since HTML
+target names are always case-sensitive, independent of operating
+system.
+
+
+@node HTML Xref Command Expansion
+@subsection HTML Cross-reference Command Expansion
+@cindex HTML cross-reference command expansion
+
+In standard Texinfo, node names may not contain @@-commands.
+@command{makeinfo} has an option @option{--commands-in-node-names}
+which partially supports it (@pxref{Invoking makeinfo}), but it is not
+robust and not recommended.
+
+Thus, @command{makeinfo} also does not fully implement this part of
+the HTML cross-reference algorithm, but it is documented here for the
+sake of completeness.
+
+First, comments are removed.
+
+Next, any @code{@@value} commands (@pxref{set value}) and macro invocations
+(@pxref{Invoking Macros}) are fully expanded.
+
+Then, for the following commands, the command name and braces are removed,
+the text of the argument is recursively transformed:
+@example
+@@asis @@b @@cite @@code @@command @@dfn @@dmn @@dotless
+@@emph @@env @@file @@indicateurl @@kbd @@key
+@@samp @@sc @@slanted @@strong @@t @@var @@w
+@end example
+
+@noindent For @code{@@sc}, any letters are capitalized.
+
+The following commands are replaced by constant text, as shown. If
+any of these commands have non-empty arguments, as in
+@code{@@TeX@{bad@}}, it is an error, and the result is unspecified.
+`(space)' means a space character, `(nothing)' means the empty string,
+etc. The notation `U+@var{xxxx}' means Unicode code point @var{xxxx}.
+There are further transformations of many of these expansions for the
+final file or target name, such as space characters to @samp{-}, etc.,
+according to the other rules.
+
+@multitable @columnfractions .3 .5
+@item @code{@@(newline)} @tab (space)
+@item @code{@@(space)} @tab (space)
+@item @code{@@(tab)} @tab (space)
+@item @code{@@!} @tab @samp{!}
+@item @code{@@*} @tab (space)
+@item @code{@@-} @tab (nothing)
+@item @code{@@.} @tab @samp{.}
+@item @code{@@:} @tab (nothing)
+@item @code{@@?} @tab @samp{?}
+@item @code{@@@@} @tab @samp{@@}
+@item @code{@@@{} @tab @samp{@{}
+@item @code{@@@}} @tab @samp{@}}
+@item @code{@@LaTeX} @tab @samp{LaTeX}
+@item @code{@@TeX} @tab @samp{TeX}
+@item @code{@@bullet} @tab U+2022
+@item @code{@@comma} @tab @samp{,}
+@item @code{@@copyright} @tab U+00A9
+@item @code{@@dots} @tab U+2026
+@item @code{@@enddots} @tab @samp{...}
+@item @code{@@equiv} @tab U+2261
+@item @code{@@error} @tab @samp{error-->}
+@item @code{@@euro} @tab U+20AC
+@item @code{@@exclamdown} @tab U+00A1
+@item @code{@@expansion} @tab U+2192
+@item @code{@@minus} @tab U+2212
+@item @code{@@ordf} @tab U+00AA
+@item @code{@@ordm} @tab U+00BA
+@item @code{@@point} @tab U+2217
+@item @code{@@pounds} @tab U+00A3
+@item @code{@@print} @tab @samp{-|}
+@item @code{@@questiondown} @tab U+00BF
+@item @code{@@registeredsymbol} @tab U+00AE
+@item @code{@@result} @tab U+21D2
+@item @code{@@tie} @tab (space)
+@end multitable
+
+An @code{@@acronym} or @code{@@abbr} command is replaced by the first
+argument, followed by the second argument in parentheses, if present.
+@xref{acronym}.
+
+An @code{@@email} command is replaced by the @var{text} argument if
+present, else the address. @xref{email}.
+
+An @code{@@image} command is replaced by the filename (first)
+argument. @xref{Images}.
+
+A @code{@@verb} command is replaced by its transformed argument.
+@xref{verb}.
+
+Any other command is an error, and the result is unspecified.
+
+
+@node HTML Xref 8-bit Character Expansion
+@subsection HTML Cross-reference 8-bit Character Expansion
+@cindex HTML cross-reference 8-bit character expansion
+@cindex 8-bit characters, in HTML cross-references
+@cindex Expansion of 8-bit characters in HTML cross-references
+
+Usually, characters other than plain 7-bit ASCII are transformed into
+the corresponding Unicode code point(s) in Normalization Form C, which
+uses precomposed characters where available. (This is the
+normalization form recommended by the W3C and other bodies.) This
+holds when that code point is 0xffff or less, as it almost always is.
+
+These will then be further transformed by the rules above into the
+string @samp{_@var{xxxx}}, where @var{xxxx} is the code point in hex.
+
+For example, combining this rule and the previous section:
+
+@example
+@@node @@b@{A@} @@TeX@{@} @@u@{B@} @@point@{@}@@enddots@{@}
+@result{} A-TeX-B_0306-_2605_002e_002e_002e
+@end example
+
+Notice: 1)@tie{}@code{@@enddots} expands to three periods which in
+turn expands to three @samp{_002e}'s; 2)@tie{}@code{@@u@{B@}} is a `B'
+with a breve accent, which does not exist as a pre-accented Unicode
+character, therefore expands to @samp{B_0306} (B with combining
+breve).
+
+When the Unicode code point is above 0xffff, the transformation is
+@samp{__@var{xxxxxx}}, that is, two leading underscores followed by
+six hex digits. Since Unicode has declared that their highest code
+point is 0x10ffff, this is sufficient. (We felt it was better to
+define this extra escape than to always use six hex digits, since the
+first two would nearly always be zeros.)
+
+For the definition of Unicode Normalization Form C, see Unicode report
+UAX#15, @uref{http://www.unicode.org/reports/tr15/}. Many related
+documents and implementations are available elsewhere on the web.
+
+
+@node HTML Xref Mismatch
+@subsection HTML Cross-reference Mismatch
+@cindex HTML cross-reference mismatch
+@cindex Mismatched HTML cross-reference source and target
+
+As mentioned earlier (@pxref{HTML Xref Link Basics}), the generating
+software has to guess whether a given manual being cross-referenced is
+available in split or monolithic form---and, inevitably, it might
+guess wrong. However, it is possible when the referent manual itself
+is generated, it is possible to handle at least some mismatches.
+
+In the case where we assume the referent is split, but it is actually
+available in mono, the only recourse would be to generate a
+@file{manual/} subdirectory full of HTML files which redirect back to
+the monolithic @file{manual.html}. Since this is essentially the same
+as a split manual in the first place, it's not very appealing.
+
+On the other hand, in the case where we assume the referent is mono,
+but it is actually available in split, it is possible to use
+JavaScript to redirect from the putatively monolithic
+@file{manual.html} to the different @file{manual/node.html} files.
+Here's an example:
+
+@example
+function redirect() @{
+ switch (location.hash) @{
+ case "#Node1":
+ location.replace("manual/Node1.html#Node1"); break;
+ case "#Node2" :
+ location.replace("manual/Node2.html#Node2"); break;
+ @dots{}
+ default:;
+ @}
+@}
+@end example
+
+Then, in the @code{<body>} tag of @file{manual.html}:
+
+@example
+<body onLoad="redirect();">
+@end example
+
+Once again, this is something the software which generated the
+@emph{referent} manual has to do in advance, it's not something the
+software generating the actual cross-reference in the present manual
+can control.
+
+Ultimately, we hope to allow for an external configuration file to
+control which manuals are available from where, and how.
+
+
+@ignore
+-- not yet --
+
+external information
+--------------------
+
+The information for the reference is searched in the file
+`htmlxref.cnf' present in the following directories:
+<srcdir>/.texinfo/, ~/.texinfo/, SYSCONFDIR/texinfo/,
+DATADIR/texinfo/
+The first match should be used.
+
+The file is line-oriented, with the following format:
+ <manualname> <whitespace> <keyword> <whitespace> <urlprefix>
+with <keyword> being "mono" or "split". Thus
+texinfo split http://www.gnu.org/software/texinfo/manual/texinfo/html_node/
+texinfo mono http://www.gnu.org/software/texinfo/manual/texinfo/texinfo.html
+
+If the keyword is 'split', that is the target is split, the urlprefix gives
+the directory and host name.
+If the keyword is 'mono', that is the target is mono, the urlprefix gives
+directory, host and file name.
+
+'#' followed by a space begins comments. '#' followed by another character
+cannot begin comments as there are # in urls.
+
+@end ignore
+
+
@node Command List
@appendix @@-Command List
@cindex Alphabetical @@-command list
@@ -15506,6 +16657,13 @@ Here is an alphabetical list of the @@-commands in Texinfo. Square
brackets, @t{[}@w{ }@t{]}, indicate optional arguments; an ellipsis,
@samp{@dots{}}, indicates repeated text.
+More specifics on the general syntax of different @@-commands are
+given in the section below.
+
+@menu
+* Command Syntax:: General syntax for varieties of @@-commands.
+@end menu
+
@sp 1
@table @code
@item @@@var{whitespace}
@@ -15522,8 +16680,7 @@ Generate an umlaut or acute accent, respectively, over the next
character, as in @"o and @'o. @xref{Inserting Accents}.
@item @@*
-Force a line break. Do not end a paragraph that uses @code{@@*} with
-an @code{@@refill} command. @xref{Line Breaks}.
+Force a line break. @xref{Line Breaks}.
@item @@,@{@var{c}@}
Generate a cedilla accent under @var{c}, as in @,{c}. @xref{Inserting
@@ -15536,7 +16693,7 @@ Insert a discretionary hyphenation point. @xref{- and hyphenation}.
Produce a period that really does end a sentence (usually after an
end-of-sentence capital letter). @xref{Ending a Sentence}.
-@item @/
+@item @@/
Produces no output, but allows a line break. @xref{Line Breaks}.
@item @@:
@@ -15556,7 +16713,7 @@ an end-of-sentence capital letter). @xref{Ending a Sentence}.
@item @@@@
Stands for an at sign, @samp{@@}.
-@xref{Braces Atsigns, , Inserting @@ and braces}.
+@xref{Atsign Braces Comma, , Inserting @@ and @{@} and @comma{}}.
@item @@\
Stands for a backslash (@samp{\}) inside @code{@@math}.
@@ -15570,11 +16727,11 @@ character, as in @^o and @`e.
@item @@@{
Stands for a left brace, @samp{@{}.
-@xref{Braces Atsigns, , Inserting @@ and braces}.
+@xref{Atsign Braces Comma, , Inserting @@ and @{@} and @comma{}}.
@item @@@}
Stands for a right-hand brace, @samp{@}}.@*
-@xref{Braces Atsigns, , Inserting @@ and braces}.
+@xref{Atsign Braces Comma, , Inserting @@ and @{@} and @comma{}}.
@item @@~
Generate a tilde accent over the next character, as in @~N.
@@ -15585,9 +16742,13 @@ Generate a tilde accent over the next character, as in @~N.
Generate the uppercase and lowercase Scandinavian A-ring letters,
respectively: @AA{}, @aa{}. @xref{Inserting Accents}.
-@item @@acronym@{@var{abbrev}@}
-Tag @var{abbrev} as an acronym, that is, an abbreviation written in all
-capital letters, such as `NASA'. @xref{acronym,, @code{acronym}}.
+@item @@abbr@{@var{abbreviation}@}
+Tag @var{abbreviation} as an abbreviation, such as `Comput.'.
+@xref{abbr,, @code{abbr}}.
+
+@item @@acronym@{@var{acronym}@}
+Tag @var{acronym} as an acronym, such as `NASA'.
+@xref{acronym,, @code{acronym}}.
@item @@AE@{@}
@itemx @@ae@{@}
@@ -15666,7 +16827,10 @@ file following an @code{@@bye} command. @xref{Ending a File}.@refill
@item @@c @var{comment}
Begin a comment in Texinfo. The rest of the line does not appear in
either the Info file or the printed manual. A synonym for
-@code{@@comment}. @xref{Comments, , Comments}.@refill
+@code{@@comment}. @xref{Comments}.
+
+@item @@caption
+Define the full caption for a @code{@@float}. @xref{caption shortcaption}.
@item @@cartouche
Highlight an example or quotation by drawing a box with rounded
@@ -15712,6 +16876,10 @@ and @code{@@end ifset} commands, and preventing
Highlight text that is an expression, a syntactically complete token
of a program, or a program name. @xref{code, , @code{@@code}}.@refill
+@item @@comma@{@}
+Insert a comma `,' character; only needed when a literal comma would
+be taken as an argument separator. @xref{Inserting a Comma}.
+
@item @@command@{@var{command-name}@}
Indicate a command name, such as @command{ls}.
@xref{command,, @code{@@command}}.
@@ -15727,7 +16895,8 @@ menus instead. @xref{Contents, , Generating a Table of
Contents}.@refill
@item @@copyright@{@}
-Generate a copyright symbol. @xref{copyright symbol,, @code{@@copyright@{@}}}.
+Generate the copyright symbol @copyright{}. @xref{copyright symbol,,
+@code{@@copyright@{@}}}.
@ignore
@item @@ctrl@{@var{ctrl-char}@}
@@ -15810,6 +16979,11 @@ the category, the name of the type (which is a word like @samp{int} or
@samp{float}), and then the names of attributes of objects of that type.
@xref{Definition Commands}, and @ref{Data Types}.
+@item @@deftypecv @var{category} @var{class} @var{data-type} @var{name}
+@itemx @@deftypecvx @var{category} @var{class} @var{data-type} @var{name}
+Format a description for a typed class variable in object-oriented programming.
+@xref{Definition Commands}, and @ref{Abstract Objects}.
+
@item @@deftypefn @var{classification} @var{data-type} @var{name} @var{arguments}@dots{}
@itemx @@deftypefnx @var{classification} @var{data-type} @var{name} @var{arguments}@dots{}
Format a description for a function or similar entity that may take
@@ -15898,6 +17072,10 @@ Format a unit of measure, as in 12@dmn{pt}. Causes @TeX{} to insert a
thin space before @var{dimension}. No effect in Info.
@xref{dmn, , @code{@@dmn}}.
+@item @@docbook
+Enter Docbook completely. Pair with @code{@@end docbook}. @xref{Raw
+Formatter Commands}.
+
@item @@documentdescription
Set the document description text, included in the HTML output. Pair
with @code{@@end documentdescription}. @xref{documentdescription,,
@@ -15950,6 +17128,10 @@ Optionally, start list with @var{number-or-letter}. Pair with
Indicate to the reader the exact equivalence of two forms with a
glyph: @samp{@equiv{}}. @xref{Equivalence}.@refill
+@item @@euro@{@}
+Generate the Euro currency sign.
+@xref{euro,,@code{@@euro@{@}}}.
+
@item @@error@{@}
Indicate to the reader with a glyph that the following text is
an error message: @samp{@error{}}. @xref{Error Glyph}.@refill
@@ -15998,6 +17180,10 @@ over-wide lines. @xref{Overfull hboxes}.@refill
Add @var{entry} to the index of functions. @xref{Index Entries, ,
Defining the Entries of an Index}.@refill
+@item @@float
+Environment to define floating material. Pair with @code{@@end float}.
+@xref{Floats}.
+
@item @@flushleft
@itemx @@flushright
Left justify every line but leave the right end ragged.
@@ -16064,15 +17250,17 @@ between @code{@@ifclear @var{flag}} and the following @code{@@end
ifclear} command.
@xref{set clear value, , @code{@@set} @code{@@clear} @code{@@value}}.@refill
-@item @@ifhtml
+@item @@ifdocbook
+@itemx @@ifhtml
@itemx @@ifinfo
-Begin a stretch of text that will be ignored by @TeX{} when it typesets
-the printed manual. @code{@@ifhtml} text appears only in the HTML
-output. @code{@@ifinfo} output appears in both Info and (for historical
-compatibility) plain text output . Pair with @code{@@end ifhtml}
-resp.@: @code{@@end ifinfo}. @xref{Conditionals}.
+Begin text that will appear only in the given output format.
+@code{@@ifinfo} output appears in both Info and (for historical
+compatibility) plain text output. Pair with @code{@@end ifdocbook}
+resp.@: @code{@@end ifhtml} resp.@: @code{@@end ifinfo}.
+@xref{Conditionals}.
-@item @@ifnothtml
+@item @@ifnotdocbook
+@itemx @@ifnothtml
@itemx @@ifnotinfo
@itemx @@ifnotplaintext
@itemx @@ifnottex
@@ -16085,7 +17273,7 @@ well as Info output. Pair with the corresponding @code{@@end
ifnot@var{format}}. @xref{Conditionals}.
@item @@ifplaintext
-Begin a stretch of text that appears only in the plain text output.
+Begin text that will appear only in the plain text output.
Pair with @code{@@end ifplaintext}. @xref{Conditionals}.
@item @@ifset @var{flag}
@@ -16095,18 +17283,17 @@ command.
@xref{set clear value, , @code{@@set} @code{@@clear} @code{@@value}}.@refill
@item @@iftex
-Begin a stretch of text that will not appear in the Info file, but
+Begin text that will not appear in the Info file or other output, but
will be processed only by @TeX{}. Pair with @code{@@end iftex}.
@xref{Conditionals, , Conditionally Visible Text}.@refill
@item @@ifxml
-Begin a stretch of text that appears only in the XML output.
-Pair with @code{@@end ifxml}. @xref{Conditionals}.
+Begin text that will appear only in the XML output. Pair with
+@code{@@end ifxml}. @xref{Conditionals}.
@item @@ignore
-Begin a stretch of text that will not appear in either the Info file
-or the printed output. Pair with @code{@@end ignore}.
-@xref{Comments, , Comments and Ignored Text}.@refill
+Begin text that will not appear in any output. Pair with @code{@@end
+ignore}. @xref{Comments, , Comments and Ignored Text}.
@item @@image@{@var{filename}, [@var{width}], [@var{height}], [@var{alt}], [@var{ext}]@}
Include graphics image in external @var{filename} scaled to the given
@@ -16117,6 +17304,10 @@ Include graphics image in external @var{filename} scaled to the given
Incorporate the contents of the file @var{filename} into the Info file
or printed document. @xref{Include Files}.@refill
+@item @@indicateurl@{@var{indicateurl}@}
+Indicate text that is a uniform resource locator for the World Wide
+Web. @xref{indicateurl, , @code{@@indicateurl}}.
+
@item @@inforef@{@var{node-name}, [@var{entry-name}], @var{info-file-name}@}
Make a cross reference to an Info file for which there is no printed
manual. @xref{inforef, , Cross references using
@@ -16166,17 +17357,17 @@ Add @var{entry} to the index of keys.
Generate the uppercase and lowercase Polish suppressed-L letters,
respectively: @L{}, @l{}.
-@c Possibly this can be tossed now that we have macros. --karl, 16sep96.
-@c Yes, let's toss it, it's pretty weird. --karl, 15jun97.
-@c @item @@global@@let@var{new-command}=@var{existing-command}
-@c Equate a new highlighting command with an existing one. Only for
-@c @TeX{}. Write definition inside of @code{@@iftex} @dots{} @code{@@end
-@c iftex}. @xref{Customized Highlighting}.@refill
+@item @@LaTeX@{@}
+Insert the logo @LaTeX{}. @xref{tex, , @TeX{} and @LaTeX{}}.
@item @@lisp
Begin an example of Lisp code. Indent text, do not fill, and select
fixed-width font. Pair with @code{@@end lisp}. @xref{lisp, , @code{@@lisp}}.
+@item @@listoffloats
+Produce a table-of-contents-like listing of @code{@@float}s.
+@xref{listoffloats}.
+
@item @@lowersections
Change subsequent chapters to sections, sections to subsections, and so
on. @xref{Raise/lower sections, , @code{@@raisesections} and
@@ -16190,8 +17381,7 @@ Macros}.
@item @@majorheading @var{title}
Print a chapter-like heading in the text, but not in the table of
contents of a printed manual. Generate more vertical whitespace before
-the heading than the @code{@@chapheading} command. In Info, the chapter
-heading line is underlined with asterisks. @xref{majorheading &
+the heading than the @code{@@chapheading} command. @xref{majorheading &
chapheading, , @code{@@majorheading} and @code{@@chapheading}}.@refill
@item @@math@{@var{mathematical-expression}@}
@@ -16292,7 +17482,7 @@ Generate an upside-down question mark. @xref{Inserting Accents}.
@item @@quotation
Narrow the margins to indicate text that is quoted from another real
-or imaginary work. Write command on a line of its own. Pair with
+or imaginary work. Takes optional argument of prefix text. Pair with
@code{@@end quotation}. @xref{quotation, ,
@code{@@quotation}}.@refill
@@ -16311,10 +17501,14 @@ with a `See'. Follow command with a punctuation mark. Only the first
argument is mandatory. @xref{ref, , @code{@@ref}}.@refill
@item @@refill
-In Info, refill and indent the paragraph after all the other processing
-has been done. No effect on @TeX{}, which always refills. This command
-is no longer needed, since all formatters now automatically refill.
-@xref{Refilling Paragraphs}.@refill
+This command used to refill and indent the paragraph after all the
+other processing has been done. It is no longer needed, since all
+formatters now automatically refill as needed, but you may still see
+it in the source to some manuals, as it does no harm.
+
+@item @@registeredsymbol@{@}
+Generate the legal symbol @registeredsymbol{}. @xref{registered
+symbol,, @code{@@registeredsymbol@{@}}}.
@item @@result@{@}
Indicate the result of an expression to the reader with a special
@@ -16329,6 +17523,10 @@ Highlight @var{text} that is a literal example of a sequence of
characters. Used for single characters, for statements, and often for
entire shell commands. @xref{samp, , @code{@@samp}}.@refill
+@item @@sansserif@{@var{text}@}
+Print @var{text} in a @sansserif{sans serif} font if possible. No
+effect in Info. @xref{Fonts}.
+
@item @@sc@{@var{text}@}
Set @var{text} in a printed output in @sc{the small caps font} and
set text in the Info file in uppercase letters.
@@ -16371,6 +17569,9 @@ Provide a title for page headers in a printed manual, and the default
document description for HTML @samp{<head>}.
@xref{settitle, , @code{@@settitle}}.@refill
+@item @@shortcaption
+Define the short caption for a @code{@@float}. @xref{caption shortcaption}.
+
@item @@shortcontents
Print a short table of contents. Not relevant to Info, which uses
menus rather than tables of contents. A synonym for
@@ -16380,6 +17581,10 @@ Contents}.@refill
@item @@shorttitlepage @var{title}
Generate a minimal title page. @xref{titlepage,,@code{@@titlepage}}.
+@item @@slanted@{@var{text}@}
+Print @var{text} in a @slanted{slanted} font if possible. No effect
+in Info. @xref{Fonts}.
+
@item @@smallbook
Cause @TeX{} to produce a printed manual in a 7 by 9.25 inch format
rather than the regular 8.5 by 11 inch format. @xref{smallbook, ,
@@ -16479,8 +17684,7 @@ Also see @ref{ftable vtable, , @code{@@ftable} and @code{@@vtable}},
and @ref{itemx, , @code{@@itemx}}.@refill
@item @@TeX@{@}
-Insert the logo @TeX{}. @xref{TeX and copyright, , Inserting @TeX{}
-and @copyright{}}.@refill
+Insert the logo @TeX{}. @xref{tex, , @TeX{} and @LaTeX{}}.
@item @@tex
Enter @TeX{} completely. Pair with @code{@@end tex}. @xref{Raw
@@ -16578,12 +17782,9 @@ manual. In Info, the title is underlined with periods.
@xref{subsubsection, , The `subsub' Commands}.@refill
@item @@uref@{@var{url}[, @var{displayed-text}][, @var{replacement}@}
+@itemx @@url@{@var{url}[, @var{displayed-text}][, @var{replacement}@}
Define a cross reference to an external uniform resource locator for the
-World Wide Web. @xref{uref, , @code{@@uref}}.@refill
-
-@item @@url@{@var{url}@}
-Indicate text that is a uniform resource locator for the World Wide
-Web. @xref{url, , @code{@@url}}.@refill
+World Wide Web. @xref{uref, , @code{@@uref}}.
@item @@v@{@var{c}@}
Generate check accent over the character @var{c}, as in @v{o}.
@@ -16631,10 +17832,13 @@ index of variables. Pair with @code{@@end vtable}. The same as
@code{@@ftable} and @code{@@vtable}}.@refill
@item @@w@{@var{text}@}
-Prevent @var{text} from being split across two lines. Do not end a
-paragraph that uses @code{@@w} with an @code{@@refill} command.
+Prevent @var{text} from being split across two lines.
@xref{w, , @code{@@w}}.@refill
+@item @@xml
+Enter XML completely. Pair with @code{@@end xml}. @xref{Raw
+Formatter Commands}.
+
@item @@xref@{@var{node-name}, [@var{entry}], [@var{topic-or-title}], [@var{info-file}], [@var{manual}]@}
Make a reference that starts with `See' in a printed manual. Follow
command with a punctuation mark. Only the first argument is
@@ -16642,6 +17846,72 @@ mandatory. @xref{xref, , @code{@@xref}}.@refill
@end table
+@node Command Syntax
+@section @@-Command Syntax
+@cindex @@-command syntax
+@cindex Syntax, of @@-commands
+@cindex Command syntax
+
+The character @samp{@@} is used to start special Texinfo commands.
+(It has the same meaning that @samp{\} has in plain @TeX{}.) Texinfo
+has four types of @@-command:@refill
+
+@table @asis
+@item 1. Non-alphabetic commands.
+These commands consist of an @@ followed by a punctuation mark or other
+character that is not part of the alphabet. Non-alphabetic commands are
+almost always part of the text within a paragraph, and never take any
+argument. The two characters (@@ and the other one) are complete in
+themselves; none is followed by braces. The non-alphabetic commands
+are: @code{@@.}, @code{@@:}, @code{@@*}, @code{@@@kbd{SPACE}},
+@code{@@@kbd{TAB}}, @code{@@@kbd{NL}}, @code{@@@@}, @code{@@@{}, and
+@code{@@@}}.@refill
+
+@item 2. Alphabetic commands that do not require arguments.
+These commands start with @@ followed by a word followed by left- and
+right-hand braces. These commands insert special symbols in the
+document; they do not require arguments. For example,
+@code{@@dots@{@}} @result{} @samp{@dots{}}, @code{@@equiv@{@}}
+@result{} @samp{@equiv{}}, @code{@@TeX@{@}} @result{} `@TeX{}',
+and @code{@@bullet@{@}} @result{} @samp{@bullet{}}.@refill
+
+@item 3. Alphabetic commands that require arguments within braces.
+These commands start with @@ followed by a letter or a word, followed by an
+argument within braces. For example, the command @code{@@dfn} indicates
+the introductory or defining use of a term; it is used as follows: @samp{In
+Texinfo, @@@@-commands are @@dfn@{mark-up@} commands.}@refill
+
+@item 4. Alphabetic commands that occupy an entire line.
+These commands occupy an entire line. The line starts with @@,
+followed by the name of the command (a word); for example, @code{@@center}
+or @code{@@cindex}. If no argument is needed, the word is followed by
+the end of the line. If there is an argument, it is separated from
+the command name by a space. Braces are not used.@refill
+@end table
+
+@cindex Braces and argument syntax
+Thus, the alphabetic commands fall into classes that have
+different argument syntaxes. You cannot tell to which class a command
+belongs by the appearance of its name, but you can tell by the
+command's meaning: if the command stands for a glyph, it is in
+class 2 and does not require an argument; if it makes sense to use the
+command together with other text as part of a paragraph, the command
+is in class 3 and must be followed by an argument in braces;
+otherwise, it is in class 4 and uses the rest of the line as its
+argument.@refill
+
+The purpose of having a different syntax for commands of classes 3 and
+4 is to make Texinfo files easier to read, and also to help the GNU
+Emacs paragraph and filling commands work properly. There is only one
+exception to this rule: the command @code{@@refill}, which is always
+used at the end of a paragraph immediately following the final period
+or other punctuation character. @code{@@refill} takes no argument and
+does @emph{not} require braces. @code{@@refill} never confuses the
+Emacs paragraph commands because it cannot appear at the beginning of
+a line. It is also no longer needed, since all formatters now refill
+paragraphs automatically.
+
+
@node Tips
@appendix Tips and Hints
@@ -16840,7 +18110,8 @@ typeset the name according to the wishes of Donald Knuth, who wrote
@subsubheading Spaces
Do not use spaces to format a Texinfo file, except inside of
-@code{@@example} @dots{} @code{@@end example} and similar commands.
+@code{@@example} @dots{} @code{@@end example} and other literal
+environments and commands.
@need 700
For example, @TeX{} fills the following:
@@ -16867,17 +18138,18 @@ so it looks like this:
corresponding to the current buffer.
@end quotation
@end iftex
-@ifinfo
+@ifnottex
@quotation
`C-x v' `M-x vc-next-action' Perform the next logical operation on the
version-controlled file corresponding to the current buffer.
@end quotation
-@end ifinfo
+@end ifnottex
@noindent
In this case, the text should be formatted with
@code{@@table}, @code{@@item}, and @code{@@itemx}, to create a table.
+
@subsubheading @@code, @@samp, @@var, and @samp{---}
@itemize @bullet
@@ -17090,7 +18362,7 @@ it for a printed manual.
@@copying
This is a short example of a complete Texinfo file.
-Copyright (C) 2003 Free Software Foundation, Inc.
+Copyright (C) 2004 Free Software Foundation, Inc.
@@end copying
@@titlepage
@@ -17170,22 +18442,25 @@ Here are some notes on the example:
@itemize @bullet
@item
-@cindex $Id:
-@cindex CVS $Id:
-@cindex RCS $Id:
+@cindex $Id
+@cindex CVS $Id
+@cindex RCS $Id
@cindex Documentation identification
@cindex Identification of documentation
The @samp{$Id:} comment is for the CVS (@pxref{Top,, Overview, cvs,
Concurrent Versions System}) or RCS (see rcsintro(1)) version control
systems, which expand it into a string such as:
@example
-$Id: texinfo.txi,v 1.48 2003/06/02 12:32:28 karl Exp $
+$Id: texinfo.txi,v 1.128 2004/12/29 15:06:41 karl Exp $
@end example
(This is useful in all sources that use version control, not just manuals.)
You may wish to include the @samp{$Id:} comment in the @code{@@copying}
text, if you want a completely unambiguous reference to the
documentation version.
+If you want to literally write @t{@w{$}Id$}, use @code{@@w}:
+@code{@@w@{$@}Id$}.
+
@item
@pindex automake@r{, and version info}
@vindex UPDATED @r{Automake variable}
@@ -17242,7 +18517,7 @@ Here is the sample document:
@verbatim
\input texinfo @c -*-texinfo-*-
-@comment $Id: texinfo.txi,v 1.48 2003/06/02 12:32:28 karl Exp $
+@comment $Id: texinfo.txi,v 1.128 2004/12/29 15:06:41 karl Exp $
@comment %**start of header
@setfilename sample.info
@include version.texi
@@ -17254,7 +18529,7 @@ This manual is for GNU Sample
(version @value{VERSION}, @value{UPDATED}),
which is an example in the Texinfo documentation.
-Copyright @copyright{} 2003 Free Software Foundation, Inc.
+Copyright @copyright{} 2004 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -17353,7 +18628,7 @@ see the previous sections.
@copying
This document is a sample for allowing verbatim copying only.
-Copyright @copyright{} 2003 Free Software Foundation, Inc.
+Copyright @copyright{} 2004 Free Software Foundation, Inc.
@quotation
Permission is granted to make and distribute verbatim copies
@@ -17384,7 +18659,7 @@ the license text itself. For a complete sample document, see the
previous sections.
@example
-Copyright @copyright{} 2003 Free Software Foundation, Inc.
+Copyright @copyright{} 2004 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
@@ -17408,12 +18683,12 @@ conveniently small parts.
@menu
* Using Include Files:: How to use the @code{@@include} command.
* texinfo-multiple-files-update:: How to create and update nodes and
- menus when using included files.
-* Include Files Requirements:: What @code{texinfo-multiple-files-update} expects.
+ menus when using included files.
+* Include Files Requirements:: @code{texinfo-multiple-files-update} needs.
* Sample Include File:: A sample outer file with included files
- within it; and a sample included file.
+ within it; and a sample included file.
* Include Files Evolution:: How use of the @code{@@include} command
- has changed over time.
+ has changed over time.
@end menu
@node Using Include Files
@@ -17462,6 +18737,13 @@ whole file. Either you must insert the menus and the `Next',
Texinfo mode command, @code{texinfo-multiple-files-update}, that is
designed for @code{@@include} files.@refill
+When an included file does not have any node lines in it, the
+multiple files update command does not try to create a menu entry
+for it. Consequently, you can include any file, such as a
+version or an update file without node lines, not just files that
+are chapters. Small includable files like this are created by
+Automake (@pxref{GNU Sample Texts}).
+
@node texinfo-multiple-files-update
@section @code{texinfo-multiple-files-update}
@@ -17692,10 +18974,8 @@ not paginated.)@refill
* Custom Headings:: How to create your own headings and footings.
@end menu
-@node Headings Introduced, Heading Format, Headings, Headings
-@ifinfo
-@heading Headings Introduced
-@end ifinfo
+@node Headings Introduced
+@section Headings Introduced
Texinfo provides standard page heading formats for manuals that are
printed on one side of each sheet of paper and for manuals that are
@@ -17729,7 +19009,7 @@ blank. Text for the left part of a header or footer line is set
flushleft; text for the middle part is centered; and, text for the
right part is set flushright.@refill
-@node Heading Format, Heading Choice, Headings Introduced, Headings
+@node Heading Format
@comment node-name, next, previous, up
@section Standard Heading Formats
@@ -17757,7 +19037,6 @@ A single-sided page looks like this:
| Start of text ... |
| ... |
| |
-
@end group
@end example
@@ -17789,7 +19068,6 @@ Two pages, side by side as in an open book, look like this:@refill
| Start of text ... | | More text ... |
| ... | | ... |
| | | |
-
@end group
@end example
@@ -17798,7 +19076,7 @@ The chapter name is preceded by the word ``Chapter'', the chapter number
and a colon. This makes it easier to keep track of where you are in the
manual.@refill
-@node Heading Choice, Custom Headings, Heading Format, Headings
+@node Heading Choice
@comment node-name, next, previous, up
@section Specifying the Type of Heading
@@ -17835,7 +19113,7 @@ Specify the double-sided heading format, with chapters on new pages.@refill
@noindent
Texinfo lacks an @code{@@setchapternewpage even} command.@refill
-@node Custom Headings, , Heading Choice, Headings
+@node Custom Headings
@comment node-name, next, previous, up
@section How to Make Your Own Headings
@@ -17907,7 +19185,6 @@ headers or footers.@refill
@findex oddfooting
@item @@evenheading @var{left} @@| @var{center} @@| @var{right}
@itemx @@oddheading @var{left} @@| @var{center} @@| @var{right}
-
@itemx @@evenfooting @var{left} @@| @var{center} @@| @var{right}
@itemx @@oddfooting @var{left} @@| @var{center} @@| @var{right}
@@ -18016,10 +19293,9 @@ command and you can use the @kbd{M-x Info-validate} command.@refill
* Running Info-Validate:: How to find badly referenced nodes.
@end menu
-@node makeinfo Preferred, Debugging with Info, Catching Mistakes, Catching Mistakes
-@ifinfo
-@heading @code{makeinfo} Find Errors
-@end ifinfo
+
+@node makeinfo Preferred
+@section @code{makeinfo} Find Errors
The @code{makeinfo} program does an excellent job of catching errors
and reporting them---far better than @code{texinfo-format-region} or
@@ -18035,7 +19311,7 @@ errors. This is the best way to work with Texinfo. But if you
cannot use @code{makeinfo}, or your problem is very puzzling, then you
may want to use the tools described in this appendix.@refill
-@node Debugging with Info, Debugging with TeX, makeinfo Preferred, Catching Mistakes
+@node Debugging with Info
@comment node-name, next, previous, up
@section Catching Errors with Info Formatting
@cindex Catching errors with Info formatting
@@ -18222,7 +19498,7 @@ not find the missing right-hand brace.@refill
Manual}, for more information.@refill
@end ignore
-@node Debugging with TeX, Using texinfo-show-structure, Debugging with Info, Catching Mistakes
+@node Debugging with TeX
@comment node-name, next, previous, up
@section Catching Errors with @TeX{} Formatting
@cindex Catching errors with @TeX{} formatting
@@ -18351,7 +19627,7 @@ again. (Note the use of the backslash, @samp{\}. @TeX{} uses @samp{\}
instead of @samp{@@}; and in this circumstance, you are working
directly with @TeX{}, not with Texinfo.)@refill
-@node Using texinfo-show-structure, Using occur, Debugging with TeX, Catching Mistakes
+@node Using texinfo-show-structure
@comment node-name, next, previous, up
@section Using @code{texinfo-show-structure}
@cindex Showing the structure of a file
@@ -18423,7 +19699,7 @@ You can remind yourself of the structure of a Texinfo file by looking at
the list in the @samp{*Occur*} window; and if you have mis-named a node
or left out a section, you can correct the mistake.@refill
-@node Using occur, Running Info-Validate, Using texinfo-show-structure, Catching Mistakes
+@node Using occur
@comment node-name, next, previous, up
@section Using @code{occur}
@cindex Occurrences, listing with @code{@@occur}
@@ -18463,7 +19739,7 @@ therefore have the same `Up' pointer.@refill
@xref{Other Repeating Search, , Using Occur, emacs , The GNU Emacs Manual},
for more information.@refill
-@node Running Info-Validate, , Using occur, Catching Mistakes
+@node Running Info-Validate
@comment node-name, next, previous, up
@section Finding Badly Referenced Nodes
@findex Info-validate
@@ -18493,7 +19769,7 @@ if you write an Info file from scratch.@refill
* Splitting:: How to split a file manually.
@end menu
-@node Using Info-validate, Unsplit, Running Info-Validate, Running Info-Validate
+@node Using Info-validate
@subsection Running @code{Info-validate}
@cindex Running @code{Info-validate}
@cindex Info validating a large file
@@ -18550,7 +19826,7 @@ on a large file, you must run @code{texinfo-format-buffer} with an
argument so that it does not split the Info file; and you must create a
tag table for the unsplit file.
-@node Unsplit, Tagifying, Using Info-validate, Running Info-Validate
+@node Unsplit
@comment node-name, next, previous, up
@subsection Creating an Unsplit File
@cindex Creating an unsplit file
@@ -18588,7 +19864,7 @@ a tag table for it. @refill
@cindex Making a tag table manually
@cindex Tag table, making manually
-@node Tagifying, Splitting, Unsplit, Running Info-Validate
+@node Tagifying
@subsection Tagifying a File
After creating an unsplit Info file, you must create a tag table for
@@ -18625,7 +19901,7 @@ After you have validated the node structure, you can rerun
tag table and split the file automatically, or you can make the tag
table and split the file manually.@refill
-@node Splitting, , Tagifying, Running Info-Validate
+@node Splitting
@comment node-name, next, previous, up
@subsection Splitting a File Manually
@cindex Splitting an Info file manually
@@ -18677,6 +19953,10 @@ The primary file still functions as an Info file, but it contains just
the tag table and a directory of subfiles.@refill
+@ignore
+The simple description in the command summary seems sufficient to me
+these days, so ignore this appendix. --karl, 13mar04.
+
@node Refilling Paragraphs
@appendix Refilling Paragraphs
@cindex Refilling paragraphs
@@ -18716,114 +19996,7 @@ paragraph that should be filled. They do not append @code{@@refill} to
the ends of paragraphs that contain @code{@@*} or @w{@code{@@w@{ @dots{}@}}}
and therefore do not refill or indent them.@refill
-
-@node Command Syntax
-@appendix @@-Command Syntax
-@cindex @@-command syntax
-@cindex Syntax, of @@-commands
-@cindex Command syntax
-
-The character @samp{@@} is used to start special Texinfo commands.
-(It has the same meaning that @samp{\} has in plain @TeX{}.) Texinfo
-has four types of @@-command:@refill
-
-@table @asis
-@item 1. Non-alphabetic commands.
-These commands consist of an @@ followed by a punctuation mark or other
-character that is not part of the alphabet. Non-alphabetic commands are
-almost always part of the text within a paragraph, and never take any
-argument. The two characters (@@ and the other one) are complete in
-themselves; none is followed by braces. The non-alphabetic commands
-are: @code{@@.}, @code{@@:}, @code{@@*}, @code{@@@kbd{SPACE}},
-@code{@@@kbd{TAB}}, @code{@@@kbd{NL}}, @code{@@@@}, @code{@@@{}, and
-@code{@@@}}.@refill
-
-@item 2. Alphabetic commands that do not require arguments.
-These commands start with @@ followed by a word followed by left- and
-right-hand braces. These commands insert special symbols in the
-document; they do not require arguments. For example,
-@code{@@dots@{@}} @result{} @samp{@dots{}}, @code{@@equiv@{@}}
-@result{} @samp{@equiv{}}, @code{@@TeX@{@}} @result{} `@TeX{}',
-and @code{@@bullet@{@}} @result{} @samp{@bullet{}}.@refill
-
-@item 3. Alphabetic commands that require arguments within braces.
-These commands start with @@ followed by a letter or a word, followed by an
-argument within braces. For example, the command @code{@@dfn} indicates
-the introductory or defining use of a term; it is used as follows: @samp{In
-Texinfo, @@@@-commands are @@dfn@{mark-up@} commands.}@refill
-
-@item 4. Alphabetic commands that occupy an entire line.
-These commands occupy an entire line. The line starts with @@,
-followed by the name of the command (a word); for example, @code{@@center}
-or @code{@@cindex}. If no argument is needed, the word is followed by
-the end of the line. If there is an argument, it is separated from
-the command name by a space. Braces are not used.@refill
-@end table
-
-@cindex Braces and argument syntax
-Thus, the alphabetic commands fall into classes that have
-different argument syntaxes. You cannot tell to which class a command
-belongs by the appearance of its name, but you can tell by the
-command's meaning: if the command stands for a glyph, it is in
-class 2 and does not require an argument; if it makes sense to use the
-command together with other text as part of a paragraph, the command
-is in class 3 and must be followed by an argument in braces;
-otherwise, it is in class 4 and uses the rest of the line as its
-argument.@refill
-
-The purpose of having a different syntax for commands of classes 3 and
-4 is to make Texinfo files easier to read, and also to help the GNU
-Emacs paragraph and filling commands work properly. There is only one
-exception to this rule: the command @code{@@refill}, which is always
-used at the end of a paragraph immediately following the final period
-or other punctuation character. @code{@@refill} takes no argument and
-does @emph{not} require braces. @code{@@refill} never confuses the
-Emacs paragraph commands because it cannot appear at the beginning of
-a line.@refill
-
-
-@node Obtaining TeX
-@appendix How to Obtain @TeX{}
-@cindex Obtaining @TeX{}
-@cindex @TeX{}, how to obtain
-
-@c !!! Here is information about obtaining TeX. Update it whenever.
-@c !!! Also consider updating TeX.README on ftp.gnu.org.
-@c Updated by RJC on 1 March 1995, conversation with MacKay.
-@c Updated by kb@cs.umb.edu on 29 July 1996.
-@c Updated by kb@cs.umb.edu on 25 April 1997.
-@c Updated by kb@cs.umb.edu on 27 February 1998.
-@TeX{} is freely redistributable. You can obtain @TeX{} for Unix
-systems via anonymous ftp or on physical media. The core material
-consists of the Web2c @TeX{} distribution (@uref{http://tug.org/web2c}).
-
-Instructions for retrieval by anonymous ftp and information on other
-available distributions:
-@example
-@uref{ftp://tug.org/tex/unixtex.ftp}
-@uref{http://tug.org/unixtex.ftp}
-@end example
-
-The Free Software Foundation provides a core distribution on its Source
-Code CD-ROM suitable for printing Texinfo manuals. To order it, contact:
-
-@display
-@group
-Free Software Foundation, Inc.
-59 Temple Place Suite 330
-Boston, MA @ @ 02111-1307
-USA
-Telephone: @w{+1-617-542-5942}
-Fax: (including Japan) @w{+1-617-542-2652}
-Free Dial Fax (in Japan):
-@w{ } @w{ } @w{ } 0031-13-2473 (KDD)
-@w{ } @w{ } @w{ } 0066-3382-0158 (IDC)
-Electronic mail: @code{gnu@@gnu.org}
-@end group
-@end display
-
-Many other @TeX{} distributions are available; see
-@uref{http://tug.org/}.
+@end ignore
@c These are no longer ``new'', and the explanations
@@ -18970,16 +20143,10 @@ Kill the @code{makeinfo} formatting job.
@c subheading Typeset and Print
@noindent
-Typeset and print Texinfo documents from within Emacs.@refill
+Typeset and print Texinfo documents from within Emacs.
-@ifinfo
@noindent
@xref{Printing}.
-@end ifinfo
-@iftex
-@noindent
-@xref{Printing, , Formatting and Printing}.
-@end iftex
@table @kbd
@item C-c C-t C-b
@@ -19157,7 +20324,7 @@ Format blocks of text.
@table @kbd
@item @@cartouche
-Draw rounded box surrounding text (not in Info).
+Draw rounded box surrounding text (no effect in Info).
@item @@enumerate @var{optional-arg}
Enumerate a list with letters or numbers.
diff --git a/contrib/texinfo/doc/version-stnd.texi b/contrib/texinfo/doc/version-stnd.texi
index 24db35c..32973a7 100644
--- a/contrib/texinfo/doc/version-stnd.texi
+++ b/contrib/texinfo/doc/version-stnd.texi
@@ -1,4 +1,4 @@
-@set UPDATED 19 February 2003
-@set UPDATED-MONTH February 2003
-@set EDITION 4.6
-@set VERSION 4.6
+@set UPDATED 14 December 2004
+@set UPDATED-MONTH December 2004
+@set EDITION 4.8
+@set VERSION 4.8
diff --git a/contrib/texinfo/doc/version.texi b/contrib/texinfo/doc/version.texi
index bb7f00a..ae55f87 100644
--- a/contrib/texinfo/doc/version.texi
+++ b/contrib/texinfo/doc/version.texi
@@ -1,4 +1,4 @@
-@set UPDATED 2 June 2003
-@set UPDATED-MONTH June 2003
-@set EDITION 4.6
-@set VERSION 4.6
+@set UPDATED 29 December 2004
+@set UPDATED-MONTH December 2004
+@set EDITION 4.8
+@set VERSION 4.8
diff --git a/contrib/texinfo/info/README b/contrib/texinfo/info/README
index 5ea39e2..4178a01 100644
--- a/contrib/texinfo/info/README
+++ b/contrib/texinfo/info/README
@@ -1,4 +1,4 @@
-$Id: README,v 1.2 2002/09/11 16:32:09 karl Exp $
+$Id: README,v 1.3 2004/04/11 17:56:45 karl Exp $
texinfo/info/README
Copyright (C) 2002 Free Software Foundation, Inc.
diff --git a/contrib/texinfo/info/dir.c b/contrib/texinfo/info/dir.c
index 626407f..98061df 100644
--- a/contrib/texinfo/info/dir.c
+++ b/contrib/texinfo/info/dir.c
@@ -1,7 +1,7 @@
/* dir.c -- how to build a special "dir" node from "localdir" files.
- $Id: dir.c,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: dir.c,v 1.3 2004/04/11 17:56:45 karl Exp $
- Copyright (C) 1993, 1997, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 1998, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,7 +28,11 @@
with the addition of the menus of every file named in the array
dirs_to_add which are found in INFOPATH. */
-static void add_menu_to_file_buffer (), insert_text_into_fb_at_binding ();
+static void add_menu_to_file_buffer (char *contents, long int size,
+ FILE_BUFFER *fb);
+static void insert_text_into_fb_at_binding (FILE_BUFFER *fb,
+ SEARCH_BINDING *binding, char *text, int textlen);
+void maybe_build_dir_node (char *dirname);
static char *dirs_to_add[] = {
"dir", "localdir", (char *)NULL
@@ -45,8 +49,7 @@ typedef struct
} dir_file_list_entry_type;
static int
-new_dir_file_p (test)
- struct stat *test;
+new_dir_file_p (struct stat *test)
{
static unsigned dir_file_list_len = 0;
static dir_file_list_entry_type *dir_file_list = NULL;
@@ -70,8 +73,7 @@ new_dir_file_p (test)
void
-maybe_build_dir_node (dirname)
- char *dirname;
+maybe_build_dir_node (char *dirname)
{
int path_index, update_tags;
char *this_dir;
@@ -162,10 +164,7 @@ maybe_build_dir_node (dirname)
to the menu found in FB->contents. Second argument SIZE is the total
size of CONTENTS. */
static void
-add_menu_to_file_buffer (contents, size, fb)
- char *contents;
- long size;
- FILE_BUFFER *fb;
+add_menu_to_file_buffer (char *contents, long int size, FILE_BUFFER *fb)
{
SEARCH_BINDING contents_binding, fb_binding;
long contents_offset, fb_offset;
@@ -271,11 +270,8 @@ add_menu_to_file_buffer (contents, size, fb)
}
static void
-insert_text_into_fb_at_binding (fb, binding, text, textlen)
- FILE_BUFFER *fb;
- SEARCH_BINDING *binding;
- char *text;
- int textlen;
+insert_text_into_fb_at_binding (FILE_BUFFER *fb,
+ SEARCH_BINDING *binding, char *text, int textlen)
{
char *contents;
long start, end;
diff --git a/contrib/texinfo/info/display.c b/contrib/texinfo/info/display.c
index 07fb3d5..1a9fd0a 100644
--- a/contrib/texinfo/info/display.c
+++ b/contrib/texinfo/info/display.c
@@ -1,7 +1,7 @@
/* display.c -- How to display Info windows.
- $Id: display.c,v 1.4 2003/05/13 16:20:44 karl Exp $
+ $Id: display.c,v 1.7 2004/04/11 17:56:45 karl Exp $
- Copyright (C) 1993, 1997, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,15 +17,19 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- Written by Brian Fox (bfox@ai.mit.edu). */
+ Originally written by Brian Fox (bfox@ai.mit.edu). */
#include "info.h"
#include "display.h"
-extern int info_any_buffered_input_p (); /* Found in session.c. */
+extern int info_any_buffered_input_p (void); /* Found in session.c. */
-static void free_display ();
-static DISPLAY_LINE **make_display ();
+static void free_display (DISPLAY_LINE **display);
+static DISPLAY_LINE **make_display (int width, int height);
+
+void handle_tag (char *tag);
+void handle_tag_start (char *tag);
+void handle_tag_end (char *tag);
/* An array of display lines which tell us what is currently visible on
the display. */
@@ -36,8 +40,7 @@ int display_inhibited = 0;
/* Initialize THE_DISPLAY to WIDTH and HEIGHT, with nothing in it. */
void
-display_initialize_display (width, height)
- int width, height;
+display_initialize_display (int width, int height)
{
free_display (the_display);
the_display = make_display (width, height);
@@ -46,13 +49,11 @@ display_initialize_display (width, height)
/* Clear all of the lines in DISPLAY making the screen blank. */
void
-display_clear_display (display)
- DISPLAY_LINE **display;
+display_clear_display (DISPLAY_LINE **display)
{
register int i;
- register DISPLAY_LINE *display_line;
- for (i = 0; (display_line = display[i]); i++)
+ for (i = 0; display[i]; i++)
{
display[i]->text[0] = '\0';
display[i]->textlen = 0;
@@ -66,8 +67,7 @@ int display_was_interrupted_p = 0;
/* Update the windows pointed to by WINDOW in the_display. This actually
writes the text on the screen. */
void
-display_update_display (window)
- WINDOW *window;
+display_update_display (WINDOW *window)
{
register WINDOW *win;
@@ -91,11 +91,36 @@ display_update_display (window)
display_update_one_window (the_echo_area);
}
+void
+handle_tag_start (char *tag)
+{
+ /* TODO really handle this tag. */
+ return;
+}
+
+void
+handle_tag_end (char *tag)
+{
+ /* TODO really handle this tag. */
+ return;
+}
+
+void
+handle_tag (char *tag)
+{
+ if (tag[0] == '/')
+ {
+ tag++;
+ handle_tag_end (tag);
+ }
+ else
+ handle_tag_start (tag);
+}
+
/* Display WIN on the_display. Unlike display_update_display (), this
function only does one window. */
void
-display_update_one_window (win)
- WINDOW *win;
+display_update_one_window (WINDOW *win)
{
register char *nodetext; /* Current character to display. */
register char *last_node_char; /* Position of the last character in node. */
@@ -153,12 +178,40 @@ display_update_one_window (win)
replen = win->width - pl_index + pl_ignore;
}
else if (*nodetext == '\0'
- && (nodetext + 1) < last_node_char
- && *(nodetext + 1) == '\b')
+ && (nodetext + 2) < last_node_char
+ && *(nodetext + 1) == '\b'
+ && *(nodetext + 2) == '[')
{
- /* Found new style image tag/cookie \0\b[ or \0\b]
- Just skip for now. */
- nodetext++;
+ /* Found new style tag/cookie \0\b[
+ Read until the closing tag \0\b] */
+ int element_len = 0;
+ char *element;
+
+ /* Skip the escapes. */
+ nodetext += 3;
+
+ while (!(*nodetext == '\0'
+ && *(nodetext + 1) == '\b'
+ && *(nodetext + 2) == ']'))
+ {
+ nodetext++;
+ element_len++;
+ }
+
+ element = (char *) malloc (element_len + 1);
+ strncpy (element, nodetext - element_len, element_len);
+
+ /* Skip the escapes. */
+ nodetext += 2;
+ pl_ignore += element_len + 5;
+ /* Append string terminator. */
+ element[element_len] = '\0';
+
+ handle_tag (element);
+
+ /* Over and out */
+ free (element);
+
continue;
}
else
@@ -283,7 +336,7 @@ display_update_one_window (win)
fflush (stdout);
/* Update the display text buffer. */
- if (strlen (printed_line) > screenwidth)
+ if (strlen (printed_line) > (unsigned int) screenwidth)
/* printed_line[] can include more than screenwidth
characters if we are under -R and there are escape
sequences in it. However, entry->text was
@@ -395,8 +448,7 @@ display_update_one_window (win)
for no scrolling to take place in the case that the terminal doesn't
support it. This doesn't matter to us. */
void
-display_scroll_display (start, end, amount)
- int start, end, amount;
+display_scroll_display (int start, int end, int amount)
{
register int i, last;
DISPLAY_LINE *temp;
@@ -466,10 +518,8 @@ display_scroll_display (start, end, amount)
starts that used to appear in this window. OLD_COUNT is the number of lines
that appear in the OLD_STARTS array. */
void
-display_scroll_line_starts (window, old_pagetop, old_starts, old_count)
- WINDOW *window;
- int old_pagetop, old_count;
- char **old_starts;
+display_scroll_line_starts (WINDOW *window, int old_pagetop,
+ char **old_starts, int old_count)
{
register int i, old, new; /* Indices into the line starts arrays. */
int last_new, last_old; /* Index of the last visible line. */
@@ -541,8 +591,7 @@ display_scroll_line_starts (window, old_pagetop, old_starts, old_count)
/* Move the screen cursor to directly over the current character in WINDOW. */
void
-display_cursor_at_point (window)
- WINDOW *window;
+display_cursor_at_point (WINDOW *window)
{
int vpos, hpos;
@@ -560,8 +609,7 @@ display_cursor_at_point (window)
/* Make a DISPLAY_LINE ** with width and height. */
static DISPLAY_LINE **
-make_display (width, height)
- int width, height;
+make_display (int width, int height)
{
register int i;
DISPLAY_LINE **display;
@@ -581,8 +629,7 @@ make_display (width, height)
/* Free the storage allocated to DISPLAY. */
static void
-free_display (display)
- DISPLAY_LINE **display;
+free_display (DISPLAY_LINE **display)
{
register int i;
register DISPLAY_LINE *display_line;
diff --git a/contrib/texinfo/info/display.h b/contrib/texinfo/info/display.h
index f1cf8c0..286db29 100644
--- a/contrib/texinfo/info/display.h
+++ b/contrib/texinfo/info/display.h
@@ -1,10 +1,10 @@
/* display.h -- How the display in Info is done.
- $Id: display.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: display.h,v 1.3 2004/04/11 17:56:45 karl Exp $
This file is part of GNU Info, a program for reading online documentation
stored in Info format.
- Copyright (C) 1993, 97 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -45,33 +45,34 @@ extern int display_inhibited;
extern int display_was_interrupted_p;
/* Initialize THE_DISPLAY to WIDTH and HEIGHT, with nothing in it. */
-extern void display_initialize_display ();
+extern void display_initialize_display (int width, int height);
/* Clear all of the lines in DISPLAY making the screen blank. */
-extern void display_clear_display ();
+extern void display_clear_display (DISPLAY_LINE **display);
/* Update the windows pointed to by WINDOWS in THE_DISPLAY. This actually
writes the text on the screen. */
-extern void display_update_display ();
+extern void display_update_display (WINDOW *window);
/* Display WIN on THE_DISPLAY. Unlike display_update_display (), this
function only does one window. */
-extern void display_update_one_window ();
+extern void display_update_one_window (WINDOW *win);
/* Move the screen cursor to directly over the current character in WINDOW. */
-extern void display_cursor_at_point ();
+extern void display_cursor_at_point (WINDOW *window);
/* Scroll the region of the_display starting at START, ending at END, and
moving the lines AMOUNT lines. If AMOUNT is less than zero, the lines
are moved up in the screen, otherwise down. Actually, it is possible
for no scrolling to take place in the case that the terminal doesn't
support it. This doesn't matter to us. */
-extern void display_scroll_display ();
+extern void display_scroll_display (int start, int end, int amount);
/* Try to scroll lines in WINDOW. OLD_PAGETOP is the pagetop of WINDOW before
having had its line starts recalculated. OLD_STARTS is the list of line
starts that used to appear in this window. OLD_COUNT is the number of lines
that appear in the OLD_STARTS array. */
-extern void display_scroll_line_starts ();
+extern void display_scroll_line_starts (WINDOW *window, int old_pagetop,
+ char **old_starts, int old_count);
#endif /* not INFO_DISPLAY_H */
diff --git a/contrib/texinfo/info/doc.c b/contrib/texinfo/info/doc.c
index 4ca2266..324219e 100644
--- a/contrib/texinfo/info/doc.c
+++ b/contrib/texinfo/info/doc.c
@@ -1,7 +1,7 @@
/* doc.c -- Generated structure containing function names and doc strings.
This file was automatically made from various source files with the
- command "./makedoc". DO NOT EDIT THIS FILE, only "./makedoc.c".
+ command `..//info/makedoc'. DO NOT EDIT THIS FILE, only `..//info/makedoc.c'.
Source files groveled to make this file include:
./session.c
@@ -24,123 +24,123 @@
FUNCTION_DOC function_doc_array[] = {
/* Commands found in "./session.c". */
- { info_next_line, "next-line", (FUNCTION_KEYSEQ *)0, "Move down to the next line" },
- { info_prev_line, "prev-line", (FUNCTION_KEYSEQ *)0, "Move up to the previous line" },
- { info_end_of_line, "end-of-line", (FUNCTION_KEYSEQ *)0, "Move to the end of the line" },
- { info_beginning_of_line, "beginning-of-line", (FUNCTION_KEYSEQ *)0, "Move to the start of the line" },
- { info_forward_char, "forward-char", (FUNCTION_KEYSEQ *)0, "Move forward a character" },
- { info_backward_char, "backward-char", (FUNCTION_KEYSEQ *)0, "Move backward a character" },
- { info_forward_word, "forward-word", (FUNCTION_KEYSEQ *)0, "Move forward a word" },
- { info_backward_word, "backward-word", (FUNCTION_KEYSEQ *)0, "Move backward a word" },
- { info_global_next_node, "global-next-node", (FUNCTION_KEYSEQ *)0, "Move forwards or down through node structure" },
- { info_global_prev_node, "global-prev-node", (FUNCTION_KEYSEQ *)0, "Move backwards or up through node structure" },
- { info_scroll_forward, "scroll-forward", (FUNCTION_KEYSEQ *)0, "Scroll forward in this window" },
- { info_scroll_forward_set_window, "scroll-forward-set-window", (FUNCTION_KEYSEQ *)0, "Scroll forward in this window and set default window size" },
- { info_scroll_forward_page_only, "scroll-forward-page-only", (FUNCTION_KEYSEQ *)0, "Scroll forward in this window staying within node" },
- { info_scroll_forward_page_only_set_window, "scroll-forward-page-only-set-window", (FUNCTION_KEYSEQ *)0, "Scroll forward in this window staying within node and set default window size" },
- { info_scroll_backward, "scroll-backward", (FUNCTION_KEYSEQ *)0, "Scroll backward in this window" },
- { info_scroll_backward_set_window, "scroll-backward-set-window", (FUNCTION_KEYSEQ *)0, "Scroll backward in this window and set default window size" },
- { info_scroll_backward_page_only, "scroll-backward-page-only", (FUNCTION_KEYSEQ *)0, "Scroll backward in this window staying within node" },
- { info_scroll_backward_page_only_set_window, "scroll-backward-page-only-set-window", (FUNCTION_KEYSEQ *)0, "Scroll backward in this window staying within node and set default window size" },
- { info_beginning_of_node, "beginning-of-node", (FUNCTION_KEYSEQ *)0, "Move to the start of this node" },
- { info_end_of_node, "end-of-node", (FUNCTION_KEYSEQ *)0, "Move to the end of this node" },
- { info_down_line, "down-line", (FUNCTION_KEYSEQ *)0, "Scroll down by lines" },
- { info_up_line, "up-line", (FUNCTION_KEYSEQ *)0, "Scroll up by lines" },
- { info_scroll_half_screen_down, "scroll-half-screen-down", (FUNCTION_KEYSEQ *)0, "Scroll down by half screen size" },
- { info_scroll_half_screen_up, "scroll-half-screen-up", (FUNCTION_KEYSEQ *)0, "Scroll up by half screen size" },
- { info_next_window, "next-window", (FUNCTION_KEYSEQ *)0, "Select the next window" },
- { info_prev_window, "prev-window", (FUNCTION_KEYSEQ *)0, "Select the previous window" },
- { info_split_window, "split-window", (FUNCTION_KEYSEQ *)0, "Split the current window" },
- { info_delete_window, "delete-window", (FUNCTION_KEYSEQ *)0, "Delete the current window" },
- { info_keep_one_window, "keep-one-window", (FUNCTION_KEYSEQ *)0, "Delete all other windows" },
- { info_scroll_other_window, "scroll-other-window", (FUNCTION_KEYSEQ *)0, "Scroll the other window" },
- { info_scroll_other_window_backward, "scroll-other-window-backward", (FUNCTION_KEYSEQ *)0, "Scroll the other window backward" },
- { info_grow_window, "grow-window", (FUNCTION_KEYSEQ *)0, "Grow (or shrink) this window" },
- { info_tile_windows, "tile-windows", (FUNCTION_KEYSEQ *)0, "Divide the available screen space among the visible windows" },
- { info_toggle_wrap, "toggle-wrap", (FUNCTION_KEYSEQ *)0, "Toggle the state of line wrapping in the current window" },
- { info_next_node, "next-node", (FUNCTION_KEYSEQ *)0, "Select the Next node" },
- { info_prev_node, "prev-node", (FUNCTION_KEYSEQ *)0, "Select the Prev node" },
- { info_up_node, "up-node", (FUNCTION_KEYSEQ *)0, "Select the Up node" },
- { info_last_node, "last-node", (FUNCTION_KEYSEQ *)0, "Select the last node in this file" },
- { info_first_node, "first-node", (FUNCTION_KEYSEQ *)0, "Select the first node in this file" },
- { info_last_menu_item, "last-menu-item", (FUNCTION_KEYSEQ *)0, "Select the last item in this node's menu" },
- { info_menu_digit, "menu-digit", (FUNCTION_KEYSEQ *)0, "Select this menu item" },
- { info_menu_item, "menu-item", (FUNCTION_KEYSEQ *)0, "Read a menu item and select its node" },
- { info_xref_item, "xref-item", (FUNCTION_KEYSEQ *)0, "Read a footnote or cross reference and select its node" },
- { info_find_menu, "find-menu", (FUNCTION_KEYSEQ *)0, "Move to the start of this node's menu" },
- { info_visit_menu, "visit-menu", (FUNCTION_KEYSEQ *)0, "Visit as many menu items at once as possible" },
- { info_goto_node, "goto-node", (FUNCTION_KEYSEQ *)0, "Read a node name and select it" },
- { info_menu_sequence, "menu-sequence", (FUNCTION_KEYSEQ *)0, "Read a list of menus starting from dir and follow them" },
- { info_goto_invocation_node, "goto-invocation-node", (FUNCTION_KEYSEQ *)0, "Find the node describing program invocation" },
- { info_man, "man", (FUNCTION_KEYSEQ *)0, "Read a manpage reference and select it" },
- { info_top_node, "top-node", (FUNCTION_KEYSEQ *)0, "Select the node `Top' in this file" },
- { info_dir_node, "dir-node", (FUNCTION_KEYSEQ *)0, "Select the node `(dir)'" },
- { info_history_node, "history-node", (FUNCTION_KEYSEQ *)0, "Select the most recently selected node" },
- { info_kill_node, "kill-node", (FUNCTION_KEYSEQ *)0, "Kill this node" },
- { info_view_file, "view-file", (FUNCTION_KEYSEQ *)0, "Read the name of a file and select it" },
- { info_print_node, "print-node", (FUNCTION_KEYSEQ *)0, "Pipe the contents of this node through INFO_PRINT_COMMAND" },
- { info_search_case_sensitively, "search-case-sensitively", (FUNCTION_KEYSEQ *)0, "Read a string and search for it case-sensitively" },
- { info_search, "search", (FUNCTION_KEYSEQ *)0, "Read a string and search for it" },
- { info_search_backward, "search-backward", (FUNCTION_KEYSEQ *)0, "Read a string and search backward for it" },
- { info_search_next, "search-next", (FUNCTION_KEYSEQ *)0, "Repeat last search in the same direction" },
- { info_search_previous, "search-previous", (FUNCTION_KEYSEQ *)0, "Repeat last search in the reverse direction" },
- { isearch_forward, "isearch-forward", (FUNCTION_KEYSEQ *)0, "Search interactively for a string as you type it" },
- { isearch_backward, "isearch-backward", (FUNCTION_KEYSEQ *)0, "Search interactively for a string as you type it" },
- { info_move_to_prev_xref, "move-to-prev-xref", (FUNCTION_KEYSEQ *)0, "Move to the previous cross reference" },
- { info_move_to_next_xref, "move-to-next-xref", (FUNCTION_KEYSEQ *)0, "Move to the next cross reference" },
- { info_select_reference_this_line, "select-reference-this-line", (FUNCTION_KEYSEQ *)0, "Select reference or menu item appearing on this line" },
- { info_abort_key, "abort-key", (FUNCTION_KEYSEQ *)0, "Cancel current operation" },
- { info_move_to_window_line, "move-to-window-line", (FUNCTION_KEYSEQ *)0, "Move the cursor to a specific line of the window" },
- { info_redraw_display, "redraw-display", (FUNCTION_KEYSEQ *)0, "Redraw the display" },
- { info_quit, "quit", (FUNCTION_KEYSEQ *)0, "Quit using Info" },
- { info_do_lowercase_version, "do-lowercase-version", (FUNCTION_KEYSEQ *)0, "Run command bound to this key's lowercase variant" },
- { info_add_digit_to_numeric_arg, "add-digit-to-numeric-arg", (FUNCTION_KEYSEQ *)0, "Add this digit to the current numeric argument" },
- { info_universal_argument, "universal-argument", (FUNCTION_KEYSEQ *)0, "Start (or multiply by 4) the current numeric argument" },
- { info_numeric_arg_digit_loop, "numeric-arg-digit-loop", (FUNCTION_KEYSEQ *)0, "Internally used by \\[universal-argument]" },
+ { (VFunction *)info_next_line, "next-line", (FUNCTION_KEYSEQ *)0, "Move down to the next line" },
+ { (VFunction *)info_prev_line, "prev-line", (FUNCTION_KEYSEQ *)0, "Move up to the previous line" },
+ { (VFunction *)info_end_of_line, "end-of-line", (FUNCTION_KEYSEQ *)0, "Move to the end of the line" },
+ { (VFunction *)info_beginning_of_line, "beginning-of-line", (FUNCTION_KEYSEQ *)0, "Move to the start of the line" },
+ { (VFunction *)info_forward_char, "forward-char", (FUNCTION_KEYSEQ *)0, "Move forward a character" },
+ { (VFunction *)info_backward_char, "backward-char", (FUNCTION_KEYSEQ *)0, "Move backward a character" },
+ { (VFunction *)info_forward_word, "forward-word", (FUNCTION_KEYSEQ *)0, "Move forward a word" },
+ { (VFunction *)info_backward_word, "backward-word", (FUNCTION_KEYSEQ *)0, "Move backward a word" },
+ { (VFunction *)info_global_next_node, "global-next-node", (FUNCTION_KEYSEQ *)0, "Move forwards or down through node structure" },
+ { (VFunction *)info_global_prev_node, "global-prev-node", (FUNCTION_KEYSEQ *)0, "Move backwards or up through node structure" },
+ { (VFunction *)info_scroll_forward, "scroll-forward", (FUNCTION_KEYSEQ *)0, "Scroll forward in this window" },
+ { (VFunction *)info_scroll_forward_set_window, "scroll-forward-set-window", (FUNCTION_KEYSEQ *)0, "Scroll forward in this window and set default window size" },
+ { (VFunction *)info_scroll_forward_page_only, "scroll-forward-page-only", (FUNCTION_KEYSEQ *)0, "Scroll forward in this window staying within node" },
+ { (VFunction *)info_scroll_forward_page_only_set_window, "scroll-forward-page-only-set-window", (FUNCTION_KEYSEQ *)0, "Scroll forward in this window staying within node and set default window size" },
+ { (VFunction *)info_scroll_backward, "scroll-backward", (FUNCTION_KEYSEQ *)0, "Scroll backward in this window" },
+ { (VFunction *)info_scroll_backward_set_window, "scroll-backward-set-window", (FUNCTION_KEYSEQ *)0, "Scroll backward in this window and set default window size" },
+ { (VFunction *)info_scroll_backward_page_only, "scroll-backward-page-only", (FUNCTION_KEYSEQ *)0, "Scroll backward in this window staying within node" },
+ { (VFunction *)info_scroll_backward_page_only_set_window, "scroll-backward-page-only-set-window", (FUNCTION_KEYSEQ *)0, "Scroll backward in this window staying within node and set default window size" },
+ { (VFunction *)info_beginning_of_node, "beginning-of-node", (FUNCTION_KEYSEQ *)0, "Move to the start of this node" },
+ { (VFunction *)info_end_of_node, "end-of-node", (FUNCTION_KEYSEQ *)0, "Move to the end of this node" },
+ { (VFunction *)info_down_line, "down-line", (FUNCTION_KEYSEQ *)0, "Scroll down by lines" },
+ { (VFunction *)info_up_line, "up-line", (FUNCTION_KEYSEQ *)0, "Scroll up by lines" },
+ { (VFunction *)info_scroll_half_screen_down, "scroll-half-screen-down", (FUNCTION_KEYSEQ *)0, "Scroll down by half screen size" },
+ { (VFunction *)info_scroll_half_screen_up, "scroll-half-screen-up", (FUNCTION_KEYSEQ *)0, "Scroll up by half screen size" },
+ { (VFunction *)info_next_window, "next-window", (FUNCTION_KEYSEQ *)0, "Select the next window" },
+ { (VFunction *)info_prev_window, "prev-window", (FUNCTION_KEYSEQ *)0, "Select the previous window" },
+ { (VFunction *)info_split_window, "split-window", (FUNCTION_KEYSEQ *)0, "Split the current window" },
+ { (VFunction *)info_delete_window, "delete-window", (FUNCTION_KEYSEQ *)0, "Delete the current window" },
+ { (VFunction *)info_keep_one_window, "keep-one-window", (FUNCTION_KEYSEQ *)0, "Delete all other windows" },
+ { (VFunction *)info_scroll_other_window, "scroll-other-window", (FUNCTION_KEYSEQ *)0, "Scroll the other window" },
+ { (VFunction *)info_scroll_other_window_backward, "scroll-other-window-backward", (FUNCTION_KEYSEQ *)0, "Scroll the other window backward" },
+ { (VFunction *)info_grow_window, "grow-window", (FUNCTION_KEYSEQ *)0, "Grow (or shrink) this window" },
+ { (VFunction *)info_tile_windows, "tile-windows", (FUNCTION_KEYSEQ *)0, "Divide the available screen space among the visible windows" },
+ { (VFunction *)info_toggle_wrap, "toggle-wrap", (FUNCTION_KEYSEQ *)0, "Toggle the state of line wrapping in the current window" },
+ { (VFunction *)info_next_node, "next-node", (FUNCTION_KEYSEQ *)0, "Select the Next node" },
+ { (VFunction *)info_prev_node, "prev-node", (FUNCTION_KEYSEQ *)0, "Select the Prev node" },
+ { (VFunction *)info_up_node, "up-node", (FUNCTION_KEYSEQ *)0, "Select the Up node" },
+ { (VFunction *)info_last_node, "last-node", (FUNCTION_KEYSEQ *)0, "Select the last node in this file" },
+ { (VFunction *)info_first_node, "first-node", (FUNCTION_KEYSEQ *)0, "Select the first node in this file" },
+ { (VFunction *)info_last_menu_item, "last-menu-item", (FUNCTION_KEYSEQ *)0, "Select the last item in this node's menu" },
+ { (VFunction *)info_menu_digit, "menu-digit", (FUNCTION_KEYSEQ *)0, "Select this menu item" },
+ { (VFunction *)info_menu_item, "menu-item", (FUNCTION_KEYSEQ *)0, "Read a menu item and select its node" },
+ { (VFunction *)info_xref_item, "xref-item", (FUNCTION_KEYSEQ *)0, "Read a footnote or cross reference and select its node" },
+ { (VFunction *)info_find_menu, "find-menu", (FUNCTION_KEYSEQ *)0, "Move to the start of this node's menu" },
+ { (VFunction *)info_visit_menu, "visit-menu", (FUNCTION_KEYSEQ *)0, "Visit as many menu items at once as possible" },
+ { (VFunction *)info_goto_node, "goto-node", (FUNCTION_KEYSEQ *)0, "Read a node name and select it" },
+ { (VFunction *)info_menu_sequence, "menu-sequence", (FUNCTION_KEYSEQ *)0, "Read a list of menus starting from dir and follow them" },
+ { (VFunction *)info_goto_invocation_node, "goto-invocation-node", (FUNCTION_KEYSEQ *)0, "Find the node describing program invocation" },
+ { (VFunction *)info_man, "man", (FUNCTION_KEYSEQ *)0, "Read a manpage reference and select it" },
+ { (VFunction *)info_top_node, "top-node", (FUNCTION_KEYSEQ *)0, "Select the node `Top' in this file" },
+ { (VFunction *)info_dir_node, "dir-node", (FUNCTION_KEYSEQ *)0, "Select the node `(dir)'" },
+ { (VFunction *)info_history_node, "history-node", (FUNCTION_KEYSEQ *)0, "Select the most recently selected node" },
+ { (VFunction *)info_kill_node, "kill-node", (FUNCTION_KEYSEQ *)0, "Kill this node" },
+ { (VFunction *)info_view_file, "view-file", (FUNCTION_KEYSEQ *)0, "Read the name of a file and select it" },
+ { (VFunction *)info_print_node, "print-node", (FUNCTION_KEYSEQ *)0, "Pipe the contents of this node through INFO_PRINT_COMMAND" },
+ { (VFunction *)info_search_case_sensitively, "search-case-sensitively", (FUNCTION_KEYSEQ *)0, "Read a string and search for it case-sensitively" },
+ { (VFunction *)info_search, "search", (FUNCTION_KEYSEQ *)0, "Read a string and search for it" },
+ { (VFunction *)info_search_backward, "search-backward", (FUNCTION_KEYSEQ *)0, "Read a string and search backward for it" },
+ { (VFunction *)info_search_next, "search-next", (FUNCTION_KEYSEQ *)0, "Repeat last search in the same direction" },
+ { (VFunction *)info_search_previous, "search-previous", (FUNCTION_KEYSEQ *)0, "Repeat last search in the reverse direction" },
+ { (VFunction *)isearch_forward, "isearch-forward", (FUNCTION_KEYSEQ *)0, "Search interactively for a string as you type it" },
+ { (VFunction *)isearch_backward, "isearch-backward", (FUNCTION_KEYSEQ *)0, "Search interactively for a string as you type it" },
+ { (VFunction *)info_move_to_prev_xref, "move-to-prev-xref", (FUNCTION_KEYSEQ *)0, "Move to the previous cross reference" },
+ { (VFunction *)info_move_to_next_xref, "move-to-next-xref", (FUNCTION_KEYSEQ *)0, "Move to the next cross reference" },
+ { (VFunction *)info_select_reference_this_line, "select-reference-this-line", (FUNCTION_KEYSEQ *)0, "Select reference or menu item appearing on this line" },
+ { (VFunction *)info_abort_key, "abort-key", (FUNCTION_KEYSEQ *)0, "Cancel current operation" },
+ { (VFunction *)info_move_to_window_line, "move-to-window-line", (FUNCTION_KEYSEQ *)0, "Move the cursor to a specific line of the window" },
+ { (VFunction *)info_redraw_display, "redraw-display", (FUNCTION_KEYSEQ *)0, "Redraw the display" },
+ { (VFunction *)info_quit, "quit", (FUNCTION_KEYSEQ *)0, "Quit using Info" },
+ { (VFunction *)info_do_lowercase_version, "do-lowercase-version", (FUNCTION_KEYSEQ *)0, "Run command bound to this key's lowercase variant" },
+ { (VFunction *)info_add_digit_to_numeric_arg, "add-digit-to-numeric-arg", (FUNCTION_KEYSEQ *)0, "Add this digit to the current numeric argument" },
+ { (VFunction *)info_universal_argument, "universal-argument", (FUNCTION_KEYSEQ *)0, "Start (or multiply by 4) the current numeric argument" },
+ { (VFunction *)info_numeric_arg_digit_loop, "numeric-arg-digit-loop", (FUNCTION_KEYSEQ *)0, "Internally used by \\[universal-argument]" },
/* Commands found in "./echo-area.c". */
- { ea_forward, "echo-area-forward", (FUNCTION_KEYSEQ *)0, "Move forward a character" },
- { ea_backward, "echo-area-backward", (FUNCTION_KEYSEQ *)0, "Move backward a character" },
- { ea_beg_of_line, "echo-area-beg-of-line", (FUNCTION_KEYSEQ *)0, "Move to the start of this line" },
- { ea_end_of_line, "echo-area-end-of-line", (FUNCTION_KEYSEQ *)0, "Move to the end of this line" },
- { ea_forward_word, "echo-area-forward-word", (FUNCTION_KEYSEQ *)0, "Move forward a word" },
- { ea_backward_word, "echo-area-backward-word", (FUNCTION_KEYSEQ *)0, "Move backward a word" },
- { ea_delete, "echo-area-delete", (FUNCTION_KEYSEQ *)0, "Delete the character under the cursor" },
- { ea_rubout, "echo-area-rubout", (FUNCTION_KEYSEQ *)0, "Delete the character behind the cursor" },
- { ea_abort, "echo-area-abort", (FUNCTION_KEYSEQ *)0, "Cancel or quit operation" },
- { ea_newline, "echo-area-newline", (FUNCTION_KEYSEQ *)0, "Accept (or force completion of) this line" },
- { ea_quoted_insert, "echo-area-quoted-insert", (FUNCTION_KEYSEQ *)0, "Insert next character verbatim" },
- { ea_insert, "echo-area-insert", (FUNCTION_KEYSEQ *)0, "Insert this character" },
- { ea_tab_insert, "echo-area-tab-insert", (FUNCTION_KEYSEQ *)0, "Insert a TAB character" },
- { ea_transpose_chars, "echo-area-transpose-chars", (FUNCTION_KEYSEQ *)0, "Transpose characters at point" },
- { ea_yank, "echo-area-yank", (FUNCTION_KEYSEQ *)0, "Yank back the contents of the last kill" },
- { ea_yank_pop, "echo-area-yank-pop", (FUNCTION_KEYSEQ *)0, "Yank back a previous kill" },
- { ea_kill_line, "echo-area-kill-line", (FUNCTION_KEYSEQ *)0, "Kill to the end of the line" },
- { ea_backward_kill_line, "echo-area-backward-kill-line", (FUNCTION_KEYSEQ *)0, "Kill to the beginning of the line" },
- { ea_kill_word, "echo-area-kill-word", (FUNCTION_KEYSEQ *)0, "Kill the word following the cursor" },
- { ea_backward_kill_word, "echo-area-backward-kill-word", (FUNCTION_KEYSEQ *)0, "Kill the word preceding the cursor" },
- { ea_possible_completions, "echo-area-possible-completions", (FUNCTION_KEYSEQ *)0, "List possible completions" },
- { ea_complete, "echo-area-complete", (FUNCTION_KEYSEQ *)0, "Insert completion" },
- { ea_scroll_completions_window, "echo-area-scroll-completions-window", (FUNCTION_KEYSEQ *)0, "Scroll the completions window" },
+ { (VFunction *)ea_forward, "echo-area-forward", (FUNCTION_KEYSEQ *)0, "Move forward a character" },
+ { (VFunction *)ea_backward, "echo-area-backward", (FUNCTION_KEYSEQ *)0, "Move backward a character" },
+ { (VFunction *)ea_beg_of_line, "echo-area-beg-of-line", (FUNCTION_KEYSEQ *)0, "Move to the start of this line" },
+ { (VFunction *)ea_end_of_line, "echo-area-end-of-line", (FUNCTION_KEYSEQ *)0, "Move to the end of this line" },
+ { (VFunction *)ea_forward_word, "echo-area-forward-word", (FUNCTION_KEYSEQ *)0, "Move forward a word" },
+ { (VFunction *)ea_backward_word, "echo-area-backward-word", (FUNCTION_KEYSEQ *)0, "Move backward a word" },
+ { (VFunction *)ea_delete, "echo-area-delete", (FUNCTION_KEYSEQ *)0, "Delete the character under the cursor" },
+ { (VFunction *)ea_rubout, "echo-area-rubout", (FUNCTION_KEYSEQ *)0, "Delete the character behind the cursor" },
+ { (VFunction *)ea_abort, "echo-area-abort", (FUNCTION_KEYSEQ *)0, "Cancel or quit operation" },
+ { (VFunction *)ea_newline, "echo-area-newline", (FUNCTION_KEYSEQ *)0, "Accept (or force completion of) this line" },
+ { (VFunction *)ea_quoted_insert, "echo-area-quoted-insert", (FUNCTION_KEYSEQ *)0, "Insert next character verbatim" },
+ { (VFunction *)ea_insert, "echo-area-insert", (FUNCTION_KEYSEQ *)0, "Insert this character" },
+ { (VFunction *)ea_tab_insert, "echo-area-tab-insert", (FUNCTION_KEYSEQ *)0, "Insert a TAB character" },
+ { (VFunction *)ea_transpose_chars, "echo-area-transpose-chars", (FUNCTION_KEYSEQ *)0, "Transpose characters at point" },
+ { (VFunction *)ea_yank, "echo-area-yank", (FUNCTION_KEYSEQ *)0, "Yank back the contents of the last kill" },
+ { (VFunction *)ea_yank_pop, "echo-area-yank-pop", (FUNCTION_KEYSEQ *)0, "Yank back a previous kill" },
+ { (VFunction *)ea_kill_line, "echo-area-kill-line", (FUNCTION_KEYSEQ *)0, "Kill to the end of the line" },
+ { (VFunction *)ea_backward_kill_line, "echo-area-backward-kill-line", (FUNCTION_KEYSEQ *)0, "Kill to the beginning of the line" },
+ { (VFunction *)ea_kill_word, "echo-area-kill-word", (FUNCTION_KEYSEQ *)0, "Kill the word following the cursor" },
+ { (VFunction *)ea_backward_kill_word, "echo-area-backward-kill-word", (FUNCTION_KEYSEQ *)0, "Kill the word preceding the cursor" },
+ { (VFunction *)ea_possible_completions, "echo-area-possible-completions", (FUNCTION_KEYSEQ *)0, "List possible completions" },
+ { (VFunction *)ea_complete, "echo-area-complete", (FUNCTION_KEYSEQ *)0, "Insert completion" },
+ { (VFunction *)ea_scroll_completions_window, "echo-area-scroll-completions-window", (FUNCTION_KEYSEQ *)0, "Scroll the completions window" },
/* Commands found in "./infodoc.c". */
- { info_get_help_window, "get-help-window", (FUNCTION_KEYSEQ *)0, "Display help message" },
- { info_get_info_help_node, "get-info-help-node", (FUNCTION_KEYSEQ *)0, "Visit Info node `(info)Help'" },
- { describe_key, "describe-key", (FUNCTION_KEYSEQ *)0, "Print documentation for KEY" },
- { info_where_is, "where-is", (FUNCTION_KEYSEQ *)0, "Show what to type to execute a given command" },
+ { (VFunction *)info_get_help_window, "get-help-window", (FUNCTION_KEYSEQ *)0, "Display help message" },
+ { (VFunction *)info_get_info_help_node, "get-info-help-node", (FUNCTION_KEYSEQ *)0, "Visit Info node `(info)Help'" },
+ { (VFunction *)describe_key, "describe-key", (FUNCTION_KEYSEQ *)0, "Print documentation for KEY" },
+ { (VFunction *)info_where_is, "where-is", (FUNCTION_KEYSEQ *)0, "Show what to type to execute a given command" },
/* Commands found in "./m-x.c". */
- { describe_command, "describe-command", (FUNCTION_KEYSEQ *)0, "Read the name of an Info command and describe it" },
- { info_execute_command, "execute-command", (FUNCTION_KEYSEQ *)0, "Read a command name in the echo area and execute it" },
- { set_screen_height, "set-screen-height", (FUNCTION_KEYSEQ *)0, "Set the height of the displayed window" },
+ { (VFunction *)describe_command, "describe-command", (FUNCTION_KEYSEQ *)0, "Read the name of an Info command and describe it" },
+ { (VFunction *)info_execute_command, "execute-command", (FUNCTION_KEYSEQ *)0, "Read a command name in the echo area and execute it" },
+ { (VFunction *)set_screen_height, "set-screen-height", (FUNCTION_KEYSEQ *)0, "Set the height of the displayed window" },
/* Commands found in "./indices.c". */
- { info_index_search, "index-search", (FUNCTION_KEYSEQ *)0, "Look up a string in the index for this file" },
- { info_next_index_match, "next-index-match", (FUNCTION_KEYSEQ *)0, "Go to the next matching index item from the last `\\[index-search]' command" },
- { info_index_apropos, "index-apropos", (FUNCTION_KEYSEQ *)0, "Grovel all known info file's indices for a string and build a menu" },
+ { (VFunction *)info_index_search, "index-search", (FUNCTION_KEYSEQ *)0, "Look up a string in the index for this file" },
+ { (VFunction *)info_next_index_match, "next-index-match", (FUNCTION_KEYSEQ *)0, "Go to the next matching index item from the last `\\[index-search]' command" },
+ { (VFunction *)info_index_apropos, "index-apropos", (FUNCTION_KEYSEQ *)0, "Grovel all known info file's indices for a string and build a menu" },
/* Commands found in "./nodemenu.c". */
- { list_visited_nodes, "list-visited-nodes", (FUNCTION_KEYSEQ *)0, "Make a window containing a menu of all of the currently visited nodes" },
- { select_visited_node, "select-visited-node", (FUNCTION_KEYSEQ *)0, "Select a node which has been previously visited in a visible window" },
+ { (VFunction *)list_visited_nodes, "list-visited-nodes", (FUNCTION_KEYSEQ *)0, "Make a window containing a menu of all of the currently visited nodes" },
+ { (VFunction *)select_visited_node, "select-visited-node", (FUNCTION_KEYSEQ *)0, "Select a node which has been previously visited in a visible window" },
/* Commands found in "./footnotes.c". */
- { info_show_footnotes, "show-footnotes", (FUNCTION_KEYSEQ *)0, "Show the footnotes associated with this node in another window" },
+ { (VFunction *)info_show_footnotes, "show-footnotes", (FUNCTION_KEYSEQ *)0, "Show the footnotes associated with this node in another window" },
/* Commands found in "./variables.c". */
- { describe_variable, "describe-variable", (FUNCTION_KEYSEQ *)0, "Explain the use of a variable" },
- { set_variable, "set-variable", (FUNCTION_KEYSEQ *)0, "Set the value of an Info variable" },
+ { (VFunction *)describe_variable, "describe-variable", (FUNCTION_KEYSEQ *)0, "Explain the use of a variable" },
+ { (VFunction *)set_variable, "set-variable", (FUNCTION_KEYSEQ *)0, "Set the value of an Info variable" },
{ (VFunction *)NULL, (char *)NULL, (FUNCTION_KEYSEQ *)NULL, (char *)NULL }
};
diff --git a/contrib/texinfo/info/doc.h b/contrib/texinfo/info/doc.h
index 00c22e5..9315e8a 100644
--- a/contrib/texinfo/info/doc.h
+++ b/contrib/texinfo/info/doc.h
@@ -1,7 +1,7 @@
/* doc.h -- Structures associating function pointers with documentation.
- $Id: doc.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: doc.h,v 1.3 2004/04/11 17:56:45 karl Exp $
- Copyright (C) 1993, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1993, 2001, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -66,15 +66,6 @@ typedef struct
extern FUNCTION_DOC function_doc_array[];
-extern char *function_documentation ();
-extern char *key_documentation ();
-extern char *pretty_keyname ();
-extern char *pretty_keyseq ();
-extern char *where_is ();
-extern char *replace_in_documentation ();
-extern void info_document_key ();
-extern void dump_map_to_message_buffer ();
-
/* Under the old key-binding system, an info command is specified by
the pointer to its function. Under the new INFOKEY binding system,
it is specified by a pointer to the command's FUNCTION_DOC structure,
@@ -82,7 +73,9 @@ extern void dump_map_to_message_buffer ();
easily divined using the InfoFunction() extractor. */
#if defined(INFOKEY)
typedef FUNCTION_DOC InfoCommand;
-#define InfoFunction(ic) ((ic) ? (ic)->func : NULL)
+/* The cast to VFunction * prevents pgcc from complaining about
+ dereferencing a void *. */
+#define InfoFunction(ic) ((ic) ? (ic)->func : (VFunction *) NULL)
#define InfoCmd(fn) (&function_doc_array[A_##fn])
#define DocInfoCmd(fd) ((fd) && (fd)->func ? (fd) : NULL)
#else /* !INFOKEY */
@@ -92,8 +85,19 @@ typedef VFunction InfoCommand;
#define DocInfoCmd(fd) ((fd)->func)
#endif /* !INFOKEY */
+#include "infomap.h" /* for Keymap. */
+
#if defined (NAMED_FUNCTIONS)
-extern char *function_name ();
-extern InfoCommand *named_function ();
+extern char *function_name (InfoCommand *cmd);
+extern InfoCommand *named_function (char *name);
#endif /* NAMED_FUNCTIONS */
+
+extern char *function_documentation (InfoCommand *cmd);
+extern char *key_documentation (char key, Keymap map);
+extern char *pretty_keyname (unsigned char key);
+extern char *pretty_keyseq (char *keyseq);
+extern char *where_is (Keymap map, InfoCommand *cmd);
+extern char *replace_in_documentation (char *string, int help_is_only_window_p);
+extern void dump_map_to_message_buffer (char *prefix, Keymap map);
+
#endif /* !DOC_H */
diff --git a/contrib/texinfo/info/dribble.c b/contrib/texinfo/info/dribble.c
index c4b5b9f..d456319 100644
--- a/contrib/texinfo/info/dribble.c
+++ b/contrib/texinfo/info/dribble.c
@@ -1,6 +1,7 @@
/* dribble.c -- dribble files for Info.
+ $Id: dribble.c,v 1.3 2004/04/11 17:56:45 karl Exp $
- Copyright (C) 1993, 98 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1998, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,8 +29,7 @@ FILE *info_dribble_file = (FILE *)NULL;
/* Open a dribble file named NAME, perhaps closing an already open one.
This sets the global variable INFO_DRIBBLE_FILE to the open stream. */
void
-open_dribble_file (name)
- char *name;
+open_dribble_file (char *name)
{
/* Perhaps close existing dribble file. */
close_dribble_file ();
@@ -49,7 +49,7 @@ open_dribble_file (name)
/* If there is a dribble file already open, close it. */
void
-close_dribble_file ()
+close_dribble_file (void)
{
if (info_dribble_file)
{
@@ -61,8 +61,7 @@ close_dribble_file ()
/* Write some output to our existing dribble file. */
void
-dribble (byte)
- unsigned char byte;
+dribble (unsigned char byte)
{
if (info_dribble_file)
fwrite (&byte, sizeof (unsigned char), 1, info_dribble_file);
diff --git a/contrib/texinfo/info/dribble.h b/contrib/texinfo/info/dribble.h
index 5647b40..f30f204 100644
--- a/contrib/texinfo/info/dribble.h
+++ b/contrib/texinfo/info/dribble.h
@@ -3,7 +3,7 @@
/* This file is part of GNU Info, a program for reading online documentation
stored in Info format.
- Copyright (C) 1993 Free Software Foundation, Inc.
+ Copyright (C) 1993, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -30,12 +30,12 @@ extern FILE *info_dribble_file;
/* Open a dribble file named NAME, perhaps closing an already open one.
This sets the global variable INFO_DRIBBLE_FILE to the open stream. */
-extern void open_dribble_file ();
+extern void open_dribble_file (char *name);
/* If there is a dribble file already open, close it. */
-extern void close_dribble_file ();
+extern void close_dribble_file (void);
/* Write some output to our existing dribble file. */
-extern void dribble ();
+extern void dribble (unsigned char byte);
#endif /* !_DRIBBLE_H_ */
diff --git a/contrib/texinfo/info/echo-area.c b/contrib/texinfo/info/echo-area.c
index 8954571..31385c8 100644
--- a/contrib/texinfo/info/echo-area.c
+++ b/contrib/texinfo/info/echo-area.c
@@ -1,7 +1,8 @@
/* echo-area.c -- how to read a line in the echo area.
- $Id: echo-area.c,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: echo-area.c,v 1.7 2004/12/14 00:15:36 karl Exp $
- Copyright (C) 1993, 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 1998, 1999, 2001, 2004 Free Software
+ Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -49,18 +50,19 @@ static int input_line_point;
static int input_line_beg;
static int input_line_end;
static NODE input_line_node = {
- (char *)NULL, (char *)NULL, (char *)NULL, input_line, EA_MAX_INPUT, 0
+ (char *)NULL, (char *)NULL, (char *)NULL, input_line,
+ EA_MAX_INPUT, 0, N_IsInternal
};
-static void echo_area_initialize_node ();
-static void push_echo_area (), pop_echo_area ();
-static int echo_area_stack_contains_completions_p ();
+static void echo_area_initialize_node (void);
+static void push_echo_area (void), pop_echo_area (void);
+static int echo_area_stack_contains_completions_p (void);
-static void ea_kill_text ();
+static void ea_kill_text (int from, int to);
/* Non-zero means we force the user to complete. */
static int echo_area_must_complete_p = 0;
-static int completions_window_p ();
+static int completions_window_p (WINDOW *window);
/* If non-null, this is a window which was specifically created to display
possible completions output. We remember it so we can delete it when
@@ -76,8 +78,7 @@ static long calling_window_pagetop = 0;
/* Remember the node and pertinent variables of the calling window. */
static void
-remember_calling_window (window)
- WINDOW *window;
+remember_calling_window (WINDOW *window)
{
/* Only do this if the calling window is not the completions window, or,
if it is the completions window and there is no other window. */
@@ -94,7 +95,7 @@ remember_calling_window (window)
/* Restore the caller's window so that it shows the node that it was showing
on entry to info_read_xxx_echo_area (). */
static void
-restore_calling_window ()
+restore_calling_window (void)
{
register WINDOW *win, *compwin = (WINDOW *)NULL;
@@ -124,7 +125,10 @@ restore_calling_window ()
!echo_area_stack_contains_completions_p ())
{
WINDOW *next;
- int pagetop, start, end, amount;
+ int pagetop = 0;
+ int start = 0;
+ int end = 0;
+ int amount = 0;
next = compwin->next;
if (next)
@@ -156,8 +160,7 @@ restore_calling_window ()
/* Set up a new input line with PROMPT. */
static void
-initialize_input_line (prompt)
- char *prompt;
+initialize_input_line (char *prompt)
{
input_line_prompt = prompt;
if (prompt)
@@ -169,7 +172,7 @@ initialize_input_line (prompt)
}
static char *
-echo_area_after_read ()
+echo_area_after_read (void)
{
char *return_value;
@@ -198,9 +201,7 @@ echo_area_after_read ()
active window, so that we can restore it when we need to. PROMPT, if
non-null, is a prompt to print before reading the line. */
char *
-info_read_in_echo_area (window, prompt)
- WINDOW *window;
- char *prompt;
+info_read_in_echo_area (WINDOW *window, char *prompt)
{
char *line;
@@ -246,11 +247,11 @@ info_read_in_echo_area (window, prompt)
/* (re) Initialize the echo area node. */
static void
-echo_area_initialize_node ()
+echo_area_initialize_node (void)
{
register int i;
- for (i = input_line_end; i < sizeof (input_line); i++)
+ for (i = input_line_end; (unsigned int) i < sizeof (input_line); i++)
input_line[i] = ' ';
input_line[i - 1] = '\n';
@@ -262,7 +263,7 @@ echo_area_initialize_node ()
echo area node, but its primary purpose is to side effect the input
line buffer contents. */
void
-echo_area_prep_read ()
+echo_area_prep_read (void)
{
if (the_echo_area->node != &input_line_node)
echo_area_initialize_node ();
@@ -559,7 +560,7 @@ DECLARE_INFO_COMMAND (ea_yank, _("Yank back the contents of the last kill"))
if (!kill_ring_index)
{
- inform_in_echo_area (_("Kill ring is empty"));
+ inform_in_echo_area ((char *) _("Kill ring is empty"));
return;
}
@@ -576,8 +577,8 @@ DECLARE_INFO_COMMAND (ea_yank_pop, _("Yank back a previous kill"))
{
register int len;
- if (((ea_last_executed_command != ea_yank) &&
- (ea_last_executed_command != ea_yank_pop)) ||
+ if (((ea_last_executed_command != (VFunction *) ea_yank) &&
+ (ea_last_executed_command != (VFunction *) ea_yank_pop)) ||
(kill_ring_index == 0))
return;
@@ -670,8 +671,7 @@ DECLARE_INFO_COMMAND (ea_backward_kill_word,
otherwise it is prepended. If the last command was not a kill command,
then a new slot is made for this kill. */
static void
-ea_kill_text (from, to)
- int from, to;
+ea_kill_text (int from, int to)
{
register int i, counter, distance;
int killing_backwards, slot;
@@ -776,7 +776,7 @@ static int completions_found_slots = 0;
static REFERENCE *LCD_completion;
/* Internal functions used by the user calls. */
-static void build_completions (), completions_must_be_rebuilt ();
+static void build_completions (void), completions_must_be_rebuilt (void);
/* Variable which holds the output of completions. */
static NODE *possible_completions_output_node = (NODE *)NULL;
@@ -785,8 +785,7 @@ static char *compwin_name = "*Completions*";
/* Return non-zero if WINDOW is a window used for completions output. */
static int
-completions_window_p (window)
- WINDOW *window;
+completions_window_p (WINDOW *window)
{
int result = 0;
@@ -800,11 +799,8 @@ completions_window_p (window)
/* Workhorse for completion readers. If FORCE is non-zero, the user cannot
exit unless the line read completes, or is empty. */
char *
-info_read_completing_internal (window, prompt, completions, force)
- WINDOW *window;
- char *prompt;
- REFERENCE **completions;
- int force;
+info_read_completing_internal (WINDOW *window, char *prompt,
+ REFERENCE **completions, int force)
{
char *line;
@@ -869,9 +865,9 @@ info_read_completing_internal (window, prompt, completions, force)
if (i == completions_found_index)
{
if (!completions_found_index)
- inform_in_echo_area (_("No completions"));
+ inform_in_echo_area ((char *) _("No completions"));
else
- inform_in_echo_area (_("Not complete"));
+ inform_in_echo_area ((char *) _("Not complete"));
continue;
}
}
@@ -897,10 +893,8 @@ info_read_completing_internal (window, prompt, completions, force)
/* Read a line in the echo area with completion over COMPLETIONS. */
char *
-info_read_completing_in_echo_area (window, prompt, completions)
- WINDOW *window;
- char *prompt;
- REFERENCE **completions;
+info_read_completing_in_echo_area (WINDOW *window,
+ char *prompt, REFERENCE **completions)
{
return (info_read_completing_internal (window, prompt, completions, 1));
}
@@ -908,10 +902,8 @@ info_read_completing_in_echo_area (window, prompt, completions)
/* Read a line in the echo area allowing completion over COMPLETIONS, but
not requiring it. */
char *
-info_read_maybe_completing (window, prompt, completions)
- WINDOW *window;
- char *prompt;
- REFERENCE **completions;
+info_read_maybe_completing (WINDOW *window,
+ char *prompt, REFERENCE **completions)
{
return (info_read_completing_internal (window, prompt, completions, 0));
}
@@ -929,22 +921,23 @@ DECLARE_INFO_COMMAND (ea_possible_completions, _("List possible completions"))
if (!completions_found_index)
{
terminal_ring_bell ();
- inform_in_echo_area (_("No completions"));
+ inform_in_echo_area ((char *) _("No completions"));
}
else if ((completions_found_index == 1) && (key != '?'))
{
- inform_in_echo_area (_("Sole completion"));
+ inform_in_echo_area ((char *) _("Sole completion"));
}
else
{
register int i, l;
- int limit, count, max_label = 0;
+ int limit, iterations, max_label = 0;
initialize_message_buffer ();
printf_to_message_buffer (completions_found_index == 1
- ? _("One completion:\n")
- : _("%d completions:\n"),
- completions_found_index);
+ ? (char *) _("One completion:\n")
+ : (char *) _("%d completions:\n"),
+ (void *) (long) completions_found_index,
+ NULL, NULL);
/* Find the maximum length of a label. */
for (i = 0; i < completions_found_index; i++)
@@ -967,15 +960,15 @@ DECLARE_INFO_COMMAND (ea_possible_completions, _("List possible completions"))
limit = 1;
/* How many iterations of the printing loop? */
- count = (completions_found_index + (limit - 1)) / limit;
+ iterations = (completions_found_index + (limit - 1)) / limit;
/* Watch out for special case. If the number of completions is less
than LIMIT, then just do the inner printing loop. */
if (completions_found_index < limit)
- count = 1;
+ iterations = 1;
/* Print the sorted items, up-and-down alphabetically. */
- for (i = 0; i < count; i++)
+ for (i = 0; i < iterations; i++)
{
register int j;
@@ -990,17 +983,17 @@ DECLARE_INFO_COMMAND (ea_possible_completions, _("List possible completions"))
label = completions_found[l]->label;
printed_length = strlen (label);
- printf_to_message_buffer ("%s", label);
+ printf_to_message_buffer ("%s", label, NULL, NULL);
if (j + 1 < limit)
{
for (k = 0; k < max_label - printed_length; k++)
- printf_to_message_buffer (" ");
+ printf_to_message_buffer (" ", NULL, NULL, NULL);
}
}
- l += count;
+ l += iterations;
}
- printf_to_message_buffer ("\n");
+ printf_to_message_buffer ("\n", NULL, NULL, NULL);
}
/* Make a new node to hold onto possible completions. Don't destroy
@@ -1028,7 +1021,7 @@ DECLARE_INFO_COMMAND (ea_possible_completions, _("List possible completions"))
{
/* If we can split the window to display most of the completion
items, then do so. */
- if (calling_window->height > (count * 2)
+ if (calling_window->height > (iterations * 2)
&& calling_window->height / 2 >= WINDOW_MIN_SIZE)
{
int start, pagetop;
@@ -1046,7 +1039,7 @@ DECLARE_INFO_COMMAND (ea_possible_completions, _("List possible completions"))
window_make_window (possible_completions_output_node);
active_window = the_echo_area;
window_change_window_height
- (compwin, -(compwin->height - (count + 2)));
+ (compwin, -(compwin->height - (iterations + 2)));
window_adjust_pagetop (calling_window);
remember_calling_window (calling_window);
@@ -1105,7 +1098,7 @@ DECLARE_INFO_COMMAND (ea_complete, _("Insert completion"))
return;
}
- if (ea_last_executed_command == ea_complete)
+ if (ea_last_executed_command == (VFunction *) ea_complete)
{
/* If the keypress is a SPC character, and we have already tried
completing once, and there are several completions, then check
@@ -1153,9 +1146,11 @@ DECLARE_INFO_COMMAND (ea_complete, _("Insert completion"))
}
/* Utility REFERENCE used to store possible LCD. */
-static REFERENCE LCD_reference = { (char *)NULL, (char *)NULL, (char *)NULL };
+static REFERENCE LCD_reference = {
+ (char *)NULL, (char *)NULL, (char *)NULL, 0, 0, 0
+};
-static void remove_completion_duplicates ();
+static void remove_completion_duplicates (void);
/* Variables which remember the state of the most recent call
to build_completions (). */
@@ -1164,7 +1159,7 @@ static REFERENCE **last_completion_items = (REFERENCE **)NULL;
/* How to tell the completion builder to reset internal state. */
static void
-completions_must_be_rebuilt ()
+completions_must_be_rebuilt (void)
{
maybe_free (last_completion_request);
last_completion_request = (char *)NULL;
@@ -1174,7 +1169,7 @@ completions_must_be_rebuilt ()
/* Build a list of possible completions from echo_area_completion_items,
and the contents of input_line. */
static void
-build_completions ()
+build_completions (void)
{
register int i, len;
register REFERENCE *entry;
@@ -1222,7 +1217,8 @@ build_completions ()
if (!informed_of_lengthy_job && completions_found_index > 100)
{
informed_of_lengthy_job = 1;
- window_message_in_echo_area (_("Building completions..."));
+ window_message_in_echo_area ((char *) _("Building completions..."),
+ NULL, NULL);
}
}
@@ -1291,15 +1287,17 @@ build_completions ()
/* Function called by qsort. */
static int
-compare_references (entry1, entry2)
- REFERENCE **entry1, **entry2;
+compare_references (const void *entry1, const void *entry2)
{
- return (strcasecmp ((*entry1)->label, (*entry2)->label));
+ REFERENCE **e1 = (REFERENCE **) entry1;
+ REFERENCE **e2 = (REFERENCE **) entry2;
+
+ return (strcasecmp ((*e1)->label, (*e2)->label));
}
/* Prune duplicate entries from COMPLETIONS_FOUND. */
static void
-remove_completion_duplicates ()
+remove_completion_duplicates (void)
{
register int i, j;
REFERENCE **temp;
@@ -1359,8 +1357,7 @@ DECLARE_INFO_COMMAND (ea_scroll_completions_window, _("Scroll the completions wi
/* Function which gets called when an Info window is deleted while the
echo area is active. WINDOW is the window which has just been deleted. */
void
-echo_area_inform_of_deleted_window (window)
- WINDOW *window;
+echo_area_inform_of_deleted_window (WINDOW *window)
{
/* If this is the calling_window, forget what we remembered about it. */
if (window == calling_window)
@@ -1400,7 +1397,7 @@ static int pushed_echo_areas_slots = 0;
/* Pushing the echo_area has a side effect of zeroing the completion_items. */
static void
-push_echo_area ()
+push_echo_area (void)
{
PUSHED_EA *pushed;
@@ -1422,7 +1419,7 @@ push_echo_area ()
}
static void
-pop_echo_area ()
+pop_echo_area (void)
{
PUSHED_EA *popped;
@@ -1460,7 +1457,7 @@ pop_echo_area ()
/* Returns non-zero if any of the prior stacked calls to read in the echo
area produced a completions window. */
static int
-echo_area_stack_contains_completions_p ()
+echo_area_stack_contains_completions_p (void)
{
register int i;
@@ -1483,7 +1480,7 @@ echo_area_stack_contains_completions_p ()
#endif /* HAVE_SYS_TIME_H */
static void
-pause_or_input ()
+pause_or_input (void)
{
#ifdef FD_SET
struct timeval timer;
@@ -1503,14 +1500,14 @@ pause_or_input ()
for input or a couple of seconds, whichever comes first. Then flush the
informational message that was printed. */
void
-inform_in_echo_area (message)
- char *message;
+inform_in_echo_area (const char *message)
{
- register int i;
+ int i;
char *text;
+ int avail = EA_MAX_INPUT + 1 - input_line_end;
text = xstrdup (message);
- for (i = 0; text[i] && text[i] != '\n'; i++)
+ for (i = 0; text[i] && text[i] != '\n' && i < avail; i++)
;
text[i] = 0;
diff --git a/contrib/texinfo/info/echo-area.h b/contrib/texinfo/info/echo-area.h
index e8b57cb..3178428 100644
--- a/contrib/texinfo/info/echo-area.h
+++ b/contrib/texinfo/info/echo-area.h
@@ -1,10 +1,10 @@
/* echo-area.h -- Functions used in reading information from the echo area.
- $Id: echo-area.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: echo-area.h,v 1.4 2004/08/07 22:03:08 karl Exp $
This file is part of GNU Info, a program for reading online documentation
stored in Info format.
- Copyright (C) 1993, 97 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -33,32 +33,53 @@ extern int echo_area_is_active, info_aborted_echo_area;
killed some text. */
extern int echo_area_last_command_was_kill;
-extern void inform_in_echo_area (), echo_area_inform_of_deleted_window ();
-extern void echo_area_prep_read ();
+extern void inform_in_echo_area (const char *message);
+extern void echo_area_inform_of_deleted_window (WINDOW *window);
+extern void echo_area_prep_read (void);
extern VFunction *ea_last_executed_command;
+extern char * info_read_completing_internal (WINDOW *window, char *prompt,
+ REFERENCE **completions, int force);
/* Read a line of text in the echo area. Return a malloc ()'ed string,
or NULL if the user aborted out of this read. WINDOW is the currently
active window, so that we can restore it when we need to. PROMPT, if
non-null, is a prompt to print before reading the line. */
-extern char *info_read_in_echo_area ();
+extern char *info_read_in_echo_area (WINDOW *window, char *prompt);
/* Read a line in the echo area with completion over COMPLETIONS.
Takes arguments of WINDOW, PROMPT, and COMPLETIONS, a REFERENCE **. */
-char *info_read_completing_in_echo_area ();
+char *info_read_completing_in_echo_area (WINDOW *window,
+ char *prompt, REFERENCE **completions);
/* Read a line in the echo area allowing completion over COMPLETIONS, but
not requiring it. Takes arguments of WINDOW, PROMPT, and COMPLETIONS,
a REFERENCE **. */
-extern char *info_read_maybe_completing ();
-
-extern void ea_insert (), ea_quoted_insert ();
-extern void ea_beg_of_line (), ea_backward (), ea_delete (), ea_end_of_line ();
-extern void ea_forward (), ea_abort (), ea_rubout (), ea_complete ();
-extern void ea_newline (), ea_kill_line (), ea_transpose_chars ();
-extern void ea_yank (), ea_tab_insert (), ea_possible_completions ();
-extern void ea_backward_word (), ea_kill_word (), ea_forward_word ();
-extern void ea_yank_pop (), ea_backward_kill_word ();
-extern void ea_scroll_completions_window ();
+extern char *info_read_maybe_completing (WINDOW *window,
+ char *prompt, REFERENCE **completions);
+
+extern void ea_insert (WINDOW *window, int count, unsigned char key);
+extern void ea_quoted_insert (WINDOW *window, int count, unsigned char key);
+extern void ea_beg_of_line (WINDOW *window, int count, unsigned char key);
+extern void ea_backward (WINDOW *window, int count, unsigned char key);
+extern void ea_delete (WINDOW *window, int count, unsigned char key);
+extern void ea_end_of_line (WINDOW *window, int count, unsigned char key);
+extern void ea_forward (WINDOW *window, int count, unsigned char key);
+extern void ea_abort (WINDOW *window, int count, unsigned char key);
+extern void ea_rubout (WINDOW *window, int count, unsigned char key);
+extern void ea_complete (WINDOW *window, int count, unsigned char key);
+extern void ea_newline (WINDOW *window, int count, unsigned char key);
+extern void ea_kill_line (WINDOW *window, int count, unsigned char key);
+extern void ea_backward_kill_line (WINDOW *window, int count, unsigned char key);
+extern void ea_transpose_chars (WINDOW *window, int count, unsigned char key);
+extern void ea_yank (WINDOW *window, int count, unsigned char key);
+extern void ea_tab_insert (WINDOW *window, int count, unsigned char key);
+extern void ea_possible_completions (WINDOW *window, int count, unsigned char key);
+extern void ea_backward_word (WINDOW *window, int count, unsigned char key);
+extern void ea_kill_word (WINDOW *window, int count, unsigned char key);
+extern void ea_forward_word (WINDOW *window, int count, unsigned char key);
+extern void ea_yank_pop (WINDOW *window, int count, unsigned char key);
+extern void ea_backward_kill_word (WINDOW *window, int count, unsigned char key);
+extern void ea_scroll_completions_window (WINDOW *window, int count,
+ unsigned char key);
#endif /* not INFO_ECHO_AREA_H */
diff --git a/contrib/texinfo/info/filesys.c b/contrib/texinfo/info/filesys.c
index 83618f1..8134480 100644
--- a/contrib/texinfo/info/filesys.c
+++ b/contrib/texinfo/info/filesys.c
@@ -1,7 +1,7 @@
/* filesys.c -- filesystem specific functions.
- $Id: filesys.c,v 1.3 2003/01/31 19:18:11 karl Exp $
+ $Id: filesys.c,v 1.6 2004/07/30 17:17:40 karl Exp $
- Copyright (C) 1993, 1997, 1998, 2000, 2002, 2003 Free Software
+ Copyright (C) 1993, 1997, 1998, 2000, 2002, 2003, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -26,9 +26,12 @@
#include "filesys.h"
/* Local to this file. */
-static char *info_file_in_path (), *lookup_info_filename ();
-static char *info_absolute_file ();
-static void remember_info_filename (), maybe_initialize_infopath ();
+static char *info_file_in_path (char *filename, char *path);
+static char *lookup_info_filename (char *filename);
+static char *info_absolute_file (char *fname);
+
+static void remember_info_filename (char *filename, char *expansion);
+static void maybe_initialize_infopath (void);
typedef struct
{
@@ -77,8 +80,7 @@ static char *local_temp_filename = (char *)NULL;
static int local_temp_filename_size = 0;
char *
-info_find_fullpath (partial)
- char *partial;
+info_find_fullpath (char *partial)
{
int initial_character;
char *temp;
@@ -141,7 +143,7 @@ info_find_fullpath (partial)
if (temp)
{
remember_info_filename (partial, temp);
- if (strlen (temp) > local_temp_filename_size)
+ if (strlen (temp) > (unsigned int) local_temp_filename_size)
local_temp_filename = (char *) xrealloc
(local_temp_filename,
(local_temp_filename_size = (50 + strlen (temp))));
@@ -157,8 +159,7 @@ info_find_fullpath (partial)
one that is a regular file, return it as a new string. Otherwise, return
a NULL pointer. */
static char *
-info_file_in_path (filename, path)
- char *filename, *path;
+info_file_in_path (char *filename, char *path)
{
struct stat finfo;
char *temp_dirname;
@@ -255,8 +256,7 @@ info_file_in_path (filename, path)
return a NULL pointer. We do it by taking the file name apart
into its directory and basename parts, and calling info_file_in_path.*/
static char *
-info_absolute_file (fname)
- char *fname;
+info_absolute_file (char *fname)
{
char *containing_dir = xstrdup (fname);
char *base = filename_non_directory (containing_dir);
@@ -273,23 +273,21 @@ info_absolute_file (fname)
are no more. Advance IDX to the character after the colon. */
char *
-extract_colon_unit (string, idx)
- char *string;
- int *idx;
+extract_colon_unit (char *string, int *idx)
{
- int i = *idx;
- int start = *idx;
+ unsigned int i = (unsigned int) *idx;
+ unsigned int start = i;
if (!string || i >= strlen (string))
return NULL;
+ if (!string[i]) /* end of string */
+ return NULL;
+
/* Advance to next PATH_SEP. */
while (string[i] && string[i] != PATH_SEP[0])
i++;
- if (!string[i] && i == start) /* end of string, and didn't advance */
- return NULL;
-
{
char *value = xmalloc ((i - start) + 1);
strncpy (value, &string[start], (i - start));
@@ -316,8 +314,7 @@ static int names_and_files_slots = 0;
/* Find the result for having already called info_find_fullpath () with
FILENAME. */
static char *
-lookup_info_filename (filename)
- char *filename;
+lookup_info_filename (char *filename)
{
if (filename && names_and_files)
{
@@ -333,8 +330,7 @@ lookup_info_filename (filename)
/* Add a filename and its expansion to our list. */
static void
-remember_info_filename (filename, expansion)
- char *filename, *expansion;
+remember_info_filename (char *filename, char *expansion)
{
FILENAME_LIST *new;
@@ -358,7 +354,7 @@ remember_info_filename (filename, expansion)
}
static void
-maybe_initialize_infopath ()
+maybe_initialize_infopath (void)
{
if (!infopath_size)
{
@@ -372,9 +368,7 @@ maybe_initialize_infopath ()
/* Add PATH to the list of paths found in INFOPATH. 2nd argument says
whether to put PATH at the front or end of INFOPATH. */
void
-info_add_path (path, where)
- char *path;
- int where;
+info_add_path (char *path, int where)
{
int len;
@@ -408,7 +402,7 @@ info_add_path (path, where)
/* Make INFOPATH have absolutely nothing in it. */
void
-zap_infopath ()
+zap_infopath (void)
{
if (infopath)
free (infopath);
@@ -433,9 +427,7 @@ zap_infopath ()
FIXME: is it a good idea to show the EOL type on the modeline? */
long
-convert_eols (text, textlen)
- char *text;
- long textlen;
+convert_eols (char *text, long int textlen)
{
register char *s = text;
register char *d = text;
@@ -459,11 +451,8 @@ convert_eols (text, textlen)
If the file turns out to be compressed, set IS_COMPRESSED to non-zero.
If the file cannot be read, return a NULL pointer. */
char *
-filesys_read_info_file (pathname, filesize, finfo, is_compressed)
- char *pathname;
- long *filesize;
- struct stat *finfo;
- int *is_compressed;
+filesys_read_info_file (char *pathname, long int *filesize,
+ struct stat *finfo, int *is_compressed)
{
long st_size;
@@ -472,7 +461,7 @@ filesys_read_info_file (pathname, filesize, finfo, is_compressed)
if (compressed_filename_p (pathname))
{
*is_compressed = 1;
- return (filesys_read_compressed (pathname, filesize, finfo));
+ return (filesys_read_compressed (pathname, filesize));
}
else
{
@@ -524,10 +513,7 @@ filesys_read_info_file (pathname, filesize, finfo, is_compressed)
#define FILESYS_PIPE_BUFFER_SIZE (16 * BASIC_PIPE_BUFFER)
char *
-filesys_read_compressed (pathname, filesize, finfo)
- char *pathname;
- long *filesize;
- struct stat *finfo;
+filesys_read_compressed (char *pathname, long int *filesize)
{
FILE *stream;
char *command, *decompressor;
@@ -553,7 +539,7 @@ filesys_read_compressed (pathname, filesize, finfo)
temp = (char *)xmalloc (5 + strlen (command));
sprintf (temp, "%s...", command);
- message_in_echo_area ("%s", temp);
+ message_in_echo_area ("%s", temp, NULL);
free (temp);
}
#endif /* !BUILDING_LIBRARY */
@@ -615,8 +601,7 @@ filesys_read_compressed (pathname, filesize, finfo)
/* Return non-zero if FILENAME belongs to a compressed file. */
int
-compressed_filename_p (filename)
- char *filename;
+compressed_filename_p (char *filename)
{
char *decompressor;
@@ -632,8 +617,7 @@ compressed_filename_p (filename)
/* Return the command string that would be used to decompress FILENAME. */
char *
-filesys_decompressor_for_file (filename)
- char *filename;
+filesys_decompressor_for_file (char *filename)
{
register int i;
char *extension = (char *)NULL;
@@ -676,9 +660,7 @@ static char *errmsg_buf = (char *)NULL;
static int errmsg_buf_size = 0;
char *
-filesys_error_string (filename, error_num)
- char *filename;
- int error_num;
+filesys_error_string (char *filename, int error_num)
{
int len;
char *result;
@@ -701,8 +683,7 @@ filesys_error_string (filename, error_num)
in combination. */
int
-is_dir_name (filename)
- char *filename;
+is_dir_name (char *filename)
{
unsigned i;
diff --git a/contrib/texinfo/info/filesys.h b/contrib/texinfo/info/filesys.h
index 5b7f5b7..89ca543 100644
--- a/contrib/texinfo/info/filesys.h
+++ b/contrib/texinfo/info/filesys.h
@@ -1,7 +1,7 @@
/* filesys.h -- external declarations for filesys.c.
- $Id: filesys.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: filesys.h,v 1.3 2004/04/11 17:56:45 karl Exp $
- Copyright (C) 1993, 1997, 1998, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,11 +28,11 @@
extern char *infopath;
/* Make INFOPATH have absolutely nothing in it. */
-extern void zap_infopath ();
+extern void zap_infopath (void);
/* Add PATH to the list of paths found in INFOPATH. 2nd argument says
whether to put PATH at the front or end of INFOPATH. */
-extern void info_add_path ();
+extern void info_add_path (char *path, int where);
/* Defines that are passed along with the pathname to info_add_path (). */
#define INFOPATH_PREPEND 0
@@ -41,27 +41,29 @@ extern void info_add_path ();
/* Expand the filename in PARTIAL to make a real name for this operating
system. This looks in INFO_PATHS in order to find the correct file.
If it can't find the file, it returns NULL. */
-extern char *info_find_fullpath ();
+extern char *info_find_fullpath (char *partial);
/* Given a chunk of text and its length, convert all CRLF pairs at the
EOLs into a single Newline character. Return the length of produced
text. */
-long convert_eols ();
+long convert_eols (char *text, long textlen);
/* Read the contents of PATHNAME, returning a buffer with the contents of
that file in it, and returning the size of that buffer in FILESIZE.
FINFO is a stat struct which has already been filled in by the caller.
If the file cannot be read, return a NULL pointer. */
-extern char *filesys_read_info_file ();
-extern char *filesys_read_compressed ();
+extern char *filesys_read_info_file (char *pathname, long int *filesize,
+ struct stat *finfo, int *is_compressed);
+
+extern char *filesys_read_compressed (char *pathname, long int *filesize);
/* Return the command string that would be used to decompress FILENAME. */
-extern char *filesys_decompressor_for_file ();
-extern int compressed_filename_p ();
+extern char *filesys_decompressor_for_file (char *filename);
+extern int compressed_filename_p (char *filename);
/* A function which returns a pointer to a static buffer containing
an error message for FILENAME and ERROR_NUM. */
-extern char *filesys_error_string ();
+extern char *filesys_error_string (char *filename, int error_num);
/* The number of the most recent file system error. */
extern int filesys_error_number;
@@ -69,10 +71,10 @@ extern int filesys_error_number;
/* Given a string containing units of information separated by colons,
return the next one pointed to by IDX, or NULL if there are no more.
Advance IDX to the character after the colon. */
-extern char *extract_colon_unit ();
+extern char *extract_colon_unit (char *string, int *idx);
/* Return true if FILENAME is `dir', with a possible compression suffix. */
-extern int is_dir_name ();
+extern int is_dir_name (char *filename);
/* The default value of INFOPATH. */
#if !defined (DEFAULT_INFOPATH)
diff --git a/contrib/texinfo/info/footnotes.c b/contrib/texinfo/info/footnotes.c
index 7abb8a6..c8cd7b5 100644
--- a/contrib/texinfo/info/footnotes.c
+++ b/contrib/texinfo/info/footnotes.c
@@ -1,7 +1,8 @@
/* footnotes.c -- Some functions for manipulating footnotes.
- $Id: footnotes.c,v 1.2 2002/11/06 00:41:17 karl Exp $
+ $Id: footnotes.c,v 1.4 2004/04/11 17:56:45 karl Exp $
- Copyright (C) 1993, 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 1998, 1999, 2002, 2004 Free Software
+ Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,7 +18,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- Written by Brian Fox (bfox@ai.mit.edu). */
+ Originally written by Brian Fox (bfox@ai.mit.edu). */
#include "info.h"
@@ -26,12 +27,14 @@ int auto_footnotes_p = 0;
static char *footnote_nodename = "*Footnotes*";
+NODE * make_footnotes_node (NODE *node);
+
#define FOOTNOTE_HEADER_FORMAT \
- "*** Footnotes appearing in the node \"%s\" ***\n"
+ "*** Footnotes appearing in the node `%s' ***\n"
/* Find the window currently showing footnotes. */
static WINDOW *
-find_footnotes_window ()
+find_footnotes_window (void)
{
WINDOW *win;
@@ -48,8 +51,7 @@ find_footnotes_window ()
return the manufactured node. If NODE has no footnotes, return a
NULL pointer. */
NODE *
-make_footnotes_node (node)
- NODE *node;
+make_footnotes_node (NODE *node)
{
NODE *fn_node, *result = (NODE *)NULL;
long fn_start;
@@ -160,8 +162,7 @@ make_footnotes_node (node)
in WINDOW's node. Returns FN_UNABLE if there were footnotes, but the
window to show them couldn't be made. */
int
-info_get_or_remove_footnotes (window)
- WINDOW *window;
+info_get_or_remove_footnotes (WINDOW *window)
{
WINDOW *fn_win;
NODE *new_footnotes;
@@ -209,7 +210,7 @@ info_get_or_remove_footnotes (window)
/* If we are hacking automatic footnotes, and there are footnotes
but we couldn't display them, print a message to that effect. */
if (auto_footnotes_p)
- inform_in_echo_area (_("Footnotes could not be displayed"));
+ inform_in_echo_area ((char *) _("Footnotes could not be displayed"));
return (FN_UNABLE);
}
}
@@ -256,11 +257,11 @@ DECLARE_INFO_COMMAND (info_show_footnotes,
switch (result)
{
case FN_UNFOUND:
- info_error (msg_no_foot_node);
+ info_error ((char *) msg_no_foot_node, NULL, NULL);
break;
case FN_UNABLE:
- info_error (msg_win_too_small);
+ info_error ((char *) msg_win_too_small, NULL, NULL);
break;
}
}
diff --git a/contrib/texinfo/info/footnotes.h b/contrib/texinfo/info/footnotes.h
index 6fd42a3..7f58399 100644
--- a/contrib/texinfo/info/footnotes.h
+++ b/contrib/texinfo/info/footnotes.h
@@ -1,7 +1,7 @@
/* footnotes.h -- Some functions for manipulating footnotes.
- $Id: footnotes.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: footnotes.h,v 1.3 2004/04/11 17:56:45 karl Exp $
- Copyright (C) 1993, 1997, 1998, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -35,7 +35,7 @@
and displayed. Returns FN_UNFOUND if there were no footnotes found
in WINDOW's node. Returns FN_UNABLE if there were footnotes, but the
window to show them couldn't be made. */
-extern int info_get_or_remove_footnotes ();
+extern int info_get_or_remove_footnotes (WINDOW *window);
/* Non-zero means attempt to show footnotes when displaying a new window. */
extern int auto_footnotes_p;
diff --git a/contrib/texinfo/info/funs.h b/contrib/texinfo/info/funs.h
index 5e8bc04..f41ef05 100644
--- a/contrib/texinfo/info/funs.h
+++ b/contrib/texinfo/info/funs.h
@@ -1,241 +1,243 @@
/* funs.h -- Generated declarations for Info commands. */
+#include "info.h"
+
/* Functions declared in "./session.c". */
#define A_info_next_line 0
-extern void info_next_line ();
+extern void info_next_line (WINDOW *window, int count, unsigned char key);
#define A_info_prev_line 1
-extern void info_prev_line ();
+extern void info_prev_line (WINDOW *window, int count, unsigned char key);
#define A_info_end_of_line 2
-extern void info_end_of_line ();
+extern void info_end_of_line (WINDOW *window, int count, unsigned char key);
#define A_info_beginning_of_line 3
-extern void info_beginning_of_line ();
+extern void info_beginning_of_line (WINDOW *window, int count, unsigned char key);
#define A_info_forward_char 4
-extern void info_forward_char ();
+extern void info_forward_char (WINDOW *window, int count, unsigned char key);
#define A_info_backward_char 5
-extern void info_backward_char ();
+extern void info_backward_char (WINDOW *window, int count, unsigned char key);
#define A_info_forward_word 6
-extern void info_forward_word ();
+extern void info_forward_word (WINDOW *window, int count, unsigned char key);
#define A_info_backward_word 7
-extern void info_backward_word ();
+extern void info_backward_word (WINDOW *window, int count, unsigned char key);
#define A_info_global_next_node 8
-extern void info_global_next_node ();
+extern void info_global_next_node (WINDOW *window, int count, unsigned char key);
#define A_info_global_prev_node 9
-extern void info_global_prev_node ();
+extern void info_global_prev_node (WINDOW *window, int count, unsigned char key);
#define A_info_scroll_forward 10
-extern void info_scroll_forward ();
+extern void info_scroll_forward (WINDOW *window, int count, unsigned char key);
#define A_info_scroll_forward_set_window 11
-extern void info_scroll_forward_set_window ();
+extern void info_scroll_forward_set_window (WINDOW *window, int count, unsigned char key);
#define A_info_scroll_forward_page_only 12
-extern void info_scroll_forward_page_only ();
+extern void info_scroll_forward_page_only (WINDOW *window, int count, unsigned char key);
#define A_info_scroll_forward_page_only_set_window 13
-extern void info_scroll_forward_page_only_set_window ();
+extern void info_scroll_forward_page_only_set_window (WINDOW *window, int count, unsigned char key);
#define A_info_scroll_backward 14
-extern void info_scroll_backward ();
+extern void info_scroll_backward (WINDOW *window, int count, unsigned char key);
#define A_info_scroll_backward_set_window 15
-extern void info_scroll_backward_set_window ();
+extern void info_scroll_backward_set_window (WINDOW *window, int count, unsigned char key);
#define A_info_scroll_backward_page_only 16
-extern void info_scroll_backward_page_only ();
+extern void info_scroll_backward_page_only (WINDOW *window, int count, unsigned char key);
#define A_info_scroll_backward_page_only_set_window 17
-extern void info_scroll_backward_page_only_set_window ();
+extern void info_scroll_backward_page_only_set_window (WINDOW *window, int count, unsigned char key);
#define A_info_beginning_of_node 18
-extern void info_beginning_of_node ();
+extern void info_beginning_of_node (WINDOW *window, int count, unsigned char key);
#define A_info_end_of_node 19
-extern void info_end_of_node ();
+extern void info_end_of_node (WINDOW *window, int count, unsigned char key);
#define A_info_down_line 20
-extern void info_down_line ();
+extern void info_down_line (WINDOW *window, int count, unsigned char key);
#define A_info_up_line 21
-extern void info_up_line ();
+extern void info_up_line (WINDOW *window, int count, unsigned char key);
#define A_info_scroll_half_screen_down 22
-extern void info_scroll_half_screen_down ();
+extern void info_scroll_half_screen_down (WINDOW *window, int count, unsigned char key);
#define A_info_scroll_half_screen_up 23
-extern void info_scroll_half_screen_up ();
+extern void info_scroll_half_screen_up (WINDOW *window, int count, unsigned char key);
#define A_info_next_window 24
-extern void info_next_window ();
+extern void info_next_window (WINDOW *window, int count, unsigned char key);
#define A_info_prev_window 25
-extern void info_prev_window ();
+extern void info_prev_window (WINDOW *window, int count, unsigned char key);
#define A_info_split_window 26
-extern void info_split_window ();
+extern void info_split_window (WINDOW *window, int count, unsigned char key);
#define A_info_delete_window 27
-extern void info_delete_window ();
+extern void info_delete_window (WINDOW *window, int count, unsigned char key);
#define A_info_keep_one_window 28
-extern void info_keep_one_window ();
+extern void info_keep_one_window (WINDOW *window, int count, unsigned char key);
#define A_info_scroll_other_window 29
-extern void info_scroll_other_window ();
+extern void info_scroll_other_window (WINDOW *window, int count, unsigned char key);
#define A_info_scroll_other_window_backward 30
-extern void info_scroll_other_window_backward ();
+extern void info_scroll_other_window_backward (WINDOW *window, int count, unsigned char key);
#define A_info_grow_window 31
-extern void info_grow_window ();
+extern void info_grow_window (WINDOW *window, int count, unsigned char key);
#define A_info_tile_windows 32
-extern void info_tile_windows ();
+extern void info_tile_windows (WINDOW *window, int count, unsigned char key);
#define A_info_toggle_wrap 33
-extern void info_toggle_wrap ();
+extern void info_toggle_wrap (WINDOW *window, int count, unsigned char key);
#define A_info_next_node 34
-extern void info_next_node ();
+extern void info_next_node (WINDOW *window, int count, unsigned char key);
#define A_info_prev_node 35
-extern void info_prev_node ();
+extern void info_prev_node (WINDOW *window, int count, unsigned char key);
#define A_info_up_node 36
-extern void info_up_node ();
+extern void info_up_node (WINDOW *window, int count, unsigned char key);
#define A_info_last_node 37
-extern void info_last_node ();
+extern void info_last_node (WINDOW *window, int count, unsigned char key);
#define A_info_first_node 38
-extern void info_first_node ();
+extern void info_first_node (WINDOW *window, int count, unsigned char key);
#define A_info_last_menu_item 39
-extern void info_last_menu_item ();
+extern void info_last_menu_item (WINDOW *window, int count, unsigned char key);
#define A_info_menu_digit 40
-extern void info_menu_digit ();
+extern void info_menu_digit (WINDOW *window, int count, unsigned char key);
#define A_info_menu_item 41
-extern void info_menu_item ();
+extern void info_menu_item (WINDOW *window, int count, unsigned char key);
#define A_info_xref_item 42
-extern void info_xref_item ();
+extern void info_xref_item (WINDOW *window, int count, unsigned char key);
#define A_info_find_menu 43
-extern void info_find_menu ();
+extern void info_find_menu (WINDOW *window, int count, unsigned char key);
#define A_info_visit_menu 44
-extern void info_visit_menu ();
+extern void info_visit_menu (WINDOW *window, int count, unsigned char key);
#define A_info_goto_node 45
-extern void info_goto_node ();
+extern void info_goto_node (WINDOW *window, int count, unsigned char key);
#define A_info_menu_sequence 46
-extern void info_menu_sequence ();
+extern void info_menu_sequence (WINDOW *window, int count, unsigned char key);
#define A_info_goto_invocation_node 47
-extern void info_goto_invocation_node ();
+extern void info_goto_invocation_node (WINDOW *window, int count, unsigned char key);
#define A_info_man 48
-extern void info_man ();
+extern void info_man (WINDOW *window, int count, unsigned char key);
#define A_info_top_node 49
-extern void info_top_node ();
+extern void info_top_node (WINDOW *window, int count, unsigned char key);
#define A_info_dir_node 50
-extern void info_dir_node ();
+extern void info_dir_node (WINDOW *window, int count, unsigned char key);
#define A_info_history_node 51
-extern void info_history_node ();
+extern void info_history_node (WINDOW *window, int count, unsigned char key);
#define A_info_kill_node 52
-extern void info_kill_node ();
+extern void info_kill_node (WINDOW *window, int count, unsigned char key);
#define A_info_view_file 53
-extern void info_view_file ();
+extern void info_view_file (WINDOW *window, int count, unsigned char key);
#define A_info_print_node 54
-extern void info_print_node ();
+extern void info_print_node (WINDOW *window, int count, unsigned char key);
#define A_info_search_case_sensitively 55
-extern void info_search_case_sensitively ();
+extern void info_search_case_sensitively (WINDOW *window, int count, unsigned char key);
#define A_info_search 56
-extern void info_search ();
+extern void info_search (WINDOW *window, int count, unsigned char key);
#define A_info_search_backward 57
-extern void info_search_backward ();
+extern void info_search_backward (WINDOW *window, int count, unsigned char key);
#define A_info_search_next 58
-extern void info_search_next ();
+extern void info_search_next (WINDOW *window, int count, unsigned char key);
#define A_info_search_previous 59
-extern void info_search_previous ();
+extern void info_search_previous (WINDOW *window, int count, unsigned char key);
#define A_isearch_forward 60
-extern void isearch_forward ();
+extern void isearch_forward (WINDOW *window, int count, unsigned char key);
#define A_isearch_backward 61
-extern void isearch_backward ();
+extern void isearch_backward (WINDOW *window, int count, unsigned char key);
#define A_info_move_to_prev_xref 62
-extern void info_move_to_prev_xref ();
+extern void info_move_to_prev_xref (WINDOW *window, int count, unsigned char key);
#define A_info_move_to_next_xref 63
-extern void info_move_to_next_xref ();
+extern void info_move_to_next_xref (WINDOW *window, int count, unsigned char key);
#define A_info_select_reference_this_line 64
-extern void info_select_reference_this_line ();
+extern void info_select_reference_this_line (WINDOW *window, int count, unsigned char key);
#define A_info_abort_key 65
-extern void info_abort_key ();
+extern void info_abort_key (WINDOW *window, int count, unsigned char key);
#define A_info_move_to_window_line 66
-extern void info_move_to_window_line ();
+extern void info_move_to_window_line (WINDOW *window, int count, unsigned char key);
#define A_info_redraw_display 67
-extern void info_redraw_display ();
+extern void info_redraw_display (WINDOW *window, int count, unsigned char key);
#define A_info_quit 68
-extern void info_quit ();
+extern void info_quit (WINDOW *window, int count, unsigned char key);
#define A_info_do_lowercase_version 69
-extern void info_do_lowercase_version ();
+extern void info_do_lowercase_version (WINDOW *window, int count, unsigned char key);
#define A_info_add_digit_to_numeric_arg 70
-extern void info_add_digit_to_numeric_arg ();
+extern void info_add_digit_to_numeric_arg (WINDOW *window, int count, unsigned char key);
#define A_info_universal_argument 71
-extern void info_universal_argument ();
+extern void info_universal_argument (WINDOW *window, int count, unsigned char key);
#define A_info_numeric_arg_digit_loop 72
-extern void info_numeric_arg_digit_loop ();
+extern void info_numeric_arg_digit_loop (WINDOW *window, int count, unsigned char key);
/* Functions declared in "./echo-area.c". */
#define A_ea_forward 73
-extern void ea_forward ();
+extern void ea_forward (WINDOW *window, int count, unsigned char key);
#define A_ea_backward 74
-extern void ea_backward ();
+extern void ea_backward (WINDOW *window, int count, unsigned char key);
#define A_ea_beg_of_line 75
-extern void ea_beg_of_line ();
+extern void ea_beg_of_line (WINDOW *window, int count, unsigned char key);
#define A_ea_end_of_line 76
-extern void ea_end_of_line ();
+extern void ea_end_of_line (WINDOW *window, int count, unsigned char key);
#define A_ea_forward_word 77
-extern void ea_forward_word ();
+extern void ea_forward_word (WINDOW *window, int count, unsigned char key);
#define A_ea_backward_word 78
-extern void ea_backward_word ();
+extern void ea_backward_word (WINDOW *window, int count, unsigned char key);
#define A_ea_delete 79
-extern void ea_delete ();
+extern void ea_delete (WINDOW *window, int count, unsigned char key);
#define A_ea_rubout 80
-extern void ea_rubout ();
+extern void ea_rubout (WINDOW *window, int count, unsigned char key);
#define A_ea_abort 81
-extern void ea_abort ();
+extern void ea_abort (WINDOW *window, int count, unsigned char key);
#define A_ea_newline 82
-extern void ea_newline ();
+extern void ea_newline (WINDOW *window, int count, unsigned char key);
#define A_ea_quoted_insert 83
-extern void ea_quoted_insert ();
+extern void ea_quoted_insert (WINDOW *window, int count, unsigned char key);
#define A_ea_insert 84
-extern void ea_insert ();
+extern void ea_insert (WINDOW *window, int count, unsigned char key);
#define A_ea_tab_insert 85
-extern void ea_tab_insert ();
+extern void ea_tab_insert (WINDOW *window, int count, unsigned char key);
#define A_ea_transpose_chars 86
-extern void ea_transpose_chars ();
+extern void ea_transpose_chars (WINDOW *window, int count, unsigned char key);
#define A_ea_yank 87
-extern void ea_yank ();
+extern void ea_yank (WINDOW *window, int count, unsigned char key);
#define A_ea_yank_pop 88
-extern void ea_yank_pop ();
+extern void ea_yank_pop (WINDOW *window, int count, unsigned char key);
#define A_ea_kill_line 89
-extern void ea_kill_line ();
+extern void ea_kill_line (WINDOW *window, int count, unsigned char key);
#define A_ea_backward_kill_line 90
-extern void ea_backward_kill_line ();
+extern void ea_backward_kill_line (WINDOW *window, int count, unsigned char key);
#define A_ea_kill_word 91
-extern void ea_kill_word ();
+extern void ea_kill_word (WINDOW *window, int count, unsigned char key);
#define A_ea_backward_kill_word 92
-extern void ea_backward_kill_word ();
+extern void ea_backward_kill_word (WINDOW *window, int count, unsigned char key);
#define A_ea_possible_completions 93
-extern void ea_possible_completions ();
+extern void ea_possible_completions (WINDOW *window, int count, unsigned char key);
#define A_ea_complete 94
-extern void ea_complete ();
+extern void ea_complete (WINDOW *window, int count, unsigned char key);
#define A_ea_scroll_completions_window 95
-extern void ea_scroll_completions_window ();
+extern void ea_scroll_completions_window (WINDOW *window, int count, unsigned char key);
/* Functions declared in "./infodoc.c". */
#define A_info_get_help_window 96
-extern void info_get_help_window ();
+extern void info_get_help_window (WINDOW *window, int count, unsigned char key);
#define A_info_get_info_help_node 97
-extern void info_get_info_help_node ();
+extern void info_get_info_help_node (WINDOW *window, int count, unsigned char key);
#define A_describe_key 98
-extern void describe_key ();
+extern void describe_key (WINDOW *window, int count, unsigned char key);
#define A_info_where_is 99
-extern void info_where_is ();
+extern void info_where_is (WINDOW *window, int count, unsigned char key);
/* Functions declared in "./m-x.c". */
#define A_describe_command 100
-extern void describe_command ();
+extern void describe_command (WINDOW *window, int count, unsigned char key);
#define A_info_execute_command 101
-extern void info_execute_command ();
+extern void info_execute_command (WINDOW *window, int count, unsigned char key);
#define A_set_screen_height 102
-extern void set_screen_height ();
+extern void set_screen_height (WINDOW *window, int count, unsigned char key);
/* Functions declared in "./indices.c". */
#define A_info_index_search 103
-extern void info_index_search ();
+extern void info_index_search (WINDOW *window, int count, unsigned char key);
#define A_info_next_index_match 104
-extern void info_next_index_match ();
+extern void info_next_index_match (WINDOW *window, int count, unsigned char key);
#define A_info_index_apropos 105
-extern void info_index_apropos ();
+extern void info_index_apropos (WINDOW *window, int count, unsigned char key);
/* Functions declared in "./nodemenu.c". */
#define A_list_visited_nodes 106
-extern void list_visited_nodes ();
+extern void list_visited_nodes (WINDOW *window, int count, unsigned char key);
#define A_select_visited_node 107
-extern void select_visited_node ();
+extern void select_visited_node (WINDOW *window, int count, unsigned char key);
/* Functions declared in "./footnotes.c". */
#define A_info_show_footnotes 108
-extern void info_show_footnotes ();
+extern void info_show_footnotes (WINDOW *window, int count, unsigned char key);
/* Functions declared in "./variables.c". */
#define A_describe_variable 109
-extern void describe_variable ();
+extern void describe_variable (WINDOW *window, int count, unsigned char key);
#define A_set_variable 110
-extern void set_variable ();
+extern void set_variable (WINDOW *window, int count, unsigned char key);
#define A_NCOMMANDS 111
diff --git a/contrib/texinfo/info/gc.c b/contrib/texinfo/info/gc.c
index 1c868ba..9416e3b 100644
--- a/contrib/texinfo/info/gc.c
+++ b/contrib/texinfo/info/gc.c
@@ -1,9 +1,7 @@
-/* gc.c -- Functions to remember and garbage collect unused node contents. */
+/* gc.c -- Functions to remember and garbage collect unused node contents.
+ $Id: gc.c,v 1.3 2004/04/11 17:56:45 karl Exp $
-/* This file is part of GNU Info, a program for reading online documentation
- stored in Info format.
-
- Copyright (C) 1993 Free Software Foundation, Inc.
+ Copyright (C) 1993, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -34,8 +32,7 @@ static int gcable_pointers_slots = 0;
is not actually garbage collected until no info window contains a node
whose contents member is equal to the pointer. */
void
-add_gcable_pointer (pointer)
- char *pointer;
+add_gcable_pointer (char *pointer)
{
gc_pointers ();
add_pointer_to_array (pointer, gcable_pointers_index, gcable_pointers,
@@ -45,7 +42,7 @@ add_gcable_pointer (pointer)
/* Grovel the list of info windows and gc-able pointers finding those
node->contents which are collectible, and free them. */
void
-gc_pointers ()
+gc_pointers (void)
{
register int i, j, k;
INFO_WINDOW *iw;
diff --git a/contrib/texinfo/info/gc.h b/contrib/texinfo/info/gc.h
index 832cd53..67d031f 100644
--- a/contrib/texinfo/info/gc.h
+++ b/contrib/texinfo/info/gc.h
@@ -1,10 +1,10 @@
/* gc.h -- Functions for garbage collecting unused node contents.
- $Id: gc.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: gc.h,v 1.3 2004/04/11 17:56:45 karl Exp $
This file is part of GNU Info, a program for reading online documentation
stored in Info format.
- Copyright (C) 1993, 97 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,10 +28,10 @@
/* Add POINTER to the list of garbage collectible pointers. A pointer
is not actually garbage collected until no info window contains a node
whose contents member is equal to the pointer. */
-extern void add_gcable_pointer ();
+extern void add_gcable_pointer (char *pointer);
/* Grovel the list of info windows and gc-able pointers finding those
node->contents which are collectible, and free them. */
-extern void gc_pointers ();
+extern void gc_pointers (void);
#endif /* not INFO_GC_H */
diff --git a/contrib/texinfo/info/indices.c b/contrib/texinfo/info/indices.c
index 29cd2e2..f5b0eb5 100644
--- a/contrib/texinfo/info/indices.c
+++ b/contrib/texinfo/info/indices.c
@@ -1,7 +1,7 @@
/* indices.c -- deal with an Info file index.
- $Id: indices.c,v 1.2 2003/02/11 16:39:06 karl Exp $
+ $Id: indices.c,v 1.5 2004/04/11 17:56:45 karl Exp $
- Copyright (C) 1993, 1997, 1998, 1999, 2002, 2003 Free Software
+ Copyright (C) 1993, 1997, 1998, 1999, 2002, 2003, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -18,7 +18,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- Written by Brian Fox (bfox@ai.mit.edu). */
+ Originally written by Brian Fox (bfox@ai.mit.edu). */
#include "info.h"
#include "indices.h"
@@ -55,9 +55,7 @@ static int index_nodenames_slots = 0;
/* Add the name of NODE, and the range of the associated index elements
(passed in ARRAY) to index_nodenames. */
static void
-add_index_to_index_nodenames (array, node)
- REFERENCE **array;
- NODE *node;
+add_index_to_index_nodenames (REFERENCE **array, NODE *node)
{
register int i, last;
INDEX_NAME_ASSOC *assoc;
@@ -88,8 +86,7 @@ add_index_to_index_nodenames (array, node)
indices are concatenated and the result returned. If WINDOW's info file
doesn't have any indices, a NULL pointer is returned. */
REFERENCE **
-info_indices_of_window (window)
- WINDOW *window;
+info_indices_of_window (WINDOW *window)
{
FILE_BUFFER *fb;
@@ -99,8 +96,7 @@ info_indices_of_window (window)
}
REFERENCE **
-info_indices_of_file_buffer (file_buffer)
- FILE_BUFFER *file_buffer;
+info_indices_of_file_buffer (FILE_BUFFER *file_buffer)
{
register int i;
REFERENCE **result = (REFERENCE **)NULL;
@@ -181,10 +177,7 @@ DECLARE_INFO_COMMAND (info_index_search,
/* Look up SEARCH_STRING in the index for this file. If SEARCH_STRING
is NULL, prompt user for input. */
void
-do_info_index_search (window, count, search_string)
- WINDOW *window;
- int count;
- char *search_string;
+do_info_index_search (WINDOW *window, int count, char *search_string)
{
FILE_BUFFER *fb;
char *line;
@@ -203,14 +196,15 @@ do_info_index_search (window, count, search_string)
(FILENAME_CMP (initial_index_filename, fb->filename) != 0))
{
info_free_references (index_index);
- window_message_in_echo_area (_("Finding index entries..."));
+ window_message_in_echo_area ((char *) _("Finding index entries..."),
+ NULL, NULL);
index_index = info_indices_of_file_buffer (fb);
}
/* If there is no index, quit now. */
if (!index_index)
{
- info_error (_("No indices found."));
+ info_error ((char *) _("No indices found."), NULL, NULL);
return;
}
@@ -220,7 +214,7 @@ do_info_index_search (window, count, search_string)
line = xstrdup (search_string);
else
{
- line = info_read_maybe_completing (window, _("Index entry: "),
+ line = info_read_maybe_completing (window, (char *) _("Index entry: "),
index_index);
window = active_window;
@@ -283,9 +277,7 @@ do_info_index_search (window, count, search_string)
}
int
-index_entry_exists (window, string)
- WINDOW *window;
- char *string;
+index_entry_exists (WINDOW *window, char *string)
{
register int i;
FILE_BUFFER *fb;
@@ -340,14 +332,14 @@ DECLARE_INFO_COMMAND (info_next_index_match,
yet. */
if (!index_search)
{
- info_error (_("No previous index search string."));
+ info_error ((char *) _("No previous index search string."), NULL, NULL);
return;
}
/* If there is no index, that is an error. */
if (!index_index)
{
- info_error (_("No index entries."));
+ info_error ((char *) _("No index entries."), NULL, NULL);
return;
}
@@ -380,8 +372,8 @@ DECLARE_INFO_COMMAND (info_next_index_match,
/* If that failed, print an error. */
if ((i < 0) || (!index_index[i]))
{
- info_error (_("No %sindex entries containing \"%s\"."),
- index_offset > 0 ? _("more ") : "", index_search);
+ info_error ((char *) _("No %sindex entries containing `%s'."),
+ index_offset > 0 ? (char *) _("more ") : "", index_search);
return;
}
@@ -410,26 +402,27 @@ DECLARE_INFO_COMMAND (info_next_index_match,
if (partial && show_index_match)
{
- int j, ls, start, upper;
+ int k, ls, start, upper;
ls = strlen (index_search);
start = partial - ls;
upper = isupper (match[start]) ? 1 : 0;
- for (j = 0; j < ls; j++)
+ for (k = 0; k < ls; k++)
if (upper)
- match[j + start] = info_tolower (match[j + start]);
+ match[k + start] = info_tolower (match[k + start]);
else
- match[j + start] = info_toupper (match[j + start]);
+ match[k + start] = info_toupper (match[k + start]);
}
{
char *format;
format = replace_in_documentation
- (_("Found \"%s\" in %s. (`\\[next-index-match]' tries to find next.)"));
+ ((char *) _("Found `%s' in %s. (`\\[next-index-match]' tries to find next.)"),
+ 0);
- window_message_in_echo_area (format, match, name);
+ window_message_in_echo_area (format, match, (char *) name);
}
free (match);
@@ -440,7 +433,7 @@ DECLARE_INFO_COMMAND (info_next_index_match,
if (!node)
{
- info_error (msg_cant_file_node,
+ info_error ((char *) msg_cant_file_node,
index_index[i]->filename, index_index[i]->nodename);
return;
}
@@ -471,9 +464,7 @@ DECLARE_INFO_COMMAND (info_next_index_match,
/* For every menu item in DIR, search the indices of that file for
SEARCH_STRING. */
REFERENCE **
-apropos_in_all_indices (search_string, inform)
- char *search_string;
- int inform;
+apropos_in_all_indices (char *search_string, int inform)
{
register int i, dir_index;
REFERENCE **all_indices = (REFERENCE **)NULL;
@@ -547,7 +538,8 @@ apropos_in_all_indices (search_string, inform)
}
if (this_fb && inform)
- message_in_echo_area (_("Scanning indices of \"%s\"..."), files_name);
+ message_in_echo_area ((char *) _("Scanning indices of `%s'..."),
+ files_name, NULL);
this_index = info_indices_of_file_buffer (this_fb);
free (this_node);
@@ -601,20 +593,17 @@ apropos_in_all_indices (search_string, inform)
}
#define APROPOS_NONE \
- N_("No available info files have \"%s\" in their indices.")
+ N_("No available info files have `%s' in their indices.")
void
-info_apropos (string)
- char *string;
+info_apropos (char *string)
{
REFERENCE **apropos_list;
apropos_list = apropos_in_all_indices (string, 0);
if (!apropos_list)
- {
- info_error (_(APROPOS_NONE), string);
- }
+ info_error ((char *) _(APROPOS_NONE), string, NULL);
else
{
register int i;
@@ -634,7 +623,7 @@ DECLARE_INFO_COMMAND (info_index_apropos,
{
char *line;
- line = info_read_in_echo_area (window, _("Index apropos: "));
+ line = info_read_in_echo_area (window, (char *) _("Index apropos: "));
window = active_window;
@@ -654,9 +643,7 @@ DECLARE_INFO_COMMAND (info_index_apropos,
apropos_list = apropos_in_all_indices (line, 1);
if (!apropos_list)
- {
- info_error (_(APROPOS_NONE), line);
- }
+ info_error ((char *) _(APROPOS_NONE), line, NULL);
else
{
register int i;
@@ -664,7 +651,8 @@ DECLARE_INFO_COMMAND (info_index_apropos,
initialize_message_buffer ();
printf_to_message_buffer
- (_("\n* Menu: Nodes whoses indices contain \"%s\":\n"), line);
+ ((char *) _("\n* Menu: Nodes whose indices contain `%s':\n"),
+ line, NULL, NULL);
line_buffer = (char *)xmalloc (500);
for (i = 0; apropos_list[i]; i++)
@@ -678,7 +666,7 @@ DECLARE_INFO_COMMAND (info_index_apropos,
len = pad_to (40, line_buffer);
sprintf (line_buffer + len, "(%s)%s.",
apropos_list[i]->filename, apropos_list[i]->nodename);
- printf_to_message_buffer ("%s\n", line_buffer);
+ printf_to_message_buffer ("%s\n", line_buffer, NULL, NULL);
}
free (line_buffer);
}
@@ -745,4 +733,3 @@ DECLARE_INFO_COMMAND (info_index_apropos,
if (!info_error_was_printed)
window_clear_echo_area ();
}
-
diff --git a/contrib/texinfo/info/indices.h b/contrib/texinfo/info/indices.h
index b5f74bb..1ccd676 100644
--- a/contrib/texinfo/info/indices.h
+++ b/contrib/texinfo/info/indices.h
@@ -1,10 +1,10 @@
/* indices.h -- Functions defined in indices.c.
- $Id: indices.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: indices.h,v 1.3 2004/04/11 17:56:45 karl Exp $
This file is part of GNU Info, a program for reading online documentation
stored in Info format.
- Copyright (C) 1993, 97 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,15 +28,18 @@
/* User-visible variable controls the output of info-index-next. */
extern int show_index_match;
-extern REFERENCE **info_indices_of_window (), **info_indices_of_file_buffer ();
-extern void info_apropos ();
+extern REFERENCE **info_indices_of_window (WINDOW *window);
+extern REFERENCE **info_indices_of_file_buffer (FILE_BUFFER *file_buffer);
+extern void info_apropos (char *string);
/* For every menu item in DIR, search the indices of that file for STRING. */
-REFERENCE **apropos_in_all_indices ();
+REFERENCE **apropos_in_all_indices (char *search_string, int inform);
/* User visible functions declared in indices.c. */
-extern void info_index_search (), info_next_index_match ();
-extern void do_info_index_search ();
-extern int index_intry_exists ();
+extern void info_index_search (WINDOW *window, int count, unsigned char key);
+extern void info_next_index_match (WINDOW *window, int count, unsigned char key);
+extern void info_index_apropos (WINDOW *window, int count, unsigned char key);
+extern void do_info_index_search (WINDOW *window, int count, char *search_string);
+extern int index_entry_exists (WINDOW *window, char *string);
#endif /* not INFO_INDICES_H */
diff --git a/contrib/texinfo/info/info-utils.c b/contrib/texinfo/info/info-utils.c
index d018cbd..c23bac5 100644
--- a/contrib/texinfo/info/info-utils.c
+++ b/contrib/texinfo/info/info-utils.c
@@ -1,7 +1,7 @@
/* info-utils.c -- miscellanous.
- $Id: info-utils.c,v 1.2 2003/03/06 23:22:23 karl Exp $
+ $Id: info-utils.c,v 1.4 2004/04/11 17:56:45 karl Exp $
- Copyright (C) 1993, 1998, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1998, 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- Written by Brian Fox (bfox@ai.mit.edu). */
+ Originally written by Brian Fox (bfox@ai.mit.edu). */
#include "info.h"
#include "info-utils.h"
@@ -37,12 +37,19 @@ char *info_parsed_filename = (char *)NULL;
calling info_parse_xxx (). */
char *info_parsed_nodename = (char *)NULL;
+/* Variable which holds the most recent line number parsed as a result of
+ calling info_parse_xxx (). */
+int info_parsed_line_number = 0;
+
/* Functions to remember a filename or nodename for later return. */
-static void save_filename (), saven_filename ();
-static void save_nodename (), saven_nodename ();
+static void save_filename (char *filename);
+static void saven_filename (char *filename, int len);
+static void save_nodename (char *nodename);
+static void saven_nodename (char *nodename, int len);
/* How to get a reference (either menu or cross). */
-static REFERENCE **info_references_internal ();
+static REFERENCE **info_references_internal (char *label,
+ SEARCH_BINDING *binding);
/* Parse the filename and nodename out of STRING. If STRING doesn't
contain a filename (i.e., it is NOT (FILENAME)NODENAME) then set
@@ -50,9 +57,7 @@ static REFERENCE **info_references_internal ();
non-zero, it says to allow the nodename specification to cross a
newline boundary (i.e., only `,', `.', or `TAB' can end the spec). */
void
-info_parse_node (string, newlines_okay)
- char *string;
- int newlines_okay;
+info_parse_node (char *string, int newlines_okay)
{
register int i = 0;
@@ -96,6 +101,37 @@ info_parse_node (string, newlines_okay)
free (info_parsed_nodename);
info_parsed_nodename = (char *)NULL;
}
+
+ /* Parse ``(line ...)'' part of menus, if any. */
+ {
+ char *rest = string + i;
+
+ /* Advance only if it's not already at end of string. */
+ if (*rest)
+ rest++;
+
+ /* Skip any whitespace first, and then a newline in case the item
+ was so long to contain the ``(line ...)'' string in the same
+ physical line. */
+ while (whitespace(*rest))
+ rest++;
+ if (*rest == '\n')
+ {
+ rest++;
+ while (whitespace(*rest))
+ rest++;
+ }
+
+ /* Are we looking at an opening parenthesis? That can only mean
+ we have a winner. :) */
+ if (strncmp (rest, "(line ", strlen ("(line ")) == 0)
+ {
+ rest += strlen ("(line ");
+ info_parsed_line_number = strtol (rest, NULL, 0);
+ }
+ else
+ info_parsed_line_number = 0;
+ }
}
/* Return the node addressed by LABEL in NODE (usually one of "Prev:",
@@ -103,9 +139,7 @@ info_parse_node (string, newlines_okay)
the global INFO_PARSED_NODENAME and INFO_PARSED_FILENAME contain
the information. */
void
-info_parse_label (label, node)
- char *label;
- NODE *node;
+info_parse_label (char *label, NODE *node)
{
register int i;
char *nodeline;
@@ -135,30 +169,29 @@ info_parse_label (label, node)
/* Return a NULL terminated array of REFERENCE * which represents the menu
found in NODE. If there is no menu in NODE, just return a NULL pointer. */
REFERENCE **
-info_menu_of_node (node)
- NODE *node;
+info_menu_of_node (NODE *node)
{
long position;
- SEARCH_BINDING search;
+ SEARCH_BINDING tmp_search;
REFERENCE **menu = (REFERENCE **)NULL;
- search.buffer = node->contents;
- search.start = 0;
- search.end = node->nodelen;
- search.flags = S_FoldCase;
+ tmp_search.buffer = node->contents;
+ tmp_search.start = 0;
+ tmp_search.end = node->nodelen;
+ tmp_search.flags = S_FoldCase;
/* Find the start of the menu. */
- position = search_forward (INFO_MENU_LABEL, &search);
+ position = search_forward (INFO_MENU_LABEL, &tmp_search);
if (position == -1)
return ((REFERENCE **) NULL);
/* We have the start of the menu now. Glean menu items from the rest
of the node. */
- search.start = position + strlen (INFO_MENU_LABEL);
- search.start += skip_line (search.buffer + search.start);
- search.start--;
- menu = info_menu_items (&search);
+ tmp_search.start = position + strlen (INFO_MENU_LABEL);
+ tmp_search.start += skip_line (tmp_search.buffer + tmp_search.start);
+ tmp_search.start--;
+ menu = info_menu_items (&tmp_search);
return (menu);
}
@@ -166,30 +199,28 @@ info_menu_of_node (node)
refrences found in NODE. If there are no cross references in NODE, just
return a NULL pointer. */
REFERENCE **
-info_xrefs_of_node (node)
- NODE *node;
+info_xrefs_of_node (NODE *node)
{
- SEARCH_BINDING search;
+ SEARCH_BINDING tmp_search;
#if defined (HANDLE_MAN_PAGES)
if (node->flags & N_IsManPage)
return (xrefs_of_manpage (node));
#endif
- search.buffer = node->contents;
- search.start = 0;
- search.end = node->nodelen;
- search.flags = S_FoldCase;
+ tmp_search.buffer = node->contents;
+ tmp_search.start = 0;
+ tmp_search.end = node->nodelen;
+ tmp_search.flags = S_FoldCase;
- return (info_xrefs (&search));
+ return (info_xrefs (&tmp_search));
}
/* Glean menu entries from BINDING->buffer + BINDING->start until we
have looked at the entire contents of BINDING. Return an array
of REFERENCE * that represents each menu item in this range. */
REFERENCE **
-info_menu_items (binding)
- SEARCH_BINDING *binding;
+info_menu_items (SEARCH_BINDING *binding)
{
return (info_references_internal (INFO_MENU_ENTRY_LABEL, binding));
}
@@ -198,8 +229,7 @@ info_menu_items (binding)
BINDING->end. Return an array of REFERENCE * that represents each
cross reference in this range. */
REFERENCE **
-info_xrefs (binding)
- SEARCH_BINDING *binding;
+info_xrefs (SEARCH_BINDING *binding)
{
return (info_references_internal (INFO_XREF_LABEL, binding));
}
@@ -207,33 +237,31 @@ info_xrefs (binding)
/* Glean cross references or menu items from BINDING. Return an array
of REFERENCE * that represents the items found. */
static REFERENCE **
-info_references_internal (label, binding)
- char *label;
- SEARCH_BINDING *binding;
+info_references_internal (char *label, SEARCH_BINDING *binding)
{
- SEARCH_BINDING search;
+ SEARCH_BINDING tmp_search;
REFERENCE **refs = (REFERENCE **)NULL;
int refs_index = 0, refs_slots = 0;
int searching_for_menu_items = 0;
long position;
- search.buffer = binding->buffer;
- search.start = binding->start;
- search.end = binding->end;
- search.flags = S_FoldCase | S_SkipDest;
+ tmp_search.buffer = binding->buffer;
+ tmp_search.start = binding->start;
+ tmp_search.end = binding->end;
+ tmp_search.flags = S_FoldCase | S_SkipDest;
searching_for_menu_items = (strcasecmp (label, INFO_MENU_ENTRY_LABEL) == 0);
- while ((position = search_forward (label, &search)) != -1)
+ while ((position = search_forward (label, &tmp_search)) != -1)
{
int offset, start;
char *refdef;
REFERENCE *entry;
- search.start = position;
- search.start += skip_whitespace (search.buffer + search.start);
- start = search.start - binding->start;
- refdef = search.buffer + search.start;
+ tmp_search.start = position;
+ tmp_search.start += skip_whitespace (tmp_search.buffer + tmp_search.start);
+ start = tmp_search.start - binding->start;
+ refdef = tmp_search.buffer + tmp_search.start;
offset = string_in_line (":", refdef);
/* When searching for menu items, if no colon, there is no
@@ -290,6 +318,8 @@ info_references_internal (label, binding)
if (info_parsed_nodename)
entry->nodename = xstrdup (info_parsed_nodename);
+
+ entry->line_number = info_parsed_line_number;
}
add_pointer_to_array
@@ -301,9 +331,7 @@ info_references_internal (label, binding)
/* Get the entry associated with LABEL in REFERENCES. Return a pointer
to the ENTRY if found, or NULL. */
REFERENCE *
-info_get_labeled_reference (label, references)
- char *label;
- REFERENCE **references;
+info_get_labeled_reference (char *label, REFERENCE **references)
{
register int i;
REFERENCE *entry;
@@ -320,8 +348,7 @@ info_get_labeled_reference (label, references)
REFERENCE ** which is the concatenation of REF1 and REF2. The REF1
and REF2 arrays are freed, but their contents are not. */
REFERENCE **
-info_concatenate_references (ref1, ref2)
- REFERENCE **ref1, **ref2;
+info_concatenate_references (REFERENCE **ref1, REFERENCE **ref2)
{
register int i, j;
REFERENCE **result;
@@ -361,8 +388,7 @@ info_concatenate_references (ref1, ref2)
every opportunity, we don't share any points, but copy everything into
new memory. */
REFERENCE *
-info_copy_reference (src)
- REFERENCE *src;
+info_copy_reference (REFERENCE *src)
{
REFERENCE *dest = xmalloc (sizeof (REFERENCE));
dest->label = src->label ? xstrdup (src->label) : NULL;
@@ -378,8 +404,7 @@ info_copy_reference (src)
/* Free the data associated with REFERENCES. */
void
-info_free_references (references)
- REFERENCE **references;
+info_free_references (REFERENCE **references)
{
register int i;
REFERENCE *entry;
@@ -403,11 +428,10 @@ info_free_references (references)
all such sequences with just a single space. Remove whitespace from
start and end of string. */
void
-canonicalize_whitespace (string)
- char *string;
+canonicalize_whitespace (char *string)
{
register int i, j;
- int len, whitespace_found, whitespace_loc;
+ int len, whitespace_found, whitespace_loc = 0;
char *temp;
if (!string)
@@ -458,9 +482,7 @@ static char the_rep[10];
/* Return a pointer to a string which is the printed representation
of CHARACTER if it were printed at HPOS. */
char *
-printed_representation (character, hpos)
- unsigned char character;
- int hpos;
+printed_representation (unsigned char character, int hpos)
{
register int i = 0;
int printable_limit = ISO_Latin_p ? 255 : 127;
@@ -524,22 +546,21 @@ static int parsed_filename_size = 0;
/* Amount of space allocated to INFO_PARSED_NODENAME via xmalloc (). */
static int parsed_nodename_size = 0;
-static void save_string (), saven_string ();
+static void save_string (char *string, char **string_p, int *string_size_p);
+static void saven_string (char *string, int len, char **string_p,
+ int *string_size_p);
/* Remember FILENAME in PARSED_FILENAME. An empty FILENAME is translated
to a NULL pointer in PARSED_FILENAME. */
static void
-save_filename (filename)
- char *filename;
+save_filename (char *filename)
{
save_string (filename, &info_parsed_filename, &parsed_filename_size);
}
/* Just like save_filename (), but you pass the length of the string. */
static void
-saven_filename (filename, len)
- char *filename;
- int len;
+saven_filename (char *filename, int len)
{
saven_string (filename, len,
&info_parsed_filename, &parsed_filename_size);
@@ -548,17 +569,14 @@ saven_filename (filename, len)
/* Remember NODENAME in PARSED_NODENAME. An empty NODENAME is translated
to a NULL pointer in PARSED_NODENAME. */
static void
-save_nodename (nodename)
- char *nodename;
+save_nodename (char *nodename)
{
save_string (nodename, &info_parsed_nodename, &parsed_nodename_size);
}
/* Just like save_nodename (), but you pass the length of the string. */
static void
-saven_nodename (nodename, len)
- char *nodename;
- int len;
+saven_nodename (char *nodename, int len)
{
saven_string (nodename, len,
&info_parsed_nodename, &parsed_nodename_size);
@@ -568,10 +586,7 @@ saven_nodename (nodename, len)
bytes allocated to it. An empty STRING is translated to a NULL pointer
in STRING_P. */
static void
-save_string (string, string_p, string_size_p)
- char *string;
- char **string_p;
- int *string_size_p;
+save_string (char *string, char **string_p, int *string_size_p)
{
if (!string || !*string)
{
@@ -583,7 +598,7 @@ save_string (string, string_p, string_size_p)
}
else
{
- if (strlen (string) >= *string_size_p)
+ if (strlen (string) >= (unsigned int) *string_size_p)
*string_p = (char *)xrealloc
(*string_p, (*string_size_p = 1 + strlen (string)));
@@ -593,11 +608,7 @@ save_string (string, string_p, string_size_p)
/* Just like save_string (), but you also pass the length of STRING. */
static void
-saven_string (string, len, string_p, string_size_p)
- char *string;
- int len;
- char **string_p;
- int *string_size_p;
+saven_string (char *string, int len, char **string_p, int *string_size_p)
{
if (!string)
{
@@ -619,8 +630,7 @@ saven_string (string, len, string_p, string_size_p)
/* Return a pointer to the part of PATHNAME that simply defines the file. */
char *
-filename_non_directory (pathname)
- char *pathname;
+filename_non_directory (char *pathname)
{
register char *filename = pathname + strlen (pathname);
@@ -635,8 +645,7 @@ filename_non_directory (pathname)
/* Return non-zero if NODE is one especially created by Info. */
int
-internal_info_node_p (node)
- NODE *node;
+internal_info_node_p (NODE *node)
{
#if defined (NEVER)
if (node &&
@@ -652,9 +661,7 @@ internal_info_node_p (node)
/* Make NODE appear to be one especially created by Info. */
void
-name_internal_node (node, name)
- NODE *node;
- char *name;
+name_internal_node (NODE *node, char *name)
{
if (!node)
return;
@@ -668,8 +675,7 @@ name_internal_node (node, name)
/* Return the window displaying NAME, the name of an internally created
Info window. */
WINDOW *
-get_internal_info_window (name)
- char *name;
+get_internal_info_window (char *name)
{
WINDOW *win;
@@ -683,8 +689,7 @@ get_internal_info_window (name)
/* Return a window displaying the node NODE. */
WINDOW *
-get_window_of_node (node)
- NODE *node;
+get_window_of_node (NODE *node)
{
WINDOW *win = (WINDOW *)NULL;
diff --git a/contrib/texinfo/info/info-utils.h b/contrib/texinfo/info/info-utils.h
index 6ff0581..6517b15 100644
--- a/contrib/texinfo/info/info-utils.h
+++ b/contrib/texinfo/info/info-utils.h
@@ -1,7 +1,8 @@
/* info-utils.h -- Exported functions and variables from info-utils.c.
- $Id: info-utils.h,v 1.2 2003/03/06 23:21:48 karl Exp $
+ $Id: info-utils.h,v 1.4 2004/04/11 17:56:45 karl Exp $
- Copyright (C) 1993, 1996, 1998, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1996, 1998, 2002, 2003, 2004 Free Software
+ Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -34,6 +35,7 @@ typedef struct {
char *filename; /* File where this node can be found. */
char *nodename; /* Name of the node. */
int start, end; /* Offsets within the containing node of LABEL. */
+ int line_number; /* Specific line number a menu item points to. */
} REFERENCE;
/* When non-zero, various display and input functions handle ISO Latin
@@ -53,72 +55,73 @@ extern char *info_parsed_nodename;
INFO_PARSED_FILENAME to NULL. If second argument NEWLINES_OKAY is
non-zero, it says to allow the nodename specification to cross a
newline boundary (i.e., only `,', `.', or `TAB' can end the spec). */
-void info_parse_node ();
+void info_parse_node (char *string, int newlines_okay);
/* Return a NULL terminated array of REFERENCE * which represents the menu
found in NODE. If there is no menu in NODE, just return a NULL pointer. */
-extern REFERENCE **info_menu_of_node ();
+extern REFERENCE **info_menu_of_node (NODE *node);
/* Return a NULL terminated array of REFERENCE * which represents the cross
refrences found in NODE. If there are no cross references in NODE, just
return a NULL pointer. */
-extern REFERENCE **info_xrefs_of_node ();
+extern REFERENCE **info_xrefs_of_node (NODE *node);
/* Glean cross references from BINDING->buffer + BINDING->start until
BINDING->end. Return an array of REFERENCE * that represents each
cross reference in this range. */
-extern REFERENCE **info_xrefs ();
+extern REFERENCE **info_xrefs (SEARCH_BINDING *binding);
/* Get the entry associated with LABEL in REFERENCES. Return a pointer to
the reference if found, or NULL. */
-extern REFERENCE *info_get_labeled_reference ();
+extern REFERENCE *info_get_labeled_reference (char *label,
+ REFERENCE **references);
/* Glean menu entries from BINDING->buffer + BINDING->start until we
have looked at the entire contents of BINDING. Return an array
of REFERENCE * that represents each menu item in this range. */
-extern REFERENCE **info_menu_items ();
+extern REFERENCE **info_menu_items (SEARCH_BINDING *binding);
/* A utility function for concatenating REFERENCE **. Returns a new
REFERENCE ** which is the concatenation of REF1 and REF2. The REF1
and REF2 arrays are freed, but their contents are not. */
-REFERENCE **info_concatenate_references ();
+REFERENCE **info_concatenate_references (REFERENCE **ref1, REFERENCE **ref2);
/* Copy an existing reference into new memory. */
-extern REFERENCE *info_copy_reference ();
+extern REFERENCE *info_copy_reference (REFERENCE *src);
/* Free the data associated with REFERENCES. */
-extern void info_free_references ();
+extern void info_free_references (REFERENCE **references);
/* Search for sequences of whitespace or newlines in STRING, replacing
all such sequences with just a single space. Remove whitespace from
start and end of string. */
-void canonicalize_whitespace ();
+void canonicalize_whitespace (char *string);
/* Return a pointer to a string which is the printed representation
of CHARACTER if it were printed at HPOS. */
-extern char *printed_representation ();
+extern char *printed_representation (unsigned char character, int hpos);
/* Return a pointer to the part of PATHNAME that simply defines the file. */
-extern char *filename_non_directory ();
+extern char *filename_non_directory (char *pathname);
/* Return non-zero if NODE is one especially created by Info. */
-extern int internal_info_node_p ();
+extern int internal_info_node_p (NODE *node);
/* Make NODE appear to be one especially created by Info, and give it NAME. */
-extern void name_internal_node ();
+extern void name_internal_node (NODE *node, char *name);
/* Return the window displaying NAME, the name of an internally created
Info window. */
-extern WINDOW *get_internal_info_window ();
+extern WINDOW *get_internal_info_window (char *name);
/* Return a window displaying the node NODE. */
-extern WINDOW *get_window_of_node ();
+extern WINDOW *get_window_of_node (NODE *node);
/* Return the node addressed by LABEL in NODE (usually one of "Prev:",
"Next:", "Up:", "File:", or "Node:". After a call to this function,
the globals `info_parsed_nodename' and `info_parsed_filename' contain
the information. */
-extern void info_parse_label (/* label, node */);
+extern void info_parse_label (char *label, NODE *node);
#define info_file_label_of_node(n) info_parse_label (INFO_FILE_LABEL, n)
#define info_next_label_of_node(n) info_parse_label (INFO_NEXT_LABEL, n)
diff --git a/contrib/texinfo/info/info.c b/contrib/texinfo/info/info.c
index 5fceb74..79dd024 100644
--- a/contrib/texinfo/info/info.c
+++ b/contrib/texinfo/info/info.c
@@ -1,8 +1,8 @@
/* info.c -- Display nodes of Info files in multiple windows.
- $Id: info.c,v 1.7 2003/05/19 13:10:59 karl Exp $
+ $Id: info.c,v 1.11 2004/04/11 17:56:45 karl Exp $
- Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
- Free Software Foundation, Inc.
+ Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+ 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -77,8 +77,11 @@ int dump_subnodes = 0;
/* Non-zero means make default keybindings be loosely modeled on vi(1). */
int vi_keys_p = 0;
-/* Non-zero means don't remove ANSI escape sequences from man pages. */
-int raw_escapes_p = 0;
+/* Non-zero means don't remove ANSI escape sequences. */
+int raw_escapes_p = 1;
+
+/* Non-zero means print the absolute location of the file to be loaded. */
+static int print_where_p = 0;
#ifdef __MSDOS__
/* Non-zero indicates that screen output should be made 'speech-friendly'.
@@ -103,15 +106,18 @@ static struct option long_options[] = {
{ "file", 1, 0, 'f' },
{ "help", 0, &print_help_p, 1 },
{ "index-search", 1, 0, IDXSRCH_OPTION },
+ { "location", 0, &print_where_p, 1 },
{ "node", 1, 0, 'n' },
{ "output", 1, 0, 'o' },
{ "raw-escapes", 0, &raw_escapes_p, 1 },
+ { "no-raw-escapes", 0, &raw_escapes_p, 0 },
{ "restore", 1, 0, RESTORE_OPTION },
{ "show-options", 0, 0, 'O' },
{ "subnodes", 0, &dump_subnodes, 1 },
{ "usage", 0, 0, 'O' },
{ "version", 0, &print_version_p, 1 },
{ "vi-keys", 0, &vi_keys_p, 1 },
+ { "where", 0, &print_where_p, 1 },
#ifdef __MSDOS__
{ "speech-friendly", 0, &speech_friendly, 1 },
#endif
@@ -120,18 +126,17 @@ static struct option long_options[] = {
/* String describing the shorthand versions of the long options found above. */
#ifdef __MSDOS__
-static char *short_options = "d:n:f:ho:ORsb";
+static char *short_options = "d:n:f:ho:ORswb";
#else
-static char *short_options = "d:n:f:ho:ORs";
+static char *short_options = "d:n:f:ho:ORws";
#endif
/* When non-zero, the Info window system has been initialized. */
int info_windows_initialized_p = 0;
/* Some "forward" declarations. */
-static void info_short_help ();
-static void init_messages ();
-extern void add_file_directory_to_path ();
+static void info_short_help (void);
+static void init_messages (void);
/* **************************************************************** */
@@ -141,9 +146,7 @@ extern void add_file_directory_to_path ();
/* **************************************************************** */
int
-main (argc, argv)
- int argc;
- char **argv;
+main (int argc, char **argv)
{
int getopt_long_index; /* Index returned by getopt_long (). */
NODE *initial_node; /* First node loaded by Info. */
@@ -153,9 +156,11 @@ main (argc, argv)
setlocale (LC_ALL, "");
#endif
+#ifdef ENABLE_NLS
/* Set the text message domain. */
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
+#endif
init_messages ();
@@ -229,6 +234,11 @@ main (argc, argv)
dump_subnodes = 1;
break;
+ /* For compatibility with man, -w is --where. */
+ case 'w':
+ print_where_p = 1;
+ break;
+
#ifdef __MSDOS__
/* User wants speech-friendly output. */
case 'b':
@@ -281,11 +291,10 @@ main (argc, argv)
{
printf ("%s (GNU %s) %s\n", program_name, PACKAGE, VERSION);
puts ("");
- printf (_("Copyright (C) %s Free Software Foundation, Inc.\n\
-There is NO warranty. You may redistribute this software\n\
+ puts ("Copyright (C) 2004 Free Software Foundation, Inc.");
+ printf (_("There is NO warranty. You may redistribute this software\n\
under the terms of the GNU General Public License.\n\
-For more information about these matters, see the files named COPYING.\n"),
- "2003");
+For more information about these matters, see the files named COPYING.\n"));
xexit (0);
}
@@ -322,7 +331,13 @@ For more information about these matters, see the files named COPYING.\n"),
{
info_add_path (DEFAULT_INFOPATH, INFOPATH_PREPEND);
#ifdef INFODIR /* from the Makefile */
- info_add_path (INFODIR, INFOPATH_PREPEND);
+ info_add_path (INFODIR, INFOPATH_PREPEND);
+#endif
+#ifdef INFODIR2 /* from the Makefile, too */
+# ifdef INFODIR
+ if (!STREQ (INFODIR, INFODIR2))
+# endif
+ info_add_path (INFODIR2, INFOPATH_PREPEND);
#endif
}
}
@@ -349,10 +364,10 @@ For more information about these matters, see the files named COPYING.\n"),
if (!initial_node)
{
if (info_recent_file_error)
- info_error (info_recent_file_error);
+ info_error (info_recent_file_error, NULL, NULL);
else
- info_error (msg_cant_find_node,
- user_nodenames ? user_nodenames[0] : "Top");
+ info_error ((char *) msg_cant_find_node,
+ user_nodenames ? user_nodenames[0] : "Top", NULL);
xexit (1);
}
@@ -364,7 +379,9 @@ For more information about these matters, see the files named COPYING.\n"),
{
free (initial_node);
- if (user_output_filename)
+ if (print_where_p)
+ printf ("%s\n", user_filename ? user_filename : "unknown?!");
+ else if (user_output_filename)
dump_nodes_to_file
(user_filename, user_nodenames, user_output_filename, dump_subnodes);
else
@@ -378,13 +395,27 @@ For more information about these matters, see the files named COPYING.\n"),
file name is either "dir", or the contents of user_filename if one
was specified. */
{
- char *errstr, *errarg1, *errarg2;
+ const char *errstr;
+ char *errarg1, *errarg2;
+
NODE *new_initial_node = info_follow_menus (initial_node, argv + optind,
- &errstr, &errarg1, &errarg2);
+ &errstr, &errarg1, &errarg2);
if (new_initial_node && new_initial_node != initial_node)
initial_node = new_initial_node;
+ if (print_where_p)
+ {
+ if (initial_node->parent)
+ printf ("%s\n", initial_node->parent);
+ else if (initial_node->filename
+ && !is_dir_name (filename_non_directory (initial_node->filename)))
+ printf ("%s\n", initial_node->filename);
+ else
+ xexit (1);
+ xexit (0);
+ }
+
/* If the user specified that this node should be output, then do that
now. Otherwise, start the Info session with this node. Or act
accordingly if the initial node was not found. */
@@ -394,14 +425,14 @@ For more information about these matters, see the files named COPYING.\n"),
dump_node_to_file (initial_node, user_output_filename,
dump_subnodes);
else
- info_error (errstr, errarg1, errarg2);
+ info_error ((char *) errstr, errarg1, errarg2);
}
else
{
if (errstr)
- begin_info_session_with_error (initial_node, errstr,
- errarg1, errarg2);
+ begin_info_session_with_error (initial_node, (char *) errstr,
+ errarg1, errarg2);
/* If the user specified `--index-search=STRING' or
--show-options, start the info session in the node
corresponding to what they want. */
@@ -483,8 +514,7 @@ For more information about these matters, see the files named COPYING.\n"),
}
void
-add_file_directory_to_path (filename)
- char *filename;
+add_file_directory_to_path (char *filename)
{
char *directory_name = xstrdup (filename);
char *temp = filename_non_directory (directory_name);
@@ -518,9 +548,7 @@ int info_error_rings_bell_p = 1;
then the message is printed in the echo area. Otherwise, a message is
output to stderr. */
void
-info_error (format, arg1, arg2)
- char *format;
- void *arg1, *arg2;
+info_error (char *format, void *arg1, void *arg2)
{
info_error_was_printed = 1;
@@ -556,7 +584,7 @@ info_error (format, arg1, arg2)
/* Produce a scaled down description of the available options to Info. */
static void
-info_short_help ()
+info_short_help (void)
{
#ifdef __MSDOS__
static const char speech_friendly_string[] = N_("\
@@ -580,10 +608,12 @@ Options:\n\
--index-search=STRING go to node pointed by index entry STRING.\n\
-n, --node=NODENAME specify nodes in first visited Info file.\n\
-o, --output=FILENAME output selected nodes to FILENAME.\n\
- -R, --raw-escapes don't remove ANSI escapes from man pages.\n\
+ -R, --raw-escapes output \"raw\" ANSI escapes (default).\n\
+ --no-raw-escapes output escapes as literal text.\n\
--restore=FILENAME read initial keystrokes from FILENAME.\n\
-O, --show-options, --usage go to command-line options node.\n%s\
--subnodes recursively output menu items.\n\
+ -w, --where, --location print physical location of Info file.\n\
--vi-keys use vi-like and less-like key bindings.\n\
--version display version information and exit.\n\
\n\
@@ -634,7 +664,7 @@ const char *msg_win_too_small;
const char *msg_cant_make_help;
static void
-init_messages ()
+init_messages (void)
{
msg_cant_find_node = _("Cannot find node `%s'.");
msg_cant_file_node = _("Cannot find node `(%s)%s'.");
diff --git a/contrib/texinfo/info/info.h b/contrib/texinfo/info/info.h
index 90b82e4..7ff8abe 100644
--- a/contrib/texinfo/info/info.h
+++ b/contrib/texinfo/info/info.h
@@ -1,7 +1,7 @@
/* info.h -- Header file which includes all of the other headers.
- $Id: info.h,v 1.2 2003/02/11 16:39:06 karl Exp $
+ $Id: info.h,v 1.4 2004/04/11 17:56:45 karl Exp $
- Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002, 2003 Free Software
+ Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002, 2003, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -126,7 +126,9 @@ extern int raw_escapes_p;
/* Print FORMAT with ARG1 and ARG2. If the window system was initialized,
then the message is printed in the echo area. Otherwise, a message is
output to stderr. */
-extern void info_error ();
+extern void info_error (char *format, void *arg1, void *arg2);
+
+extern void add_file_directory_to_path (char *filename);
/* Error message defines. */
extern const char *msg_cant_find_node;
@@ -147,16 +149,12 @@ extern const char *msg_win_too_small;
extern const char *msg_cant_make_help;
-extern char *filename_non_directory (); /* Found in info-utils.c. */
-
#if defined(INFOKEY)
-extern void set_variable_to_value (); /* Found in variables.c. */
+/* Found in variables.c. */
+extern void set_variable_to_value (char *name, char *value);
#endif /* INFOKEY */
-#if !defined (BUILDING_LIBRARY)
-extern int info_windows_initialized_p; /* Found in session.c */
-/* Found in window.c. */
-extern void message_in_echo_area (), unmessage_in_echo_area ();
-#endif /* !BUILDING_LIBRARY */
+/* Found in m-x.c. */
+extern char *read_function_name (char *prompt, WINDOW *window);
#endif /* !INFO_H */
diff --git a/contrib/texinfo/info/infodoc.c b/contrib/texinfo/info/infodoc.c
index 5c25323..eeea147 100644
--- a/contrib/texinfo/info/infodoc.c
+++ b/contrib/texinfo/info/infodoc.c
@@ -1,7 +1,7 @@
/* infodoc.c -- functions which build documentation nodes.
- $Id: infodoc.c,v 1.6 2003/05/13 16:22:11 karl Exp $
+ $Id: infodoc.c,v 1.8 2004/04/11 17:56:45 karl Exp $
- Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002, 2003 Free Software
+ Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002, 2003, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -185,12 +185,10 @@ static char *info_help_keys_text[][2] = {
#endif /* !INFOKEY */
-static char *where_is_internal ();
+static char *where_is_internal (Keymap map, InfoCommand *cmd);
void
-dump_map_to_message_buffer (prefix, map)
- char *prefix;
- Keymap map;
+dump_map_to_message_buffer (char *prefix, Keymap map)
{
register int i;
unsigned prefix_len = strlen (prefix);
@@ -226,13 +224,16 @@ dump_map_to_message_buffer (prefix, map)
if (last - 1 != i)
{
- printf_to_message_buffer ("%s .. ", pretty_keyseq (new_prefix));
+ printf_to_message_buffer ("%s .. ", pretty_keyseq (new_prefix),
+ NULL, NULL);
new_prefix[prefix_len] = last - 1;
- printf_to_message_buffer ("%s\t", pretty_keyseq (new_prefix));
+ printf_to_message_buffer ("%s\t", pretty_keyseq (new_prefix),
+ NULL, NULL);
i = last - 1;
}
else
- printf_to_message_buffer ("%s\t", pretty_keyseq (new_prefix));
+ printf_to_message_buffer ("%s\t", pretty_keyseq (new_prefix),
+ NULL, NULL);
#if defined (NAMED_FUNCTIONS)
/* Print the name of the function, and some padding before the
@@ -241,22 +242,23 @@ dump_map_to_message_buffer (prefix, map)
int length_so_far;
int desired_doc_start = 40; /* Must be multiple of 8. */
- printf_to_message_buffer ("(%s)", name);
+ printf_to_message_buffer ("(%s)", name, NULL, NULL);
length_so_far = message_buffer_length_this_line ();
- if ((desired_doc_start + strlen (doc)) >= the_screen->width)
- printf_to_message_buffer ("\n ");
+ if ((desired_doc_start + strlen (doc))
+ >= (unsigned int) the_screen->width)
+ printf_to_message_buffer ("\n ", NULL, NULL, NULL);
else
{
while (length_so_far < desired_doc_start)
{
- printf_to_message_buffer ("\t");
+ printf_to_message_buffer ("\t", NULL, NULL, NULL);
length_so_far += character_width ('\t', length_so_far);
}
}
}
#endif /* NAMED_FUNCTIONS */
- printf_to_message_buffer ("%s\n", doc);
+ printf_to_message_buffer ("%s\n", doc, NULL, NULL);
}
}
free (new_prefix);
@@ -269,8 +271,7 @@ dump_map_to_message_buffer (prefix, map)
make q do the right thing in both cases. */
static void
-create_internal_info_help_node (help_is_only_window_p)
- int help_is_only_window_p;
+create_internal_info_help_node (int help_is_only_window_p)
{
register int i;
NODE *node;
@@ -291,8 +292,9 @@ create_internal_info_help_node (help_is_only_window_p)
for (i = 0; info_internal_help_text[i]; i++)
{
#ifdef INFOKEY
- printf_to_message_buffer (replace_in_documentation (
- _(info_internal_help_text[i]), help_is_only_window_p));
+ printf_to_message_buffer (replace_in_documentation
+ ((char *) _(info_internal_help_text[i]), help_is_only_window_p),
+ NULL, NULL, NULL);
#else
/* Don't translate blank lines, gettext outputs the po file
header in that case. We want a blank line. */
@@ -306,18 +308,21 @@ create_internal_info_help_node (help_is_only_window_p)
if (STREQ (key, "CTRL-x 0") && help_is_only_window_p)
key = "l";
- printf_to_message_buffer (msg, key);
+ printf_to_message_buffer (msg, key, NULL, NULL);
#endif /* !INFOKEY */
}
- printf_to_message_buffer ("---------------------\n\n");
- printf_to_message_buffer (_("The current search path is:\n"));
- printf_to_message_buffer (" %s\n", infopath);
- printf_to_message_buffer ("---------------------\n\n");
- printf_to_message_buffer (_("Commands available in Info windows:\n\n"));
+ printf_to_message_buffer ("---------------------\n\n", NULL, NULL, NULL);
+ printf_to_message_buffer ((char *) _("The current search path is:\n"),
+ NULL, NULL, NULL);
+ printf_to_message_buffer (" %s\n", infopath, NULL, NULL);
+ printf_to_message_buffer ("---------------------\n\n", NULL, NULL, NULL);
+ printf_to_message_buffer ((char *) _("Commands available in Info windows:\n\n"),
+ NULL, NULL, NULL);
dump_map_to_message_buffer ("", info_keymap);
- printf_to_message_buffer ("---------------------\n\n");
- printf_to_message_buffer (_("Commands available in the echo area:\n\n"));
+ printf_to_message_buffer ("---------------------\n\n", NULL, NULL, NULL);
+ printf_to_message_buffer ((char *) _("Commands available in the echo area:\n\n"),
+ NULL, NULL, NULL);
dump_map_to_message_buffer ("", echo_area_keymap);
#if defined (NAMED_FUNCTIONS)
@@ -329,19 +334,22 @@ create_internal_info_help_node (help_is_only_window_p)
{
InfoCommand *cmd = DocInfoCmd(&function_doc_array[i]);
- if (InfoFunction(cmd) != info_do_lowercase_version
+ if (InfoFunction(cmd) != (VFunction *) info_do_lowercase_version
&& !where_is_internal (info_keymap, cmd)
&& !where_is_internal (echo_area_keymap, cmd))
{
if (!printed_one_mx)
{
- printf_to_message_buffer ("---------------------\n\n");
+ printf_to_message_buffer ("---------------------\n\n",
+ NULL, NULL, NULL);
if (exec_keys && exec_keys[0])
printf_to_message_buffer
- (_("The following commands can only be invoked via %s:\n\n"), exec_keys);
+ ((char *) _("The following commands can only be invoked via %s:\n\n"),
+ exec_keys, NULL, NULL);
else
printf_to_message_buffer
- (_("The following commands cannot be invoked at all:\n\n"));
+ ((char *) _("The following commands cannot be invoked at all:\n\n"),
+ NULL, NULL, NULL);
printed_one_mx = 1;
}
@@ -350,22 +358,22 @@ create_internal_info_help_node (help_is_only_window_p)
exec_keys,
function_doc_array[i].func_name,
replace_in_documentation (strlen (function_doc_array[i].doc)
- ? _(function_doc_array[i].doc)
- : "")
+ ? (char *) _(function_doc_array[i].doc) : "", 0)
);
}
}
if (printed_one_mx)
- printf_to_message_buffer ("\n");
+ printf_to_message_buffer ("\n", NULL, NULL, NULL);
maybe_free (exec_keys);
#endif /* NAMED_FUNCTIONS */
printf_to_message_buffer
("%s", replace_in_documentation
- (_("--- Use `\\[history-node]' or `\\[kill-node]' to exit ---\n")));
+ ((char *) _("--- Use `\\[history-node]' or `\\[kill-node]' to exit ---\n"), 0),
+ NULL, NULL);
node = message_buffer_to_node ();
internal_info_help_node_contents = node->contents;
}
@@ -404,7 +412,7 @@ create_internal_info_help_node (help_is_only_window_p)
#define HELP_SPLIT_SIZE 24
static WINDOW *
-info_find_or_create_help_window ()
+info_find_or_create_help_window (void)
{
int help_is_only_window_p;
WINDOW *eligible = NULL;
@@ -438,9 +446,8 @@ info_find_or_create_help_window ()
argument is false if help will be the only window (so l must be used
to quit help), true if help will be one of several visible windows
(so CTRL-x 0 must be used to quit help). */
- help_is_only_window_p
- = ((help_window && !windows->next)
- || !help_window && eligible->height < HELP_SPLIT_SIZE);
+ help_is_only_window_p = ((help_window && !windows->next)
+ || (!help_window && eligible->height < HELP_SPLIT_SIZE));
create_internal_info_help_node (help_is_only_window_p);
/* Either use the existing window to display the help node, or create
@@ -487,7 +494,7 @@ DECLARE_INFO_COMMAND (info_get_help_window, _("Display help message"))
}
else
{
- info_error (msg_cant_make_help);
+ info_error ((char *) msg_cant_make_help, NULL, NULL);
}
}
@@ -529,9 +536,9 @@ DECLARE_INFO_COMMAND (info_get_info_help_node, _("Visit Info node `(info)Help'")
if (!node)
{
if (info_recent_file_error)
- info_error (info_recent_file_error);
+ info_error (info_recent_file_error, NULL, NULL);
else
- info_error (msg_cant_file_node, "Info", nodename);
+ info_error ((char *) msg_cant_file_node, "Info", nodename);
}
else
{
@@ -559,8 +566,7 @@ DECLARE_INFO_COMMAND (info_get_info_help_node, _("Visit Info node `(info)Help'")
/* Return the documentation associated with the Info command FUNCTION. */
char *
-function_documentation (cmd)
- InfoCommand *cmd;
+function_documentation (InfoCommand *cmd)
{
char *doc;
@@ -580,15 +586,14 @@ function_documentation (cmd)
#endif /* !INFOKEY */
- return replace_in_documentation ((strlen (doc) == 0) ? doc : _(doc));
+ return replace_in_documentation ((strlen (doc) == 0) ? doc : (char *) _(doc), 0);
}
#if defined (NAMED_FUNCTIONS)
/* Return the user-visible name of the function associated with the
Info command FUNCTION. */
char *
-function_name (cmd)
- InfoCommand *cmd;
+function_name (InfoCommand *cmd)
{
#if defined (INFOKEY)
@@ -609,8 +614,7 @@ function_name (cmd)
/* Return a pointer to the info command for function NAME. */
InfoCommand *
-named_function (name)
- char *name;
+named_function (char *name)
{
register int i;
@@ -624,9 +628,7 @@ named_function (name)
/* Return the documentation associated with KEY in MAP. */
char *
-key_documentation (key, map)
- char key;
- Keymap map;
+key_documentation (char key, Keymap map)
{
InfoCommand *function = map[key].function;
@@ -648,7 +650,8 @@ DECLARE_INFO_COMMAND (describe_key, _("Print documentation for KEY"))
for (;;)
{
- message_in_echo_area (_("Describe key: %s"), pretty_keyseq (keys));
+ message_in_echo_area ((char *) _("Describe key: %s"),
+ pretty_keyseq (keys), NULL);
keystroke = info_get_input_char ();
unmessage_in_echo_area ();
@@ -674,7 +677,8 @@ DECLARE_INFO_COMMAND (describe_key, _("Print documentation for KEY"))
if (map[keystroke].function == (InfoCommand *)NULL)
{
- message_in_echo_area (_("%s is undefined."), pretty_keyseq (keys));
+ message_in_echo_area ((char *) _("%s is undefined."),
+ pretty_keyseq (keys), NULL);
return;
}
else if (map[keystroke].type == ISKMAP)
@@ -693,7 +697,8 @@ DECLARE_INFO_COMMAND (describe_key, _("Print documentation for KEY"))
edit keys that emit an escape sequence: it's terribly
confusing to see a message "Home (do-lowercase-version)"
or some such when Home is unbound. */
- if (InfoFunction(map[keystroke].function) == info_do_lowercase_version)
+ if (InfoFunction(map[keystroke].function)
+ == (VFunction *) info_do_lowercase_version)
{
unsigned char lowerkey = Meta_p(keystroke)
? Meta (tolower (UnMeta (keystroke)))
@@ -701,8 +706,8 @@ DECLARE_INFO_COMMAND (describe_key, _("Print documentation for KEY"))
if (map[lowerkey].function == (InfoCommand *)NULL)
{
- message_in_echo_area (_("%s is undefined."),
- pretty_keyseq (keys));
+ message_in_echo_area ((char *) _("%s is undefined."),
+ pretty_keyseq (keys), NULL);
return;
}
}
@@ -725,7 +730,7 @@ DECLARE_INFO_COMMAND (describe_key, _("Print documentation for KEY"))
sprintf (message, _("%s is defined to %s."), keyname, fundoc);
#endif /* !NAMED_FUNCTIONS */
- window_message_in_echo_area ("%s", message);
+ window_message_in_echo_area ("%s", message, NULL);
free (message);
break;
}
@@ -734,8 +739,7 @@ DECLARE_INFO_COMMAND (describe_key, _("Print documentation for KEY"))
/* Return the pretty printable name of a single character. */
char *
-pretty_keyname (key)
- unsigned char key;
+pretty_keyname (unsigned char key)
{
static char rep_buffer[30];
char *rep;
@@ -785,11 +789,10 @@ pretty_keyname (key)
/* Return the pretty printable string which represents KEYSEQ. */
-static void pretty_keyseq_internal ();
+static void pretty_keyseq_internal (char *keyseq, char *rep);
char *
-pretty_keyseq (keyseq)
- char *keyseq;
+pretty_keyseq (char *keyseq)
{
static char keyseq_rep[200];
@@ -800,8 +803,7 @@ pretty_keyseq (keyseq)
}
static void
-pretty_keyseq_internal (keyseq, rep)
- char *keyseq, *rep;
+pretty_keyseq_internal (char *keyseq, char *rep)
{
if (term_kP && strncmp(keyseq, term_kP, strlen(term_kP)) == 0)
{
@@ -869,8 +871,7 @@ pretty_keyseq_internal (keyseq, rep)
/* Return a pointer to the last character in s that is found in f. */
static char *
-strrpbrk (s, f)
- const char *s, *f;
+strrpbrk (const char *s, const char *f)
{
register const char *e = s + strlen(s);
register const char *t;
@@ -886,9 +887,7 @@ strrpbrk (s, f)
/* Replace the names of functions with the key that invokes them. */
char *
-replace_in_documentation (string, help_is_only_window_p)
- char *string;
- int help_is_only_window_p;
+replace_in_documentation (char *string, int help_is_only_window_p)
{
unsigned reslen = strlen (string);
register int i, start, next;
@@ -1058,9 +1057,7 @@ static int where_is_rep_index = 0;
static int where_is_rep_size = 0;
char *
-where_is (map, cmd)
- Keymap map;
- InfoCommand *cmd;
+where_is (Keymap map, InfoCommand *cmd)
{
char *rep;
@@ -1093,9 +1090,7 @@ where_is (map, cmd)
/* Return the printed rep of the keystrokes that invoke FUNCTION,
as found in MAP, or NULL. */
static char *
-where_is_internal (map, cmd)
- Keymap map;
- InfoCommand *cmd;
+where_is_internal (Keymap map, InfoCommand *cmd)
{
#if defined(INFOKEY)
@@ -1154,14 +1149,12 @@ where_is_internal (map, cmd)
#endif /* INFOKEY */
}
-extern char *read_function_name ();
-
DECLARE_INFO_COMMAND (info_where_is,
_("Show what to type to execute a given command"))
{
char *command_name;
- command_name = read_function_name (_("Where is command: "), window);
+ command_name = read_function_name ((char *) _("Where is command: "), window);
if (!command_name)
{
@@ -1183,20 +1176,24 @@ DECLARE_INFO_COMMAND (info_where_is,
if (!location || !location[0])
{
- info_error (_("`%s' is not on any keys"), command_name);
+ info_error ((char *) _("`%s' is not on any keys"),
+ command_name, NULL);
}
else
{
if (strstr (location, function_name (command)))
window_message_in_echo_area
- (_("%s can only be invoked via %s."), command_name, location);
+ ((char *) _("%s can only be invoked via %s."),
+ command_name, location);
else
window_message_in_echo_area
- (_("%s can be invoked via %s."), command_name, location);
+ ((char *) _("%s can be invoked via %s."),
+ command_name, location);
}
}
else
- info_error (_("There is no function named `%s'"), command_name);
+ info_error ((char *) _("There is no function named `%s'"),
+ command_name, NULL);
}
free (command_name);
diff --git a/contrib/texinfo/info/infokey.c b/contrib/texinfo/info/infokey.c
index 4cb6518..51f23aa 100644
--- a/contrib/texinfo/info/infokey.c
+++ b/contrib/texinfo/info/infokey.c
@@ -1,7 +1,7 @@
/* infokey.c -- compile ~/.infokey to ~/.info.
- $Id: infokey.c,v 1.4 2003/05/13 16:26:02 karl Exp $
+ $Id: infokey.c,v 1.9 2004/12/14 00:15:36 karl Exp $
- Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -69,9 +69,16 @@ struct sect
};
/* Some "forward" declarations. */
-static char *mkpath ();
-static int compile (), write_infokey_file ();
-static void syntax_error (), error_message (), suggest_help (), short_help ();
+static char *mkpath (const char *dir, const char *file);
+static int compile (FILE *fp, const char *filename, struct sect *sections);
+static int write_infokey_file (FILE *fp, struct sect *sections);
+static void syntax_error (const char *filename,
+ unsigned int linenum, const char *fmt,
+ const void *a1, const void *a2, const void *a3, const void *a4);
+static void error_message (int error_code, const char *fmt,
+ const void *a1, const void *a2, const void *a3, const void *a4);
+static void suggest_help (void);
+static void short_help (void);
/* **************************************************************** */
@@ -81,9 +88,7 @@ static void syntax_error (), error_message (), suggest_help (), short_help ();
/* **************************************************************** */
int
-main (argc, argv)
- int argc;
- char **argv;
+main (int argc, char **argv)
{
int getopt_long_index; /* Index returned by getopt_long (). */
@@ -92,9 +97,11 @@ main (argc, argv)
setlocale (LC_ALL, "");
#endif
+#ifdef ENABLE_NLS
/* Set the text message domain. */
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
+#endif
while (1)
{
@@ -160,7 +167,8 @@ For more information about these matters, see the files named COPYING.\n"),
}
else if (optind != argc)
{
- error_message (0, _("incorrect number of arguments"));
+ error_message (0, _("incorrect number of arguments"),
+ NULL, NULL, NULL, NULL);
suggest_help ();
xexit (1);
}
@@ -190,7 +198,8 @@ For more information about these matters, see the files named COPYING.\n"),
inf = fopen (input_filename, "r");
if (!inf)
{
- error_message (errno, _("cannot open input file `%s'"), input_filename);
+ error_message (errno, _("cannot open input file `%s'"),
+ input_filename, NULL, NULL, NULL);
xexit (1);
}
@@ -203,7 +212,8 @@ For more information about these matters, see the files named COPYING.\n"),
outf = fopen (output_filename, FOPEN_WBIN);
if (!outf)
{
- error_message (errno, _("cannot create output file `%s'"), output_filename);
+ error_message (errno, _("cannot create output file `%s'"),
+ output_filename, NULL, NULL, NULL);
xexit (1);
}
@@ -213,12 +223,14 @@ For more information about these matters, see the files named COPYING.\n"),
write_error = 0;
if (!write_infokey_file (outf, sections))
{
- error_message (errno, _("error writing to `%s'"), output_filename);
+ error_message (errno, _("error writing to `%s'"),
+ output_filename, NULL, NULL, NULL);
write_error = 1;
}
if (fclose (outf) == EOF)
{
- error_message (errno, _("error closing output file `%s'"), output_filename);
+ error_message (errno, _("error closing output file `%s'"),
+ output_filename, NULL, NULL, NULL);
write_error = 1;
}
if (write_error)
@@ -236,9 +248,7 @@ For more information about these matters, see the files named COPYING.\n"),
}
static char *
-mkpath (dir, file)
- const char *dir;
- const char *file;
+mkpath (const char *dir, const char *file)
{
char *p;
@@ -365,21 +375,19 @@ mkpath (dir, file)
following the '=' is not ignored.
*/
-static int add_to_section (), lookup_action ();
+static int add_to_section (struct sect *s, const char *str, unsigned int len);
+static int lookup_action (const char *actname);
/* Compile the input file into its various sections. Return true if no
error was encountered.
*/
static int
-compile (fp, filename, sections)
- FILE *fp;
- const char *filename;
- struct sect sections[];
+compile (FILE *fp, const char *filename, struct sect *sections)
{
int error = 0;
char rescan = 0;
unsigned int lnum = 0;
- int c;
+ int c = 0;
/* This parser is a true state machine, with no sneaky fetching
of input characters inside the main loop. In other words, all
@@ -411,9 +419,9 @@ compile (fp, filename, sections)
octal,
special_key
}
- seqstate; /* used if state == get_keyseq */
+ seqstate; /* used if state == get_keyseq */
char meta = 0;
- char ocnt; /* used if state == get_keyseq && seqstate == octal */
+ char ocnt = 0; /* used if state == get_keyseq && seqstate == octal */
/* Data is accumulated in the following variables. The code
avoids overflowing these strings, and throws an error
@@ -421,17 +429,17 @@ compile (fp, filename, sections)
lengths are arbitrary (and should be large enough) and their
lengths are not hard-coded anywhere else, so increasing them
here will not break anything. */
- char oval;
+ char oval = 0;
char comment[10];
- unsigned int clen;
+ unsigned int clen = 0;
char seq[20];
- unsigned int slen;
+ unsigned int slen = 0;
char act[80];
- unsigned int alen;
+ unsigned int alen = 0;
char varn[80];
- unsigned int varlen;
+ unsigned int varlen = 0;
char val[80];
- unsigned int vallen;
+ unsigned int vallen = 0;
#define To_seq(c) \
do { \
@@ -439,7 +447,8 @@ compile (fp, filename, sections)
seq[slen++] = meta ? Meta(c) : (c); \
else \
{ \
- syntax_error(filename, lnum, _("key sequence too long")); \
+ syntax_error(filename, lnum, _("key sequence too long"), \
+ NULL, NULL, NULL, NULL); \
error = 1; \
} \
meta = 0; \
@@ -517,7 +526,8 @@ compile (fp, filename, sections)
rescan = 1;
if (slen == 0)
{
- syntax_error (filename, lnum, _("missing key sequence"));
+ syntax_error (filename, lnum, _("missing key sequence"),
+ NULL, NULL, NULL, NULL);
error = 1;
}
}
@@ -596,7 +606,9 @@ compile (fp, filename, sections)
To_seq (oval);
else
{
- syntax_error (filename, lnum, _("NUL character (\\000) not permitted"));
+ syntax_error (filename, lnum,
+ _("NUL character (\\000) not permitted"),
+ NULL, NULL, NULL, NULL);
error = 1;
}
}
@@ -625,7 +637,9 @@ compile (fp, filename, sections)
To_seq (CONTROL (c));
else
{
- syntax_error (filename, lnum, _("NUL character (^%c) not permitted"), c);
+ syntax_error (filename, lnum,
+ (char *) _("NUL character (^%c) not permitted"),
+ (void *) (long) c, NULL, NULL, NULL);
error = 1;
}
seqstate = normal;
@@ -648,7 +662,8 @@ compile (fp, filename, sections)
rescan = 1;
if (alen == 0)
{
- syntax_error (filename, lnum, _("missing action name"), c);
+ syntax_error (filename, lnum, (char *) _("missing action name"),
+ (void *) (long) c, NULL, NULL, NULL);
error = 1;
}
else
@@ -663,13 +678,15 @@ compile (fp, filename, sections)
&& add_to_section (&sections[section], "", 1)
&& add_to_section (&sections[section], &av, 1)))
{
- syntax_error (filename, lnum, _("section too long"));
+ syntax_error (filename, lnum, _("section too long"),
+ NULL, NULL, NULL, NULL);
error = 1;
}
}
else
{
- syntax_error (filename, lnum, _("unknown action `%s'"), act);
+ syntax_error (filename, lnum, _("unknown action `%s'"),
+ act, NULL, NULL, NULL);
error = 1;
}
}
@@ -678,7 +695,8 @@ compile (fp, filename, sections)
act[alen++] = c;
else
{
- syntax_error (filename, lnum, _("action name too long"));
+ syntax_error (filename, lnum, _("action name too long"),
+ NULL, NULL, NULL, NULL);
error = 1;
}
break;
@@ -690,7 +708,9 @@ compile (fp, filename, sections)
state = start_of_line;
else if (!isspace (c))
{
- syntax_error (filename, lnum, _("extra characters following action `%s'"), act);
+ syntax_error (filename, lnum,
+ _("extra characters following action `%s'"),
+ act, NULL, NULL, NULL);
error = 1;
}
break;
@@ -700,7 +720,8 @@ compile (fp, filename, sections)
{
if (varlen == 0)
{
- syntax_error (filename, lnum, _("missing variable name"));
+ syntax_error (filename, lnum, _("missing variable name"),
+ NULL, NULL, NULL, NULL);
error = 1;
}
state = get_value;
@@ -708,14 +729,17 @@ compile (fp, filename, sections)
}
else if (c == '\n' || isspace (c))
{
- syntax_error (filename, lnum, _("missing `=' immediately after variable name"));
+ syntax_error (filename, lnum,
+ _("missing `=' immediately after variable name"),
+ NULL, NULL, NULL, NULL);
error = 1;
}
else if (varlen < sizeof varn)
varn[varlen++] = c;
else
{
- syntax_error (filename, lnum, _("variable name too long"));
+ syntax_error (filename, lnum, _("variable name too long"),
+ NULL, NULL, NULL, NULL);
error = 1;
}
break;
@@ -729,7 +753,8 @@ compile (fp, filename, sections)
&& add_to_section (&sections[section], val, vallen)
&& add_to_section (&sections[section], "", 1)))
{
- syntax_error (filename, lnum, _("section too long"));
+ syntax_error (filename, lnum, _("section too long"),
+ NULL, NULL, NULL, NULL);
error = 1;
}
}
@@ -737,10 +762,16 @@ compile (fp, filename, sections)
val[vallen++] = c;
else
{
- syntax_error (filename, lnum, _("value too long"));
+ syntax_error (filename, lnum, _("value too long"),
+ NULL, NULL, NULL, NULL);
error = 1;
}
break;
+
+ case get_equals:
+ case got_equals:
+ case got_varname:
+ break;
}
}
@@ -753,14 +784,11 @@ compile (fp, filename, sections)
characters fit, or false if the section's size limit was exceeded.
*/
static int
-add_to_section (s, str, len)
- struct sect *s;
- const char *str;
- unsigned int len;
+add_to_section (struct sect *s, const char *str, unsigned int len)
{
if (s->cur + len > sizeof s->data)
return 0;
- strncpy (s->data + s->cur, str, len);
+ strncpy ((char *) s->data + s->cur, str, len);
s->cur += len;
return 1;
}
@@ -769,8 +797,7 @@ add_to_section (s, str, len)
auto-generated array in key.c.
*/
static int
-lookup_action (actname)
- const char *actname;
+lookup_action (const char *actname)
{
int i;
@@ -787,9 +814,7 @@ lookup_action (actname)
in radix INFOKEY_RADIX.
*/
static int
-putint (i, fp)
- int i;
- FILE *fp;
+putint (int i, FILE *fp)
{
return fputc (i % INFOKEY_RADIX, fp) != EOF
&& fputc ((i / INFOKEY_RADIX) % INFOKEY_RADIX, fp) != EOF;
@@ -799,10 +824,7 @@ putint (i, fp)
empty, simply omit it.
*/
static int
-putsect (s, code, fp)
- struct sect *s;
- int code;
- FILE *fp;
+putsect (struct sect *s, int code, FILE *fp)
{
if (s->cur == 0)
return 1;
@@ -814,9 +836,7 @@ putsect (s, code, fp)
/* Write an entire infokey file, given an array containing its sections.
*/
static int
-write_infokey_file (fp, sections)
- FILE *fp;
- struct sect sections[];
+write_infokey_file (FILE *fp, struct sect *sections)
{
/* Get rid of sections with no effect. */
if (sections[info].cur == 1 && sections[info].data[0] == 0)
@@ -848,10 +868,8 @@ write_infokey_file (fp, sections)
progname: "filename", line N: message
*/
static void
-error_message (error_code, fmt, a1, a2, a3, a4)
- int error_code;
- const char *fmt;
- const void *a1, *a2, *a3, *a4;
+error_message (int error_code, const char *fmt,
+ const void *a1, const void *a2, const void *a3, const void *a4)
{
fprintf (stderr, "%s: ", program_name);
fprintf (stderr, fmt, a1, a2, a3, a4);
@@ -864,11 +882,9 @@ error_message (error_code, fmt, a1, a2, a3, a4)
progname: message
*/
static void
-syntax_error (filename, linenum, fmt, a1, a2, a3, a4)
- const char *filename;
- unsigned int linenum;
- const char *fmt;
- const void *a1, *a2, *a3, *a4;
+syntax_error (const char *filename,
+ unsigned int linenum, const char *fmt,
+ const void *a1, const void *a2, const void *a3, const void *a4)
{
fprintf (stderr, "%s: ", program_name);
fprintf (stderr, _("\"%s\", line %u: "), filename, linenum);
@@ -878,14 +894,14 @@ syntax_error (filename, linenum, fmt, a1, a2, a3, a4)
/* Produce a gentle rtfm. */
static void
-suggest_help ()
+suggest_help (void)
{
fprintf (stderr, _("Try --help for more information.\n"));
}
/* Produce a scaled down description of the available options to Info. */
static void
-short_help ()
+short_help (void)
{
printf (_("\
Usage: %s [OPTION]... [INPUT-FILE]\n\
diff --git a/contrib/texinfo/info/infokey.h b/contrib/texinfo/info/infokey.h
index 9b362fa..d51211d 100644
--- a/contrib/texinfo/info/infokey.h
+++ b/contrib/texinfo/info/infokey.h
@@ -1,5 +1,5 @@
/* infokey.h -- Custom keystroke definition support.
- $Id: infokey.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: infokey.h,v 1.2 2004/04/11 17:56:45 karl Exp $
Copyright (C) 1999, 2002 Free Software Foundation, Inc.
diff --git a/contrib/texinfo/info/infomap.c b/contrib/texinfo/info/infomap.c
index 82fd490..c7dc2f4 100644
--- a/contrib/texinfo/info/infomap.c
+++ b/contrib/texinfo/info/infomap.c
@@ -1,7 +1,7 @@
/* infomap.c -- keymaps for Info.
- $Id: infomap.c,v 1.7 2003/05/13 16:27:04 karl Exp $
+ $Id: infomap.c,v 1.10 2004/07/30 20:43:40 karl Exp $
- Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002, 2003 Free Software
+ Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002, 2003, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -30,10 +30,13 @@
#include "variables.h"
#endif /* INFOKEY */
+static int keymap_bind_keyseq (Keymap map, const char *keyseq,
+ KEYMAP_ENTRY *keyentry);
+
/* Return a new keymap which has all the uppercase letters mapped to run
the function info_do_lowercase_version (). */
Keymap
-keymap_make_keymap ()
+keymap_make_keymap (void)
{
int i;
Keymap keymap;
@@ -61,10 +64,7 @@ keymap_make_keymap ()
#if defined(INFOKEY)
static FUNCTION_KEYSEQ *
-find_function_keyseq (map, c, rootmap)
- Keymap map;
- int c;
- Keymap rootmap;
+find_function_keyseq (Keymap map, int c, Keymap rootmap)
{
FUNCTION_KEYSEQ *k;
@@ -78,7 +78,7 @@ find_function_keyseq (map, c, rootmap)
Keymap m = rootmap;
if (k->map != rootmap)
continue;
- for (p = k->keyseq; *p && m[*p].type == ISKMAP; p++)
+ for (p = (unsigned char *) k->keyseq; *p && m[*p].type == ISKMAP; p++)
m = (Keymap)m[*p].function;
if (*p != c || p[1])
continue;
@@ -90,10 +90,8 @@ find_function_keyseq (map, c, rootmap)
}
static void
-add_function_keyseq (function, keyseq, rootmap)
- InfoCommand *function;
- const unsigned char *keyseq;
- Keymap rootmap;
+add_function_keyseq (InfoCommand *function,
+ const char *keyseq, Keymap rootmap)
{
FUNCTION_KEYSEQ *ks;
@@ -109,10 +107,8 @@ add_function_keyseq (function, keyseq, rootmap)
}
static void
-remove_function_keyseq (function, keyseq, rootmap)
- InfoCommand *function;
- const unsigned char *keyseq;
- Keymap rootmap;
+remove_function_keyseq (InfoCommand *function,
+ const char *keyseq, Keymap rootmap)
{
FUNCTION_KEYSEQ *k, *kp;
@@ -135,10 +131,7 @@ remove_function_keyseq (function, keyseq, rootmap)
/* Return a new keymap which is a copy of MAP. */
Keymap
-keymap_copy_keymap (map, rootmap, newroot)
- Keymap map;
- Keymap rootmap;
- Keymap newroot;
+keymap_copy_keymap (Keymap map, Keymap rootmap, Keymap newroot)
{
int i;
Keymap keymap;
@@ -158,14 +151,14 @@ keymap_copy_keymap (map, rootmap, newroot)
case ISFUNC:
keymap[i].function = map[i].function;
#if defined(INFOKEY)
- ks = find_function_keyseq (map, i, rootmap, NULL);
+ ks = find_function_keyseq (map, i, rootmap);
if (ks)
add_function_keyseq(map[i].function, ks->keyseq, newroot);
#endif /* INFOKEY */
break;
case ISKMAP:
- keymap[i].function = (InfoCommand *)keymap_copy_keymap (
- (Keymap)map[i].function, rootmap);
+ keymap[i].function = (InfoCommand *)keymap_copy_keymap
+ ((Keymap)map[i].function, rootmap, NULL);
break;
}
}
@@ -174,9 +167,7 @@ keymap_copy_keymap (map, rootmap, newroot)
/* Free the keymap and its descendants. */
void
-keymap_discard_keymap (map, rootmap)
- Keymap map;
- Keymap rootmap;
+keymap_discard_keymap (Keymap map, Keymap rootmap)
{
int i;
@@ -210,14 +201,12 @@ keymap_discard_keymap (map, rootmap)
}
/* Conditionally bind key sequence. */
-int
-keymap_bind_keyseq (map, keyseq, keyentry)
- Keymap map;
- const unsigned char *keyseq;
- KEYMAP_ENTRY *keyentry;
+static int
+keymap_bind_keyseq (Keymap map,
+ const char *keyseq, KEYMAP_ENTRY *keyentry)
{
Keymap m = map;
- const unsigned char *s = keyseq;
+ const unsigned char *s = (unsigned char *) keyseq;
int c;
if (s == NULL || *s == '\0') return 0;
@@ -715,8 +704,8 @@ initialize_vi_like_keymaps ()
map['H'].function = info_get_help_window;
map['i'].function = info_index_search;
map['I'].function = info_goto_invocation_node;
- map['j'].function = info_down_line;
- map['k'].function = info_up_line;
+ map['j'].function = info_next_line;
+ map['k'].function = info_prev_line;
map['l'].function = info_history_node;
map['m'].function = info_menu_item;
map['n'].function = info_search_next;
@@ -1193,8 +1182,8 @@ static unsigned char default_vi_like_info_keys[] =
'H', NUL, A_info_get_help_window,
'i', NUL, A_info_index_search,
'I', NUL, A_info_goto_invocation_node,
- 'j', NUL, A_info_down_line,
- 'k', NUL, A_info_up_line,
+ 'j', NUL, A_info_next_line,
+ 'k', NUL, A_info_prev_line,
'l', NUL, A_info_history_node,
'm', NUL, A_info_menu_item,
'n', NUL, A_info_search_next,
@@ -1432,8 +1421,7 @@ static unsigned int user_vars_len;
* Return the size of a file, or 0 if the size can't be determined.
*/
static unsigned long
-filesize(f)
- int f;
+filesize(int f)
{
long pos = lseek(f, 0L, SEEK_CUR);
long sz = -1L;
@@ -1449,8 +1437,7 @@ filesize(f)
Integers are stored as two bytes, low order first, in radix INFOKEY_RADIX.
*/
static int
-getint(sp)
- unsigned char **sp;
+getint(unsigned char **sp)
{
int n;
@@ -1465,7 +1452,7 @@ getint(sp)
/* Fetch the contents of the standard infokey file "$HOME/.info". Return
true if ok, false if not. */
static int
-fetch_user_maps()
+fetch_user_maps(void)
{
char *filename = NULL;
char *homedir;
@@ -1495,7 +1482,8 @@ fetch_user_maps()
{
if (filename && errno != ENOENT)
{
- info_error(filesys_error_string(filename, errno));
+ info_error(filesys_error_string(filename, errno),
+ NULL, NULL);
free(filename);
}
return 0;
@@ -1509,11 +1497,11 @@ fetch_user_maps()
/* Bad file (a valid file must have at least 9 chars, and
more than 100 KB is a problem). */
if (len < INFOKEY_NMAGIC + 2)
- info_error(_("Ignoring invalid infokey file `%s' - too small"),
- filename);
+ info_error((char *) _("Ignoring invalid infokey file `%s' - too small"),
+ filename, NULL);
else
- info_error(_("Ignoring invalid infokey file `%s' - too big"),
- filename);
+ info_error((char *) _("Ignoring invalid infokey file `%s' - too big"),
+ filename, NULL);
close(f);
free(filename);
return 0;
@@ -1523,9 +1511,10 @@ fetch_user_maps()
buf = (unsigned char *)xmalloc((int)len);
nread = read(f, buf, (unsigned int) len);
close(f);
- if (nread != len)
+ if ((unsigned int) nread != len)
{
- info_error(_("Error reading infokey file `%s' - short read"), filename);
+ info_error((char *) _("Error reading infokey file `%s' - short read"),
+ filename, NULL);
free(buf);
free(filename);
return 0;
@@ -1543,26 +1532,33 @@ fetch_user_maps()
|| buf[len - 1] != INFOKEY_MAGIC_E3
)
{
- info_error(_("Invalid infokey file `%s' (bad magic numbers) -- run infokey to update it"), filename);
+ info_error((char *) _("Invalid infokey file `%s' (bad magic numbers) -- run infokey to update it"),
+ filename, NULL);
free(filename);
return 0;
}
- if (len < INFOKEY_NMAGIC + strlen(VERSION) + 1 || strcmp(VERSION, buf + 4) != 0)
+ if (len < INFOKEY_NMAGIC + strlen(VERSION) + 1
+ || strcmp(VERSION, (char *) (buf + 4)) != 0)
{
- info_error(_("Your infokey file `%s' is out of date -- run infokey to update it"), filename);
+ info_error
+ ((char *) _("Your infokey file `%s' is out of date -- run infokey to update it"),
+ filename, NULL);
free(filename);
return 0;
}
/* Extract the pieces. */
- for (p = buf + 4 + strlen(VERSION) + 1; p - buf < len - 4; p += n)
+ for (p = buf + 4 + strlen(VERSION) + 1;
+ (unsigned int) (p - buf) < len - 4;
+ p += n)
{
int s = *p++;
n = getint(&p);
- if (n < 0 || n > len - 4 - (p - buf))
+ if (n < 0 || (unsigned int) n > len - 4 - (p - buf))
{
- info_error(_("Invalid infokey file `%s' (bad section length) -- run infokey to update it"), filename);
+ info_error((char *) _("Invalid infokey file `%s' (bad section length) -- run infokey to update it"),
+ filename, NULL);
free(filename);
return 0;
}
@@ -1582,7 +1578,8 @@ fetch_user_maps()
user_vars_len = n;
break;
default:
- info_error(_("Invalid infokey file `%s' (bad section code) -- run infokey to update it"), filename);
+ info_error((char *) _("Invalid infokey file `%s' (bad section code) -- run infokey to update it"),
+ filename, NULL);
free(filename);
return 0;
}
@@ -1597,27 +1594,26 @@ fetch_user_maps()
doesn't define.
*/
static int
-decode_keys(src, slen, dst, dlen)
- unsigned char *src;
- unsigned int slen;
- unsigned char *dst;
- unsigned int dlen;
+decode_keys(unsigned char *src, unsigned int slen,
+ unsigned char *dst, unsigned int dlen)
{
unsigned char *s = src;
unsigned char *d = dst;
-#define To_dst(c) do { if (d - dst < dlen) *d++ = (c); } while (0)
+#define To_dst(c) do { \
+ if ((unsigned int) (d - dst) < dlen) *d++ = (c); \
+} while (0)
- while (s - src < slen)
+ while ((unsigned int) (s - src) < slen)
{
unsigned char c = ISMETA(*s) ? UNMETA(*s) : *s;
if (c == SK_ESCAPE)
{
- unsigned char *t;
+ char *t;
static char lit[] = { SK_ESCAPE, NUL };
- switch (s + 1 - src < slen ? s[1] : '\0')
+ switch ((unsigned int) (s + 1 - src) < slen ? s[1] : '\0')
{
case SK_RIGHT_ARROW: t = term_kr; break;
case SK_LEFT_ARROW: t = term_kl; break;
@@ -1658,20 +1654,17 @@ decode_keys(src, slen, dst, dlen)
/* Convert an infokey file section to keymap bindings. Return false if
the default bindings are to be suppressed. */
static int
-section_to_keymaps(map, table, len)
- Keymap map;
- unsigned char *table;
- unsigned int len;
+section_to_keymaps(Keymap map, unsigned char *table, unsigned int len)
{
int stop;
unsigned char *p;
- unsigned char *seq;
- unsigned int seqlen;
+ unsigned char *seq = NULL;
+ unsigned int seqlen = 0;
enum { getseq, gotseq, getaction } state = getseq;
stop = len > 0 ? table[0] : 0;
- for (p = table + 1; p - table < len; p++)
+ for (p = table + 1; (unsigned int) (p - table) < len; p++)
{
switch (state)
{
@@ -1712,30 +1705,30 @@ section_to_keymaps(map, table, len)
action < A_NCOMMANDS
? &function_doc_array[action]
: NULL;
- keymap_bind_keyseq(map, keyseq, &ke);
+ keymap_bind_keyseq(map,
+ (const char *) keyseq, &ke);
}
}
break;
}
}
if (state != getseq)
- info_error(_("Bad data in infokey file -- some key bindings ignored"));
+ info_error((char *) _("Bad data in infokey file -- some key bindings ignored"),
+ NULL, NULL);
return !stop;
}
/* Convert an infokey file section to variable settings.
*/
static void
-section_to_vars(table, len)
- unsigned char *table;
- unsigned int len;
+section_to_vars(unsigned char *table, unsigned int len)
{
enum { getvar, gotvar, getval, gotval } state = getvar;
unsigned char *var = NULL;
unsigned char *val = NULL;
unsigned char *p;
- for (p = table; p - table < len; p++)
+ for (p = table; (unsigned int) (p - table) < len; p++)
{
switch (state)
{
@@ -1763,18 +1756,19 @@ section_to_vars(table, len)
case gotval:
if (!*p)
{
- set_variable_to_value(var, val);
+ set_variable_to_value((char *) var, (char *) val);
state = getvar;
}
break;
}
}
if (state != getvar)
- info_error(_("Bad data in infokey file -- some var settings ignored"));
+ info_error((char *) _("Bad data in infokey file -- some var settings ignored"),
+ NULL, NULL);
}
void
-initialize_info_keymaps ()
+initialize_info_keymaps (void)
{
int i;
int suppress_info_default_bindings = 0;
diff --git a/contrib/texinfo/info/infomap.h b/contrib/texinfo/info/infomap.h
index fe7fa77..31e4d82 100644
--- a/contrib/texinfo/info/infomap.h
+++ b/contrib/texinfo/info/infomap.h
@@ -1,7 +1,7 @@
/* infomap.h -- description of a keymap in Info and related functions.
- $Id: infomap.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: infomap.h,v 1.3 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1993, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1993, 2001, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -67,15 +67,16 @@ extern Keymap echo_area_keymap;
/* Return a new keymap which has all the uppercase letters mapped to run
the function info_do_lowercase_version (). */
-extern Keymap keymap_make_keymap ();
+extern Keymap keymap_make_keymap (void);
/* Return a new keymap which is a copy of MAP. */
-extern Keymap keymap_copy_keymap ();
+extern Keymap keymap_copy_keymap (Keymap map, Keymap rootmap,
+ Keymap newroot);
/* Free MAP and it's descendents. */
-extern void keymap_discard_keymap ();
+extern void keymap_discard_keymap (Keymap map, Keymap rootmap);
/* Initialize the info keymaps. */
-extern void initialize_info_keymaps ();
+extern void initialize_info_keymaps (void);
#endif /* not INFOMAP_H */
diff --git a/contrib/texinfo/info/key.c b/contrib/texinfo/info/key.c
index 06be6fa..8fa2717 100644
--- a/contrib/texinfo/info/key.c
+++ b/contrib/texinfo/info/key.c
@@ -1,7 +1,7 @@
/* key.c -- Generated array containing function names.
This file was automatically made from various source files with the
- command "./makedoc". DO NOT EDIT THIS FILE, only "./makedoc.c".
+ command "..//info/makedoc". DO NOT EDIT THIS FILE, only "..//info/makedoc.c".
Source files groveled to make this file include:
@@ -142,5 +142,5 @@ FUNCTION_KEY function_key_array[] = {
/* Commands found in "./variables.c". */
{ "describe-variable", A_describe_variable },
{ "set-variable", A_set_variable },
- (char *)0
+ { (char *)NULL, 0 }
};
diff --git a/contrib/texinfo/info/m-x.c b/contrib/texinfo/info/m-x.c
index 383261d..52365d1 100644
--- a/contrib/texinfo/info/m-x.c
+++ b/contrib/texinfo/info/m-x.c
@@ -1,7 +1,8 @@
/* m-x.c -- Meta-x minibuffer reader.
- $Id: m-x.c,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: m-x.c,v 1.3 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1993, 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 1998, 2001, 2002, 2004 Free Software
+ Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,7 +18,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- Written by Brian Fox (bfox@ai.mit.edu). */
+ Originally written by Brian Fox (bfox@ai.mit.edu). */
#include "info.h"
#include "funs.h"
@@ -32,9 +33,7 @@
name. A return value of NULL indicates that no function name could
be read. */
char *
-read_function_name (prompt, window)
- char *prompt;
- WINDOW *window;
+read_function_name (char *prompt, WINDOW *window)
{
register int i;
char *line;
@@ -71,7 +70,7 @@ DECLARE_INFO_COMMAND (describe_command,
{
char *line;
- line = read_function_name (_("Describe command: "), window);
+ line = read_function_name ((char *) _("Describe command: "), window);
if (!line)
{
@@ -138,7 +137,8 @@ DECLARE_INFO_COMMAND (info_execute_command,
(strncmp (line, "echo-area-", 10) == 0))
{
free (line);
- info_error (_("Cannot execute an `echo-area' command here."));
+ info_error ((char *) _("Cannot execute an `echo-area' command here."),
+ NULL, NULL);
return;
}
@@ -148,7 +148,10 @@ DECLARE_INFO_COMMAND (info_execute_command,
if (!command)
return;
- (*InfoFunction(command)) (active_window, count, 0);
+ if (InfoFunction(command))
+ (*InfoFunction(command)) (active_window, count, 0);
+ else
+ info_error ((char *) _("Undefined command: %s"), line, NULL);
}
}
diff --git a/contrib/texinfo/info/man.c b/contrib/texinfo/info/man.c
index 1590b78..33fd6d4 100644
--- a/contrib/texinfo/info/man.c
+++ b/contrib/texinfo/info/man.c
@@ -1,7 +1,7 @@
/* man.c: How to read and format man files.
- $Id: man.c,v 1.2 2003/05/13 16:37:54 karl Exp $
+ $Id: man.c,v 1.4 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1995, 1997, 1998, 1999, 2000, 2002, 2003 Free Software
+ Copyright (C) 1995, 1997, 1998, 1999, 2000, 2002, 2003, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -53,22 +53,20 @@ static char const * const exec_extensions[] = {
static char const * const exec_extensions[] = { "", NULL };
#endif
-static char *read_from_fd ();
-static void clean_manpage ();
-static NODE *manpage_node_of_file_buffer ();
-static char *get_manpage_contents ();
+static char *read_from_fd (int fd);
+static void clean_manpage (char *manpage);
+static NODE *manpage_node_of_file_buffer (FILE_BUFFER *file_buffer,
+ char *pagename);
+static char *get_manpage_contents (char *pagename);
NODE *
-make_manpage_node (pagename)
- char *pagename;
+make_manpage_node (char *pagename)
{
return (info_get_node (MANPAGE_FILE_BUFFER_NAME, pagename));
}
NODE *
-get_manpage_node (file_buffer, pagename)
- FILE_BUFFER *file_buffer;
- char *pagename;
+get_manpage_node (FILE_BUFFER *file_buffer, char *pagename)
{
NODE *node;
@@ -121,23 +119,25 @@ get_manpage_node (file_buffer, pagename)
for (in = 0; in < info_win->nodes_index; in++)
{
- NODE *node = info_win->nodes[in];
+ NODE *tmp_node = info_win->nodes[in];
/* It really only suffices to see that node->filename
is "*manpages*". But after several hours of
debugging this, would you blame me for being a bit
paranoid? */
- if (node && node->filename && node->contents &&
- strcmp (node->filename,
- MANPAGE_FILE_BUFFER_NAME) == 0 &&
- node->contents >= old_contents &&
- node->contents + node->nodelen <= old_contents_end)
+ if (tmp_node && tmp_node->filename
+ && tmp_node->contents
+ && strcmp (tmp_node->filename,
+ MANPAGE_FILE_BUFFER_NAME) == 0
+ && tmp_node->contents >= old_contents
+ && tmp_node->contents + tmp_node->nodelen
+ <= old_contents_end)
{
info_win->nodes[in] =
manpage_node_of_file_buffer (file_buffer,
- node->nodename);
- free (node->nodename);
- free (node);
+ tmp_node->nodename);
+ free (tmp_node->nodename);
+ free (tmp_node);
}
}
}
@@ -151,7 +151,7 @@ get_manpage_node (file_buffer, pagename)
}
FILE_BUFFER *
-create_manpage_file_buffer ()
+create_manpage_file_buffer (void)
{
FILE_BUFFER *file_buffer = make_file_buffer ();
file_buffer->filename = xstrdup (MANPAGE_FILE_BUFFER_NAME);
@@ -168,8 +168,7 @@ create_manpage_file_buffer ()
one that is an executable file, return it as a new string. Otherwise,
return a NULL pointer. */
static char *
-executable_file_in_path (filename, path)
- char *filename, *path;
+executable_file_in_path (char *filename, char *path)
{
struct stat finfo;
char *temp_dirname;
@@ -223,7 +222,7 @@ executable_file_in_path (filename, path)
/* Return the full pathname of the system man page formatter. */
static char *
-find_man_formatter ()
+find_man_formatter (void)
{
return (executable_file_in_path ("man", (char *)getenv ("PATH")));
}
@@ -232,8 +231,7 @@ static char *manpage_pagename = (char *)NULL;
static char *manpage_section = (char *)NULL;
static void
-get_page_and_section (pagename)
- char *pagename;
+get_page_and_section (char *pagename)
{
register int i;
@@ -268,21 +266,19 @@ get_page_and_section (pagename)
#if PIPE_USE_FORK
static void
-reap_children (sig)
- int sig;
+reap_children (int sig)
{
wait (NULL);
}
#endif
static char *
-get_manpage_contents (pagename)
- char *pagename;
+get_manpage_contents (char *pagename)
{
static char *formatter_args[4] = { (char *)NULL };
int pipes[2];
pid_t child;
- RETSIGTYPE (*sigsave) ();
+ RETSIGTYPE (*sigsave) (int signum);
char *formatted_page = NULL;
int arg_index = 1;
@@ -376,8 +372,7 @@ get_manpage_contents (pagename)
}
static void
-clean_manpage (manpage)
- char *manpage;
+clean_manpage (char *manpage)
{
register int i, j;
int newline_count = 0;
@@ -434,9 +429,7 @@ clean_manpage (manpage)
}
static NODE *
-manpage_node_of_file_buffer (file_buffer, pagename)
- FILE_BUFFER *file_buffer;
- char *pagename;
+manpage_node_of_file_buffer (FILE_BUFFER *file_buffer, char *pagename)
{
NODE *node = (NODE *)NULL;
TAG *tag = (TAG *)NULL;
@@ -470,8 +463,7 @@ manpage_node_of_file_buffer (file_buffer, pagename)
}
static char *
-read_from_fd (fd)
- int fd;
+read_from_fd (int fd)
{
struct timeval timeout;
char *buffer = (char *)NULL;
@@ -551,8 +543,7 @@ static char *reference_section_starters[] =
static SEARCH_BINDING frs_binding;
static SEARCH_BINDING *
-find_reference_section (node)
- NODE *node;
+find_reference_section (NODE *node)
{
register int i;
long position = -1;
@@ -591,8 +582,7 @@ find_reference_section (node)
}
REFERENCE **
-xrefs_of_manpage (node)
- NODE *node;
+xrefs_of_manpage (NODE *node)
{
SEARCH_BINDING *reference_section;
REFERENCE **refs = (REFERENCE **)NULL;
@@ -660,10 +650,7 @@ xrefs_of_manpage (node)
}
long
-locate_manpage_xref (node, start, dir)
- NODE *node;
- long start;
- int dir;
+locate_manpage_xref (NODE *node, long int start, int dir)
{
REFERENCE **refs;
long position = -1;
@@ -710,9 +697,7 @@ locate_manpage_xref (node, start, dir)
a START and END value of 0 -- strlen (window-line-containing-point).
The BUFFER is a pointer to the start of that line. */
REFERENCE **
-manpage_xrefs_in_binding (node, binding)
- NODE *node;
- SEARCH_BINDING *binding;
+manpage_xrefs_in_binding (NODE *node, SEARCH_BINDING *binding)
{
register int i;
REFERENCE **all_refs = xrefs_of_manpage (node);
diff --git a/contrib/texinfo/info/man.h b/contrib/texinfo/info/man.h
index 461936f..73ef1b6 100644
--- a/contrib/texinfo/info/man.h
+++ b/contrib/texinfo/info/man.h
@@ -1,10 +1,10 @@
/* man.h: Defines and external function declarations for man.c.
- $Id: man.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: man.h,v 1.3 2004/04/11 17:56:46 karl Exp $
This file is part of GNU Info, a program for reading online documentation
stored in Info format.
- Copyright (C) 1993, 97 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -27,11 +27,13 @@
#define MANPAGE_FILE_BUFFER_NAME "*manpages*"
-extern NODE *make_manpage_node (/* char *pagename */);
-extern NODE *get_manpage_node (/* FILE_BUFFER *file_buffer, char *pagename */);
-extern FILE_BUFFER *create_manpage_file_buffer (/* void */);
-extern long locate_manpage_xref (/* NODE *node, long start, int dir */);
-extern REFERENCE **xrefs_of_manpage (/* NODE *node */);
-extern REFERENCE **manpage_xrefs_in_binding (/* NODE *node, SEARCH_BINDING *binding */);
+extern NODE *make_manpage_node (char *pagename);
+extern NODE *get_manpage_node (FILE_BUFFER *file_buffer,
+ char *pagename);
+extern FILE_BUFFER *create_manpage_file_buffer (void);
+extern long locate_manpage_xref (NODE *node, long int start, int dir);
+extern REFERENCE **xrefs_of_manpage (NODE *node);
+extern REFERENCE **manpage_xrefs_in_binding (NODE *node,
+ SEARCH_BINDING *binding);
#endif /* INFO_MAN_H */
diff --git a/contrib/texinfo/info/nodemenu.c b/contrib/texinfo/info/nodemenu.c
index 4de2cfa..1090d08 100644
--- a/contrib/texinfo/info/nodemenu.c
+++ b/contrib/texinfo/info/nodemenu.c
@@ -1,7 +1,8 @@
/* nodemenu.c -- produce a menu of all visited nodes.
- $Id: nodemenu.c,v 1.3 2003/05/13 16:37:54 karl Exp $
+ $Id: nodemenu.c,v 1.5 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1993, 1997, 1998, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 1998, 2002, 2003, 2004 Free Software
+ Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -21,9 +22,11 @@
#include "info.h"
+NODE * get_visited_nodes (Function *filter_func);
+
/* Return a line describing the format of a node information line. */
static const char *
-nodemenu_format_info ()
+nodemenu_format_info (void)
{
return (_("\n\
* Menu:\n\
@@ -42,8 +45,7 @@ nodemenu_format_info ()
* (dir)Top:: 40 589 /usr/gnu/info/dir
*/
static char *
-format_node_info (node)
- NODE *node;
+format_node_info (NODE *node)
{
register int i, len;
char *parent, *containing_file;
@@ -109,10 +111,12 @@ format_node_info (node)
/* Little string comparison routine for qsort (). */
static int
-compare_strings (string1, string2)
- char **string1, **string2;
+compare_strings (const void *entry1, const void *entry2)
{
- return (strcasecmp (*string1, *string2));
+ char **e1 = (char **) entry1;
+ char **e2 = (char **) entry2;
+
+ return (strcasecmp (*e1, *e2));
}
/* The name of the nodemenu node. */
@@ -123,8 +127,7 @@ static char *nodemenu_nodename = "*Node Menu*";
which nodes will appear in the listing. FILTER_FUNC takes an argument
of NODE, and returns non-zero if the node should appear in the listing. */
NODE *
-get_visited_nodes (filter_func)
- Function *filter_func;
+get_visited_nodes (Function *filter_func)
{
register int i, iw_index;
INFO_WINDOW *info_win;
@@ -196,14 +199,16 @@ get_visited_nodes (filter_func)
printf_to_message_buffer
("%s", replace_in_documentation
- (_("Here is the menu of nodes you have recently visited.\n\
-Select one from this menu, or use `\\[history-node]' in another window.\n")));
+ ((char *) _("Here is the menu of nodes you have recently visited.\n\
+Select one from this menu, or use `\\[history-node]' in another window.\n"), 0),
+ NULL, NULL);
- printf_to_message_buffer ("%s\n", nodemenu_format_info ());
+ printf_to_message_buffer ("%s\n", (char *) nodemenu_format_info (),
+ NULL, NULL);
for (i = 0; (lines != (char **)NULL) && (i < lines_index); i++)
{
- printf_to_message_buffer ("%s\n", lines[i]);
+ printf_to_message_buffer ("%s\n", lines[i], NULL, NULL);
free (lines[i]);
}
@@ -308,7 +313,8 @@ DECLARE_INFO_COMMAND (select_visited_node,
free (node);
line =
- info_read_completing_in_echo_area (window, _("Select visited node: "), menu);
+ info_read_completing_in_echo_area (window,
+ (char *) _("Select visited node: "), menu);
window = active_window;
@@ -328,7 +334,7 @@ DECLARE_INFO_COMMAND (select_visited_node,
entry = info_get_labeled_reference (line, menu);
if (!entry)
- info_error (_("The reference disappeared! (%s)."), line);
+ info_error ((char *) _("The reference disappeared! (%s)."), line, NULL);
else
info_select_reference (window, entry);
}
diff --git a/contrib/texinfo/info/nodes.c b/contrib/texinfo/info/nodes.c
index a0b58cf..a3381a8 100644
--- a/contrib/texinfo/info/nodes.c
+++ b/contrib/texinfo/info/nodes.c
@@ -1,7 +1,7 @@
/* nodes.c -- how to get an Info file and node.
- $Id: nodes.c,v 1.2 2003/05/13 16:37:54 karl Exp $
+ $Id: nodes.c,v 1.4 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1993, 1998, 1999, 2000, 2002, 2003 Free Software
+ Copyright (C) 1993, 1998, 1999, 2000, 2002, 2003, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -18,7 +18,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- Written by Brian Fox (bfox@ai.mit.edu). */
+ Originally written by Brian Fox (bfox@ai.mit.edu). */
#include "info.h"
@@ -31,16 +31,23 @@
# include "man.h"
#endif /* HANDLE_MAN_PAGES */
-static void forget_info_file (), remember_info_file ();
-static void free_file_buffer_tags (), free_info_tag ();
-static void get_nodes_of_tags_table (), get_nodes_of_info_file ();
-static void get_tags_of_indirect_tags_table ();
-static void info_reload_file_buffer_contents ();
-static char *adjust_nodestart ();
-static FILE_BUFFER *info_load_file_internal (), *info_find_file_internal ();
-static NODE *info_node_of_file_buffer_tags ();
-
-static long get_node_length ();
+static void forget_info_file (char *filename);
+static void remember_info_file (FILE_BUFFER *file_buffer);
+static void free_file_buffer_tags (FILE_BUFFER *file_buffer);
+static void free_info_tag (TAG *tag);
+static void get_nodes_of_tags_table (FILE_BUFFER *file_buffer,
+ SEARCH_BINDING *buffer_binding);
+static void get_nodes_of_info_file (FILE_BUFFER *file_buffer);
+static void get_tags_of_indirect_tags_table (FILE_BUFFER *file_buffer,
+ SEARCH_BINDING *indirect_binding, SEARCH_BINDING *tags_binding);
+static void info_reload_file_buffer_contents (FILE_BUFFER *fb);
+static char *adjust_nodestart (NODE *node, int min, int max);
+static FILE_BUFFER *info_load_file_internal (char *filename, int get_tags);
+static FILE_BUFFER *info_find_file_internal (char *filename, int get_tags);
+static NODE *info_node_of_file_buffer_tags (FILE_BUFFER *file_buffer,
+ char *nodename);
+
+static long get_node_length (SEARCH_BINDING *binding);
/* Magic number that RMS used to decide how much a tags table pointer could
be off by. I feel that it should be much smaller, like 4. */
@@ -65,15 +72,14 @@ int info_loaded_files_slots = 0;
/* Public functions for node manipulation. */
/* Used to build `dir' menu from `localdir' files found in INFOPATH. */
-extern void maybe_build_dir_node ();
+extern void maybe_build_dir_node (char *dirname);
/* Return a pointer to a NODE structure for the Info node (FILENAME)NODENAME.
If FILENAME is NULL, `dir' is used.
IF NODENAME is NULL, `Top' is used.
If the node cannot be found, return NULL. */
NODE *
-info_get_node (filename, nodename)
- char *filename, *nodename;
+info_get_node (char *filename, char *nodename)
{
NODE *node;
FILE_BUFFER *file_buffer = NULL;
@@ -128,9 +134,7 @@ info_get_node (filename, nodename)
nodename of "Top" is used. If the node cannot be found, return a
NULL pointer. */
NODE *
-info_get_node_of_file_buffer (nodename, file_buffer)
- char *nodename;
- FILE_BUFFER *file_buffer;
+info_get_node_of_file_buffer (char *nodename, FILE_BUFFER *file_buffer)
{
NODE *node = NULL;
@@ -188,8 +192,7 @@ info_get_node_of_file_buffer (nodename, file_buffer)
and add it to the list of loaded files. If the file cannot be found,
return a NULL FILE_BUFFER *. */
FILE_BUFFER *
-info_find_file (filename)
- char *filename;
+info_find_file (char *filename)
{
return info_find_file_internal (filename, INFO_GET_TAGS);
}
@@ -197,8 +200,7 @@ info_find_file (filename)
/* Load the info file FILENAME, remembering information about it in a
file buffer. */
FILE_BUFFER *
-info_load_file (filename)
- char *filename;
+info_load_file (char *filename)
{
return info_load_file_internal (filename, INFO_GET_TAGS);
}
@@ -212,9 +214,7 @@ info_load_file (filename)
function is called by info_get_node () when we already have a valid
tags table describing the nodes, it is unnecessary. */
static FILE_BUFFER *
-info_find_file_internal (filename, get_tags)
- char *filename;
- int get_tags;
+info_find_file_internal (char *filename, int get_tags)
{
int i;
FILE_BUFFER *file_buffer;
@@ -306,9 +306,7 @@ info_find_file_internal (filename, get_tags)
default behaviour when info_load_file () is called, but it is not
necessary when loading a subfile for which we already have tags. */
static FILE_BUFFER *
-info_load_file_internal (filename, get_tags)
- char *filename;
- int get_tags;
+info_load_file_internal (char *filename, int get_tags)
{
char *fullpath, *contents;
long filesize;
@@ -332,23 +330,23 @@ info_load_file_internal (filename, get_tags)
if (retcode < 0)
{
char *lowered_name;
- char *basename;
+ char *tmp_basename;
lowered_name = xstrdup (filename);
- basename = filename_non_directory (lowered_name);
+ tmp_basename = filename_non_directory (lowered_name);
- while (*basename)
+ while (*tmp_basename)
{
- if (isupper (*basename))
- *basename = tolower (*basename);
+ if (isupper (*tmp_basename))
+ *tmp_basename = tolower (*tmp_basename);
- basename++;
+ tmp_basename++;
}
fullpath = info_find_fullpath (lowered_name);
- free (lowered_name);
retcode = stat (fullpath, &finfo);
+ free (lowered_name);
}
/* If the file wasn't found, give up, returning a NULL pointer. */
@@ -385,8 +383,7 @@ info_load_file_internal (filename, get_tags)
/* Grovel FILE_BUFFER->contents finding tags and nodes, and filling in the
various slots. This can also be used to rebuild a tag or node table. */
void
-build_tags_and_nodes (file_buffer)
- FILE_BUFFER *file_buffer;
+build_tags_and_nodes (FILE_BUFFER *file_buffer)
{
SEARCH_BINDING binding;
long position;
@@ -496,8 +493,7 @@ build_tags_and_nodes (file_buffer)
FILE_BUFFER->tags, and the number of allocated slots in
FILE_BUFFER->tags_slots. */
static void
-get_nodes_of_info_file (file_buffer)
- FILE_BUFFER *file_buffer;
+get_nodes_of_info_file (FILE_BUFFER *file_buffer)
{
long nodestart;
int tags_index = 0;
@@ -573,8 +569,7 @@ get_nodes_of_info_file (file_buffer)
/* Return the length of the node which starts at BINDING. */
static long
-get_node_length (binding)
- SEARCH_BINDING *binding;
+get_node_length (SEARCH_BINDING *binding)
{
int i;
char *body;
@@ -591,33 +586,33 @@ get_node_length (binding)
/* Build and save the array of nodes in FILE_BUFFER by searching through the
contents of BUFFER_BINDING for a tags table, and groveling the contents. */
static void
-get_nodes_of_tags_table (file_buffer, buffer_binding)
- FILE_BUFFER *file_buffer;
- SEARCH_BINDING *buffer_binding;
+get_nodes_of_tags_table (FILE_BUFFER *file_buffer,
+ SEARCH_BINDING *buffer_binding)
{
int name_offset;
- SEARCH_BINDING *search;
+ SEARCH_BINDING *tmp_search;
long position;
int tags_index = 0;
- search = copy_binding (buffer_binding);
+ tmp_search = copy_binding (buffer_binding);
/* Find the start of the tags table. */
- position = find_tags_table (search);
+ position = find_tags_table (tmp_search);
/* If none, we're all done. */
if (position == -1)
return;
/* Move to one character before the start of the actual table. */
- search->start = position;
- search->start += skip_node_separator (search->buffer + search->start);
- search->start += strlen (TAGS_TABLE_BEG_LABEL);
- search->start--;
+ tmp_search->start = position;
+ tmp_search->start += skip_node_separator
+ (tmp_search->buffer + tmp_search->start);
+ tmp_search->start += strlen (TAGS_TABLE_BEG_LABEL);
+ tmp_search->start--;
/* The tag table consists of lines containing node names and positions.
Do each line until we find one that doesn't contain a node name. */
- while ((position = search_forward ("\n", search)) != -1)
+ while ((position = search_forward ("\n", tmp_search)) != -1)
{
TAG *entry;
char *nodedef;
@@ -625,22 +620,22 @@ get_nodes_of_tags_table (file_buffer, buffer_binding)
int anchor = 0;
/* Prepare to skip this line. */
- search->start = position;
- search->start++;
+ tmp_search->start = position;
+ tmp_search->start++;
/* Skip past informative "(Indirect)" tags table line. */
- if (!tags_index && looking_at (TAGS_TABLE_IS_INDIRECT_LABEL, search))
+ if (!tags_index && looking_at (TAGS_TABLE_IS_INDIRECT_LABEL, tmp_search))
continue;
/* Find the label preceding the node name. */
name_offset =
- string_in_line (INFO_NODE_LABEL, search->buffer + search->start);
+ string_in_line (INFO_NODE_LABEL, tmp_search->buffer + tmp_search->start);
/* If no node label, maybe it's an anchor. */
if (name_offset == -1)
{
name_offset = string_in_line (INFO_REF_LABEL,
- search->buffer + search->start);
+ tmp_search->buffer + tmp_search->start);
if (name_offset != -1)
anchor = 1;
}
@@ -653,8 +648,8 @@ get_nodes_of_tags_table (file_buffer, buffer_binding)
entry = xmalloc (sizeof (TAG));
/* Find the beginning of the node definition. */
- search->start += name_offset;
- nodedef = search->buffer + search->start;
+ tmp_search->start += name_offset;
+ nodedef = tmp_search->buffer + tmp_search->start;
nodedef += skip_whitespace (nodedef);
/* Move past the node's name in this tag to the TAGSEP character. */
@@ -682,7 +677,7 @@ get_nodes_of_tags_table (file_buffer, buffer_binding)
add_pointer_to_array (entry, tags_index, file_buffer->tags,
file_buffer->tags_slots, 100, TAG *);
}
- free (search);
+ free (tmp_search);
}
/* A structure used only in `get_tags_of_indirect_tags_table' to hold onto
@@ -696,9 +691,8 @@ typedef struct {
subfiles of every node which appears in TAGS_BINDING. The 2nd argument is
a binding surrounding the indirect files list. */
static void
-get_tags_of_indirect_tags_table (file_buffer, indirect_binding, tags_binding)
- FILE_BUFFER *file_buffer;
- SEARCH_BINDING *indirect_binding, *tags_binding;
+get_tags_of_indirect_tags_table (FILE_BUFFER *file_buffer,
+ SEARCH_BINDING *indirect_binding, SEARCH_BINDING *tags_binding)
{
int i;
SUBFILE **subfiles = NULL;
@@ -863,9 +857,7 @@ get_tags_of_indirect_tags_table (file_buffer, indirect_binding, tags_binding)
/* Return the node that contains TAG in FILE_BUFFER, else
(pathologically) NULL. Called from info_node_of_file_buffer_tags. */
static NODE *
-find_node_of_anchor (file_buffer, tag)
- FILE_BUFFER *file_buffer;
- TAG *tag;
+find_node_of_anchor (FILE_BUFFER *file_buffer, TAG *tag)
{
int anchor_pos, node_pos;
TAG *node_tag;
@@ -920,7 +912,7 @@ find_node_of_anchor (file_buffer, tag)
/* Otherwise an anchor at the end of a node ends up displaying at
the end of the last line of the node (way over on the right of
the screen), which looks wrong. */
- if (node->display_pos >= node->nodelen)
+ if (node->display_pos >= (unsigned long) node->nodelen)
node->display_pos = node->nodelen - 1;
/* Don't search in the node for the xref text, it's not there. */
@@ -934,9 +926,7 @@ find_node_of_anchor (file_buffer, tag)
/* Return the node from FILE_BUFFER which matches NODENAME by searching
the tags table in FILE_BUFFER, or NULL. */
static NODE *
-info_node_of_file_buffer_tags (file_buffer, nodename)
- FILE_BUFFER *file_buffer;
- char *nodename;
+info_node_of_file_buffer_tags (FILE_BUFFER *file_buffer, char *nodename)
{
TAG *tag;
int i;
@@ -1060,7 +1050,7 @@ info_node_of_file_buffer_tags (file_buffer, nodename)
/* Create a new, empty file buffer. */
FILE_BUFFER *
-make_file_buffer ()
+make_file_buffer (void)
{
FILE_BUFFER *file_buffer = xmalloc (sizeof (FILE_BUFFER));
@@ -1076,8 +1066,7 @@ make_file_buffer ()
/* Add FILE_BUFFER to our list of already loaded info files. */
static void
-remember_info_file (file_buffer)
- FILE_BUFFER *file_buffer;
+remember_info_file (FILE_BUFFER *file_buffer)
{
int i;
@@ -1090,8 +1079,7 @@ remember_info_file (file_buffer)
/* Forget the contents, tags table, nodes list, and names of FILENAME. */
static void
-forget_info_file (filename)
- char *filename;
+forget_info_file (char *filename)
{
int i;
FILE_BUFFER *file_buffer;
@@ -1127,8 +1115,7 @@ forget_info_file (filename)
/* Free the tags (if any) associated with FILE_BUFFER. */
static void
-free_file_buffer_tags (file_buffer)
- FILE_BUFFER *file_buffer;
+free_file_buffer_tags (FILE_BUFFER *file_buffer)
{
int i;
@@ -1156,8 +1143,7 @@ free_file_buffer_tags (file_buffer)
/* Free the data associated with TAG, as well as TAG itself. */
static void
-free_info_tag (tag)
- TAG *tag;
+free_info_tag (TAG *tag)
{
free (tag->nodename);
@@ -1174,8 +1160,7 @@ free_info_tag (tag)
the file was already loaded at least once successfully, so the tags and/or
nodes members are still correctly filled. */
static void
-info_reload_file_buffer_contents (fb)
- FILE_BUFFER *fb;
+info_reload_file_buffer_contents (FILE_BUFFER *fb)
{
int is_compressed;
@@ -1205,9 +1190,7 @@ info_reload_file_buffer_contents (fb)
position directly on the separator that precedes this node. If the node
could not be found, return a NULL pointer. */
static char *
-adjust_nodestart (node, min, max)
- NODE *node;
- int min, max;
+adjust_nodestart (NODE *node, int min, int max)
{
long position;
SEARCH_BINDING node_body;
@@ -1248,7 +1231,7 @@ adjust_nodestart (node, min, max)
nodedef += offset;
nodedef += skip_whitespace (nodedef);
offset = skip_node_characters (nodedef, DONT_SKIP_NEWLINES);
- if ((offset == strlen (node->nodename)) &&
+ if (((unsigned int) offset == strlen (node->nodename)) &&
(strncmp (node->nodename, nodedef, offset) == 0))
{
node->contents = nodestart;
diff --git a/contrib/texinfo/info/nodes.h b/contrib/texinfo/info/nodes.h
index 0002ea4..e2fbabe 100644
--- a/contrib/texinfo/info/nodes.h
+++ b/contrib/texinfo/info/nodes.h
@@ -1,7 +1,7 @@
/* nodes.h -- How we represent nodes internally.
- $Id: nodes.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: nodes.h,v 1.3 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1993, 1997, 1998, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -123,33 +123,34 @@ extern int info_loaded_files_slots;
already, or it may not. If it does not already appear, find the file,
and add it to the list of loaded files. If the file cannot be found,
return a NULL FILE_BUFFER *. */
-extern FILE_BUFFER *info_find_file ();
+extern FILE_BUFFER *info_find_file (char *filename);
/* Force load the file named FILENAME, and return the information structure
describing this file. Even if the file was already loaded, this loads
a new buffer, rebuilds tags and nodes, and returns a new FILE_BUFFER *. */
-extern FILE_BUFFER *info_load_file ();
+extern FILE_BUFFER *info_load_file (char *filename);
/* Return a pointer to a NODE structure for the Info node (FILENAME)NODENAME.
FILENAME can be passed as NULL, in which case the filename of "dir" is used.
NODENAME can be passed as NULL, in which case the nodename of "Top" is used.
If the node cannot be found, return a NULL pointer. */
-extern NODE *info_get_node ();
+extern NODE *info_get_node (char *filename, char *nodename);
/* Return a pointer to a NODE structure for the Info node NODENAME in
FILE_BUFFER. NODENAME can be passed as NULL, in which case the
nodename of "Top" is used. If the node cannot be found, return a
NULL pointer. */
-extern NODE *info_get_node_of_file_buffer ();
+extern NODE *info_get_node_of_file_buffer (char *nodename,
+ FILE_BUFFER *file_buffer);
/* Grovel FILE_BUFFER->contents finding tags and nodes, and filling in the
various slots. This can also be used to rebuild a tag or node table. */
-extern void build_tags_and_nodes ();
+extern void build_tags_and_nodes (FILE_BUFFER *file_buffer);
/* When non-zero, this is a string describing the most recent file error. */
extern char *info_recent_file_error;
/* Create a new, empty file buffer. */
-extern FILE_BUFFER *make_file_buffer ();
+extern FILE_BUFFER *make_file_buffer (void);
#endif /* not NODES_H */
diff --git a/contrib/texinfo/info/search.c b/contrib/texinfo/info/search.c
index 593cff9..a1d5da6 100644
--- a/contrib/texinfo/info/search.c
+++ b/contrib/texinfo/info/search.c
@@ -1,7 +1,7 @@
/* search.c -- searching large bodies of text.
- $Id: search.c,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: search.c,v 1.3 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1993, 1997, 1998, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -36,9 +36,7 @@
/* A function which makes a binding with buffer and bounds. */
SEARCH_BINDING *
-make_binding (buffer, start, end)
- char *buffer;
- long start, end;
+make_binding (char *buffer, long int start, long int end)
{
SEARCH_BINDING *binding;
@@ -53,8 +51,7 @@ make_binding (buffer, start, end)
/* Make a copy of BINDING without duplicating the data. */
SEARCH_BINDING *
-copy_binding (binding)
- SEARCH_BINDING *binding;
+copy_binding (SEARCH_BINDING *binding)
{
SEARCH_BINDING *copy;
@@ -73,9 +70,7 @@ copy_binding (binding)
/* Search forwards or backwards for the text delimited by BINDING.
The search is forwards if BINDING->start is greater than BINDING->end. */
long
-search (string, binding)
- char *string;
- SEARCH_BINDING *binding;
+search (char *string, SEARCH_BINDING *binding)
{
long result;
@@ -90,9 +85,7 @@ search (string, binding)
/* Search forwards for STRING through the text delimited in BINDING. */
long
-search_forward (string, binding)
- char *string;
- SEARCH_BINDING *binding;
+search_forward (char *string, SEARCH_BINDING *binding)
{
register int c, i, len;
register char *buff, *end;
@@ -151,9 +144,7 @@ search_forward (string, binding)
/* Search for STRING backwards through the text delimited in BINDING. */
long
-search_backward (input_string, binding)
- char *input_string;
- SEARCH_BINDING *binding;
+search_backward (char *input_string, SEARCH_BINDING *binding)
{
register int c, i, len;
register char *buff, *end;
@@ -225,8 +216,7 @@ search_backward (input_string, binding)
Return an offset of -1 if STRING does not appear in LINE. The search
is bound by the end of the line (i.e., either NEWLINE or 0). */
int
-string_in_line (string, line)
- char *string, *line;
+string_in_line (char *string, char *line)
{
register int end;
SEARCH_BINDING binding;
@@ -245,9 +235,7 @@ string_in_line (string, line)
/* Return non-zero if STRING is the first text to appear at BINDING. */
int
-looking_at (string, binding)
- char *string;
- SEARCH_BINDING *binding;
+looking_at (char *string, SEARCH_BINDING *binding)
{
long search_end;
@@ -273,8 +261,7 @@ looking_at (string, binding)
/* Return the index of the first non-whitespace character in STRING. */
int
-skip_whitespace (string)
- char *string;
+skip_whitespace (char *string)
{
register int i;
@@ -285,8 +272,7 @@ skip_whitespace (string)
/* Return the index of the first non-whitespace or newline character in
STRING. */
int
-skip_whitespace_and_newlines (string)
- char *string;
+skip_whitespace_and_newlines (char *string)
{
register int i;
@@ -296,8 +282,7 @@ skip_whitespace_and_newlines (string)
/* Return the index of the first whitespace character in STRING. */
int
-skip_non_whitespace (string)
- char *string;
+skip_non_whitespace (char *string)
{
register int i;
@@ -313,9 +298,7 @@ skip_non_whitespace (string)
the period. If second argument NEWLINES_OKAY is non-zero, newlines should
be skipped while parsing out the nodename specification. */
int
-skip_node_characters (string, newlines_okay)
- char *string;
- int newlines_okay;
+skip_node_characters (char *string, int newlines_okay)
{
register int c, i = 0;
int paren_seen = 0;
@@ -381,8 +364,7 @@ skip_node_characters (string, newlines_okay)
BINDING-buffer. The search starts at BINDING->start. Return -1 if no node
separator was found. */
long
-find_node_separator (binding)
- SEARCH_BINDING *binding;
+find_node_separator (SEARCH_BINDING *binding)
{
register long i;
char *body;
@@ -407,8 +389,7 @@ find_node_separator (binding)
/* Return the length of the node separator characters that BODY is
currently pointing at. */
int
-skip_node_separator (body)
- char *body;
+skip_node_separator (char *body)
{
register int i;
@@ -432,8 +413,7 @@ skip_node_separator (body)
/* Return the number of characters from STRING to the start of
the next line. */
int
-skip_line (string)
- char *string;
+skip_line (char *string)
{
register int i;
@@ -448,23 +428,23 @@ skip_line (string)
/* Return the absolute position of the beginning of a tags table in this
binding starting the search at binding->start. */
long
-find_tags_table (binding)
- SEARCH_BINDING *binding;
+find_tags_table (SEARCH_BINDING *binding)
{
- SEARCH_BINDING search;
+ SEARCH_BINDING tmp_search;
long position;
- search.buffer = binding->buffer;
- search.start = binding->start;
- search.end = binding->end;
- search.flags = S_FoldCase;
+ tmp_search.buffer = binding->buffer;
+ tmp_search.start = binding->start;
+ tmp_search.end = binding->end;
+ tmp_search.flags = S_FoldCase;
- while ((position = find_node_separator (&search)) != -1 )
+ while ((position = find_node_separator (&tmp_search)) != -1 )
{
- search.start = position;
- search.start += skip_node_separator (search.buffer + search.start);
+ tmp_search.start = position;
+ tmp_search.start += skip_node_separator (tmp_search.buffer
+ + tmp_search.start);
- if (looking_at (TAGS_TABLE_BEG_LABEL, &search))
+ if (looking_at (TAGS_TABLE_BEG_LABEL, &tmp_search))
return (position);
}
return (-1);
@@ -476,41 +456,41 @@ find_tags_table (binding)
really point to the right node. It returns the absolute position of
the separator preceding the node. */
long
-find_node_in_binding (nodename, binding)
- char *nodename;
- SEARCH_BINDING *binding;
+find_node_in_binding (char *nodename, SEARCH_BINDING *binding)
{
long position;
int offset, namelen;
- SEARCH_BINDING search;
+ SEARCH_BINDING tmp_search;
namelen = strlen (nodename);
- search.buffer = binding->buffer;
- search.start = binding->start;
- search.end = binding->end;
- search.flags = 0;
+ tmp_search.buffer = binding->buffer;
+ tmp_search.start = binding->start;
+ tmp_search.end = binding->end;
+ tmp_search.flags = 0;
- while ((position = find_node_separator (&search)) != -1)
+ while ((position = find_node_separator (&tmp_search)) != -1)
{
- search.start = position;
- search.start += skip_node_separator (search.buffer + search.start);
+ tmp_search.start = position;
+ tmp_search.start += skip_node_separator
+ (tmp_search.buffer + tmp_search.start);
- offset = string_in_line (INFO_NODE_LABEL, search.buffer + search.start);
+ offset = string_in_line
+ (INFO_NODE_LABEL, tmp_search.buffer + tmp_search.start);
if (offset == -1)
continue;
- search.start += offset;
- search.start += skip_whitespace (search.buffer + search.start);
+ tmp_search.start += offset;
+ tmp_search.start += skip_whitespace (tmp_search.buffer + tmp_search.start);
offset = skip_node_characters
- (search.buffer + search.start, DONT_SKIP_NEWLINES);
+ (tmp_search.buffer + tmp_search.start, DONT_SKIP_NEWLINES);
/* Notice that this is an exact match. You cannot grovel through
the buffer with this function looking for random nodes. */
if ((offset == namelen) &&
- (search.buffer[search.start] == nodename[0]) &&
- (strncmp (search.buffer + search.start, nodename, offset) == 0))
+ (tmp_search.buffer[tmp_search.start] == nodename[0]) &&
+ (strncmp (tmp_search.buffer + tmp_search.start, nodename, offset) == 0))
return (position);
}
return (-1);
diff --git a/contrib/texinfo/info/search.h b/contrib/texinfo/info/search.h
index 5f94978..3e06107 100644
--- a/contrib/texinfo/info/search.h
+++ b/contrib/texinfo/info/search.h
@@ -1,7 +1,7 @@
/* search.h -- Structure used to search large bodies of text, with bounds.
- $Id: search.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: search.h,v 1.3 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1993, 1997, 1998, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -42,26 +42,34 @@ typedef struct {
#define S_FoldCase 0x01 /* Set means fold case in searches. */
#define S_SkipDest 0x02 /* Set means return pointing after the dest. */
-SEARCH_BINDING *make_binding (), *copy_binding ();
-extern long search_forward (), search_backward (), search ();
-extern int looking_at ();
+SEARCH_BINDING *make_binding (char *buffer, long int start, long int end);
+SEARCH_BINDING *copy_binding (SEARCH_BINDING *binding);
+extern long search_forward (char *string, SEARCH_BINDING *binding);
+extern long search_backward (char *input_string, SEARCH_BINDING *binding);
+extern long search (char *string, SEARCH_BINDING *binding);
+extern int looking_at (char *string, SEARCH_BINDING *binding);
/* Note that STRING_IN_LINE () always returns the offset of the 1st character
after the string. */
-extern int string_in_line ();
+extern int string_in_line (char *string, char *line);
/* Function names that start with "skip" are passed a string, and return
an offset from the start of that string. Function names that start
with "find" are passed a SEARCH_BINDING, and return an absolute position
marker of the item being searched for. "Find" functions return a value
of -1 if the item being looked for couldn't be found. */
-extern int skip_whitespace (), skip_non_whitespace ();
-extern int skip_whitespace_and_newlines (), skip_line ();
-extern int skip_node_characters (), skip_node_separator ();
+extern int skip_whitespace (char *string);
+extern int skip_non_whitespace (char *string);
+extern int skip_whitespace_and_newlines (char *string);
+extern int skip_line (char *string);
+extern int skip_node_characters (char *string, int newlines_okay);
+extern int skip_node_separator (char *body);
+
#define DONT_SKIP_NEWLINES 0
#define SKIP_NEWLINES 1
-extern long find_node_separator (), find_tags_table ();
-extern long find_node_in_binding ();
+extern long find_node_separator (SEARCH_BINDING *binding);
+extern long find_tags_table (SEARCH_BINDING *binding);
+extern long find_node_in_binding (char *nodename, SEARCH_BINDING *binding);
#endif /* not INFO_SEARCH_H */
diff --git a/contrib/texinfo/info/session.c b/contrib/texinfo/info/session.c
index cff7d75..7a8996b 100644
--- a/contrib/texinfo/info/session.c
+++ b/contrib/texinfo/info/session.c
@@ -1,7 +1,7 @@
/* session.c -- user windowing interface to Info.
- $Id: session.c,v 1.8 2003/03/22 17:41:16 karl Exp $
+ $Id: session.c,v 1.16 2004/12/14 00:15:36 karl Exp $
- Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -18,9 +18,10 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- Written by Brian Fox (bfox@ai.mit.edu). */
+ Originally written by Brian Fox (bfox@ai.mit.edu). */
#include "info.h"
+#include "search.h"
#include <sys/ioctl.h>
#if defined (HAVE_SYS_TIME_H)
@@ -32,14 +33,11 @@
# include "man.h"
#endif
-#ifdef M_XENIX
-/* SCO 3.2v5.0.2 defines but does not correctly declare strncasecmp.
- Since we use it as a symbol, have to get it right. --gildea, 1jul99. */
-extern int strncasecmp (const char *, const char *, size_t);
-#endif
-
-static void info_clear_pending_input (), info_set_pending_input ();
-static void info_handle_pointer ();
+static void info_clear_pending_input (void);
+static void info_set_pending_input (unsigned char key);
+static void info_handle_pointer (char *label, WINDOW *window);
+static void display_info_keyseq (int expecting_future_input);
+char *node_printed_rep (NODE *node);
/* **************************************************************** */
/* */
@@ -66,17 +64,15 @@ static int info_windows_index = 0;
/* Number of slots allocated to `info_windows'. */
static int info_windows_slots = 0;
-void remember_window_and_node (), forget_window_and_nodes ();
-void initialize_info_session (), info_session ();
-void display_startup_message_and_start ();
+void remember_window_and_node (WINDOW *window, NODE *node);
+void forget_window_and_nodes (WINDOW *window);
+void display_startup_message_and_start (void);
/* Begin an info session finding the nodes specified by FILENAME and NODENAMES.
For each loaded node, create a new window. Always split the largest of the
available windows. */
void
-begin_multiple_window_info_session (filename, nodenames)
- char *filename;
- char **nodenames;
+begin_multiple_window_info_session (char *filename, char **nodenames)
{
register int i;
WINDOW *window = (WINDOW *)NULL;
@@ -114,7 +110,7 @@ begin_multiple_window_info_session (filename, nodenames)
if (!largest)
{
display_update_display (windows);
- info_error (msg_cant_find_window);
+ info_error ((char *) msg_cant_find_window, NULL, NULL);
info_session ();
xexit (0);
}
@@ -129,7 +125,7 @@ begin_multiple_window_info_session (filename, nodenames)
else
{
display_update_display (windows);
- info_error (msg_win_too_small);
+ info_error ((char *) msg_win_too_small, NULL, NULL);
info_session ();
xexit (0);
}
@@ -141,11 +137,8 @@ begin_multiple_window_info_session (filename, nodenames)
/* Start an info session with INITIAL_NODE, and an error message in the echo
area made from FORMAT and ARG. */
void
-begin_info_session_with_error (initial_node, format, arg1, arg2)
- NODE *initial_node;
- char *format;
- void *arg1;
- void *arg2;
+begin_info_session_with_error (NODE *initial_node, char *format,
+ void *arg1, void *arg2)
{
initialize_info_session (initial_node, 1);
info_error (format, arg1, arg2);
@@ -154,28 +147,28 @@ begin_info_session_with_error (initial_node, format, arg1, arg2)
/* Start an info session with INITIAL_NODE. */
void
-begin_info_session (initial_node)
- NODE *initial_node;
+begin_info_session (NODE *initial_node)
{
initialize_info_session (initial_node, 1);
display_startup_message_and_start ();
}
void
-display_startup_message_and_start ()
+display_startup_message_and_start (void)
{
char *format;
format = replace_in_documentation
- (_("Welcome to Info version %s. Type \\[get-help-window] for help, \\[menu-item] for menu item."));
+ ((char *) _("Welcome to Info version %s. Type \\[get-help-window] for help, \\[menu-item] for menu item."),
+ 0);
- window_message_in_echo_area (format, VERSION);
+ window_message_in_echo_area (format, VERSION, NULL);
info_session ();
}
/* Run an info session with an already initialized window and node. */
void
-info_session ()
+info_session (void)
{
display_update_display (windows);
info_last_executed_command = NULL;
@@ -192,7 +185,7 @@ info_session ()
/* Here is a window-location dependent event loop. Called from the
functions info_session (), and from read_xxx_in_echo_area (). */
void
-info_read_and_dispatch ()
+info_read_and_dispatch (void)
{
unsigned char key;
int done;
@@ -200,12 +193,12 @@ info_read_and_dispatch ()
while (!done && !quit_info_immediately)
{
- int lk;
+ int lk = 0;
/* If we haven't just gone up or down a line, there is no
goal column for this window. */
- if ((info_last_executed_command != info_next_line) &&
- (info_last_executed_command != info_prev_line))
+ if ((info_last_executed_command != (VFunction *) info_next_line) &&
+ (info_last_executed_command != (VFunction *) info_prev_line))
active_window->goal_column = -1;
if (echo_area_is_active)
@@ -242,30 +235,28 @@ info_read_and_dispatch ()
if (lk == echo_area_last_command_was_kill)
echo_area_last_command_was_kill = 0;
- if (ea_last_executed_command == ea_newline ||
+ if (ea_last_executed_command == (VFunction *) ea_newline ||
info_aborted_echo_area)
{
ea_last_executed_command = (VFunction *)NULL;
done = 1;
}
- if (info_last_executed_command == info_quit)
+ if (info_last_executed_command == (VFunction *) info_quit)
quit_info_immediately = 1;
}
- else if (info_last_executed_command == info_quit)
+ else if (info_last_executed_command == (VFunction *) info_quit)
done = 1;
}
}
/* Found in signals.c */
-extern void initialize_info_signal_handler ();
+extern void initialize_info_signal_handler (void );
/* Initialize the first info session by starting the terminal, window,
and display systems. If CLEAR_SCREEN is 0, don't clear the screen. */
void
-initialize_info_session (node, clear_screen)
- NODE *node;
- int clear_screen;
+initialize_info_session (NODE *node, int clear_screen)
{
char *term_name = getenv ("TERM");
terminal_initialize_terminal (term_name);
@@ -275,7 +266,7 @@ initialize_info_session (node, clear_screen)
if (!term_name)
term_name = "dumb";
- info_error (msg_term_too_dumb, term_name);
+ info_error ((char *) msg_term_too_dumb, term_name, NULL);
xexit (1);
}
@@ -293,7 +284,7 @@ initialize_info_session (node, clear_screen)
/* Tell the window system how to notify us when a window needs to be
asynchronously deleted (e.g., user resizes window very small). */
- window_deletion_notifier = forget_window_and_nodes;
+ window_deletion_notifier = (VFunction *) forget_window_and_nodes;
/* If input has not been redirected yet, make it come from unbuffered
standard input. */
@@ -308,8 +299,7 @@ initialize_info_session (node, clear_screen)
/* Tell Info that input is coming from the file FILENAME. */
void
-info_set_input_from_file (filename)
- char *filename;
+info_set_input_from_file (char *filename)
{
FILE *stream;
@@ -331,8 +321,7 @@ info_set_input_from_file (filename)
/* Return the INFO_WINDOW containing WINDOW, or NULL if there isn't one. */
static INFO_WINDOW *
-get_info_window_of_window (window)
- WINDOW *window;
+get_info_window_of_window (WINDOW *window)
{
register int i;
INFO_WINDOW *info_win = (INFO_WINDOW *)NULL;
@@ -348,8 +337,7 @@ get_info_window_of_window (window)
values if the window and node are the same as the current one being
displayed. */
void
-set_remembered_pagetop_and_point (window)
- WINDOW *window;
+set_remembered_pagetop_and_point (WINDOW *window)
{
INFO_WINDOW *info_win;
@@ -367,9 +355,7 @@ set_remembered_pagetop_and_point (window)
}
void
-remember_window_and_node (window, node)
- WINDOW *window;
- NODE *node;
+remember_window_and_node (WINDOW *window, NODE *node)
{
/* See if we already have this window in our list. */
INFO_WINDOW *info_win = get_info_window_of_window (window);
@@ -428,7 +414,7 @@ remember_window_and_node (window, node)
#define DEBUG_FORGET_WINDOW_AND_NODES
#if defined (DEBUG_FORGET_WINDOW_AND_NODES)
static void
-consistency_check_info_windows ()
+consistency_check_info_windows (void)
{
register int i;
@@ -448,8 +434,7 @@ consistency_check_info_windows ()
/* Remove WINDOW and its associated list of nodes from INFO_WINDOWS. */
void
-forget_window_and_nodes (window)
- WINDOW *window;
+forget_window_and_nodes (WINDOW *window)
{
register int i;
INFO_WINDOW *info_win = (INFO_WINDOW *)NULL;
@@ -496,10 +481,7 @@ forget_window_and_nodes (window)
the footnotes for this window. If REMEMBER is nonzero, first call
set_remembered_pagetop_and_point. */
void
-info_set_node_of_window (remember, window, node)
- int remember;
- WINDOW *window;
- NODE *node;
+info_set_node_of_window (int remember, WINDOW *window, NODE *node)
{
if (remember)
set_remembered_pagetop_and_point (window);
@@ -526,9 +508,7 @@ info_set_node_of_window (remember, window, node)
/* Change the pagetop of WINDOW to DESIRED_TOP, perhaps scrolling the screen
to do so. */
void
-set_window_pagetop (window, desired_top)
- WINDOW *window;
- int desired_top;
+set_window_pagetop (WINDOW *window, int desired_top)
{
int point_line, old_pagetop;
@@ -591,8 +571,7 @@ set_window_pagetop (window, desired_top)
/* Immediately make WINDOW->point visible on the screen, and move the
terminal cursor there. */
static void
-info_show_point (window)
- WINDOW *window;
+info_show_point (WINDOW *window)
{
int old_pagetop;
@@ -615,13 +594,11 @@ info_show_point (window)
/* Move WINDOW->point from OLD line index to NEW line index. */
static void
-move_to_new_line (old, new, window)
- int old, new;
- WINDOW *window;
+move_to_new_line (int old, int new, WINDOW *window)
{
if (old == -1)
{
- info_error (msg_cant_find_point);
+ info_error ((char *) msg_cant_find_point, NULL, NULL);
}
else
{
@@ -869,23 +846,22 @@ int default_scroll_size = -1; /* meaning half screen size */
/* Move to 1st menu item, Next, Up/Next, or error in this window. */
static void
-forward_move_node_structure (window, behaviour)
- WINDOW *window;
- int behaviour;
+forward_move_node_structure (WINDOW *window, int behaviour)
{
switch (behaviour)
{
case IS_PageOnly:
- info_error (msg_at_node_bottom);
+ info_error ((char *) msg_at_node_bottom, NULL, NULL);
break;
case IS_NextOnly:
info_next_label_of_node (window->node);
if (!info_parsed_nodename && !info_parsed_filename)
- info_error (msg_no_pointer, _("Next"));
+ info_error ((char *) msg_no_pointer, (char *) _("Next"), NULL);
else
{
- window_message_in_echo_area (_("Following Next node..."));
+ window_message_in_echo_area ((char *) _("Following Next node..."),
+ NULL, NULL);
info_handle_pointer ("Next", window);
}
break;
@@ -902,7 +878,8 @@ forward_move_node_structure (window, behaviour)
if (menu)
{
info_free_references (menu);
- window_message_in_echo_area (_("Selecting first menu item..."));
+ window_message_in_echo_area ((char *) _("Selecting first menu item..."),
+ NULL, NULL);
info_menu_digit (window, 1, '1');
return;
}
@@ -913,7 +890,8 @@ forward_move_node_structure (window, behaviour)
info_next_label_of_node (window->node);
if (INFO_LABEL_FOUND ())
{
- window_message_in_echo_area (_("Selecting Next node..."));
+ window_message_in_echo_area ((char *) _("Selecting Next node..."),
+ NULL, NULL);
info_handle_pointer ("Next", window);
return;
}
@@ -983,8 +961,8 @@ forward_move_node_structure (window, behaviour)
/* This node has a "Next" pointer, and it is not the
same as the first menu item found in this node. */
window_message_in_echo_area
- (_("Moving Up %d time(s), then Next."),
- up_counter);
+ ((char *) _("Moving Up %d time(s), then Next."),
+ (void *) (long) up_counter, NULL);
info_handle_pointer ("Next", window);
return;
@@ -1007,7 +985,8 @@ forward_move_node_structure (window, behaviour)
window->point = info_win->points[old_current];
recalculate_line_starts (window);
window->flags |= W_UpdateWindow;
- info_error (_("No more nodes within this document."));
+ info_error ((char *) _("No more nodes within this document."),
+ NULL, NULL);
}
}
}
@@ -1018,23 +997,22 @@ forward_move_node_structure (window, behaviour)
/* Move Prev, Up or error in WINDOW depending on BEHAVIOUR. */
static void
-backward_move_node_structure (window, behaviour)
- WINDOW *window;
- int behaviour;
+backward_move_node_structure (WINDOW *window, int behaviour)
{
switch (behaviour)
{
case IS_PageOnly:
- info_error (msg_at_node_top);
+ info_error ((char *) msg_at_node_top, NULL, NULL);
break;
case IS_NextOnly:
info_prev_label_of_node (window->node);
if (!info_parsed_nodename && !info_parsed_filename)
- info_error (_("No `Prev' for this node."));
+ info_error ((char *) _("No `Prev' for this node."), NULL, NULL);
else
{
- window_message_in_echo_area (_("Moving Prev in this window."));
+ window_message_in_echo_area ((char *) _("Moving Prev in this window."),
+ NULL, NULL);
info_handle_pointer ("Prev", window);
}
break;
@@ -1048,10 +1026,13 @@ backward_move_node_structure (window, behaviour)
info_up_label_of_node (window->node);
if (!info_parsed_nodename && (!info_parsed_filename
|| is_dir_name (info_parsed_filename)))
- info_error (_("No `Prev' or `Up' for this node within this document."));
+ info_error ((char *)
+ _("No `Prev' or `Up' for this node within this document."),
+ NULL, NULL);
else
{
- window_message_in_echo_area (_("Moving Up in this window."));
+ window_message_in_echo_area ((char *) _("Moving Up in this window."),
+ NULL, NULL);
info_handle_pointer ("Up", window);
}
}
@@ -1089,7 +1070,8 @@ backward_move_node_structure (window, behaviour)
/* Move to the previous node. If this node now contains a menu,
and we have not inhibited movement to it, move to the node
corresponding to the last menu item. */
- window_message_in_echo_area (_("Moving Prev in this window."));
+ window_message_in_echo_area ((char *) _("Moving Prev in this window."),
+ NULL, NULL);
info_handle_pointer ("Prev", window);
if (!inhibit_menu_traversing)
@@ -1099,7 +1081,7 @@ backward_move_node_structure (window, behaviour)
{
info_free_references (menu);
window_message_in_echo_area
- (_("Moving to `Prev's last menu item."));
+ ((char *) _("Moving to `Prev's last menu item."), NULL, NULL);
info_menu_digit (window, 1, '0');
}
}
@@ -1140,15 +1122,13 @@ DECLARE_INFO_COMMAND (info_global_prev_node,
}
}
-static void _scroll_forward();
-static void _scroll_backward();
+static void _scroll_forward(WINDOW *window, int count,
+ unsigned char key, int behaviour);
+static void _scroll_backward(WINDOW *window, int count,
+ unsigned char key, int behaviour);
static void
-_scroll_forward(window, count, key, behaviour)
- WINDOW *window;
- int count;
- unsigned char key;
- int behaviour;
+_scroll_forward(WINDOW *window, int count, unsigned char key, int behaviour)
{
if (count < 0)
_scroll_backward (window, -count, key, behaviour);
@@ -1188,11 +1168,7 @@ _scroll_forward(window, count, key, behaviour)
}
static void
-_scroll_backward(window, count, key, behaviour)
- WINDOW *window;
- int count;
- unsigned char key;
- int behaviour;
+_scroll_backward(WINDOW *window, int count, unsigned char key, int behaviour)
{
if (count < 0)
_scroll_forward (window, -count, key, behaviour);
@@ -1406,7 +1382,7 @@ DECLARE_INFO_COMMAND (info_next_window, _("Select the next window"))
/* If no other window, error now. */
if (!windows->next && !echo_area_is_active)
{
- info_error (msg_one_window);
+ info_error ((char *) msg_one_window, NULL, NULL);
return;
}
@@ -1446,7 +1422,7 @@ DECLARE_INFO_COMMAND (info_prev_window, _("Select the previous window"))
if (!windows->next && !echo_area_is_active)
{
- info_error (msg_one_window);
+ info_error ((char *) msg_one_window, NULL, NULL);
return;
}
@@ -1457,7 +1433,7 @@ DECLARE_INFO_COMMAND (info_prev_window, _("Select the previous window"))
if (window == the_echo_area ||
(window == windows && !echo_area_is_active))
{
- register WINDOW *win, *last;
+ register WINDOW *win, *last = NULL;
for (win = windows; win; win = win->next)
last = win;
@@ -1502,7 +1478,7 @@ DECLARE_INFO_COMMAND (info_split_window, _("Split the current window"))
if (!split)
{
- info_error (msg_win_too_small);
+ info_error ((char *) msg_win_too_small, NULL, NULL);
}
else
{
@@ -1570,11 +1546,11 @@ DECLARE_INFO_COMMAND (info_delete_window, _("Delete the current window"))
{
if (!windows->next)
{
- info_error (msg_cant_kill_last);
+ info_error ((char *) msg_cant_kill_last, NULL, NULL);
}
else if (window->flags & W_WindowIsPerm)
{
- info_error (_("Cannot delete a permanent window"));
+ info_error ((char *) _("Cannot delete a permanent window"), NULL, NULL);
}
else
{
@@ -1591,8 +1567,7 @@ DECLARE_INFO_COMMAND (info_delete_window, _("Delete the current window"))
/* Do the physical deletion of WINDOW, and forget this window and
associated nodes. */
void
-info_delete_window_internal (window)
- WINDOW *window;
+info_delete_window_internal (WINDOW *window)
{
if (windows->next && ((window->flags & W_WindowIsPerm) == 0))
{
@@ -1660,7 +1635,7 @@ DECLARE_INFO_COMMAND (info_scroll_other_window, _("Scroll the other window"))
/* If only one window, give up. */
if (!windows->next)
{
- info_error (msg_one_window);
+ info_error ((char *) msg_one_window, NULL, NULL);
return;
}
@@ -1712,8 +1687,7 @@ DECLARE_INFO_COMMAND (info_toggle_wrap,
/* Return (FILENAME)NODENAME for NODE, or just NODENAME if NODE's
filename is not set. */
char *
-node_printed_rep (node)
- NODE *node;
+node_printed_rep (NODE *node)
{
char *rep;
@@ -1734,9 +1708,7 @@ node_printed_rep (node)
/* Using WINDOW for various defaults, select the node referenced by ENTRY
in it. If the node is selected, the window and node are remembered. */
void
-info_select_reference (window, entry)
- WINDOW *window;
- REFERENCE *entry;
+info_select_reference (WINDOW *window, REFERENCE *entry)
{
NODE *node;
char *filename, *nodename, *file_system_error;
@@ -1781,9 +1753,9 @@ info_select_reference (window, entry)
if (!node)
{
if (file_system_error)
- info_error (file_system_error);
+ info_error (file_system_error, NULL, NULL);
else
- info_error (msg_cant_find_node, nodename);
+ info_error ((char *) msg_cant_find_node, nodename, NULL);
}
maybe_free (file_system_error);
@@ -1798,9 +1770,7 @@ info_select_reference (window, entry)
Select the parsed node in WINDOW and remember it, or error if the node
couldn't be found. */
static void
-info_parse_and_select (line, window)
- char *line;
- WINDOW *window;
+info_parse_and_select (char *line, WINDOW *window)
{
REFERENCE entry;
@@ -1818,9 +1788,7 @@ info_parse_and_select (line, window)
WINDOW. The node should have been pointed to by the LABEL pointer of
WINDOW->node. */
static void
-info_handle_pointer (label, window)
- char *label;
- WINDOW *window;
+info_handle_pointer (char *label, WINDOW *window)
{
if (info_parsed_filename || info_parsed_nodename)
{
@@ -1861,9 +1829,9 @@ info_handle_pointer (label, window)
else
{
if (info_recent_file_error)
- info_error (info_recent_file_error);
+ info_error (info_recent_file_error, NULL, NULL);
else
- info_error (msg_cant_file_node, filename, nodename);
+ info_error ((char *) msg_cant_file_node, filename, nodename);
}
free (filename);
@@ -1871,7 +1839,7 @@ info_handle_pointer (label, window)
}
else
{
- info_error (msg_no_pointer, label);
+ info_error ((char *) msg_no_pointer, label, NULL);
}
}
@@ -1927,7 +1895,7 @@ DECLARE_INFO_COMMAND (info_last_node, _("Select the last node in this file"))
}
if (!node)
- info_error (_("This window has no additional nodes"));
+ info_error ((char *) _("This window has no additional nodes"), NULL, NULL);
else
info_set_node_of_window (1, window, node);
}
@@ -1960,7 +1928,7 @@ DECLARE_INFO_COMMAND (info_first_node, _("Select the first node in this file"))
}
if (!node)
- info_error (_("This window has no additional nodes"));
+ info_error ((char *) _("This window has no additional nodes"), NULL, NULL);
else
info_set_node_of_window (1, window, node);
}
@@ -1976,13 +1944,13 @@ DECLARE_INFO_COMMAND (info_last_menu_item,
DECLARE_INFO_COMMAND (info_menu_digit, _("Select this menu item"))
{
register int i, item;
- register REFERENCE *entry, **menu;
+ register REFERENCE **menu;
menu = info_menu_of_node (window->node);
if (!menu)
{
- info_error (msg_no_menu_node);
+ info_error ((char *) msg_no_menu_node, NULL, NULL);
return;
}
@@ -1994,15 +1962,20 @@ DECLARE_INFO_COMMAND (info_menu_digit, _("Select this menu item"))
for (i = 0; menu[i + 1]; i++);
else
{
- for (i = 0; (entry = menu[i]); i++)
+ for (i = 0; menu[i]; i++)
if (i == item - 1)
break;
}
if (menu[i])
- info_select_reference (window, menu[i]);
+ {
+ info_select_reference (window, menu[i]);
+ if (menu[i]->line_number > 0)
+ info_next_line (window, menu[i]->line_number - 1, key);
+ }
else
- info_error (_("There aren't %d items in this menu."), item);
+ info_error ((char *) _("There aren't %d items in this menu."),
+ (void *) (long) item, NULL);
info_free_references (menu);
return;
@@ -2026,9 +1999,7 @@ DECLARE_INFO_COMMAND (info_menu_digit, _("Select this menu item"))
limit of 200 chars (in Emacs 21.2). */
static REFERENCE **
-nearest_xref (xref_list, pos)
- REFERENCE **xref_list;
- long pos;
+nearest_xref (REFERENCE **xref_list, long int pos)
{
int this_xref;
int nearest = -1;
@@ -2081,12 +2052,8 @@ nearest_xref (xref_list, pos)
to build the list of references. ASK_P is non-zero if the user
should be prompted, or zero to select the default item. */
static void
-info_menu_or_ref_item (window, count, key, builder, ask_p)
- WINDOW *window;
- int count;
- unsigned char key;
- REFERENCE **(*builder) ();
- int ask_p;
+info_menu_or_ref_item (WINDOW *window, int count,
+ unsigned char key, REFERENCE **(*builder) (NODE *node), int ask_p)
{
char *line;
REFERENCE *entry;
@@ -2096,9 +2063,9 @@ info_menu_or_ref_item (window, count, key, builder, ask_p)
if (!menu)
{
if (builder == info_menu_of_node)
- info_error (msg_no_menu_node);
+ info_error ((char *) msg_no_menu_node, NULL, NULL);
else
- info_error (msg_no_xref_node);
+ info_error ((char *) msg_no_xref_node, NULL, NULL);
return;
}
@@ -2165,16 +2132,20 @@ info_menu_or_ref_item (window, count, key, builder, ask_p)
else if (window->point < refs[which]->start)
break;
}
- if (closest == -1)
- which--;
- else
- which = closest;
+ if (which > 0)
+ {
+ if (closest == -1)
+ which--;
+ else
+ which = closest;
+ }
}
defentry = (REFERENCE *)xmalloc (sizeof (REFERENCE));
defentry->label = xstrdup (refs[which]->label);
defentry->filename = refs[which]->filename;
defentry->nodename = refs[which]->nodename;
+ defentry->line_number = refs[which]->line_number;
if (defentry->filename)
defentry->filename = xstrdup (defentry->filename);
@@ -2192,24 +2163,27 @@ info_menu_or_ref_item (window, count, key, builder, ask_p)
char *prompt;
/* Build the prompt string. */
- if (defentry)
- prompt = (char *)xmalloc (99 + strlen (defentry->label));
- else
- prompt = (char *)xmalloc (99);
-
if (builder == info_menu_of_node)
{
if (defentry)
- sprintf (prompt, _("Menu item (%s): "), defentry->label);
+ {
+ prompt = xmalloc (strlen (defentry->label)
+ + strlen (_("Menu item (%s): ")));
+ sprintf (prompt, _("Menu item (%s): "), defentry->label);
+ }
else
- sprintf (prompt, _("Menu item: "));
+ prompt = xstrdup (_("Menu item: "));
}
else
{
if (defentry)
- sprintf (prompt, _("Follow xref (%s): "), defentry->label);
+ {
+ prompt = xmalloc (strlen (defentry->label)
+ + strlen (_("Follow xref (%s): ")));
+ sprintf (prompt, _("Follow xref (%s): "), defentry->label);
+ }
else
- sprintf (prompt, _("Follow xref: "));
+ prompt = xstrdup (_("Follow xref: "));
}
line = info_read_completing_in_echo_area (window, prompt, menu);
@@ -2287,11 +2261,12 @@ info_menu_or_ref_item (window, count, key, builder, ask_p)
}
if (!entry && defentry)
- info_error (_("The reference disappeared! (%s)."), line);
+ info_error ((char *) _("The reference disappeared! (%s)."), line, NULL);
else
{
NODE *orig = window->node;
info_select_reference (window, entry);
+
if (builder == info_xrefs_of_node && window->node != orig
&& !(window->node->flags & N_FromAnchor))
{ /* Search for this reference in the node. */
@@ -2312,6 +2287,11 @@ info_menu_or_ref_item (window, count, key, builder, ask_p)
window_adjust_pagetop (window);
}
}
+
+ if (entry->line_number > 0)
+ /* next_line starts at line 1? Anyway, the -1 makes it
+ move to the right line. */
+ info_next_line (window, entry->line_number - 1, key);
}
free (line);
@@ -2359,7 +2339,7 @@ DECLARE_INFO_COMMAND (info_find_menu, _("Move to the start of this node's menu")
position = search (INFO_MENU_LABEL, &binding);
if (position == -1)
- info_error (msg_no_menu_node);
+ info_error ((char *) msg_no_menu_node, NULL, NULL);
else
{
window->point = position;
@@ -2378,7 +2358,7 @@ DECLARE_INFO_COMMAND (info_visit_menu,
menu = info_menu_of_node (window->node);
if (!menu)
- info_error (msg_no_menu_node);
+ info_error ((char *) msg_no_menu_node, NULL, NULL);
for (i = 0; (!info_error_was_printed) && (entry = menu[i]); i++)
{
@@ -2388,7 +2368,7 @@ DECLARE_INFO_COMMAND (info_visit_menu,
window_tile_windows (TILE_INTERNALS);
if (!new)
- info_error (msg_win_too_small);
+ info_error ((char *) msg_win_too_small, NULL, NULL);
else
{
active_window = new;
@@ -2453,11 +2433,12 @@ DECLARE_INFO_COMMAND (info_goto_node, _("Read a node name and select it"))
}
}
}
- line = info_read_maybe_completing (window, _("Goto node: "), items);
+ line = info_read_maybe_completing (window, (char *) _("Goto node: "),
+ items);
info_free_references (items);
}
#else /* !GOTO_COMPLETES */
- line = info_read_in_echo_area (window, _("Goto node: "));
+ line = info_read_in_echo_area (window, (char *) _("Goto node: "));
#endif /* !GOTO_COMPLETES */
/* If the user aborted, quit now. */
@@ -2485,11 +2466,8 @@ DECLARE_INFO_COMMAND (info_goto_node, _("Read a node name and select it"))
will be NULL. */
NODE *
-info_follow_menus (initial_node, menus, errstr, errarg1, errarg2)
- NODE *initial_node;
- char **menus;
- const char **errstr;
- char **errarg1, **errarg2;
+info_follow_menus (NODE *initial_node, char **menus,
+ const char **errstr, char **errarg1, char **errarg2)
{
NODE *node = NULL;
*errstr = *errarg1 = *errarg2 = NULL;
@@ -2544,7 +2522,8 @@ info_follow_menus (initial_node, menus, errstr, errarg1, errarg2)
if (strcasecmp (entry->label, arg) == 0)
break;
else
- if (strncasecmp (entry->label, arg, strlen (arg)) == 0)
+ if ((best_guess == -1)
+ && (strncasecmp (entry->label, arg, strlen (arg)) == 0))
best_guess = i;
}
@@ -2622,8 +2601,7 @@ info_follow_menus (initial_node, menus, errstr, errarg1, errarg2)
Return array terminated with NULL. */
static char **
-split_list_of_nodenames (str)
- char *str;
+split_list_of_nodenames (char *str)
{
unsigned len = 2;
char **nodes = xmalloc (len * sizeof (char *));
@@ -2652,7 +2630,7 @@ split_list_of_nodenames (str)
DECLARE_INFO_COMMAND (info_menu_sequence,
_("Read a list of menus starting from dir and follow them"))
{
- char *line = info_read_in_echo_area (window, _("Follow menus: "));
+ char *line = info_read_in_echo_area (window, (char *) _("Follow menus: "));
/* If the user aborted, quit now. */
if (!line)
@@ -2665,10 +2643,11 @@ DECLARE_INFO_COMMAND (info_menu_sequence,
if (*line)
{
- char *errstr, *errarg1, *errarg2;
+ const char *errstr;
+ char *errarg1, *errarg2;
NODE *dir_node = info_get_node (NULL, NULL);
char **nodes = split_list_of_nodenames (line);
- NODE *node;
+ NODE *node = NULL;
/* If DIR_NODE is NULL, they might be reading a file directly,
like in "info -d . -f ./foo". Try using "Top" instead. */
@@ -2684,16 +2663,15 @@ DECLARE_INFO_COMMAND (info_menu_sequence,
/* If we still cannot find the starting point, give up.
We cannot allow a NULL pointer inside info_follow_menus. */
if (!dir_node)
- info_error (msg_cant_find_node, "Top");
+ info_error ((char *) msg_cant_find_node, "Top", NULL);
else
- node
- = info_follow_menus (dir_node, nodes, &errstr, &errarg1, &errarg2);
+ node = info_follow_menus (dir_node, nodes, &errstr, &errarg1, &errarg2);
free (nodes);
if (!errstr)
info_set_node_of_window (1, window, node);
else
- info_error (errstr, errarg1, errarg2);
+ info_error ((char *) errstr, errarg1, errarg2);
}
free (line);
@@ -2706,10 +2684,7 @@ DECLARE_INFO_COMMAND (info_menu_sequence,
or NULL if there's nothing in this menu seems to fit the bill.
If EXACT is non-zero, allow only exact matches. */
static REFERENCE *
-entry_in_menu (arg, menu, exact)
- char *arg;
- REFERENCE **menu;
- int exact;
+entry_in_menu (char *arg, REFERENCE **menu, int exact)
{
REFERENCE *entry;
@@ -2743,10 +2718,7 @@ entry_in_menu (arg, menu, exact)
invocation info and its command-line options, by looking for menu
items and chains of menu items with characteristic names. */
void
-info_intuit_options_node (window, initial_node, program)
- WINDOW *window;
- NODE *initial_node;
- char *program;
+info_intuit_options_node (WINDOW *window, NODE *initial_node, char *program)
{
/* The list of node names typical for GNU manuals where the program
usage and specifically the command-line arguments are described.
@@ -2781,7 +2753,7 @@ info_intuit_options_node (window, initial_node, program)
in the menu hierarchy... */
for (node = initial_node; node; initial_node = node)
{
- REFERENCE *entry;
+ REFERENCE *entry = NULL;
/* Build and return a list of the menu items in this node. */
menu = info_menu_of_node (initial_node);
@@ -2794,13 +2766,15 @@ info_intuit_options_node (window, initial_node, program)
/* Look for node names typical for usage nodes in this menu. */
for (try_node = invocation_nodes; *try_node; try_node++)
{
- char nodename[200];
+ char *nodename;
+ nodename = xmalloc (strlen (program) + strlen (*try_node));
sprintf (nodename, *try_node, program);
/* The last resort "%s" is dangerous, so we restrict it
to exact matches here. */
entry = entry_in_menu (nodename, menu,
strcmp (*try_node, "%s") == 0);
+ free (nodename);
if (entry)
break;
}
@@ -2828,8 +2802,7 @@ info_intuit_options_node (window, initial_node, program)
/* Given a name of an Info file, find the name of the package it
describes by removing the leading directories and extensions. */
char *
-program_name_from_file_name (file_name)
- char *file_name;
+program_name_from_file_name (char *file_name)
{
int i;
char *program_name = xstrdup (filename_non_directory (file_name));
@@ -2870,7 +2843,7 @@ DECLARE_INFO_COMMAND (info_goto_invocation_node,
free (prompt);
if (!line)
{
- info_abort_key ();
+ info_abort_key (window, 0, 0);
return;
}
if (*line)
@@ -2882,7 +2855,7 @@ DECLARE_INFO_COMMAND (info_goto_invocation_node,
from the Top node. */
top_node = info_get_node (file_name, NULL);
if (!top_node)
- info_error (msg_cant_find_node, "Top");
+ info_error ((char *) msg_cant_find_node, "Top", NULL);
info_intuit_options_node (window, top_node, program_name);
free (line);
@@ -2894,7 +2867,7 @@ DECLARE_INFO_COMMAND (info_man, _("Read a manpage reference and select it"))
{
char *line;
- line = info_read_in_echo_area (window, _("Get Manpage: "));
+ line = info_read_in_echo_area (window, (char *) _("Get Manpage: "));
if (!line)
{
@@ -2939,8 +2912,7 @@ DECLARE_INFO_COMMAND (info_dir_node, _("Select the node `(dir)'"))
/* Read the name of a node to kill. The list of available nodes comes
from the nodes appearing in the current window configuration. */
static char *
-read_nodename_to_kill (window)
- WINDOW *window;
+read_nodename_to_kill (WINDOW *window)
{
int iw;
char *nodename;
@@ -2948,7 +2920,7 @@ read_nodename_to_kill (window)
REFERENCE **menu = NULL;
int menu_index = 0, menu_slots = 0;
char *default_nodename = xstrdup (active_window->node->nodename);
- char *prompt = xmalloc (40 + strlen (default_nodename));
+ char *prompt = xmalloc (strlen (_("Kill node (%s): ")) + strlen (default_nodename));
sprintf (prompt, _("Kill node (%s): "), default_nodename);
@@ -2980,9 +2952,7 @@ read_nodename_to_kill (window)
/* Delete NODENAME from this window, showing the most
recently selected node in this window. */
static void
-kill_node (window, nodename)
- WINDOW *window;
- char *nodename;
+kill_node (WINDOW *window, char *nodename)
{
int iw, i;
INFO_WINDOW *info_win;
@@ -3004,7 +2974,7 @@ kill_node (window, nodename)
if (!info_win)
{
if (*nodename)
- info_error (_("Cannot kill node `%s'"), nodename);
+ info_error ((char *) _("Cannot kill node `%s'"), nodename, NULL);
else
window_clear_echo_area ();
@@ -3014,7 +2984,7 @@ kill_node (window, nodename)
/* If there are no more nodes left anywhere to view, complain and exit. */
if (info_windows_index == 1 && info_windows[0]->nodes_index == 1)
{
- info_error (_("Cannot kill the last node"));
+ info_error ((char *) _("Cannot kill the last node"), NULL, NULL);
return;
}
@@ -3118,7 +3088,7 @@ DECLARE_INFO_COMMAND (info_view_file, _("Read the name of a file and select it")
{
char *line;
- line = info_read_in_echo_area (window, _("Find file: "));
+ line = info_read_in_echo_area (window, (char *) _("Find file: "));
if (!line)
{
info_abort_key (active_window, 1, 0);
@@ -3133,9 +3103,9 @@ DECLARE_INFO_COMMAND (info_view_file, _("Read the name of a file and select it")
if (!node)
{
if (info_recent_file_error)
- info_error (info_recent_file_error);
+ info_error (info_recent_file_error, NULL, NULL);
else
- info_error (_("Cannot find `%s'."), line);
+ info_error ((char *) _("Cannot find `%s'."), line, NULL);
}
else
info_set_node_of_window (1, window, node);
@@ -3154,19 +3124,17 @@ DECLARE_INFO_COMMAND (info_view_file, _("Read the name of a file and select it")
/* **************************************************************** */
#define VERBOSE_NODE_DUMPING
-static void write_node_to_stream ();
-static void dump_node_to_stream ();
-static void initialize_dumping ();
+static void write_node_to_stream (NODE *node, FILE *stream);
+static void dump_node_to_stream (char *filename, char *nodename,
+ FILE *stream, int dump_subnodes);
+static void initialize_dumping (void);
/* Dump the nodes specified by FILENAME and NODENAMES to the file named
in OUTPUT_FILENAME. If DUMP_SUBNODES is non-zero, recursively dump
the nodes which appear in the menu of each node dumped. */
void
-dump_nodes_to_file (filename, nodenames, output_filename, dump_subnodes)
- char *filename;
- char **nodenames;
- char *output_filename;
- int dump_subnodes;
+dump_nodes_to_file (char *filename, char **nodenames,
+ char *output_filename, int dump_subnodes)
{
register int i;
FILE *output_stream;
@@ -3180,7 +3148,8 @@ dump_nodes_to_file (filename, nodenames, output_filename, dump_subnodes)
if (!output_stream)
{
- info_error (_("Could not create output file `%s'."), output_filename);
+ info_error ((char *) _("Could not create output file `%s'."),
+ output_filename, NULL);
return;
}
@@ -3193,7 +3162,7 @@ dump_nodes_to_file (filename, nodenames, output_filename, dump_subnodes)
fclose (output_stream);
#if defined (VERBOSE_NODE_DUMPING)
- info_error (_("Done."));
+ info_error ((char *) _("Done."), NULL, NULL);
#endif /* VERBOSE_NODE_DUMPING */
}
@@ -3203,7 +3172,7 @@ static int dumped_already_index = 0;
static int dumped_already_slots = 0;
static void
-initialize_dumping ()
+initialize_dumping (void)
{
dumped_already_index = 0;
}
@@ -3212,10 +3181,8 @@ initialize_dumping ()
If DUMP_SUBNODES is non-zero, recursively dump the nodes which appear
in the menu of each node dumped. */
static void
-dump_node_to_stream (filename, nodename, stream, dump_subnodes)
- char *filename, *nodename;
- FILE *stream;
- int dump_subnodes;
+dump_node_to_stream (char *filename, char *nodename,
+ FILE *stream, int dump_subnodes)
{
register int i;
NODE *node;
@@ -3225,14 +3192,15 @@ dump_node_to_stream (filename, nodename, stream, dump_subnodes)
if (!node)
{
if (info_recent_file_error)
- info_error (info_recent_file_error);
+ info_error (info_recent_file_error, NULL, NULL);
else
{
if (filename && *nodename != '(')
- info_error (msg_cant_file_node, filename_non_directory (filename),
- nodename);
+ info_error ((char *) msg_cant_file_node,
+ filename_non_directory (filename),
+ nodename);
else
- info_error (msg_cant_find_node, nodename);
+ info_error ((char *) msg_cant_find_node, nodename, NULL);
}
return;
}
@@ -3249,7 +3217,7 @@ dump_node_to_stream (filename, nodename, stream, dump_subnodes)
#if defined (VERBOSE_NODE_DUMPING)
/* Maybe we should print some information about the node being output. */
- info_error (_("Writing node %s..."), node_printed_rep (node));
+ info_error ((char *) _("Writing node %s..."), node_printed_rep (node), NULL);
#endif /* VERBOSE_NODE_DUMPING */
write_node_to_stream (node, stream);
@@ -3284,10 +3252,7 @@ dump_node_to_stream (filename, nodename, stream, dump_subnodes)
/* Dump NODE to FILENAME. If DUMP_SUBNODES is non-zero, recursively dump
the nodes which appear in the menu of each node dumped. */
void
-dump_node_to_file (node, filename, dump_subnodes)
- NODE *node;
- char *filename;
- int dump_subnodes;
+dump_node_to_file (NODE *node, char *filename, int dump_subnodes)
{
FILE *output_stream;
char *nodes_filename;
@@ -3301,7 +3266,8 @@ dump_node_to_file (node, filename, dump_subnodes)
if (!output_stream)
{
- info_error (_("Could not create output file `%s'."), filename);
+ info_error ((char *) _("Could not create output file `%s'."), filename,
+ NULL);
return;
}
@@ -3318,7 +3284,7 @@ dump_node_to_file (node, filename, dump_subnodes)
fclose (output_stream);
#if defined (VERBOSE_NODE_DUMPING)
- info_error (_("Done."));
+ info_error ((char *) _("Done."), NULL, NULL);
#endif /* VERBOSE_NODE_DUMPING */
}
@@ -3334,8 +3300,7 @@ DECLARE_INFO_COMMAND (info_print_node,
/* Print NODE on a printer piping it into INFO_PRINT_COMMAND. */
void
-print_node (node)
- NODE *node;
+print_node (NODE *node)
{
FILE *printer_pipe;
char *print_command = getenv ("INFO_PRINT_COMMAND");
@@ -3363,13 +3328,13 @@ print_node (node)
if (!printer_pipe)
{
- info_error (_("Cannot open pipe to `%s'."), print_command);
+ info_error ((char *) _("Cannot open pipe to `%s'."), print_command, NULL);
return;
}
#if defined (VERBOSE_NODE_DUMPING)
/* Maybe we should print some information about the node being output. */
- info_error (_("Printing node %s..."), node_printed_rep (node));
+ info_error ((char *) _("Printing node %s..."), node_printed_rep (node), NULL);
#endif /* VERBOSE_NODE_DUMPING */
write_node_to_stream (node, printer_pipe);
@@ -3379,14 +3344,12 @@ print_node (node)
fclose (printer_pipe);
#if defined (VERBOSE_NODE_DUMPING)
- info_error (_("Done."));
+ info_error ((char *) _("Done."), NULL, NULL);
#endif /* VERBOSE_NODE_DUMPING */
}
static void
-write_node_to_stream (node, stream)
- NODE *node;
- FILE *stream;
+write_node_to_stream (NODE *node, FILE *stream)
{
fwrite (node->contents, 1, node->nodelen, stream);
}
@@ -3403,11 +3366,11 @@ write_node_to_stream (node, stream)
to gc even those file buffer contents which had to be uncompressed. */
int gc_compressed_files = 0;
-static void info_gc_file_buffers ();
-static void info_search_1 ();
+static void info_gc_file_buffers (void);
+static void info_search_1 (WINDOW *window, int count,
+ unsigned char key, int case_sensitive, int ask_for_string);
static char *search_string = (char *)NULL;
-static int search_string_index = 0;
static int search_string_size = 0;
static int isearch_is_active = 0;
@@ -3416,8 +3379,7 @@ static int last_search_case_sensitive = 0;
/* Return the file buffer which belongs to WINDOW's node. */
FILE_BUFFER *
-file_buffer_of_window (window)
- WINDOW *window;
+file_buffer_of_window (WINDOW *window)
{
/* If this window has no node, then it has no file buffer. */
if (!window->node)
@@ -3439,12 +3401,8 @@ file_buffer_of_window (window)
DIR says which direction to search in. If it is positive, search
forward, else backwards. */
long
-info_search_in_node (string, node, start, window, dir, case_sensitive)
- char *string;
- NODE *node;
- long start;
- WINDOW *window;
- int dir, case_sensitive;
+info_search_in_node (char *string, NODE *node, long int start,
+ WINDOW *window, int dir, int case_sensitive)
{
SEARCH_BINDING binding;
long offset;
@@ -3486,13 +3444,10 @@ info_search_in_node (string, node, start, window, dir, case_sensitive)
search at START. Return the absolute position of the match, or -1, if
no part of the string could be found. */
long
-info_target_search_node (node, string, start)
- NODE *node;
- char *string;
- long start;
+info_target_search_node (NODE *node, char *string, long int start)
{
register int i;
- long offset;
+ long offset = 0;
char *target;
target = xstrdup (string);
@@ -3521,10 +3476,8 @@ info_target_search_node (node, string, start)
If the search fails, return non-zero, else zero. Side-effect window
leaving the node and point where the string was found current. */
static int
-info_search_internal (string, window, dir, case_sensitive)
- char *string;
- WINDOW *window;
- int dir, case_sensitive;
+info_search_internal (char *string, WINDOW *window,
+ int dir, int case_sensitive)
{
register int i;
FILE_BUFFER *file_buffer;
@@ -3561,7 +3514,7 @@ info_search_internal (string, window, dir, case_sensitive)
file's node list. */
if (file_buffer->tags)
{
- register int current_tag, number_of_tags;
+ register int current_tag = 0, number_of_tags;
char *last_subfile;
TAG *tag;
@@ -3611,8 +3564,8 @@ info_search_internal (string, window, dir, case_sensitive)
if (!echo_area_is_active && (last_subfile != tag->filename))
{
window_message_in_echo_area
- (_("Searching subfile %s ..."),
- filename_non_directory (tag->filename));
+ ((char *) _("Searching subfile %s ..."),
+ filename_non_directory (tag->filename), NULL);
last_subfile = tag->filename;
}
@@ -3625,9 +3578,9 @@ info_search_internal (string, window, dir, case_sensitive)
if (!echo_area_is_active)
{
if (info_recent_file_error)
- info_error (info_recent_file_error);
+ info_error (info_recent_file_error, NULL, NULL);
else
- info_error (msg_cant_file_node,
+ info_error ((char *) msg_cant_file_node,
filename_non_directory (file_buffer->filename),
tag->nodename);
}
@@ -3686,12 +3639,8 @@ DECLARE_INFO_COMMAND (info_search_backward,
}
static void
-info_search_1 (window, count, key, case_sensitive, ask_for_string)
- WINDOW *window;
- int count;
- unsigned char key;
- int case_sensitive;
- int ask_for_string;
+info_search_1 (WINDOW *window, int count, unsigned char key,
+ int case_sensitive, int ask_for_string)
{
char *line, *prompt;
int result, old_pagetop;
@@ -3718,7 +3667,12 @@ info_search_1 (window, count, key, case_sensitive, ask_for_string)
if (ask_for_string)
{
- prompt = (char *)xmalloc (50 + strlen (search_string));
+ prompt = (char *)xmalloc (strlen (_("%s%sfor string [%s]: "))
+ + strlen (_("Search backward"))
+ + strlen (_("Search"))
+ + strlen (_(" case-sensitively "))
+ + strlen (_(" "))
+ + strlen (search_string));
sprintf (prompt, _("%s%sfor string [%s]: "),
direction < 0 ? _("Search backward") : _("Search"),
@@ -3730,18 +3684,17 @@ info_search_1 (window, count, key, case_sensitive, ask_for_string)
if (!line)
{
- info_abort_key ();
+ info_abort_key (window, 0, 0);
return;
}
if (*line)
{
- if (strlen (line) + 1 > search_string_size)
+ if (strlen (line) + 1 > (unsigned int) search_string_size)
search_string = (char *) xrealloc
(search_string, (search_string_size += 50 + strlen (line)));
strcpy (search_string, line);
- search_string_index = strlen (line);
free (line);
}
}
@@ -3762,7 +3715,7 @@ info_search_1 (window, count, key, case_sensitive, ask_for_string)
active_window, direction, case_sensitive);
if (result != 0 && !info_error_was_printed)
- info_error (_("Search failed."));
+ info_error ((char *) _("Search failed."), NULL, NULL);
else if (old_pagetop != active_window->pagetop)
{
int new_pagetop;
@@ -3783,7 +3736,7 @@ DECLARE_INFO_COMMAND (info_search_next,
_("Repeat last search in the same direction"))
{
if (!last_search_direction)
- info_error (_("No previous search string"));
+ info_error ((char *) _("No previous search string"), NULL, NULL);
else
info_search_1 (window, last_search_direction * count,
key, last_search_case_sensitive, 0);
@@ -3793,7 +3746,7 @@ DECLARE_INFO_COMMAND (info_search_previous,
_("Repeat last search in the reverse direction"))
{
if (!last_search_direction)
- info_error (_("No previous search string"));
+ info_error ((char *) _("No previous search string"), NULL, NULL);
else
info_search_1 (window, -last_search_direction * count,
key, last_search_case_sensitive, 0);
@@ -3805,7 +3758,8 @@ DECLARE_INFO_COMMAND (info_search_previous,
/* */
/* **************************************************************** */
-static void incremental_search ();
+static void incremental_search (WINDOW *window, int count,
+ unsigned char ignore);
DECLARE_INFO_COMMAND (isearch_forward,
_("Search interactively for a string as you type it"))
@@ -3829,14 +3783,6 @@ static int isearch_string_index = 0;
static int isearch_string_size = 0;
static unsigned char isearch_terminate_search_key = ESC;
-/* Structure defining the current state of an incremental search. */
-typedef struct {
- WINDOW_STATE_DECL; /* The node, pagetop and point. */
- int search_index; /* Offset of the last char in the search string. */
- int direction; /* The direction that this search is heading in. */
- int failing; /* Whether or not this search failed. */
-} SEARCH_STATE;
-
/* Array of search states. */
static SEARCH_STATE **isearch_states = (SEARCH_STATE **)NULL;
static int isearch_states_index = 0;
@@ -3844,9 +3790,7 @@ static int isearch_states_slots = 0;
/* Push the state of this search. */
static void
-push_isearch (window, search_index, direction, failing)
- WINDOW *window;
- int search_index, direction, failing;
+push_isearch (WINDOW *window, int search_index, int direction, int failing)
{
SEARCH_STATE *state;
@@ -3862,9 +3806,7 @@ push_isearch (window, search_index, direction, failing)
/* Pop the state of this search to WINDOW, SEARCH_INDEX, and DIRECTION. */
static void
-pop_isearch (window, search_index, direction, failing)
- WINDOW *window;
- int *search_index, *direction, *failing;
+pop_isearch (WINDOW *window, int *search_index, int *direction, int *failing)
{
SEARCH_STATE *state;
@@ -3884,7 +3826,7 @@ pop_isearch (window, search_index, direction, failing)
/* Free the memory used by isearch_states. */
static void
-free_isearch_states ()
+free_isearch_states (void)
{
register int i;
@@ -3898,15 +3840,12 @@ free_isearch_states ()
/* Display the current search in the echo area. */
static void
-show_isearch_prompt (dir, string, failing_p)
- int dir;
- unsigned char *string;
- int failing_p;
+show_isearch_prompt (int dir, unsigned char *string, int failing_p)
{
register int i;
const char *prefix;
char *prompt, *p_rep;
- int prompt_len, p_rep_index, p_rep_size;
+ unsigned int prompt_len, p_rep_index, p_rep_size;
if (dir < 0)
prefix = _("I-search backward: ");
@@ -3941,17 +3880,14 @@ show_isearch_prompt (dir, string, failing_p)
sprintf (prompt, "%s%s%s", failing_p ? _("Failing ") : "", prefix,
p_rep ? p_rep : "");
- window_message_in_echo_area ("%s", prompt);
+ window_message_in_echo_area ("%s", prompt, NULL);
maybe_free (p_rep);
free (prompt);
display_cursor_at_point (active_window);
}
static void
-incremental_search (window, count, ignore)
- WINDOW *window;
- int count;
- unsigned char ignore;
+incremental_search (WINDOW *window, int count, unsigned char ignore)
{
unsigned char key;
int last_search_result, search_result, dir;
@@ -3974,7 +3910,7 @@ incremental_search (window, count, ignore)
/* Show the search string in the echo area. */
isearch_string[isearch_string_index] = '\0';
- show_isearch_prompt (dir, isearch_string, search_result);
+ show_isearch_prompt (dir, (unsigned char *) isearch_string, search_result);
isearch_is_active = 1;
@@ -4008,7 +3944,8 @@ incremental_search (window, count, ignore)
pop_isearch
(window, &isearch_string_index, &dir, &search_result);
isearch_string[isearch_string_index] = '\0';
- show_isearch_prompt (dir, isearch_string, search_result);
+ show_isearch_prompt (dir, (unsigned char *) isearch_string,
+ search_result);
goto after_search;
}
}
@@ -4046,15 +3983,16 @@ incremental_search (window, count, ignore)
isearch_string[isearch_string_index] = '\0';
goto search_now;
}
- else if (func == isearch_forward || func == isearch_backward)
+ else if (func == (VFunction *) isearch_forward
+ || func == (VFunction *) isearch_backward)
{
/* If this key invokes an incremental search, then this
means that we will either search again in the same
direction, search again in the reverse direction, or
insert the last search string that was accepted through
incremental searching. */
- if ((func == isearch_forward && dir > 0) ||
- (func == isearch_backward && dir < 0))
+ if ((func == (VFunction *) isearch_forward && dir > 0) ||
+ (func == (VFunction *) isearch_backward && dir < 0))
{
/* If the user has typed no characters, then insert the
last successful search into the current search string. */
@@ -4063,8 +4001,8 @@ incremental_search (window, count, ignore)
/* Of course, there must be something to insert. */
if (last_isearch_accepted)
{
- if (strlen (last_isearch_accepted) + 1 >=
- isearch_string_size)
+ if (strlen ((char *) last_isearch_accepted) + 1
+ >= (unsigned int) isearch_string_size)
isearch_string = (char *)
xrealloc (isearch_string,
isearch_string_size += 10 +
@@ -4090,7 +4028,7 @@ incremental_search (window, count, ignore)
dir = -dir;
}
}
- else if (func == info_abort_key)
+ else if (func == (VFunction *) info_abort_key)
{
/* If C-g pressed, and the search is failing, pop the search
stack back to the last unfailed search. */
@@ -4101,7 +4039,8 @@ incremental_search (window, count, ignore)
pop_isearch
(window, &isearch_string_index, &dir, &search_result);
isearch_string[isearch_string_index] = '\0';
- show_isearch_prompt (dir, isearch_string, search_result);
+ show_isearch_prompt (dir, (unsigned char *) isearch_string,
+ search_result);
continue;
}
else
@@ -4117,7 +4056,7 @@ incremental_search (window, count, ignore)
non-null. Exit the search, remembering the search string. If
the key is not the same as the isearch_terminate_search_key,
then push it into pending input. */
- if (isearch_string_index && func != info_abort_key)
+ if (isearch_string_index && func != (VFunction *) info_abort_key)
{
maybe_free (last_isearch_accepted);
last_isearch_accepted = xstrdup (isearch_string);
@@ -4136,7 +4075,7 @@ incremental_search (window, count, ignore)
|| info_any_buffered_input_p ()))
info_set_pending_input (key);
- if (func == info_abort_key)
+ if (func == (VFunction *) info_abort_key)
{
if (isearch_states_index)
window_set_state (window, &orig_state);
@@ -4154,7 +4093,7 @@ incremental_search (window, count, ignore)
/* Search for the contents of isearch_string. */
search_now:
- show_isearch_prompt (dir, isearch_string, search_result);
+ show_isearch_prompt (dir, (unsigned char *) isearch_string, search_result);
/* If the search string includes upper-case letters, make the
search case-sensitive. */
@@ -4196,7 +4135,7 @@ incremental_search (window, count, ignore)
terminal_ring_bell ();
after_search:
- show_isearch_prompt (dir, isearch_string, search_result);
+ show_isearch_prompt (dir, (unsigned char *) isearch_string, search_result);
if (search_result == 0)
{
@@ -4230,7 +4169,7 @@ incremental_search (window, count, ignore)
Garbage collecting a file buffer means to free the file buffers
contents. */
static void
-info_gc_file_buffers ()
+info_gc_file_buffers (void)
{
register int fb_index, iw_index, i;
register FILE_BUFFER *fb;
@@ -4289,11 +4228,7 @@ info_gc_file_buffers ()
/* Move to the next or previous cross reference in this node. */
static void
-info_move_to_xref (window, count, key, dir)
- WINDOW *window;
- int count;
- unsigned char key;
- int dir;
+info_move_to_xref (WINDOW *window, int count, unsigned char key, int dir)
{
long firstmenu, firstxref;
long nextmenu, nextxref;
@@ -4335,7 +4270,7 @@ info_move_to_xref (window, count, key, dir)
if (firstmenu == -1 && firstxref == -1)
{
- info_error (msg_no_xref_node);
+ info_error ((char *) msg_no_xref_node, NULL, NULL);
return;
}
@@ -4424,10 +4359,11 @@ DECLARE_INFO_COMMAND (info_select_reference_this_line,
_("Select reference or menu item appearing on this line"))
{
char *line;
- NODE *orig;
- line = window->line_starts[window_line_of_point (window)];
- orig = window->node;
+ if (window->line_starts)
+ line = window->line_starts[window_line_of_point (window)];
+ else
+ line = "";
/* If this line contains a menu item, select that one. */
if (strncmp ("* ", line, 2) == 0)
@@ -4450,7 +4386,7 @@ DECLARE_INFO_COMMAND (info_abort_key, _("Cancel current operation"))
do it. */
if (!info_error_rings_bell_p)
terminal_ring_bell ();
- info_error (_("Quit"));
+ info_error ((char *) _("Quit"), NULL, NULL);
info_initialize_numeric_arg ();
info_clear_pending_input ();
@@ -4545,19 +4481,18 @@ DECLARE_INFO_COMMAND (info_do_lowercase_version,
{}
static void
-dispatch_error (keyseq)
- char *keyseq;
+dispatch_error (char *keyseq)
{
char *rep;
rep = pretty_keyseq (keyseq);
if (!echo_area_is_active)
- info_error (_("Unknown command (%s)."), rep);
+ info_error ((char *) _("Unknown command (%s)."), rep, NULL);
else
{
- char *temp = xmalloc (1 + strlen (rep) + strlen (_("\"\" is invalid")));
- sprintf (temp, _("\"%s\" is invalid"), rep);
+ char *temp = xmalloc (1 + strlen (rep) + strlen (_("\"%s\" is invalid")));
+ sprintf (temp, _("`%s' is invalid"), rep);
terminal_ring_bell ();
inform_in_echo_area (temp);
free (temp);
@@ -4572,7 +4507,7 @@ static int info_keyseq_displayed_p = 0;
/* Initialize the length of the current key sequence. */
void
-initialize_keyseq ()
+initialize_keyseq (void)
{
info_keyseq_index = 0;
info_keyseq_displayed_p = 0;
@@ -4580,8 +4515,7 @@ initialize_keyseq ()
/* Add CHARACTER to the current key sequence. */
void
-add_char_to_keyseq (character)
- char character;
+add_char_to_keyseq (char character)
{
if (info_keyseq_index + 2 >= info_keyseq_size)
info_keyseq = (char *)xrealloc (info_keyseq, info_keyseq_size += 10);
@@ -4593,9 +4527,8 @@ add_char_to_keyseq (character)
/* Display the current value of info_keyseq. If argument EXPECTING is
non-zero, input is expected to be read after the key sequence is
displayed, so add an additional prompting character to the sequence. */
-void
-display_info_keyseq (expecting_future_input)
- int expecting_future_input;
+static void
+display_info_keyseq (int expecting_future_input)
{
char *rep;
@@ -4607,7 +4540,7 @@ display_info_keyseq (expecting_future_input)
inform_in_echo_area (rep);
else
{
- window_message_in_echo_area (rep);
+ window_message_in_echo_area (rep, NULL, NULL);
display_cursor_at_point (active_window);
}
info_keyseq_displayed_p = 1;
@@ -4615,7 +4548,7 @@ display_info_keyseq (expecting_future_input)
/* Called by interactive commands to read a keystroke. */
unsigned char
-info_get_another_input_char ()
+info_get_another_input_char (void)
{
int ready = !info_keyseq_displayed_p; /* ready if new and pending key */
@@ -4652,9 +4585,7 @@ info_get_another_input_char ()
/* Do the command associated with KEY in MAP. If the associated command is
really a keymap, then read another key, and dispatch into that map. */
void
-info_dispatch_on_key (key, map)
- unsigned char key;
- Keymap map;
+info_dispatch_on_key (unsigned char key, Keymap map)
{
#if !defined(INFOKEY)
if (Meta_p (key) && (!ISO_Latin_p || map[key].function != ea_insert))
@@ -4684,7 +4615,7 @@ info_dispatch_on_key (key, map)
if (func != (VFunction *)NULL)
{
/* Special case info_do_lowercase_version (). */
- if (func == info_do_lowercase_version)
+ if (func == (VFunction *) info_do_lowercase_version)
{
#if defined(INFOKEY)
unsigned char lowerkey;
@@ -4792,7 +4723,7 @@ DECLARE_INFO_COMMAND (info_universal_argument,
/* Create a default argument. */
void
-info_initialize_numeric_arg ()
+info_initialize_numeric_arg (void)
{
info_numeric_arg = info_numeric_arg_sign = 1;
info_explicit_arg = 0;
@@ -4833,8 +4764,9 @@ DECLARE_INFO_COMMAND (info_numeric_arg_digit_loop,
key = UnMeta (key);
#endif /* !defined(INFOKEY) */
- if (keymap[key].type == ISFUNC &&
- InfoFunction(keymap[key].function) == info_universal_argument)
+ if (keymap[key].type == ISFUNC
+ && InfoFunction(keymap[key].function)
+ == (VFunction *) info_universal_argument)
{
info_numeric_arg *= 4;
key = 0;
@@ -4884,22 +4816,21 @@ static int pending_input_character = 0;
/* How to make there be no pending input. */
static void
-info_clear_pending_input ()
+info_clear_pending_input (void)
{
pending_input_character = 0;
}
/* How to set the pending input character. */
static void
-info_set_pending_input (key)
- unsigned char key;
+info_set_pending_input (unsigned char key)
{
pending_input_character = key;
}
/* How to see if there is any pending input. */
unsigned char
-info_input_pending_p ()
+info_input_pending_p (void)
{
return (pending_input_character);
}
@@ -4912,8 +4843,7 @@ static unsigned char info_input_buffer[MAX_INFO_INPUT_BUFFERING];
/* Add KEY to the buffer of characters to be read. */
static void
-info_push_typeahead (key)
- unsigned char key;
+info_push_typeahead (unsigned char key)
{
/* Flush all pending input in the case of C-g pressed. */
if (key == Control ('g'))
@@ -4924,14 +4854,14 @@ info_push_typeahead (key)
else
{
info_input_buffer[push_index++] = key;
- if (push_index >= sizeof (info_input_buffer))
+ if ((unsigned int) push_index >= sizeof (info_input_buffer))
push_index = 0;
}
}
/* Return the amount of space available in INFO_INPUT_BUFFER for new chars. */
static int
-info_input_buffer_space_available ()
+info_input_buffer_space_available (void)
{
if (pop_index > push_index)
return (pop_index - push_index);
@@ -4943,22 +4873,21 @@ info_input_buffer_space_available ()
Return the key in KEY.
Result is non-zero if there was a key, or 0 if there wasn't. */
static int
-info_get_key_from_typeahead (key)
- unsigned char *key;
+info_get_key_from_typeahead (unsigned char *key)
{
if (push_index == pop_index)
return (0);
*key = info_input_buffer[pop_index++];
- if (pop_index >= sizeof (info_input_buffer))
+ if ((unsigned int) pop_index >= sizeof (info_input_buffer))
pop_index = 0;
return (1);
}
int
-info_any_buffered_input_p ()
+info_any_buffered_input_p (void)
{
info_gather_typeahead ();
return (push_index != pop_index);
@@ -4967,7 +4896,7 @@ info_any_buffered_input_p ()
/* If characters are available to be read, then read them and stuff them into
info_input_buffer. Otherwise, do nothing. */
void
-info_gather_typeahead ()
+info_gather_typeahead (void)
{
register int i = 0;
int tty, space_avail;
@@ -5041,7 +4970,7 @@ info_gather_typeahead ()
/* How to read a single character. */
unsigned char
-info_get_input_char ()
+info_get_input_char (void)
{
unsigned char keystroke;
diff --git a/contrib/texinfo/info/session.h b/contrib/texinfo/info/session.h
index f2f806c..62f8ffe 100644
--- a/contrib/texinfo/info/session.h
+++ b/contrib/texinfo/info/session.h
@@ -1,7 +1,8 @@
/* session.h -- Functions found in session.c.
- $Id: session.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: session.h,v 1.3 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1993, 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1998, 1999, 2001, 2002, 2004 Free Software
+ Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -32,7 +33,7 @@
utility program `makedoc', which is also responsible for making
the documentation/function-pointer maps. */
#define DECLARE_INFO_COMMAND(name, doc) \
-void name (window, count, key) WINDOW *window; int count; unsigned char key;
+void name (WINDOW *window, int count, unsigned char key)
/* Variables found in session.h. */
extern VFunction *info_last_executed_command;
@@ -60,27 +61,38 @@ extern char *info_scroll_choices[];
#define IS_PageOnly 2 /* Simply give up at the bottom of a node. */
/* Utility functions found in session.c */
-extern void info_dispatch_on_key ();
-extern unsigned char info_get_input_char (), info_get_another_input_char ();
-extern unsigned char info_input_pending_p ();
-extern void remember_window_and_node (), set_remembered_pagetop_and_point ();
-extern void set_window_pagetop (), info_set_node_of_window ();
-extern void initialize_keyseq (), add_char_to_keyseq ();
-extern void info_gather_typeahead ();
-extern FILE_BUFFER *file_buffer_of_window ();
-extern long info_search_in_node (), info_target_search_node ();
-extern void info_select_reference ();
-extern int info_any_buffered_input_p ();
-extern void print_node ();
-extern void dump_node_to_file (), dump_nodes_to_file ();
-extern char *program_name_from_file_name ();
+extern void info_dispatch_on_key (unsigned char key, Keymap map);
+extern unsigned char info_get_input_char (void);
+extern unsigned char info_get_another_input_char (void);
+extern unsigned char info_input_pending_p (void);
+extern void remember_window_and_node (WINDOW *window, NODE *node);
+extern void set_remembered_pagetop_and_point (WINDOW *window);
+extern void set_window_pagetop (WINDOW *window, int desired_top);
+extern void info_set_node_of_window (int remember, WINDOW *window,
+ NODE *node);
+extern void initialize_keyseq (void);
+extern void add_char_to_keyseq (char character);
+extern void info_gather_typeahead (void);
+extern FILE_BUFFER *file_buffer_of_window (WINDOW *window);
+extern long info_search_in_node (char *string, NODE *node,
+ long int start, WINDOW *window, int dir, int case_sensitive);
+extern long info_target_search_node (NODE *node, char *string,
+ long int start);
+extern void info_select_reference (WINDOW *window, REFERENCE *entry);
+extern int info_any_buffered_input_p (void);
+extern void print_node (NODE *node);
+extern void dump_node_to_file (NODE *node, char *filename,
+ int dump_subnodes);
+extern void dump_nodes_to_file (char *filename, char **nodenames,
+ char *output_filename, int dump_subnodes);
+extern char *program_name_from_file_name (char *file_name);
/* Do the physical deletion of WINDOW, and forget this window and
associated nodes. */
-extern void info_delete_window_internal ();
+extern void info_delete_window_internal (WINDOW *window);
/* Tell Info that input is coming from the file FILENAME. */
-extern void info_set_input_from_file ();
+extern void info_set_input_from_file (char *filename);
#define return_if_control_g(val) \
do { \
@@ -92,59 +104,134 @@ extern void info_set_input_from_file ();
/* The names of the functions that run an info session. */
/* Starting an info session. */
-extern void begin_multiple_window_info_session (), begin_info_session ();
-extern void begin_info_session_with_error (), info_session ();
-extern void info_read_and_dispatch ();
+extern void begin_multiple_window_info_session (char *filename,
+ char **nodenames);
+extern void begin_info_session (NODE *initial_node);
+extern void begin_info_session_with_error (NODE *initial_node,
+ char *format, void *arg1, void *arg2);
+extern void info_session (void);
+extern void initialize_info_session (NODE *node, int clear_screen);
+extern void info_read_and_dispatch (void);
+extern void info_intuit_options_node (WINDOW *window,
+ NODE *initial_node, char *program);
/* Moving the point within a node. */
-extern void info_next_line (), info_prev_line ();
-extern void info_end_of_line (), info_beginning_of_line ();
-extern void info_forward_char (), info_backward_char ();
-extern void info_forward_word (), info_backward_word ();
-extern void info_beginning_of_node (), info_end_of_node ();
-extern void info_move_to_prev_xref (), info_move_to_next_xref ();
+extern void info_next_line (WINDOW *window, int count, unsigned char key);
+extern void info_prev_line (WINDOW *window, int count, unsigned char key);
+extern void info_end_of_line (WINDOW *window, int count, unsigned char key);
+extern void info_beginning_of_line (WINDOW *window, int count, unsigned char key);
+extern void info_forward_char (WINDOW *window, int count, unsigned char key);
+extern void info_backward_char (WINDOW *window, int count, unsigned char key);
+extern void info_forward_word (WINDOW *window, int count, unsigned char key);
+extern void info_backward_word (WINDOW *window, int count, unsigned char key);
+extern void info_beginning_of_node (WINDOW *window, int count, unsigned char key);
+extern void info_end_of_node (WINDOW *window, int count, unsigned char key);
+extern void info_move_to_prev_xref (WINDOW *window, int count, unsigned char key);
+extern void info_move_to_next_xref (WINDOW *window, int count, unsigned char key);
/* Scrolling text within a window. */
-extern void info_scroll_forward (), info_scroll_backward ();
-extern void info_redraw_display (), info_toggle_wrap ();
-extern void info_move_to_window_line ();
-extern void info_up_line (), info_down_line ();
-extern void info_scroll_half_screen_down (), info_scroll_half_screen_up ();
+extern void info_scroll_forward (WINDOW *window, int count, unsigned char key);
+extern void info_scroll_backward (WINDOW *window, int count, unsigned char key);
+extern void info_redraw_display (WINDOW *window, int count, unsigned char key);
+extern void info_toggle_wrap (WINDOW *window, int count, unsigned char key);
+extern void info_move_to_window_line (WINDOW *window, int count,
+ unsigned char key);
+extern void info_up_line (WINDOW *window, int count, unsigned char key);
+extern void info_down_line (WINDOW *window, int count, unsigned char key);
+extern void info_scroll_half_screen_down (WINDOW *window, int count,
+ unsigned char key);
+extern void info_scroll_half_screen_up (WINDOW *window, int count,
+ unsigned char key);
+extern void info_scroll_forward_set_window (WINDOW *window, int count,
+ unsigned char key);
+extern void info_scroll_forward_page_only (WINDOW *window, int count,
+ unsigned char key);
+extern void info_scroll_forward_page_only_set_window (WINDOW *window, int count,
+ unsigned char key);
+extern void info_scroll_backward_set_window (WINDOW *window, int count,
+ unsigned char key);
+extern void info_scroll_backward_page_only (WINDOW *window, int count,
+ unsigned char key);
+extern void info_scroll_backward_page_only_set_window (WINDOW *window, int count,
+ unsigned char key);
+extern void info_scroll_other_window_backward (WINDOW *window, int count,
+ unsigned char key);
/* Manipulating multiple windows. */
-extern void info_split_window (), info_delete_window ();
-extern void info_keep_one_window (), info_grow_window ();
-extern void info_scroll_other_window (), info_tile_windows ();
-extern void info_next_window (), info_prev_window ();
+extern void info_split_window (WINDOW *window, int count, unsigned char key);
+extern void info_delete_window (WINDOW *window, int count, unsigned char key);
+extern void info_keep_one_window (WINDOW *window, int count, unsigned char key);
+extern void info_grow_window (WINDOW *window, int count, unsigned char key);
+extern void info_scroll_other_window (WINDOW *window, int count,
+ unsigned char key);
+extern void info_tile_windows (WINDOW *window, int count, unsigned char key);
+extern void info_next_window (WINDOW *window, int count, unsigned char key);
+extern void info_prev_window (WINDOW *window, int count, unsigned char key);
/* Selecting nodes. */
-extern void info_next_node (), info_prev_node (), info_up_node ();
-extern void info_last_node (), info_first_node (), info_history_node ();
-extern void info_goto_node (), info_top_node (), info_dir_node ();
-extern void info_global_next_node (), info_global_prev_node ();
-extern void info_kill_node (), info_view_file ();
-extern void info_menu_sequence ();
-extern NODE *info_follow_menus (/* initial_node, menus, errstr, errarg */);
+extern void info_next_node (WINDOW *window, int count, unsigned char key);
+extern void info_prev_node (WINDOW *window, int count, unsigned char key);
+extern void info_up_node (WINDOW *window, int count, unsigned char key);
+extern void info_last_node (WINDOW *window, int count, unsigned char key);
+extern void info_first_node (WINDOW *window, int count, unsigned char key);
+extern void info_history_node (WINDOW *window, int count, unsigned char key);
+extern void info_goto_node (WINDOW *window, int count, unsigned char key);
+extern void info_goto_invocation_node (WINDOW *window, int count,
+ unsigned char key);
+extern void info_top_node (WINDOW *window, int count, unsigned char key);
+extern void info_dir_node (WINDOW *window, int count, unsigned char key);
+extern void info_global_next_node (WINDOW *window, int count, unsigned char key);
+extern void info_global_prev_node (WINDOW *window, int count, unsigned char key);
+extern void info_kill_node (WINDOW *window, int count, unsigned char key);
+extern void info_view_file (WINDOW *window, int count, unsigned char key);
+extern void info_menu_sequence (WINDOW *window, int count, unsigned char key);
+extern NODE *info_follow_menus (NODE *initial_node, char **menus,
+ const char **errstr, char **errarg1, char **errarg2);
+extern void info_man (WINDOW *window, int count, unsigned char key);
+extern void list_visited_nodes (WINDOW *window, int count, unsigned char key);
+extern void select_visited_node (WINDOW *window, int count, unsigned char key);
/* Selecting cross references. */
-extern void info_menu_digit (), info_menu_item (), info_xref_item ();
-extern void info_find_menu (), info_select_reference_this_line ();
+extern void info_menu_digit (WINDOW *window, int count, unsigned char key);
+extern void info_menu_item (WINDOW *window, int count, unsigned char key);
+extern void info_xref_item (WINDOW *window, int count, unsigned char key);
+extern void info_find_menu (WINDOW *window, int count, unsigned char key);
+extern void info_select_reference_this_line (WINDOW *window, int count,
+ unsigned char key);
+extern void info_last_menu_item (WINDOW *window, int count, unsigned char key);
+extern void info_visit_menu (WINDOW *window, int count, unsigned char key);
/* Hacking numeric arguments. */
extern int info_explicit_arg, info_numeric_arg, info_numeric_arg_sign;
-extern void info_add_digit_to_numeric_arg (), info_universal_argument ();
-extern void info_initialize_numeric_arg (), info_numeric_arg_digit_loop ();
+extern void info_add_digit_to_numeric_arg (WINDOW *window, int count,
+ unsigned char key);
+extern void info_universal_argument (WINDOW *window, int count,
+ unsigned char key);
+extern void info_initialize_numeric_arg (void);
+extern void info_numeric_arg_digit_loop (WINDOW *window, int count,
+ unsigned char key);
/* Searching commands. */
-extern void info_search (), isearch_forward (), isearch_backward ();
-extern void info_search_case_sensitively (), info_search_backward ();
-extern void info_search_next (), info_search_previous ();
+extern void info_search (WINDOW *window, int count, unsigned char key);
+extern void isearch_forward (WINDOW *window, int count, unsigned char key);
+extern void isearch_backward (WINDOW *window, int count, unsigned char key);
+extern void info_search_case_sensitively (WINDOW *window, int count,
+ unsigned char key);
+extern void info_search_backward (WINDOW *window, int count, unsigned char key);
+extern void info_search_next (WINDOW *window, int count, unsigned char key);
+extern void info_search_previous (WINDOW *window, int count, unsigned char key);
/* Dumping and printing nodes. */
-extern void info_print_node ();
+extern void info_print_node (WINDOW *window, int count, unsigned char key);
+
+/* Footnotes. */
+extern void info_show_footnotes (WINDOW *window, int count, unsigned char key);
/* Miscellaneous commands. */
-extern void info_abort_key (), info_quit (), info_do_lowercase_version ();
+extern void info_abort_key (WINDOW *window, int count, unsigned char key);
+extern void info_quit (WINDOW *window, int count, unsigned char key);
+extern void info_do_lowercase_version (WINDOW *window, int count,
+ unsigned char key);
#endif /* not SESSION_H */
diff --git a/contrib/texinfo/info/signals.c b/contrib/texinfo/info/signals.c
index 61e5f97..724768b 100644
--- a/contrib/texinfo/info/signals.c
+++ b/contrib/texinfo/info/signals.c
@@ -1,7 +1,7 @@
-/* signals.c -- install and maintain Info signal handlers.
- $Id: signals.c,v 1.4 2003/01/29 19:23:22 karl Exp $
+/* signals.c -- install and maintain signal handlers.
+ $Id: signals.c,v 1.7 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1993, 1994, 1995, 1998, 2002, 2003 Free Software
+ Copyright (C) 1993, 1994, 1995, 1998, 2002, 2003, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -18,11 +18,13 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- Written by Brian Fox (bfox@ai.mit.edu). */
+ Originally written by Brian Fox (bfox@ai.mit.edu). */
#include "info.h"
#include "signals.h"
+void initialize_info_signal_handler (void);
+
/* **************************************************************** */
/* */
/* Pretending That We Have POSIX Signals */
@@ -32,8 +34,7 @@
#if !defined (HAVE_SIGPROCMASK) && defined (HAVE_SIGSETMASK)
/* Perform OPERATION on NEWSET, perhaps leaving information in OLDSET. */
static void
-sigprocmask (operation, newset, oldset)
- int operation, *newset, *oldset;
+sigprocmask (int operation, int *newset, int *oldset)
{
switch (operation)
{
@@ -64,8 +65,7 @@ sigprocmask (operation, newset, oldset)
#if defined (HAVE_SIGACTION) || defined (HAVE_SIGPROCMASK) ||\
defined (HAVE_SIGSETMASK)
static void
-mask_termsig (set)
- sigset_t *set;
+mask_termsig (sigset_t *set)
{
# if defined (SIGTSTP)
sigaddset (set, SIGTSTP);
@@ -75,6 +75,9 @@ mask_termsig (set)
# if defined (SIGWINCH)
sigaddset (set, SIGWINCH);
# endif
+#if defined (SIGQUIT)
+ sigaddset (set, SIGQUIT);
+#endif
#if defined (SIGINT)
sigaddset (set, SIGINT);
#endif
@@ -84,23 +87,19 @@ mask_termsig (set)
}
#endif /* HAVE_SIGACTION || HAVE_SIGPROCMASK || HAVE_SIGSETMASK */
-static RETSIGTYPE info_signal_proc ();
+static RETSIGTYPE info_signal_proc (int sig);
#if defined (HAVE_SIGACTION)
typedef struct sigaction signal_info;
signal_info info_signal_handler;
static void
-set_termsig (sig, old)
- int sig;
- signal_info *old;
+set_termsig (int sig, signal_info *old)
{
sigaction (sig, &info_signal_handler, old);
}
static void
-restore_termsig (sig, saved)
- int sig;
- const signal_info *saved;
+restore_termsig (int sig, const signal_info *saved)
{
sigaction (sig, saved, NULL);
}
@@ -114,15 +113,20 @@ static int term_conf_busy = 0;
static signal_info old_TSTP, old_TTOU, old_TTIN;
static signal_info old_WINCH, old_INT, old_USR1;
+static signal_info old_QUIT;
void
-initialize_info_signal_handler ()
+initialize_info_signal_handler (void)
{
-#if defined (HAVE_SIGACTION)
+#ifdef SA_NOCLDSTOP
+ /* (Based on info from Paul Eggert found in coreutils.) Don't use
+ HAVE_SIGACTION to decide whether to use the sa_handler, sa_flags,
+ sa_mask members, as some systems (Solaris 7+) don't define them. Use
+ SA_NOCLDSTOP instead; it's been part of POSIX.1 since day 1 (in 1988). */
info_signal_handler.sa_handler = info_signal_proc;
info_signal_handler.sa_flags = 0;
mask_termsig (&info_signal_handler.sa_mask);
-#endif /* HAVE_SIGACTION */
+#endif /* SA_NOCLDSTOP */
#if defined (SIGTSTP)
set_termsig (SIGTSTP, &old_TSTP);
@@ -134,6 +138,10 @@ initialize_info_signal_handler ()
set_termsig (SIGWINCH, &old_WINCH);
#endif
+#if defined (SIGQUIT)
+ set_termsig (SIGQUIT, &old_QUIT);
+#endif
+
#if defined (SIGINT)
set_termsig (SIGINT, &old_INT);
#endif
@@ -145,7 +153,7 @@ initialize_info_signal_handler ()
}
static void
-redisplay_after_signal ()
+redisplay_after_signal (void)
{
terminal_clear_screen ();
display_clear_display (the_display);
@@ -156,7 +164,7 @@ redisplay_after_signal ()
}
static void
-reset_info_window_sizes ()
+reset_info_window_sizes (void)
{
terminal_goto_xy (0, 0);
fflush (stdout);
@@ -164,15 +172,14 @@ reset_info_window_sizes ()
terminal_get_screen_size ();
terminal_prep_terminal ();
display_initialize_display (screenwidth, screenheight);
- window_new_screen_size (screenwidth, screenheight, NULL);
+ window_new_screen_size (screenwidth, screenheight);
redisplay_after_signal ();
}
static RETSIGTYPE
-info_signal_proc (sig)
- int sig;
+info_signal_proc (int sig)
{
- signal_info *old_signal_handler;
+ signal_info *old_signal_handler = NULL;
#if !defined (HAVE_SIGACTION)
/* best effort: first increment this counter and later block signals */
@@ -195,6 +202,9 @@ info_signal_proc (sig)
case SIGTTOU:
case SIGTTIN:
#endif
+#if defined (SIGQUIT)
+ case SIGQUIT:
+#endif
#if defined (SIGINT)
case SIGINT:
#endif
@@ -207,6 +217,10 @@ info_signal_proc (sig)
if (sig == SIGTTIN)
old_signal_handler = &old_TTIN;
#endif /* SIGTSTP */
+#if defined (SIGQUIT)
+ if (sig == SIGQUIT)
+ old_signal_handler = &old_QUIT;
+#endif /* SIGQUIT */
#if defined (SIGINT)
if (sig == SIGINT)
old_signal_handler = &old_INT;
diff --git a/contrib/texinfo/info/signals.h b/contrib/texinfo/info/signals.h
index 5c9f252..2e3761e 100644
--- a/contrib/texinfo/info/signals.h
+++ b/contrib/texinfo/info/signals.h
@@ -1,7 +1,7 @@
/* signals.h -- header to include system dependent signal definitions.
- $Id: signals.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: signals.h,v 1.2 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1993, 1994, 1995, 1997, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1994, 1995, 1997, 2002, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- Written by Brian Fox (bfox@ai.mit.edu). */
+ Originally written by Brian Fox (bfox@ai.mit.edu). */
#ifndef INFO_SIGNALS_H
#define INFO_SIGNALS_H
@@ -34,7 +34,10 @@
# define sigmask(x) (1 << ((x)-1))
#endif /* !HAVE_SIGPROCMASK && !sigmask */
-#if !defined (HAVE_SIGPROCMASK)
+/* Without SA_NOCLDSTOP, sigset_t might end up being undefined even
+ though we have sigprocmask, on older systems, according to Nelson
+ Beebe. The test is from coreutils/sort.c, via Paul Eggert. */
+#if !defined (HAVE_SIGPROCMASK) || !defined (SA_NOCLDSTOP)
# if !defined (SIG_BLOCK)
# define SIG_UNBLOCK 1
# define SIG_BLOCK 2
diff --git a/contrib/texinfo/info/termdep.h b/contrib/texinfo/info/termdep.h
index 8d2758a..45f38ac 100644
--- a/contrib/texinfo/info/termdep.h
+++ b/contrib/texinfo/info/termdep.h
@@ -1,5 +1,5 @@
/* termdep.h -- system things that terminal.c depends on.
- $Id: termdep.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: termdep.h,v 1.2 2004/04/11 17:56:46 karl Exp $
Copyright (C) 1993, 1996, 1997, 1998, 2001, 2002 Free Software
Foundation, Inc.
diff --git a/contrib/texinfo/info/terminal.c b/contrib/texinfo/info/terminal.c
index ff9913a..9238643 100644
--- a/contrib/texinfo/info/terminal.c
+++ b/contrib/texinfo/info/terminal.c
@@ -1,8 +1,8 @@
/* terminal.c -- how to handle the physical terminal for Info.
- $Id: terminal.c,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: terminal.c,v 1.3 2004/04/11 17:56:46 karl Exp $
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1996, 1997, 1998,
- 1999, 2001, 2002 Free Software Foundation, Inc.
+ 1999, 2001, 2002, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -18,7 +18,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- Written by Brian Fox (bfox@ai.mit.edu). */
+ Originally written by Brian Fox (bfox@ai.mit.edu). */
#include "info.h"
#include "terminal.h"
@@ -103,9 +103,6 @@ static char *visible_bell;
/* The string to write to turn on the meta key, if this term has one. */
static char *term_mm;
-/* The string to write to turn off the meta key, if this term has one. */
-static char *term_mo;
-
/* The string to turn on inverse mode, if this term has one. */
static char *term_invbeg;
@@ -116,8 +113,7 @@ static char *term_invend;
return its argument, all the code I've looked at (termutils, less)
does so, so fine. */
static int
-output_character_function (c)
- int c;
+output_character_function (int c)
{
putc (c, stdout);
return c;
@@ -132,9 +128,9 @@ output_character_function (c)
/* Tell the terminal that we will be doing cursor addressable motion. */
static void
-terminal_begin_using_terminal ()
+terminal_begin_using_terminal (void)
{
- RETSIGTYPE (*sigsave) ();
+ RETSIGTYPE (*sigsave) (int signum);
if (term_keypad_on)
send_to_terminal (term_keypad_on);
@@ -163,9 +159,9 @@ terminal_begin_using_terminal ()
/* Tell the terminal that we will not be doing any more cursor
addressable motion. */
static void
-terminal_end_using_terminal ()
+terminal_end_using_terminal (void)
{
- RETSIGTYPE (*sigsave) ();
+ RETSIGTYPE (*sigsave) (int signum);
if (term_keypad_off)
send_to_terminal (term_keypad_off);
@@ -230,8 +226,7 @@ char *term_kx = NULL; /* del */
/* Move the cursor to the terminal location of X and Y. */
void
-terminal_goto_xy (x, y)
- int x, y;
+terminal_goto_xy (int x, int y)
{
if (terminal_goto_xy_hook)
(*terminal_goto_xy_hook) (x, y);
@@ -244,8 +239,7 @@ terminal_goto_xy (x, y)
/* Print STRING to the terminal at the current position. */
void
-terminal_put_text (string)
- char *string;
+terminal_put_text (char *string)
{
if (terminal_put_text_hook)
(*terminal_put_text_hook) (string);
@@ -257,9 +251,7 @@ terminal_put_text (string)
/* Print NCHARS from STRING to the terminal at the current position. */
void
-terminal_write_chars (string, nchars)
- char *string;
- int nchars;
+terminal_write_chars (char *string, int nchars)
{
if (terminal_write_chars_hook)
(*terminal_write_chars_hook) (string, nchars);
@@ -272,7 +264,7 @@ terminal_write_chars (string, nchars)
/* Clear from the current position of the cursor to the end of the line. */
void
-terminal_clear_to_eol ()
+terminal_clear_to_eol (void)
{
if (terminal_clear_to_eol_hook)
(*terminal_clear_to_eol_hook) ();
@@ -284,7 +276,7 @@ terminal_clear_to_eol ()
/* Clear the entire terminal screen. */
void
-terminal_clear_screen ()
+terminal_clear_screen (void)
{
if (terminal_clear_screen_hook)
(*terminal_clear_screen_hook) ();
@@ -296,7 +288,7 @@ terminal_clear_screen ()
/* Move the cursor up one line. */
void
-terminal_up_line ()
+terminal_up_line (void)
{
if (terminal_up_line_hook)
(*terminal_up_line_hook) ();
@@ -308,7 +300,7 @@ terminal_up_line ()
/* Move the cursor down one line. */
void
-terminal_down_line ()
+terminal_down_line (void)
{
if (terminal_down_line_hook)
(*terminal_down_line_hook) ();
@@ -320,7 +312,7 @@ terminal_down_line ()
/* Turn on reverse video if possible. */
void
-terminal_begin_inverse ()
+terminal_begin_inverse (void)
{
if (terminal_begin_inverse_hook)
(*terminal_begin_inverse_hook) ();
@@ -332,7 +324,7 @@ terminal_begin_inverse ()
/* Turn off reverse video if possible. */
void
-terminal_end_inverse ()
+terminal_end_inverse (void)
{
if (terminal_end_inverse_hook)
(*terminal_end_inverse_hook) ();
@@ -345,7 +337,7 @@ terminal_end_inverse ()
/* Ring the terminal bell. The bell is run visibly if it both has one and
terminal_use_visible_bell_p is non-zero. */
void
-terminal_ring_bell ()
+terminal_ring_bell (void)
{
if (terminal_ring_bell_hook)
(*terminal_ring_bell_hook) ();
@@ -360,8 +352,7 @@ terminal_ring_bell ()
/* At the line START, delete COUNT lines from the terminal display. */
static void
-terminal_delete_lines (start, count)
- int start, count;
+terminal_delete_lines (int start, int count)
{
int lines;
@@ -384,8 +375,7 @@ terminal_delete_lines (start, count)
/* At the line START, insert COUNT lines in the terminal display. */
static void
-terminal_insert_lines (start, count)
- int start, count;
+terminal_insert_lines (int start, int count)
{
int lines;
@@ -412,8 +402,7 @@ terminal_insert_lines (start, count)
towards the top of the screen, else they are scrolled towards the
bottom of the screen. */
void
-terminal_scroll_terminal (start, end, amount)
- int start, end, amount;
+terminal_scroll_terminal (int start, int end, int amount)
{
if (!terminal_can_scroll)
return;
@@ -449,8 +438,7 @@ terminal_scroll_terminal (start, end, amount)
/* Re-initialize the terminal considering that the TERM/TERMCAP variable
has changed. */
void
-terminal_new_terminal (terminal_name)
- char *terminal_name;
+terminal_new_terminal (char *terminal_name)
{
if (terminal_new_terminal_hook)
(*terminal_new_terminal_hook) (terminal_name);
@@ -462,7 +450,7 @@ terminal_new_terminal (terminal_name)
/* Set the global variables SCREENWIDTH and SCREENHEIGHT. */
void
-terminal_get_screen_size ()
+terminal_get_screen_size (void)
{
if (terminal_get_screen_size_hook)
(*terminal_get_screen_size_hook) ();
@@ -522,8 +510,7 @@ terminal_get_screen_size ()
TERMINAL_HAS_META_P becomes nonzero if this terminal supports a Meta
key. Finally, the terminal screen is cleared. */
void
-terminal_initialize_terminal (terminal_name)
- char *terminal_name;
+terminal_initialize_terminal (char *terminal_name)
{
char *buffer;
@@ -632,12 +619,10 @@ terminal_initialize_terminal (terminal_name)
if (terminal_has_meta_p)
{
term_mm = tgetstr ("mm", &buffer);
- term_mo = tgetstr ("mo", &buffer);
}
else
{
term_mm = NULL;
- term_mo = NULL;
}
/* Attempt to find the arrow keys. */
@@ -704,7 +689,7 @@ struct ltchars original_ltchars;
/* Prepare to start using the terminal to read characters singly. */
void
-terminal_prep_terminal ()
+terminal_prep_terminal (void)
{
int tty;
@@ -844,7 +829,7 @@ terminal_prep_terminal ()
/* Restore the tty settings back to what they were before we started using
this terminal. */
void
-terminal_unprep_terminal ()
+terminal_unprep_terminal (void)
{
int tty;
diff --git a/contrib/texinfo/info/terminal.h b/contrib/texinfo/info/terminal.h
index 647d468..dbf6b49 100644
--- a/contrib/texinfo/info/terminal.h
+++ b/contrib/texinfo/info/terminal.h
@@ -1,7 +1,8 @@
/* terminal.h -- The external interface to terminal I/O.
- $Id: terminal.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: terminal.h,v 1.3 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1993, 1996, 1997, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1996, 1997, 2001, 2002, 2004 Free Software
+ Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -52,68 +53,71 @@ extern int terminal_can_scroll;
The variables SCREENHEIGHT and SCREENWIDTH are set to the dimensions that
this terminal actually has. The variable TERMINAL_HAS_META_P becomes non-
zero if this terminal supports a Meta key. */
-extern void terminal_initialize_terminal ();
+extern void terminal_initialize_terminal (char *terminal_name);
extern VFunction *terminal_initialize_terminal_hook;
/* Return the current screen width and height in the variables
SCREENWIDTH and SCREENHEIGHT. */
-extern void terminal_get_screen_size ();
+extern void terminal_get_screen_size (void);
extern VFunction *terminal_get_screen_size_hook;
/* Save and restore tty settings. */
-extern void terminal_prep_terminal (), terminal_unprep_terminal ();
-extern VFunction *terminal_prep_terminal_hook, *terminal_unprep_terminal_hook;
+extern void terminal_prep_terminal (void);
+extern void terminal_unprep_terminal (void);
+
+extern VFunction *terminal_prep_terminal_hook;
+extern VFunction *terminal_unprep_terminal_hook;
/* Re-initialize the terminal to TERMINAL_NAME. */
-extern void terminal_new_terminal ();
+extern void terminal_new_terminal (char *terminal_name);
extern VFunction *terminal_new_terminal_hook;
/* Move the cursor to the terminal location of X and Y. */
-extern void terminal_goto_xy ();
+extern void terminal_goto_xy (int x, int y);
extern VFunction *terminal_goto_xy_hook;
/* Print STRING to the terminal at the current position. */
-extern void terminal_put_text ();
+extern void terminal_put_text (char *string);
extern VFunction *terminal_put_text_hook;
/* Print NCHARS from STRING to the terminal at the current position. */
-extern void terminal_write_chars ();
+extern void terminal_write_chars (char *string, int nchars);
extern VFunction *terminal_write_chars_hook;
/* Clear from the current position of the cursor to the end of the line. */
-extern void terminal_clear_to_eol ();
+extern void terminal_clear_to_eol (void);
extern VFunction *terminal_clear_to_eol_hook;
/* Clear the entire terminal screen. */
-extern void terminal_clear_screen ();
+extern void terminal_clear_screen (void);
extern VFunction *terminal_clear_screen_hook;
/* Move the cursor up one line. */
-extern void terminal_up_line ();
+extern void terminal_up_line (void);
extern VFunction *terminal_up_line_hook;
/* Move the cursor down one line. */
-extern void terminal_down_line ();
+extern void terminal_down_line (void);
extern VFunction *terminal_down_line_hook;
/* Turn on reverse video if possible. */
-extern void terminal_begin_inverse ();
+extern void terminal_begin_inverse (void);
extern VFunction *terminal_begin_inverse_hook;
/* Turn off reverse video if possible. */
-extern void terminal_end_inverse ();
+extern void terminal_end_inverse (void);
extern VFunction *terminal_end_inverse_hook;
/* Scroll an area of the terminal, starting with the region from START
to END, AMOUNT lines. If AMOUNT is negative, the lines are scrolled
towards the top of the screen, else they are scrolled towards the
bottom of the screen. */
-extern void terminal_scroll_terminal ();
+extern void terminal_scroll_terminal (int start, int end, int amount);
extern VFunction *terminal_scroll_terminal_hook;
/* Ring the terminal bell. The bell is run visibly if it both has one and
terminal_use_visible_bell_p is non-zero. */
-extern void terminal_ring_bell ();
+extern void terminal_ring_bell (void);
extern VFunction *terminal_ring_bell_hook;
/* The key sequences output by special keys, if this terminal has any. */
diff --git a/contrib/texinfo/info/tilde.c b/contrib/texinfo/info/tilde.c
index 19f56b1..ac32abd 100644
--- a/contrib/texinfo/info/tilde.c
+++ b/contrib/texinfo/info/tilde.c
@@ -1,8 +1,8 @@
/* tilde.c -- tilde expansion code (~/foo := $HOME/foo).
- $Id: tilde.c,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: tilde.c,v 1.3 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1996, 1998, 1999, 2002
- Free Software Foundation, Inc.
+ Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1996, 1998, 1999,
+ 2002, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -22,6 +22,7 @@
/* Include config.h before doing alloca. */
#include "info.h"
+#include "tilde.h"
#if defined (TEST) || defined (STATIC_MALLOC)
static void *xmalloc (), *xrealloc ();
@@ -59,9 +60,7 @@ char **tilde_additional_suffixes = default_suffixes;
the tilde which starts the expansion. Place the length of the text
which identified this tilde starter in LEN, excluding the tilde itself. */
static int
-tilde_find_prefix (string, len)
- char *string;
- int *len;
+tilde_find_prefix (char *string, int *len)
{
register int i, j, string_len;
register char **prefixes = tilde_additional_prefixes;
@@ -92,8 +91,7 @@ tilde_find_prefix (string, len)
/* Find the end of a tilde expansion in STRING, and return the index of
the character which ends the tilde definition. */
static int
-tilde_find_suffix (string)
- char *string;
+tilde_find_suffix (char *string)
{
register int i, j, string_len;
register char **suffixes = tilde_additional_suffixes;
@@ -116,10 +114,9 @@ tilde_find_suffix (string)
/* Return a new string which is the result of tilde expanding STRING. */
char *
-tilde_expand (string)
- char *string;
+tilde_expand (char *string)
{
- char *result, *tilde_expand_word ();
+ char *result;
int result_size, result_index;
result_size = result_index = 0;
@@ -179,8 +176,7 @@ tilde_expand (string)
/* Do the work of tilde expansion on FILENAME. FILENAME starts with a
tilde. If there is no expansion, call tilde_expansion_failure_hook. */
char *
-tilde_expand_word (filename)
- char *filename;
+tilde_expand_word (char *filename)
{
char *dirname = filename ? xstrdup (filename) : NULL;
@@ -236,9 +232,7 @@ tilde_expand_word (filename)
expansion, then let them try. */
if (tilde_expansion_failure_hook)
{
- char *expansion;
-
- expansion = (*tilde_expansion_failure_hook) (username);
+ char *expansion = (*tilde_expansion_failure_hook) (username);
if (expansion)
{
diff --git a/contrib/texinfo/info/tilde.h b/contrib/texinfo/info/tilde.h
index 83f534b..b499f3e 100644
--- a/contrib/texinfo/info/tilde.h
+++ b/contrib/texinfo/info/tilde.h
@@ -1,12 +1,10 @@
-/* tilde.h: Externally available variables and function in libtilde.a. */
-
-/* This file is part of GNU Info, a program for reading online documentation
- stored in Info format.
+/* tilde.h: Externally available variables and function in libtilde.a.
+ $Id: tilde.h,v 1.3 2004/04/11 17:56:46 karl Exp $
This file has appeared in prior works by the Free Software Foundation;
thus it carries copyright dates from 1988 through 1993.
- Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993 Free Software
+ Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -47,10 +45,10 @@ extern char **tilde_additional_prefixes;
extern char **tilde_additional_suffixes;
/* Return a new string which is the result of tilde expanding STRING. */
-extern char *tilde_expand ();
+extern char *tilde_expand (char *string);
/* Do the work of tilde expansion on FILENAME. FILENAME starts with a
tilde. If there is no expansion, call tilde_expansion_failure_hook. */
-extern char *tilde_expand_word ();
+extern char *tilde_expand_word (char *filename);
#endif /* not TILDE_H */
diff --git a/contrib/texinfo/info/variables.c b/contrib/texinfo/info/variables.c
index 7280325..3636801 100644
--- a/contrib/texinfo/info/variables.c
+++ b/contrib/texinfo/info/variables.c
@@ -1,7 +1,7 @@
/* variables.c -- how to manipulate user visible variables in Info.
- $Id: variables.c,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: variables.c,v 1.3 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1993, 1997, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 2001, 2002, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -77,7 +77,7 @@ DECLARE_INFO_COMMAND (describe_variable, _("Explain the use of a variable"))
char *description;
/* Get the variable's name. */
- var = read_variable_name (_("Describe variable: "), window);
+ var = read_variable_name ((char *) _("Describe variable: "), window);
if (!var)
return;
@@ -92,7 +92,7 @@ DECLARE_INFO_COMMAND (describe_variable, _("Explain the use of a variable"))
sprintf (description, "%s (%d): %s.",
var->name, *(var->value), _(var->doc));
- window_message_in_echo_area ("%s", description);
+ window_message_in_echo_area ("%s", description, NULL);
free (description);
}
@@ -102,7 +102,7 @@ DECLARE_INFO_COMMAND (set_variable, _("Set the value of an Info variable"))
char *line;
/* Get the variable's name and value. */
- var = read_variable_name (_("Set variable: "), window);
+ var = read_variable_name ((char *) _("Set variable: "), window);
if (!var)
return;
@@ -201,9 +201,7 @@ DECLARE_INFO_COMMAND (set_variable, _("Set the value of an Info variable"))
address of a VARIABLE_ALIST member. A return value of NULL indicates
that no variable could be read. */
VARIABLE_ALIST *
-read_variable_name (prompt, window)
- char *prompt;
- WINDOW *window;
+read_variable_name (char *prompt, WINDOW *window)
{
register int i;
char *line;
@@ -249,7 +247,7 @@ read_variable_name (prompt, window)
/* Make an array of REFERENCE which actually contains the names of the
variables available in Info. */
REFERENCE **
-make_variable_completions_array ()
+make_variable_completions_array (void)
{
register int i;
REFERENCE **array = (REFERENCE **)NULL;
@@ -274,9 +272,7 @@ make_variable_completions_array ()
#if defined(INFOKEY)
void
-set_variable_to_value(name, value)
- char *name;
- char *value;
+set_variable_to_value(char *name, char *value)
{
register int i;
diff --git a/contrib/texinfo/info/variables.h b/contrib/texinfo/info/variables.h
index 58169d3..7e5b082 100644
--- a/contrib/texinfo/info/variables.h
+++ b/contrib/texinfo/info/variables.h
@@ -1,10 +1,10 @@
/* variables.h -- Description of user visible variables in Info.
- $Id: variables.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: variables.h,v 1.3 2004/04/11 17:56:46 karl Exp $
This file is part of GNU Info, a program for reading online documentation
stored in Info format.
- Copyright (C) 1993, 97 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -42,14 +42,15 @@ typedef struct {
/* Read the name of an Info variable in the echo area and return the
address of a VARIABLE_ALIST member. A return value of NULL indicates
that no variable could be read. */
-extern VARIABLE_ALIST *read_variable_name ();
+extern VARIABLE_ALIST *read_variable_name (char *prompt, WINDOW *window);
/* Make an array of REFERENCE which actually contains the names of the
variables available in Info. */
-extern REFERENCE **make_variable_completions_array ();
+extern REFERENCE **make_variable_completions_array (void);
/* Set the value of an info variable. */
-extern void set_variable ();
+extern void set_variable (WINDOW *window, int count, unsigned char key);
+extern void describe_variable (WINDOW *window, int count, unsigned char key);
/* The list of user-visible variables. */
extern int auto_footnotes_p;
diff --git a/contrib/texinfo/info/window.c b/contrib/texinfo/info/window.c
index 93b9644..cf5665b 100644
--- a/contrib/texinfo/info/window.c
+++ b/contrib/texinfo/info/window.c
@@ -1,7 +1,7 @@
/* window.c -- windows in Info.
- $Id: window.c,v 1.2 2003/02/11 16:39:06 karl Exp $
+ $Id: window.c,v 1.4 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1993, 1997, 1998, 2001, 2002, 2003 Free Software
+ Copyright (C) 1993, 1997, 1998, 2001, 2002, 2003, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -51,8 +51,7 @@ WINDOW *active_window = NULL;
Create the first window ever.
You pass the dimensions of the total screen size. */
void
-window_initialize_windows (width, height)
- int width, height;
+window_initialize_windows (int width, int height)
{
the_screen = xmalloc (sizeof (WINDOW));
the_echo_area = xmalloc (sizeof (WINDOW));
@@ -83,7 +82,7 @@ window_initialize_windows (width, height)
area. */
the_echo_area->height = ECHO_AREA_HEIGHT;
active_window->height = the_screen->height - 1 - the_echo_area->height;
- window_new_screen_size (width, height, NULL);
+ window_new_screen_size (width, height);
/* The echo area uses a different keymap than normal info windows. */
the_echo_area->keymap = echo_area_keymap;
@@ -103,8 +102,7 @@ window_initialize_windows (width, height)
VFunction *window_deletion_notifier = NULL;
void
-window_new_screen_size (width, height)
- int width, height;
+window_new_screen_size (int width, int height)
{
register WINDOW *win;
int delta_height, delta_each, delta_leftover;
@@ -232,7 +230,7 @@ window_new_screen_size (width, height)
if ((win->height < WINDOW_MIN_HEIGHT) ||
(win->height > avail))
{
- WINDOW *lastwin;
+ WINDOW *lastwin = NULL;
/* Split the space among the available windows. */
delta_each = avail / numwins;
@@ -262,8 +260,7 @@ window_new_screen_size (width, height)
window. If the window could not be made return a NULL pointer. The
active window is not changed.*/
WINDOW *
-window_make_window (node)
- NODE *node;
+window_make_window (NODE *node)
{
WINDOW *window;
@@ -377,9 +374,7 @@ window_make_window (node)
the previous and next windows in the chain. If there is only one user
window, then no change takes place. */
void
-window_change_window_height (window, amount)
- WINDOW *window;
- int amount;
+window_change_window_height (WINDOW *window, int amount)
{
register WINDOW *win, *prev, *next;
@@ -510,8 +505,7 @@ window_change_window_height (window, amount)
internal nodes as well, otherwise do not change the height of such
windows. */
void
-window_tile_windows (style)
- int style;
+window_tile_windows (int style)
{
WINDOW *win, *last_adjusted;
int numwins, avail, per_win_height, leftover;
@@ -564,8 +558,7 @@ window_tile_windows (style)
/* Toggle the state of line wrapping in WINDOW. This can do a bit of fancy
redisplay. */
void
-window_toggle_wrap (window)
- WINDOW *window;
+window_toggle_wrap (WINDOW *window)
{
if (window->flags & W_NoWrap)
window->flags &= ~W_NoWrap;
@@ -599,9 +592,7 @@ window_toggle_wrap (window)
/* Set WINDOW to display NODE. */
void
-window_set_node_of_window (window, node)
- WINDOW *window;
- NODE *node;
+window_set_node_of_window (WINDOW *window, NODE *node)
{
window->node = node;
window->pagetop = 0;
@@ -619,8 +610,7 @@ window_set_node_of_window (window, node)
If the active window is the next or previous window, choose that window
as the recipient of the extra space. Otherwise, prefer the next window. */
void
-window_delete_window (window)
- WINDOW *window;
+window_delete_window (WINDOW *window)
{
WINDOW *next, *prev, *window_to_fix;
@@ -691,9 +681,7 @@ window_delete_window (window)
/* For every window in CHAIN, set the flags member to have FLAG set. */
void
-window_mark_chain (chain, flag)
- WINDOW *chain;
- int flag;
+window_mark_chain (WINDOW *chain, int flag)
{
register WINDOW *win;
@@ -703,9 +691,7 @@ window_mark_chain (chain, flag)
/* For every window in CHAIN, clear the flags member of FLAG. */
void
-window_unmark_chain (chain, flag)
- WINDOW *chain;
- int flag;
+window_unmark_chain (WINDOW *chain, int flag)
{
register WINDOW *win;
@@ -716,8 +702,7 @@ window_unmark_chain (chain, flag)
/* Return the number of characters it takes to display CHARACTER on the
screen at HPOS. */
int
-character_width (character, hpos)
- int character, hpos;
+character_width (int character, int hpos)
{
int printable_limit = 127;
int width = 1;
@@ -751,9 +736,7 @@ character_width (character, hpos)
/* Return the number of characters it takes to display STRING on the screen
at HPOS. */
int
-string_width (string, hpos)
- char *string;
- int hpos;
+string_width (char *string, int hpos)
{
register int i, width, this_char_width;
@@ -782,8 +765,7 @@ string_width (string, hpos)
/* Quickly guess the approximate number of lines that NODE would
take to display. This really only counts carriage returns. */
int
-window_physical_lines (node)
- NODE *node;
+window_physical_lines (NODE *node)
{
register int i, lines;
char *contents;
@@ -802,8 +784,7 @@ window_physical_lines (node)
/* Calculate a list of line starts for the node belonging to WINDOW. The line
starts are pointers to the actual text within WINDOW->NODE. */
void
-calculate_line_starts (window)
- WINDOW *window;
+calculate_line_starts (WINDOW *window)
{
register int i, hpos;
char **line_starts = NULL;
@@ -869,7 +850,7 @@ calculate_line_starts (window)
cwidth = character_width (c, hpos);
/* If this character fits within this line, just do the next one. */
- if ((hpos + cwidth) < window->width)
+ if ((hpos + cwidth) < (unsigned int) window->width)
{
i++;
hpos += cwidth;
@@ -918,8 +899,7 @@ calculate_line_starts (window)
/* Given WINDOW, recalculate the line starts for the node it displays. */
void
-recalculate_line_starts (window)
- WINDOW *window;
+recalculate_line_starts (WINDOW *window)
{
maybe_free (window->line_starts);
calculate_line_starts (window);
@@ -933,8 +913,7 @@ int window_scroll_step = 0;
/* Adjust the pagetop of WINDOW such that the cursor point will be visible. */
void
-window_adjust_pagetop (window)
- WINDOW *window;
+window_adjust_pagetop (WINDOW *window)
{
register int line = 0;
char *contents;
@@ -991,8 +970,7 @@ window_adjust_pagetop (window)
/* Return the index of the line containing point. */
int
-window_line_of_point (window)
- WINDOW *window;
+window_line_of_point (WINDOW *window)
{
register int i, start = 0;
@@ -1014,8 +992,7 @@ window_line_of_point (window)
/* Get and return the goal column for this window. */
int
-window_get_goal_column (window)
- WINDOW *window;
+window_get_goal_column (WINDOW *window)
{
if (!window->node)
return (-1);
@@ -1030,8 +1007,7 @@ window_get_goal_column (window)
/* Get and return the printed column offset of the cursor in this window. */
int
-window_get_cursor_column (window)
- WINDOW *window;
+window_get_cursor_column (WINDOW *window)
{
int i, hpos, end;
char *line;
@@ -1069,11 +1045,9 @@ window_get_cursor_column (window)
/* Count the number of characters in LINE that precede the printed column
offset of GOAL. */
int
-window_chars_to_goal (line, goal)
- char *line;
- int goal;
+window_chars_to_goal (char *line, int goal)
{
- register int i, check, hpos;
+ register int i, check = 0, hpos;
for (hpos = 0, i = 0; line[i] != '\n'; i++)
{
@@ -1099,8 +1073,7 @@ window_chars_to_goal (line, goal)
/* Create a modeline for WINDOW, and store it in window->modeline. */
void
-window_make_modeline (window)
- WINDOW *window;
+window_make_modeline (WINDOW *window)
{
register int i;
char *modeline;
@@ -1214,9 +1187,7 @@ window_make_modeline (window)
/* Make WINDOW start displaying at PERCENT percentage of its node. */
void
-window_goto_percentage (window, percent)
- WINDOW *window;
- int percent;
+window_goto_percentage (WINDOW *window, int percent)
{
int desired_line;
@@ -1235,9 +1206,7 @@ window_goto_percentage (window, percent)
/* Get the state of WINDOW, and save it in STATE. */
void
-window_get_state (window, state)
- WINDOW *window;
- WINDOW_STATE *state;
+window_get_state (WINDOW *window, SEARCH_STATE *state)
{
state->node = window->node;
state->pagetop = window->pagetop;
@@ -1246,9 +1215,7 @@ window_get_state (window, state)
/* Set the node, pagetop, and point of WINDOW. */
void
-window_set_state (window, state)
- WINDOW *window;
- WINDOW_STATE *state;
+window_set_state (WINDOW *window, SEARCH_STATE *state)
{
if (window->node != state->node)
window_set_node_of_window (window, state->node);
@@ -1264,7 +1231,7 @@ static NODE *echo_area_node = NULL;
/* Make the node of the_echo_area be an empty one. */
static void
-free_echo_area ()
+free_echo_area (void)
{
if (echo_area_node)
{
@@ -1279,7 +1246,7 @@ free_echo_area ()
/* Clear the echo area, removing any message that is already present.
The echo area is cleared immediately. */
void
-window_clear_echo_area ()
+window_clear_echo_area (void)
{
free_echo_area ();
display_update_one_window (the_echo_area);
@@ -1290,9 +1257,7 @@ window_clear_echo_area ()
printf () hair is present. The message appears immediately. If there was
already a message appearing in the echo area, it is removed. */
void
-window_message_in_echo_area (format, arg1, arg2)
- char *format;
- void *arg1, *arg2;
+window_message_in_echo_area (char *format, void *arg1, void *arg2)
{
free_echo_area ();
echo_area_node = build_message_node (format, arg1, arg2);
@@ -1309,9 +1274,7 @@ static int old_echo_area_nodes_index = 0;
static int old_echo_area_nodes_slots = 0;
void
-message_in_echo_area (format, arg1, arg2)
- char *format;
- void *arg1, *arg2;
+message_in_echo_area (char *format, void *arg1, void *arg2)
{
if (echo_area_node)
{
@@ -1324,7 +1287,7 @@ message_in_echo_area (format, arg1, arg2)
}
void
-unmessage_in_echo_area ()
+unmessage_in_echo_area (void)
{
free_echo_area ();
@@ -1343,8 +1306,7 @@ static int message_buffer_size = 0;
/* Ensure that there is enough space to stuff LENGTH characters into
MESSAGE_BUFFER. */
static void
-message_buffer_resize (length)
- int length;
+message_buffer_resize (int length)
{
if (!message_buffer)
{
@@ -1362,9 +1324,7 @@ message_buffer_resize (length)
/* Format MESSAGE_BUFFER with the results of printing FORMAT with ARG1 and
ARG2. */
static void
-build_message_buffer (format, arg1, arg2, arg3)
- char *format;
- void *arg1, *arg2, *arg3;
+build_message_buffer (char *format, void *arg1, void *arg2, void *arg3)
{
register int i, len;
void *args[3];
@@ -1511,9 +1471,7 @@ build_message_buffer (format, arg1, arg2, arg3)
/* Build a new node which has FORMAT printed with ARG1 and ARG2 as the
contents. */
NODE *
-build_message_node (format, arg1, arg2)
- char *format;
- void *arg1, *arg2;
+build_message_node (char *format, void *arg1, void *arg2)
{
NODE *node;
@@ -1526,7 +1484,7 @@ build_message_node (format, arg1, arg2)
/* Convert the contents of the message buffer to a node. */
NODE *
-message_buffer_to_node ()
+message_buffer_to_node (void)
{
NODE *node;
@@ -1548,16 +1506,14 @@ message_buffer_to_node ()
/* Useful functions can be called from outside of window.c. */
void
-initialize_message_buffer ()
+initialize_message_buffer (void)
{
message_buffer_index = 0;
}
/* Print FORMAT with ARG1,2 to the end of the current message buffer. */
void
-printf_to_message_buffer (format, arg1, arg2, arg3)
- char *format;
- void *arg1, *arg2, *arg3;
+printf_to_message_buffer (char *format, void *arg1, void *arg2, void *arg3)
{
build_message_buffer (format, arg1, arg2, arg3);
}
@@ -1565,7 +1521,7 @@ printf_to_message_buffer (format, arg1, arg2, arg3)
/* Return the current horizontal position of the "cursor" on the most
recently output message buffer line. */
int
-message_buffer_length_this_line ()
+message_buffer_length_this_line (void)
{
register int i;
@@ -1579,9 +1535,7 @@ message_buffer_length_this_line ()
/* Pad STRING to COUNT characters by inserting blanks. */
int
-pad_to (count, string)
- int count;
- char *string;
+pad_to (int count, char *string)
{
register int i;
diff --git a/contrib/texinfo/info/window.h b/contrib/texinfo/info/window.h
index 2686a82..44f620f 100644
--- a/contrib/texinfo/info/window.h
+++ b/contrib/texinfo/info/window.h
@@ -1,10 +1,10 @@
/* window.h -- Structure and flags used in manipulating Info windows.
- $Id: window.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: window.h,v 1.3 2004/04/11 17:56:46 karl Exp $
This file is part of GNU Info, a program for reading online documentation
stored in Info format.
- Copyright (C) 1993, 97 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1997, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -25,8 +25,8 @@
#ifndef INFO_WINDOW_H
#define INFO_WINDOW_H
-#include "nodes.h"
#include "infomap.h"
+#include "nodes.h"
/* Smallest number of visible lines in a window. The actual height is
always one more than this number because each window has a modeline. */
@@ -75,6 +75,14 @@ typedef struct {
WINDOW_STATE_DECL; /* What gets saved. */
} WINDOW_STATE;
+/* Structure defining the current state of an incremental search. */
+typedef struct {
+ WINDOW_STATE_DECL; /* The node, pagetop and point. */
+ int search_index; /* Offset of the last char in the search string. */
+ int direction; /* The direction that this search is heading in. */
+ int failing; /* Whether or not this search failed. */
+} SEARCH_STATE;
+
#define W_UpdateWindow 0x01 /* WINDOW needs updating. */
#define W_WindowIsPerm 0x02 /* This WINDOW is a permanent object. */
#define W_WindowVisible 0x04 /* This WINDOW is currently visible. */
@@ -95,24 +103,24 @@ extern WINDOW *the_echo_area; /* THE_ECHO_AREA is a window in THE_SCREEN. */
extern int window_scroll_step;
/* Make the modeline member for WINDOW. */
-extern void window_make_modeline ();
+extern void window_make_modeline (WINDOW *window);
/* Initalize the window system by creating THE_SCREEN and THE_ECHO_AREA.
Create the first window ever, and make it permanent.
You pass WIDTH and HEIGHT; the dimensions of the total screen size. */
-extern void window_initialize_windows ();
+extern void window_initialize_windows (int width, int height);
/* Make a new window showing NODE, and return that window structure.
The new window is made to be the active window. If NODE is passed
as NULL, then show the node showing in the active window. If the
window could not be made return a NULL pointer. The active window
is not changed.*/
-extern WINDOW *window_make_window ();
+extern WINDOW *window_make_window (NODE *node);
/* Delete WINDOW from the list of known windows. If this window was the
active window, make the next window in the chain be the active window,
or the previous window in the chain if there is no next window. */
-extern void window_delete_window ();
+extern void window_delete_window (WINDOW *window);
/* A function to call when the screen changes size, and some windows have
to get deleted. The function is called with the window to be deleted
@@ -121,111 +129,113 @@ extern void window_delete_window ();
extern VFunction *window_deletion_notifier;
/* Set WINDOW to display NODE. */
-extern void window_set_node_of_window ();
+extern void window_set_node_of_window (WINDOW *window, NODE *node);
/* Tell the window system that the size of the screen has changed. This
causes lots of interesting things to happen. The permanent windows
are resized, as well as every visible window. You pass WIDTH and HEIGHT;
the dimensions of the total screen size. */
-extern void window_new_screen_size ();
+extern void window_new_screen_size (int width, int height);
/* Change the height of WINDOW by AMOUNT. This also automagically adjusts
the previous and next windows in the chain. If there is only one user
window, then no change takes place. */
-extern void window_change_window_height ();
+extern void window_change_window_height (WINDOW *window, int amount);
/* Adjust the pagetop of WINDOW such that the cursor point will be visible. */
-extern void window_adjust_pagetop ();
+extern void window_adjust_pagetop (WINDOW *window);
/* Tile all of the windows currently displayed in the global variable
WINDOWS. If argument DO_INTERNALS is non-zero, tile windows displaying
internal nodes as well. */
#define DONT_TILE_INTERNALS 0
#define TILE_INTERNALS 1
-extern void window_tile_windows ();
+extern void window_tile_windows (int style);
/* Toggle the state of line wrapping in WINDOW. This can do a bit of fancy
redisplay. */
-extern void window_toggle_wrap ();
+extern void window_toggle_wrap (WINDOW *window);
/* For every window in CHAIN, set the flags member to have FLAG set. */
-extern void window_mark_chain ();
+extern void window_mark_chain (WINDOW *chain, int flag);
/* For every window in CHAIN, clear the flags member of FLAG. */
-extern void window_unmark_chain ();
+extern void window_unmark_chain (WINDOW *chain, int flag);
/* Make WINDOW start displaying at PERCENT percentage of its node. */
-extern void window_goto_percentage ();
+extern void window_goto_percentage (WINDOW *window, int percent);
/* Build a new node which has FORMAT printed with ARG1 and ARG2 as the
contents. */
-extern NODE *build_message_node ();
+extern NODE *build_message_node (char *format, void *arg1, void *arg2);
/* Useful functions can be called from outside of window.c. */
-extern void initialize_message_buffer ();
+extern void initialize_message_buffer (void);
/* Print FORMAT with ARG1,2 to the end of the current message buffer. */
-extern void printf_to_message_buffer ();
+extern void printf_to_message_buffer (char *format, void *arg1, void *arg2,
+ void *arg3);
/* Convert the contents of the message buffer to a node. */
-extern NODE *message_buffer_to_node ();
+extern NODE *message_buffer_to_node (void);
/* Return the length of the most recently printed line in message buffer. */
-extern int message_buffer_length_this_line ();
+extern int message_buffer_length_this_line (void);
/* Pad STRING to COUNT characters by inserting blanks. */
-extern int pad_to ();
+extern int pad_to (int count, char *string);
/* Make a message appear in the echo area, built from FORMAT, ARG1 and ARG2.
The arguments are treated similar to printf () arguments, but not all of
printf () hair is present. The message appears immediately. If there was
already a message appearing in the echo area, it is removed. */
-extern void window_message_in_echo_area ();
+extern void window_message_in_echo_area (char *format, void *arg1, void *arg2);
/* Place a temporary message in the echo area built from FORMAT, ARG1
and ARG2. The message appears immediately, but does not destroy
any existing message. A future call to unmessage_in_echo_area ()
restores the old contents. */
-extern void message_in_echo_area ();
-extern void unmessage_in_echo_area ();
+extern void message_in_echo_area (char *format, void *arg1, void *arg2);
+extern void unmessage_in_echo_area (void);
/* Clear the echo area, removing any message that is already present.
The echo area is cleared immediately. */
-extern void window_clear_echo_area ();
+extern void window_clear_echo_area (void);
/* Quickly guess the approximate number of lines to that NODE would
take to display. This really only counts carriage returns. */
-extern int window_physical_lines ();
+extern int window_physical_lines (NODE *node);
/* Calculate a list of line starts for the node belonging to WINDOW. The line
starts are pointers to the actual text within WINDOW->NODE. */
-extern void calculate_line_starts ();
+extern void calculate_line_starts (WINDOW *window);
/* Given WINDOW, recalculate the line starts for the node it displays. */
-extern void recalculate_line_starts ();
+extern void recalculate_line_starts (WINDOW *window);
/* Return the number of characters it takes to display CHARACTER on the
screen at HPOS. */
-extern int character_width ();
+extern int character_width (int character, int hpos);
/* Return the number of characters it takes to display STRING on the
screen at HPOS. */
-extern int string_width ();
+extern int string_width (char *string, int hpos);
/* Return the index of the line containing point. */
-extern int window_line_of_point ();
+extern int window_line_of_point (WINDOW *window);
/* Get and return the goal column for this window. */
-extern int window_get_goal_column ();
+extern int window_get_goal_column (WINDOW *window);
/* Get and return the printed column offset of the cursor in this window. */
-extern int window_get_cursor_column ();
+extern int window_get_cursor_column (WINDOW *window);
/* Get and Set the node, pagetop, and point of WINDOW. */
-extern void window_get_state (), window_set_state ();
+extern void window_get_state (WINDOW *window, SEARCH_STATE *state);
+extern void window_set_state (WINDOW *window, SEARCH_STATE *state);
/* Count the number of characters in LINE that precede the printed column
offset of GOAL. */
-extern int window_chars_to_goal ();
+extern int window_chars_to_goal (char *line, int goal);
#endif /* not INFO_WINDOW_H */
diff --git a/contrib/texinfo/lib/README b/contrib/texinfo/lib/README
index 288bc5d..643f9c1 100644
--- a/contrib/texinfo/lib/README
+++ b/contrib/texinfo/lib/README
@@ -1,4 +1,4 @@
-$Id: README,v 1.2 2002/09/11 16:32:09 karl Exp $
+$Id: README,v 1.3 2004/04/11 17:56:46 karl Exp $
texinfo/lib/README
Copyright (C) 2002 Free Software Foundation, Inc.
diff --git a/contrib/texinfo/lib/gettext.h b/contrib/texinfo/lib/gettext.h
index 8b262f4..835732e 100644
--- a/contrib/texinfo/lib/gettext.h
+++ b/contrib/texinfo/lib/gettext.h
@@ -1,20 +1,19 @@
/* Convenience header for conditional use of GNU <libintl.h>.
Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc.
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- USA. */
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _LIBGETTEXT_H
#define _LIBGETTEXT_H 1
diff --git a/contrib/texinfo/lib/substring.c b/contrib/texinfo/lib/substring.c
index 7d5cda7..9e59fce 100644
--- a/contrib/texinfo/lib/substring.c
+++ b/contrib/texinfo/lib/substring.c
@@ -1,7 +1,7 @@
/* substring.c -- extract substring.
- $Id: substring.c,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: substring.c,v 1.2 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -20,13 +20,11 @@
#include "system.h"
char *
-substring (start, end)
- char *start;
- char *end;
+substring (const char *start, const char *end)
{
char *result = xmalloc (end - start + 1);
char *scan_result = result;
- char *scan = start;
+ const char *scan = start;
while (scan < end)
*scan_result++ = *scan++;
diff --git a/contrib/texinfo/lib/system.h b/contrib/texinfo/lib/system.h
index f2bbf22..946eb3c 100644
--- a/contrib/texinfo/lib/system.h
+++ b/contrib/texinfo/lib/system.h
@@ -1,7 +1,7 @@
/* system.h: system-dependent declarations; include this first.
- $Id: system.h,v 1.5 2003/03/22 17:40:39 karl Exp $
+ $Id: system.h,v 1.12 2004/04/26 13:56:57 karl Exp $
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -32,15 +32,11 @@
/* MiKTeX defines substring() in a separate DLL, where it has its
own __declspec declaration. We don't want to try to duplicate
this Microsoft-ism here. */
-extern char *substring ();
+extern char *substring (const char *, const char *);
#endif
-/* <unistd.h> should be included before any preprocessor test
- of _POSIX_VERSION. */
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
+/* We follow the order of header inclusion from Autoconf's
+ ac_includes_default, more or less. */
#include <stdio.h>
#include <sys/types.h>
#include <ctype.h>
@@ -61,10 +57,6 @@ extern char *substring ();
#define _(String) gettext (String)
#define N_(String) (String)
-#ifndef HAVE_LC_MESSAGES
-#define LC_MESSAGES (-1)
-#endif
-
#ifdef STDC_HEADERS
#define getopt system_getopt
#include <stdlib.h>
@@ -75,16 +67,34 @@ extern char *getenv ();
/* Don't use bcopy! Use memmove if source and destination may overlap,
memcpy otherwise. */
-#ifdef HAVE_STRING_H
+#if HAVE_STRING_H
# if !STDC_HEADERS && HAVE_MEMORY_H
# include <memory.h>
# endif
# include <string.h>
-#else
+#endif
+
+#if HAVE_STRINGS_H
+/* Always include <strings.h> if we have it. This is because that's
+ what Autoconf's AC_CHECK_DECL does. On IBM AIX 4.2, strncasecmp is
+ only declared in strings.h. */
# include <strings.h>
+#endif
+
+#if !HAVE_STRNCASECMP || !HAVE_STRCASECMP
+# include "strcase.h"
+#endif
+
+#if !HAVE_DECL_MEMCHR
char *memchr ();
#endif
+/* <unistd.h> defines _POSIX_VERSION, but Paul Eggert points out that is
+ only supposed to be used in user code, not other system headers. */
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
#include <errno.h>
#ifndef errno
extern int errno;
@@ -191,30 +201,41 @@ extern int strcoll ();
# define HAVE_LONG_FILENAMES(dir) (pathconf (dir, _PC_NAME_MAX) > 12)
# define NULL_DEVICE "/dev/null"
# define DEFAULT_INFOPATH "c:/djgpp/info;/usr/local/info;/usr/info;."
-# else /* !__DJGPP__ */
+ /* DJGPP supports /dev/null, which is okay for Unix aficionados,
+ shell scripts and Makefiles, but interactive DOS die-hards
+ would probably want to have NUL as well. */
+# define ALSO_NULL_DEVICE "NUL"
+# else /* O_BINARY && !__DJGPP__ */
# define HAVE_LONG_FILENAMES(dir) (0)
# define NULL_DEVICE "NUL"
-# endif /* !__DJGPP__ */
+# endif /* O_BINARY && !__DJGPP__ */
# define SET_SCREEN_SIZE_HELPER terminal_prep_terminal()
# define DEFAULT_INFO_PRINT_COMMAND ">PRN"
-# else /* !__MSDOS__ */
+# else /* O_BINARY && !__MSDOS__ */
# define setmode(f,m) _setmode(f,m)
# define HAVE_LONG_FILENAMES(dir) (1)
# define NULL_DEVICE "NUL"
-# endif /* !__MSDOS__ */
-# define SET_BINARY(f) do {if (!isatty(f)) setmode(f,O_BINARY);} while(0)
+# endif /* O_BINARY && !__MSDOS__ */
+# ifdef __CYGWIN__
+# define DEFAULT_TMPDIR "/tmp/"
+# define PATH_SEP ":"
+# else /* O_BINARY && !__CYGWIN__ */
+# define DEFAULT_TMPDIR "c:/"
+# define PATH_SEP ";"
+# endif /* O_BINARY && !__CYGWIN__ */
+ /* Back to any O_BINARY system. */
+# define FILENAME_CMP strcasecmp
+# define FILENAME_CMPN strncasecmp
# define FOPEN_RBIN "rb"
# define FOPEN_WBIN "wb"
-# define IS_SLASH(c) ((c) == '/' || (c) == '\\')
# define HAVE_DRIVE(n) ((n)[0] && (n)[1] == ':')
+# define IS_SLASH(c) ((c) == '/' || (c) == '\\')
# define IS_ABSOLUTE(n) (IS_SLASH((n)[0]) || ((n)[0] && (n)[1] == ':'))
-# define FILENAME_CMP strcasecmp
-# define FILENAME_CMPN strncasecmp
-# define PATH_SEP ";"
-# define STRIP_DOT_EXE 1
-# define DEFAULT_TMPDIR "c:/"
# define PIPE_USE_FORK 0
-#else /* not O_BINARY */
+# define SET_BINARY(f) do {if (!isatty(f)) setmode(f,O_BINARY);} while(0)
+# define STRIP_DOT_EXE 1
+
+#else /* not O_BINARY, i.e., Unix */
# define SET_BINARY(f) (void)0
# define FOPEN_RBIN "r"
# define FOPEN_WBIN "w"
@@ -235,12 +256,8 @@ extern int strcoll ();
# define PIPE_USE_FORK 1
#endif /* not O_BINARY */
-/* DJGPP supports /dev/null, which is okay for Unix aficionados,
- shell scripts and Makefiles, but interactive DOS die-hards
- would probably want to have NUL as well. */
-#ifdef __DJGPP__
-# define ALSO_NULL_DEVICE "NUL"
-#else
+/* Everything but DJGPP. */
+#ifndef ALSO_NULL_DEVICE
# define ALSO_NULL_DEVICE ""
#endif
@@ -248,15 +265,17 @@ extern int strcoll ();
#include <pwd.h>
#endif
/* Some systems don't declare this function in pwd.h. */
-struct passwd *getpwnam ();
+struct passwd *getpwnam (const char *name);
/* Our library routines not included in any system library. */
-extern void *xmalloc (), *xrealloc ();
-extern char *xstrdup ();
-extern void xexit ();
+extern void *xmalloc (size_t), *xrealloc (void *, size_t);
+extern char *xstrdup (const char *);
+extern void xexit (int);
/* For convenience. */
#define STREQ(s1,s2) (strcmp (s1, s2) == 0)
+#define STRCASEEQ(s1,s2) (strcasecmp (s1, s2) == 0)
+#define STRNCASEEQ(s1,s2,n) (strncasecmp (s1, s2, n) == 0)
/* We don't need anything fancy. If we did need something fancy, gnulib
has it. */
diff --git a/contrib/texinfo/lib/xalloc.h b/contrib/texinfo/lib/xalloc.h
index 5b623da..d81f2a6 100644
--- a/contrib/texinfo/lib/xalloc.h
+++ b/contrib/texinfo/lib/xalloc.h
@@ -1,5 +1,7 @@
/* xalloc.h -- malloc with out-of-memory checking
- Copyright (C) 1990-1998, 1999, 2000 Free Software Foundation, Inc.
+
+ Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+ 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -20,14 +22,12 @@
# include <stddef.h>
-# ifndef PARAMS
-# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
-# define PARAMS(Args) Args
-# else
-# define PARAMS(Args) ()
-# endif
+
+# ifdef __cplusplus
+extern "C" {
# endif
+
# ifndef __attribute__
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
# define __attribute__(x)
@@ -38,52 +38,53 @@
# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
# endif
-/* Exit value when the requested amount of memory is not available.
- It is initialized to EXIT_FAILURE, but the caller may set it to
- some other value. */
-extern int xalloc_exit_failure;
-
-/* If this pointer is non-zero, run the specified function upon each
- allocation failure. It is initialized to zero. */
-extern void (*xalloc_fail_func) PARAMS ((void));
-
-/* If XALLOC_FAIL_FUNC is undefined or a function that returns, this
- message is output. It is translated via gettext.
- Its value is "memory exhausted". */
-extern char const xalloc_msg_memory_exhausted[];
-
-/* This function is always triggered when memory is exhausted. It is
- in charge of honoring the three previous items. This is the
+/* This function is always triggered when memory is exhausted.
+ It must be defined by the application, either explicitly
+ or by using gnulib's xalloc-die module. This is the
function to call when one wants the program to die because of a
memory allocation failure. */
-extern void xalloc_die PARAMS ((void)) ATTRIBUTE_NORETURN;
-
-void *xmalloc PARAMS ((size_t n));
-void *xcalloc PARAMS ((size_t n, size_t s));
-void *xrealloc PARAMS ((void *p, size_t n));
-char *xstrdup PARAMS ((const char *str));
-
-# define XMALLOC(Type, N_items) ((Type *) xmalloc (sizeof (Type) * (N_items)))
-# define XCALLOC(Type, N_items) ((Type *) xcalloc (sizeof (Type), (N_items)))
-# define XREALLOC(Ptr, Type, N_items) \
- ((Type *) xrealloc ((void *) (Ptr), sizeof (Type) * (N_items)))
-
-/* Declare and alloc memory for VAR of type TYPE. */
-# define NEW(Type, Var) Type *(Var) = XMALLOC (Type, 1)
-
-/* Free VAR only if non NULL. */
-# define XFREE(Var) \
- do { \
- if (Var) \
- free (Var); \
- } while (0)
-
-/* Return a pointer to a malloc'ed copy of the array SRC of NUM elements. */
-# define CCLONE(Src, Num) \
- (memcpy (xmalloc (sizeof (*Src) * (Num)), (Src), sizeof (*Src) * (Num)))
-
-/* Return a malloc'ed copy of SRC. */
-# define CLONE(Src) CCLONE (Src, 1)
+extern void xalloc_die (void) ATTRIBUTE_NORETURN;
+
+void *xmalloc (size_t s);
+void *xnmalloc (size_t n, size_t s);
+void *xzalloc (size_t s);
+void *xcalloc (size_t n, size_t s);
+void *xrealloc (void *p, size_t s);
+void *xnrealloc (void *p, size_t n, size_t s);
+void *x2realloc (void *p, size_t *pn);
+void *x2nrealloc (void *p, size_t *pn, size_t s);
+void *xclone (void const *p, size_t s);
+char *xstrdup (const char *str);
+
+/* Return 1 if an array of N objects, each of size S, cannot exist due
+ to size arithmetic overflow. S must be positive and N must be
+ nonnegative. This is a macro, not an inline function, so that it
+ works correctly even when SIZE_MAX < N.
+
+ By gnulib convention, SIZE_MAX represents overflow in size
+ calculations, so the conservative dividend to use here is
+ SIZE_MAX - 1, since SIZE_MAX might represent an overflowed value.
+ However, malloc (SIZE_MAX) fails on all known hosts where
+ sizeof (ptrdiff_t) <= sizeof (size_t), so do not bother to test for
+ exactly-SIZE_MAX allocations on such hosts; this avoids a test and
+ branch when S is known to be 1. */
+# define xalloc_oversized(n, s) \
+ ((size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) < (n))
+
+/* These macros are deprecated; they will go away soon, and are retained
+ temporarily only to ease conversion to the functions described above. */
+# define CCLONE(p, n) xclone (p, (n) * sizeof *(p))
+# define CLONE(p) xclone (p, sizeof *(p))
+# define NEW(type, var) type *var = xmalloc (sizeof (type))
+# define XCALLOC(type, n) xcalloc (n, sizeof (type))
+# define XMALLOC(type, n) xnmalloc (n, sizeof (type))
+# define XREALLOC(p, type, n) xnrealloc (p, n, sizeof (type))
+# define XFREE(p) free (p)
+
+
+# ifdef __cplusplus
+}
+# endif
#endif /* !XALLOC_H_ */
diff --git a/contrib/texinfo/lib/xexit.c b/contrib/texinfo/lib/xexit.c
index fa783b3..53eb0fc 100644
--- a/contrib/texinfo/lib/xexit.c
+++ b/contrib/texinfo/lib/xexit.c
@@ -1,7 +1,7 @@
/* xexit.c -- exit with attention to return values and closing stdout.
- $Id: xexit.c,v 1.4 2003/05/19 13:10:59 karl Exp $
+ $Id: xexit.c,v 1.5 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1999, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -47,8 +47,7 @@
unsuccessfully. */
void
-xexit (exit_status)
- int exit_status;
+xexit (int exit_status)
{
if (ferror (stdout))
{
diff --git a/contrib/texinfo/lib/xmalloc.c b/contrib/texinfo/lib/xmalloc.c
index 156989e..b91e4fc 100644
--- a/contrib/texinfo/lib/xmalloc.c
+++ b/contrib/texinfo/lib/xmalloc.c
@@ -1,12 +1,6 @@
-/* xmalloc.c -- safe versions of malloc and realloc */
+/* xmalloc.c -- safe versions of malloc and realloc.
-/* This file is part of GNU Info, a program for reading online documentation
- stored in Info format.
-
- This file has appeared in prior works by the Free Software Foundation;
- thus it carries copyright dates from 1988 through 1993.
-
- Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993 Free Software
+ Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -26,24 +20,20 @@
Written by Brian Fox (bfox@ai.mit.edu). */
#if !defined (ALREADY_HAVE_XMALLOC)
-#include <stdio.h>
-#include <sys/types.h>
+#include "system.h"
-extern void *malloc (), *realloc ();
-static void memory_error_and_abort ();
-
-/* **************************************************************** */
-/* */
-/* Memory Allocation and Deallocation. */
-/* */
-/* **************************************************************** */
+static void
+memory_error_and_abort (const char *fname)
+{
+ fprintf (stderr, "%s: Out of virtual memory!\n", fname);
+ abort ();
+}
/* Return a pointer to free()able block of memory large enough
to hold BYTES number of bytes. If the memory cannot be allocated,
print an error message and abort. */
void *
-xmalloc (bytes)
- int bytes;
+xmalloc (size_t bytes)
{
void *temp = malloc (bytes);
@@ -53,9 +43,7 @@ xmalloc (bytes)
}
void *
-xrealloc (pointer, bytes)
- void *pointer;
- int bytes;
+xrealloc (void *pointer, size_t bytes)
{
void *temp;
@@ -70,11 +58,4 @@ xrealloc (pointer, bytes)
return (temp);
}
-static void
-memory_error_and_abort (fname)
- char *fname;
-{
- fprintf (stderr, "%s: Out of virtual memory!\n", fname);
- abort ();
-}
#endif /* !ALREADY_HAVE_XMALLOC */
diff --git a/contrib/texinfo/lib/xstrdup.c b/contrib/texinfo/lib/xstrdup.c
index cb1efa8..1182c59 100644
--- a/contrib/texinfo/lib/xstrdup.c
+++ b/contrib/texinfo/lib/xstrdup.c
@@ -1,5 +1,5 @@
/* xstrdup.c -- copy a string with out of memory checking
- Copyright (C) 1990, 1996, 1998, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1990, 1996, 1998, 2001, 2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -19,16 +19,11 @@
# include <config.h>
#endif
-#if STDC_HEADERS || HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-
-#include <sys/types.h>
-
+/* Specification. */
#include "xalloc.h"
+#include <string.h>
+
/* Return a newly allocated copy of STRING. */
char *
diff --git a/contrib/texinfo/makeinfo/README b/contrib/texinfo/makeinfo/README
index 4d2ecf6..17c4371 100644
--- a/contrib/texinfo/makeinfo/README
+++ b/contrib/texinfo/makeinfo/README
@@ -1,4 +1,4 @@
-$Id: README,v 1.2 2002/09/11 16:32:09 karl Exp $
+$Id: README,v 1.3 2004/04/11 17:56:46 karl Exp $
texinfo/makeinfo/README
Copyright (C) 2002 Free Software Foundation, Inc.
diff --git a/contrib/texinfo/makeinfo/cmds.c b/contrib/texinfo/makeinfo/cmds.c
index db9472b..87ac7bb 100644
--- a/contrib/texinfo/makeinfo/cmds.c
+++ b/contrib/texinfo/makeinfo/cmds.c
@@ -1,7 +1,7 @@
/* cmds.c -- Texinfo commands.
- $Id: cmds.c,v 1.18 2003/04/21 01:02:39 karl Exp $
+ $Id: cmds.c,v 1.55 2004/12/14 00:15:36 karl Exp $
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -39,70 +39,32 @@
#include <time.h>
#endif
-
-void insert_self (), insert_space (), cm_ignore_line (), cm_ignore_arg ();
-
-void
- cm_TeX (), cm_acronym (), cm_asterisk (), cm_b (), cm_bullet (), cm_cite (),
- cm_code (), cm_copyright (), cm_ctrl (), cm_dfn (), cm_dircategory (),
- cm_direntry (), cm_dmn (), cm_dots (), cm_emph (), cm_enddots (), cm_i (),
- cm_image (), cm_kbd (), cm_key (), cm_no_op (),
- cm_novalidate (), cm_not_fixed_width (), cm_r (),
- cm_strong (), cm_var (), cm_sc (), cm_w (), cm_email (), cm_url (),
- cm_verb (), cm_copying (), cm_insert_copying (),
- cm_documentdescription ();
-
-void
- cm_anchor (), cm_node (), cm_menu (), cm_xref (), cm_ftable (),
- cm_vtable (), cm_pxref (), cm_inforef (), cm_uref (), cm_email (),
- cm_quotation (), cm_display (), cm_smalldisplay (), cm_itemize (),
- cm_enumerate (), cm_tab (), cm_table (), cm_itemx (),
- cm_noindent (), cm_indent (),
- cm_setfilename (), cm_br (), cm_sp (), cm_page (), cm_group (),
- cm_center (), cm_ref (), cm_include (), cm_bye (), cm_item (), cm_end (),
- cm_kindex (), cm_cindex (), cm_findex (), cm_pindex (), cm_vindex (),
- cm_tindex (), cm_synindex (), cm_printindex (), cm_minus (),
- cm_example (), cm_smallexample (), cm_smalllisp (), cm_lisp (),
- cm_format (), cm_smallformat (), cm_exdent (), cm_defindex (),
- cm_defcodeindex (), cm_result (), cm_expansion (), cm_equiv (),
- cm_print (), cm_error (), cm_point (), cm_today (), cm_flushleft (),
- cm_flushright (), cm_finalout (), cm_cartouche (), cm_detailmenu (),
- cm_multitable (), cm_settitle (), cm_titlefont (), cm_titlepage (),
- cm_tie (), cm_tt (),
- cm_verbatim (), cm_verbatiminclude ();
-
-/* Conditionals. */
-void cm_set (), cm_clear (), cm_ifset (), cm_ifclear ();
-void cm_value (), cm_ifeq ();
-
/* Options. */
-static void
- cm_exampleindent (),
- cm_firstparagraphindent (),
- cm_paragraphindent ();
+static void cm_exampleindent (void),
+ cm_firstparagraphindent (void),
+ cm_paragraphindent (void),
+ cm_novalidate (void);
/* Internals. */
-static void cm_obsolete ();
-
-/* A random string. */
-static const char small_tag[] = "small";
+static void cm_obsolete (int arg, int start, int end),
+ not_fixed_width (int arg);
/* The dispatch table. */
COMMAND command_table[] = {
{ "\t", insert_space, NO_BRACE_ARGS },
{ "\n", insert_space, NO_BRACE_ARGS },
{ " ", insert_space, NO_BRACE_ARGS },
- { "!", insert_self, NO_BRACE_ARGS },
+ { "!", cm_punct, NO_BRACE_ARGS },
{ "\"", cm_accent_umlaut, MAYBE_BRACE_ARGS },
{ "'", cm_accent_acute, MAYBE_BRACE_ARGS },
{ "*", cm_asterisk, NO_BRACE_ARGS },
{ ",", cm_accent_cedilla, MAYBE_BRACE_ARGS },
{ "-", cm_no_op, NO_BRACE_ARGS },
- { ".", insert_self, NO_BRACE_ARGS },
+ { ".", cm_punct, NO_BRACE_ARGS },
{ "/", cm_no_op, NO_BRACE_ARGS },
- { ":", cm_no_op, NO_BRACE_ARGS },
+ { ":", cm_colon, NO_BRACE_ARGS },
{ "=", cm_accent, MAYBE_BRACE_ARGS },
- { "?", insert_self, NO_BRACE_ARGS },
+ { "?", cm_punct, NO_BRACE_ARGS },
{ "@", insert_self, NO_BRACE_ARGS },
{ "\\", insert_self, NO_BRACE_ARGS },
{ "^", cm_accent_hat, MAYBE_BRACE_ARGS },
@@ -115,10 +77,12 @@ COMMAND command_table[] = {
{ "AE", cm_special_char, BRACE_ARGS },
{ "H", cm_accent, MAYBE_BRACE_ARGS },
{ "L", cm_special_char, BRACE_ARGS },
+ { "LaTeX", cm_LaTeX, BRACE_ARGS },
{ "O", cm_special_char, BRACE_ARGS },
{ "OE", cm_special_char, BRACE_ARGS },
{ "TeX", cm_TeX, BRACE_ARGS },
{ "aa", cm_special_char, BRACE_ARGS },
+ { "abbr", cm_abbr, BRACE_ARGS },
{ "acronym", cm_acronym, BRACE_ARGS },
{ "ae", cm_special_char, BRACE_ARGS },
{ "afivepaper", cm_ignore_line, NO_BRACE_ARGS },
@@ -133,10 +97,12 @@ COMMAND command_table[] = {
{ "appendixsubsec", cm_appendixsubsec, NO_BRACE_ARGS },
{ "appendixsubsubsec", cm_appendixsubsubsec, NO_BRACE_ARGS },
{ "asis", cm_no_op, BRACE_ARGS },
+ { "author", cm_author, NO_BRACE_ARGS },
{ "b", cm_b, BRACE_ARGS },
{ "bullet", cm_bullet, BRACE_ARGS },
{ "bye", cm_bye, NO_BRACE_ARGS },
- { "c", cm_ignore_line, NO_BRACE_ARGS },
+ { "c", cm_comment, NO_BRACE_ARGS },
+ { "caption", cm_caption, BRACE_ARGS },
{ "cartouche", cm_cartouche, NO_BRACE_ARGS },
{ "center", cm_center, NO_BRACE_ARGS },
{ "centerchap", cm_unnumbered, NO_BRACE_ARGS },
@@ -146,8 +112,9 @@ COMMAND command_table[] = {
{ "cite", cm_cite, BRACE_ARGS },
{ "clear", cm_clear, NO_BRACE_ARGS },
{ "code", cm_code, BRACE_ARGS },
+ { "comma", cm_comma, BRACE_ARGS },
{ "command", cm_code, BRACE_ARGS },
- { "comment", cm_ignore_line, NO_BRACE_ARGS },
+ { "comment", cm_comment, NO_BRACE_ARGS },
{ "contents", cm_contents, NO_BRACE_ARGS },
{ "copying", cm_copying, NO_BRACE_ARGS },
{ "copyright", cm_copyright, BRACE_ARGS },
@@ -173,6 +140,8 @@ COMMAND command_table[] = {
{ "defspecx", cm_defun, NO_BRACE_ARGS },
{ "deftp", cm_defun, NO_BRACE_ARGS },
{ "deftpx", cm_defun, NO_BRACE_ARGS },
+ { "deftypecv", cm_defun, NO_BRACE_ARGS },
+ { "deftypecvx", cm_defun, NO_BRACE_ARGS },
{ "deftypefn", cm_defun, NO_BRACE_ARGS },
{ "deftypefnx", cm_defun, NO_BRACE_ARGS },
{ "deftypefun", cm_defun, NO_BRACE_ARGS },
@@ -198,7 +167,8 @@ COMMAND command_table[] = {
{ "dircategory", cm_dircategory, NO_BRACE_ARGS },
{ "direntry", cm_direntry, NO_BRACE_ARGS },
{ "display", cm_display, NO_BRACE_ARGS },
- { "dmn", cm_no_op, BRACE_ARGS },
+ { "dmn", cm_dmn, BRACE_ARGS },
+ { "docbook", cm_docbook, NO_BRACE_ARGS },
{ "documentdescription", cm_documentdescription, NO_BRACE_ARGS },
{ "documentencoding", cm_documentencoding, NO_BRACE_ARGS },
{ "documentlanguage", cm_documentlanguage, NO_BRACE_ARGS },
@@ -213,6 +183,7 @@ COMMAND command_table[] = {
{ "env", cm_code, BRACE_ARGS },
{ "equiv", cm_equiv, BRACE_ARGS },
{ "error", cm_error, BRACE_ARGS },
+ { "euro", cm_special_char, BRACE_ARGS },
{ "evenfooting", cm_ignore_line, NO_BRACE_ARGS },
{ "evenheading", cm_ignore_line, NO_BRACE_ARGS },
{ "everyfooting", cm_ignore_line, NO_BRACE_ARGS },
@@ -226,6 +197,7 @@ COMMAND command_table[] = {
{ "finalout", cm_no_op, NO_BRACE_ARGS },
{ "findex", cm_findex, NO_BRACE_ARGS },
{ "firstparagraphindent", cm_firstparagraphindent, NO_BRACE_ARGS },
+ { "float", cm_float, NO_BRACE_ARGS },
{ "flushleft", cm_flushleft, NO_BRACE_ARGS },
{ "flushright", cm_flushright, NO_BRACE_ARGS },
{ "footnote", cm_footnote, NO_BRACE_ARGS}, /* self-arg eater */
@@ -235,13 +207,16 @@ COMMAND command_table[] = {
{ "group", cm_group, NO_BRACE_ARGS },
{ "heading", cm_heading, NO_BRACE_ARGS },
{ "headings", cm_ignore_line, NO_BRACE_ARGS },
+ { "headitem", cm_headitem, NO_BRACE_ARGS },
{ "html", cm_html, NO_BRACE_ARGS },
{ "hyphenation", cm_ignore_arg, BRACE_ARGS },
{ "i", cm_i, BRACE_ARGS },
{ "ifclear", cm_ifclear, NO_BRACE_ARGS },
{ "ifeq", cm_ifeq, NO_BRACE_ARGS },
+ { "ifdocbook", cm_ifdocbook, NO_BRACE_ARGS },
{ "ifhtml", cm_ifhtml, NO_BRACE_ARGS },
{ "ifinfo", cm_ifinfo, NO_BRACE_ARGS },
+ { "ifnotdocbook", cm_ifnotdocbook, NO_BRACE_ARGS },
{ "ifnothtml", cm_ifnothtml, NO_BRACE_ARGS },
{ "ifnotinfo", cm_ifnotinfo, NO_BRACE_ARGS },
{ "ifnotplaintext", cm_ifnotplaintext, NO_BRACE_ARGS },
@@ -255,6 +230,7 @@ COMMAND command_table[] = {
{ "image", cm_image, BRACE_ARGS },
{ "include", cm_include, NO_BRACE_ARGS },
{ "indent", cm_indent, NO_BRACE_ARGS },
+ { "indicateurl", cm_indicate_url, BRACE_ARGS },
{ "inforef", cm_inforef, BRACE_ARGS },
{ "insertcopying", cm_insert_copying, NO_BRACE_ARGS },
{ "item", cm_item, NO_BRACE_ARGS },
@@ -266,16 +242,17 @@ COMMAND command_table[] = {
{ "kindex", cm_kindex, NO_BRACE_ARGS },
{ "l", cm_special_char, BRACE_ARGS },
{ "lisp", cm_lisp, NO_BRACE_ARGS },
+ { "listoffloats", cm_listoffloats, NO_BRACE_ARGS },
{ "lowersections", cm_lowersections, NO_BRACE_ARGS },
{ "macro", cm_macro, NO_BRACE_ARGS },
{ "majorheading", cm_majorheading, NO_BRACE_ARGS },
- { "math", cm_no_op, BRACE_ARGS },
+ { "math", cm_math, BRACE_ARGS },
{ "menu", cm_menu, NO_BRACE_ARGS },
{ "minus", cm_minus, BRACE_ARGS },
{ "multitable", cm_multitable, NO_BRACE_ARGS },
{ "need", cm_ignore_line, NO_BRACE_ARGS },
{ "node", cm_node, NO_BRACE_ARGS },
- { "noindent", cm_noindent, NO_BRACE_ARGS },
+ { "noindent", cm_noindent_cmd, NO_BRACE_ARGS },
{ "novalidate", cm_novalidate, NO_BRACE_ARGS },
{ "nwnode", cm_node, NO_BRACE_ARGS },
{ "o", cm_special_char, BRACE_ARGS },
@@ -283,6 +260,8 @@ COMMAND command_table[] = {
{ "oddheading", cm_ignore_line, NO_BRACE_ARGS },
{ "oe", cm_special_char, BRACE_ARGS },
{ "option", cm_code, BRACE_ARGS },
+ { "ordf", cm_special_char, BRACE_ARGS },
+ { "ordm", cm_special_char, BRACE_ARGS },
{ "page", cm_no_op, NO_BRACE_ARGS },
{ "pagesizes", cm_ignore_line, NO_BRACE_ARGS },
{ "paragraphindent", cm_paragraphindent, NO_BRACE_ARGS },
@@ -298,10 +277,12 @@ COMMAND command_table[] = {
{ "raisesections", cm_raisesections, NO_BRACE_ARGS },
{ "ref", cm_ref, BRACE_ARGS },
{ "refill", cm_no_op, NO_BRACE_ARGS },
+ { "registeredsymbol", cm_registeredsymbol, BRACE_ARGS },
{ "result", cm_result, BRACE_ARGS },
{ "ringaccent", cm_accent, MAYBE_BRACE_ARGS },
{ "rmacro", cm_rmacro, NO_BRACE_ARGS },
{ "samp", cm_code, BRACE_ARGS },
+ { "sansserif", cm_sansserif, BRACE_ARGS },
{ "sc", cm_sc, BRACE_ARGS },
{ "section", cm_section, NO_BRACE_ARGS },
{ "set", cm_set, NO_BRACE_ARGS },
@@ -311,8 +292,10 @@ COMMAND command_table[] = {
{ "setfilename", cm_setfilename, NO_BRACE_ARGS },
{ "setshortcontentsaftertitlepage", cm_no_op, NO_BRACE_ARGS },
{ "settitle", cm_settitle, NO_BRACE_ARGS },
- { "shortcontents", cm_shortcontents, NO_BRACE_ARGS },
+ { "shortcaption", cm_caption, BRACE_ARGS },
+ { "shortcontents", cm_contents, NO_BRACE_ARGS },
{ "shorttitlepage", cm_ignore_line, NO_BRACE_ARGS },
+ { "slanted", cm_slanted, BRACE_ARGS },
{ "smallbook", cm_ignore_line, NO_BRACE_ARGS },
{ "smalldisplay", cm_smalldisplay, NO_BRACE_ARGS },
{ "smallexample", cm_smallexample, NO_BRACE_ARGS },
@@ -325,7 +308,8 @@ COMMAND command_table[] = {
{ "subsection", cm_subsection, NO_BRACE_ARGS },
{ "subsubheading", cm_subsubheading, NO_BRACE_ARGS },
{ "subsubsection", cm_subsubsection, NO_BRACE_ARGS },
- { "summarycontents", cm_shortcontents, NO_BRACE_ARGS },
+ { "subtitle", cm_titlepage_cmds, NO_BRACE_ARGS },
+ { "summarycontents", cm_contents, NO_BRACE_ARGS },
{ "syncodeindex", cm_synindex, NO_BRACE_ARGS },
{ "synindex", cm_synindex, NO_BRACE_ARGS },
{ "t", cm_tt, BRACE_ARGS },
@@ -335,6 +319,7 @@ COMMAND command_table[] = {
{ "tie", cm_tie, BRACE_ARGS },
{ "tieaccent", cm_accent, MAYBE_BRACE_ARGS },
{ "tindex", cm_tindex, NO_BRACE_ARGS },
+ { "title", cm_titlepage_cmds, NO_BRACE_ARGS },
{ "titlefont", cm_titlefont, BRACE_ARGS },
{ "titlepage", cm_titlepage, NO_BRACE_ARGS },
{ "today", cm_today, BRACE_ARGS },
@@ -348,7 +333,7 @@ COMMAND command_table[] = {
{ "unnumberedsubsec", cm_unnumberedsubsec, NO_BRACE_ARGS },
{ "unnumberedsubsubsec", cm_unnumberedsubsubsec, NO_BRACE_ARGS },
{ "uref", cm_uref, BRACE_ARGS },
- { "url", cm_url, BRACE_ARGS },
+ { "url", cm_uref, BRACE_ARGS },
{ "v", cm_accent, MAYBE_BRACE_ARGS },
{ "value", cm_value, BRACE_ARGS },
{ "var", cm_var, BRACE_ARGS },
@@ -357,8 +342,9 @@ COMMAND command_table[] = {
{ "verbatiminclude", cm_verbatiminclude, NO_BRACE_ARGS },
{ "vindex", cm_vindex, NO_BRACE_ARGS },
{ "vtable", cm_vtable, NO_BRACE_ARGS },
+ { "vskip", cm_ignore_line, NO_BRACE_ARGS },
{ "w", cm_w, BRACE_ARGS },
- { "xml", cm_html, NO_BRACE_ARGS },
+ { "xml", cm_xml, NO_BRACE_ARGS },
{ "xref", cm_xref, BRACE_ARGS },
/* Deprecated commands. These used to be for italics. */
@@ -387,16 +373,14 @@ COMMAND command_table[] = {
/* Commands which insert their own names. */
void
-insert_self (arg)
- int arg;
+insert_self (int arg)
{
if (arg == START)
add_word (command);
}
void
-insert_space (arg)
- int arg;
+insert_space (int arg)
{
if (arg == START)
{
@@ -407,9 +391,19 @@ insert_space (arg)
}
}
+/* Insert a comma. Useful when a literal , would break our parsing of
+ multiple arguments. */
+void
+cm_comma (int arg)
+{
+ if (arg == START)
+ add_char (',');
+}
+
+
/* Force a line break in the output. */
void
-cm_asterisk ()
+cm_asterisk (void)
{
if (html)
add_word ("<br>");
@@ -426,8 +420,7 @@ cm_asterisk ()
/* Insert ellipsis. */
void
-cm_dots (arg)
- int arg;
+cm_dots (int arg)
{
if (arg == START)
{
@@ -436,15 +429,16 @@ cm_dots (arg)
else if (docbook)
xml_insert_entity ("hellip");
else
- add_word (html && !in_fixed_width_font
- ? "<small class=\"dots\">...</small>" : "...");
+ if (html && !in_fixed_width_font)
+ insert_string ("<small class=\"dots\">...</small>");
+ else
+ add_word ("...");
}
}
/* Insert ellipsis for sentence end. */
void
-cm_enddots (arg)
- int arg;
+cm_enddots (int arg)
{
if (arg == START)
{
@@ -456,19 +450,20 @@ cm_enddots (arg)
add_char ('.');
}
else
- add_word (html && !in_fixed_width_font
- ? "<small class=\"enddots\">....</small>" : "....");
+ if (html && !in_fixed_width_font)
+ insert_string ("<small class=\"enddots\">....</small>");
+ else
+ add_word ("....");
}
}
void
-cm_bullet (arg)
- int arg;
+cm_bullet (int arg)
{
if (arg == START)
{
if (html)
- add_word ("&#149;");
+ add_word ("&bull;");
else if (xml && !docbook)
xml_insert_entity ("bullet");
else if (docbook)
@@ -479,36 +474,79 @@ cm_bullet (arg)
}
void
-cm_minus (arg)
- int arg;
+cm_minus (int arg)
{
if (arg == START)
{
if (xml)
xml_insert_entity ("minus");
+ else if (html)
+ add_word ("&minus;");
else
add_char ('-');
}
}
+/* Formatting a dimension unit. */
+void
+cm_dmn (int arg)
+{
+ if (html)
+ insert_html_tag_with_attribute (arg, "span", "class=\"dmn\"");
+ else if (docbook)
+ /* No units in docbook yet. */
+ ;
+ else if (xml)
+ xml_insert_element (DIMENSION, arg);
+}
+
/* Insert "TeX". */
void
-cm_TeX (arg)
- int arg;
+cm_TeX (int arg)
{
+ static int last_position;
+
if (arg == START)
{
- if (xml && ! docbook)
+ if (xml)
xml_insert_entity ("tex");
else
add_word ("TeX");
+
+ last_position = output_paragraph_offset;
+ }
+ else if (last_position != output_paragraph_offset)
+ {
+ warning (_("arguments to @%s ignored"), command);
+ output_paragraph_offset = last_position;
+ }
+}
+
+/* Insert "LaTeX". */
+void
+cm_LaTeX (int arg)
+{
+ static int last_position;
+
+ if (arg == START)
+ {
+ if (xml)
+ xml_insert_entity ("latex");
+ else
+ add_word ("LaTeX");
+
+ last_position = output_paragraph_offset;
+ }
+ else if (last_position != output_paragraph_offset)
+ {
+ warning (_("arguments to @%s ignored"), command);
+ output_paragraph_offset = last_position;
}
}
/* Copyright symbol. */
void
-cm_copyright (arg)
- int arg;
+cm_copyright (int arg)
{
if (arg == START)
{
@@ -523,9 +561,25 @@ cm_copyright (arg)
}
}
+/* Registered symbol. */
+void
+cm_registeredsymbol (int arg)
+{
+ if (arg == START)
+ {
+ if (html)
+ add_word ("&reg;");
+ else if (docbook)
+ xml_insert_entity ("reg");
+ else if (xml && !docbook)
+ xml_insert_entity ("registered");
+ else
+ add_word ("(R)");
+ }
+}
+
void
-cm_today (arg)
- int arg;
+cm_today (int arg)
{
static char *months[12] =
{ N_("January"), N_("February"), N_("March"), N_("April"), N_("May"),
@@ -541,18 +595,191 @@ cm_today (arg)
}
void
-cm_acronym (arg)
- int arg;
+cm_comment (void)
+{
+ /* For HTML, do not output comments before HTML header is written,
+ otherwise comments before @settitle cause an empty <title> in the
+ header. */
+ if ((html && html_output_head_p) || xml)
+ {
+ char *line;
+ get_rest_of_line (0, &line);
+
+ if (strlen (line) > 0)
+ {
+ int save_inhibit_indentation = inhibit_paragraph_indentation;
+ int save_paragraph_is_open = paragraph_is_open;
+ int save_escape_html = escape_html;
+ int save_xml_no_para = xml_no_para;
+ int i;
+
+ inhibit_paragraph_indentation = 1;
+ escape_html = 0;
+ xml_no_para = 1;
+
+ /* @c and @comment can appear between @item and @itemx,
+ @deffn and @deffnx. */
+ xml_dont_touch_items_defs++;
+
+ /* Use insert for HTML, and XML when indentation is enabled.
+ For Docbook, use add_char. */
+ if (xml && xml_indentation_increment > 0
+ && output_paragraph[output_paragraph_offset-1] != '\n')
+ insert ('\n');
+
+ /* Crunch double hyphens in comments. */
+ add_html_block_elt ("<!-- ");
+ for (i = 0; i < strlen (line); i++)
+ if (line[i] != '-' || (i && line[i-1] != '-'))
+ add_char (line[i]);
+ add_word (" -->");
+
+ if (html)
+ add_char ('\n');
+
+ inhibit_paragraph_indentation = save_inhibit_indentation;
+ paragraph_is_open = save_paragraph_is_open;
+ escape_html = save_escape_html;
+ xml_no_para = save_xml_no_para;
+ xml_dont_touch_items_defs--;
+ }
+
+ free (line);
+ }
+ else
+ cm_ignore_line ();
+}
+
+
+
+/* We keep acronyms with two arguments around, to be able to refer to them
+ later with only one argument. */
+static ACRONYM_DESC *acronyms_stack = NULL;
+
+static void
+cm_acronym_or_abbr (int arg, int is_abbr)
{
+ char *aa, *description;
+ unsigned len;
+
+ /* We do everything at START. */
+ if (arg == END)
+ return;
+
+ get_until_in_braces (",", &aa);
+ if (input_text[input_text_offset] == ',')
+ input_text_offset++;
+ get_until_in_braces ("}", &description);
+
+ canon_white (aa);
+ canon_white (description);
+
+ /* If not enclosed in braces, strip after comma to be compatible
+ with texinfo.tex. */
+ if (description[0] != '{' && strchr (description, ',') != NULL)
+ {
+ int i = 0;
+ while (description[i] != ',')
+ i++;
+ /* For now, just terminate the string at comma. */
+ description[i] = 0;
+ }
+
+ /* Get description out of braces. */
+ if (description[0] == '{')
+ description++;
+
+ len = strlen (description);
+ if (len && description[len-1] == '}')
+ description[len-1] = 0;
+
+ /* Save new description. */
+ if (strlen (description) > 0)
+ {
+ ACRONYM_DESC *new = xmalloc (sizeof (ACRONYM_DESC));
+
+ new->acronym = xstrdup (aa);
+ new->description = xstrdup (description);
+ new->next = acronyms_stack;
+ acronyms_stack = new;
+ }
+
if (html)
- insert_html_tag (arg, small_tag);
+ {
+ add_word (is_abbr ? "<abbr" : "<acronym");
+
+ if (strlen (description) > 0)
+ add_word_args (" title=\"%s\"", text_expansion (description));
+ else if (acronyms_stack)
+ {
+ /* No second argument, get from previous. Search order is from
+ last to first defined, so we get the most recent version of
+ the description. */
+ ACRONYM_DESC *temp = acronyms_stack;
+
+ while (temp)
+ {
+ if (STREQ (aa, temp->acronym)
+ && strlen (temp->description) > 0)
+ {
+ add_word_args (" title=\"%s\"",
+ text_expansion (temp->description));
+ break;
+ }
+ temp = temp->next;
+ }
+ }
+
+ add_char ('>');
+ execute_string ("%s", aa);
+ add_word (is_abbr ? "</abbr>" : "</acronym>");
+ }
+ else if (docbook)
+ {
+ xml_insert_element (is_abbr ? ABBREV : ACRONYM, START);
+ execute_string ("%s", aa);
+ xml_insert_element (is_abbr ? ABBREV : ACRONYM, END);
+ }
else if (xml)
- xml_insert_element (ACRONYM, arg);
+ {
+ xml_insert_element (is_abbr ? ABBREV : ACRONYM, START);
+
+ xml_insert_element (is_abbr ? ABBREVWORD : ACRONYMWORD, START);
+ execute_string ("%s", aa);
+ xml_insert_element (is_abbr ? ABBREVWORD : ACRONYMWORD, END);
+
+ if (strlen (description) > 0)
+ {
+ xml_insert_element (is_abbr ? ABBREVDESC : ACRONYMDESC, START);
+ execute_string ("%s", description);
+ xml_insert_element (is_abbr ? ABBREVDESC : ACRONYMDESC, END);
+ }
+
+ xml_insert_element (is_abbr ? ABBREV : ACRONYM, END);
+ }
+ else
+ execute_string ("%s", aa);
+
+ /* Put description into parenthesis after the acronym for all outputs
+ except XML. */
+ if (strlen (description) > 0 && (!xml || docbook))
+ add_word_args (" (%s)", description);
}
void
-cm_tt (arg)
- int arg;
+cm_acronym (int arg)
+{
+ cm_acronym_or_abbr (arg, 0);
+}
+
+void
+cm_abbr (int arg)
+{
+ cm_acronym_or_abbr (arg, 1);
+}
+
+void
+cm_tt (int arg)
{
/* @t{} is a no-op in Info. */
if (html)
@@ -562,37 +789,73 @@ cm_tt (arg)
}
void
-cm_code (arg)
- int arg;
+cm_code (int arg)
{
+ if (arg == START)
+ in_fixed_width_font++;
+
if (xml)
- xml_insert_element (CODE, arg);
- else
{
- extern int printing_index;
-
- if (arg == START)
+ if (STREQ (command, "command"))
+ xml_insert_element (COMMAND_TAG, arg);
+ else if (STREQ (command, "env"))
+ xml_insert_element (ENV, arg);
+ else if (STREQ (command, "file"))
+ xml_insert_element (FILE_TAG, arg);
+ else if (STREQ (command, "option"))
+ xml_insert_element (OPTION, arg);
+ else if (STREQ (command, "samp"))
{
- in_fixed_width_font++;
-
- if (html)
- insert_html_tag (arg, "code");
- else if (!printing_index)
- add_char ('`');
+ if (docbook && arg == START)
+ {
+ /* Even though @samp is in_fixed_width_font, it
+ should always start a paragraph. Unfortunately,
+ in_fixed_width_font inhibits that. */
+ xml_start_para ();
+ xml_insert_entity ("lsquo");
+ }
+ xml_insert_element (SAMP, arg);
+ if (docbook && arg == END)
+ xml_insert_entity ("rsquo");
}
- else if (html)
+ else
+ xml_insert_element (CODE, arg);
+ }
+ else if (html)
+ {
+ if (STREQ (command, "code"))
insert_html_tag (arg, "code");
else
+ { /* Use <samp> tag in general to get typewriter. */
+ if (arg == START)
+ { /* If @samp specifically, add quotes a la TeX output. */
+ if (STREQ (command, "samp")) add_char ('`');
+ add_word ("<samp>");
+ }
+ insert_html_tag_with_attribute (arg, "span", "class=\"%s\"",command);
+ if (arg == END)
+ {
+ add_word ("</samp>");
+ if (STREQ (command, "samp")) add_char ('\'');
+ }
+ }
+ }
+ else
+ {
+ extern int printing_index;
+
+ if (!printing_index)
{
- if (!printing_index)
+ if (arg == START)
+ add_char ('`');
+ else
add_meta_char ('\'');
}
}
}
void
-cm_kbd (arg)
- int arg;
+cm_kbd (int arg)
{
if (xml)
xml_insert_element (KBD, arg);
@@ -612,8 +875,9 @@ cm_kbd (arg)
}
}
+/* Just show a url (http://example.org/..., for example), don't link to it. */
void
-cm_url (arg, start, end)
+cm_indicate_url (int arg, int start, int end)
{
if (xml)
xml_insert_element (URL, arg);
@@ -633,8 +897,7 @@ cm_url (arg, start, end)
}
void
-cm_key (arg)
- int arg;
+cm_key (int arg)
{
if (xml)
xml_insert_element (KEY, arg);
@@ -646,8 +909,7 @@ cm_key (arg)
/* Handle a command that switches to a non-fixed-width font. */
void
-not_fixed_width (arg)
- int arg;
+not_fixed_width (int arg)
{
if (arg == START)
in_fixed_width_font = 0;
@@ -655,8 +917,7 @@ not_fixed_width (arg)
/* @var in makeinfo just uppercases the text. */
void
-cm_var (arg, start_pos, end_pos)
- int arg, start_pos, end_pos;
+cm_var (int arg, int start_pos, int end_pos)
{
if (xml)
xml_insert_element (VAR, arg);
@@ -681,51 +942,50 @@ cm_var (arg, start_pos, end_pos)
}
void
-cm_sc (arg, start_pos, end_pos)
- int arg, start_pos, end_pos;
+cm_sc (int arg, int start_pos, int end_pos)
{
if (xml)
xml_insert_element (SC, arg);
else
{
- not_fixed_width (arg);
-
- if (arg == START)
- {
- if (html)
- insert_html_tag (arg, small_tag);
- }
- else
- {
- int all_upper;
+ not_fixed_width (arg);
- if (html)
- start_pos += sizeof (small_tag) + 2 - 1; /* skip <small> */
+ if (arg == START)
+ {
+ if (html)
+ insert_html_tag_with_attribute (arg, "span", "class=\"sc\"");
+ }
+ else
+ {
+ int all_upper;
- /* Avoid the warning below if there's no text inside @sc{}, or
- when processing menus under --no-headers. */
- all_upper = start_pos < end_pos;
+ if (html)
+ start_pos += sizeof ("<span class=\"sc\">") - 1; /* skip <span> */
+
+ /* Avoid the warning below if there's no text inside @sc{}, or
+ when processing menus under --no-headers. */
+ all_upper = start_pos < end_pos;
+
+ while (start_pos < end_pos)
+ {
+ unsigned char c = output_paragraph[start_pos];
+ if (!isupper (c))
+ all_upper = 0;
+ if (!html)
+ output_paragraph[start_pos] = coerce_to_upper (c);
+ start_pos++;
+ }
+ if (all_upper)
+ warning (_("@sc argument all uppercase, thus no effect"));
- while (start_pos < end_pos)
- {
- unsigned char c = output_paragraph[start_pos];
- if (!isupper (c))
- all_upper = 0;
- output_paragraph[start_pos] = coerce_to_upper (c);
- start_pos++;
+ if (html)
+ insert_html_tag (arg, "span");
}
- if (all_upper)
- warning (_("@sc argument all uppercase, thus no effect"));
-
- if (html)
- insert_html_tag (arg, small_tag);
- }
}
}
void
-cm_dfn (arg, position)
- int arg, position;
+cm_dfn (int arg, int position)
{
if (xml)
xml_insert_element (DFN, arg);
@@ -741,8 +1001,7 @@ cm_dfn (arg, position)
}
void
-cm_emph (arg)
- int arg;
+cm_emph (int arg)
{
if (xml)
xml_insert_element (EMPH, arg);
@@ -753,11 +1012,10 @@ cm_emph (arg)
}
void
-cm_verb (arg)
- int arg;
+cm_verb (int arg)
{
int character;
- int delimiter;
+ int delimiter = 0; /* avoid warning */
int seen_end = 0;
in_fixed_width_font++;
@@ -799,7 +1057,7 @@ cm_verb (arg)
else if (html && character == '&')
add_word ("&amp;");
- else if (character == delimiter)
+ else if (character == delimiter && input_text[input_text_offset+1] == '}')
{ /* Assume no newlines in END_VERBATIM. */
seen_end = 1;
input_text_offset++;
@@ -832,20 +1090,33 @@ cm_verb (arg)
void
-cm_strong (arg, position)
- int arg, position;
+cm_strong (int arg, int start_pos, int end_pos)
{
- if (xml)
+ if (docbook && arg == START)
+ xml_insert_element_with_attribute (B, arg, "role=\"bold\"");
+ else if (xml)
xml_insert_element (STRONG, arg);
else if (html)
insert_html_tag (arg, "strong");
else
add_char ('*');
+
+ if (!xml && !html && !docbook && !no_headers
+ && arg == END
+ && end_pos - start_pos >= 6
+ && (STRNCASEEQ ((char *) output_paragraph + start_pos, "*Note:", 6)
+ || STRNCASEEQ ((char *) output_paragraph + start_pos, "*Note ", 6)))
+ {
+ /* Translators: "Note:" is literal here and should not be
+ translated. @strong{Nota}, say, does not cause the problem. */
+ warning (_("@strong{Note...} produces a spurious cross-reference in Info; reword to avoid that"));
+ /* Adjust the output to avoid writing the bad xref. */
+ output_paragraph[start_pos + 5] = '_';
+ }
}
void
-cm_cite (arg, position)
- int arg, position;
+cm_cite (int arg, int position)
{
if (xml)
xml_insert_element (CITE, arg);
@@ -862,8 +1133,7 @@ cm_cite (arg, position)
/* No highlighting, but argument switches fonts. */
void
-cm_not_fixed_width (arg, start, end)
- int arg, start, end;
+cm_not_fixed_width (int arg, int start, int end)
{
if (xml)
xml_insert_element (NOTFIXEDWIDTH, arg);
@@ -871,10 +1141,14 @@ cm_not_fixed_width (arg, start, end)
}
void
-cm_i (arg)
- int arg;
+cm_i (int arg)
{
- if (xml)
+ /* Make use of <lineannotation> of Docbook, if we are
+ inside an @example or similar. */
+ extern int printing_index;
+ if (docbook && !filling_enabled && !printing_index)
+ xml_insert_element (LINEANNOTATION, arg);
+ else if (xml)
xml_insert_element (I, arg);
else if (html)
insert_html_tag (arg, "i");
@@ -883,10 +1157,31 @@ cm_i (arg)
}
void
-cm_b (arg)
- int arg;
+cm_slanted (int arg)
{
- if (xml)
+ /* Make use of <lineannotation> of Docbook, if we are
+ inside an @example or similar. */
+ extern int printing_index;
+ if (docbook && !filling_enabled && !printing_index)
+ xml_insert_element (LINEANNOTATION, arg);
+ else if (xml)
+ xml_insert_element (SLANTED, arg);
+ else if (html)
+ insert_html_tag (arg, "i");
+ else
+ not_fixed_width (arg);
+}
+
+void
+cm_b (int arg)
+{
+ /* See cm_i comments. */
+ extern int printing_index;
+ if (docbook && !filling_enabled && !printing_index)
+ xml_insert_element (LINEANNOTATION, arg);
+ else if (docbook && arg == START)
+ xml_insert_element_with_attribute (B, arg, "role=\"bold\"");
+ else if (xml)
xml_insert_element (B, arg);
else if (html)
insert_html_tag (arg, "b");
@@ -895,23 +1190,37 @@ cm_b (arg)
}
void
-cm_r (arg)
- int arg;
+cm_r (int arg)
{
- if (xml)
+ /* See cm_i comments. */
+ extern int printing_index;
+ if (docbook && !filling_enabled && !printing_index)
+ xml_insert_element (LINEANNOTATION, arg);
+ else if (xml)
xml_insert_element (R, arg);
+ else if (html)
+ insert_html_tag_with_attribute (arg, "span", "class=\"roman\"");
else
- {
- if (html)
- insert_html_tag (arg, "");
+ not_fixed_width (arg);
+}
- not_fixed_width (arg);
- }
+void
+cm_sansserif (int arg)
+{
+ /* See cm_i comments. */
+ extern int printing_index;
+ if (docbook && !filling_enabled && !printing_index)
+ xml_insert_element (LINEANNOTATION, arg);
+ else if (xml)
+ xml_insert_element (SANSSERIF, arg);
+ else if (html)
+ insert_html_tag_with_attribute (arg, "span", "class=\"sansserif\"");
+ else
+ not_fixed_width (arg);
}
void
-cm_titlefont (arg)
- int arg;
+cm_titlefont (int arg)
{
if (xml)
xml_insert_element (TITLEFONT, arg);
@@ -929,26 +1238,26 @@ cm_titlefont (arg)
}
}
-int titlepage_cmd_present = 0;
+/* Unfortunately, we cannot interpret @math{} contents like TeX does. We just
+ pass them through. */
void
-cm_titlepage (arg)
- int arg;
+cm_math (int arg)
{
- titlepage_cmd_present = 1;
- command_name_condition ();
+ if (xml && !docbook)
+ xml_insert_element (MATH, arg);
}
/* Various commands are no-op's. */
void
-cm_no_op ()
+cm_no_op (void)
{
}
/* For proofing single chapters, etc. */
void
-cm_novalidate ()
+cm_novalidate (void)
{
validating = 0;
}
@@ -956,13 +1265,19 @@ cm_novalidate ()
/* Prevent the argument from being split across two lines. */
void
-cm_w (arg, start, end)
- int arg, start, end;
+cm_w (int arg)
{
if (arg == START)
non_splitting_words++;
else
- non_splitting_words--;
+ {
+ if (docbook || html || xml)
+ /* This is so @w{$}Log$ doesn't end up as <dollar>Log<dollar>
+ in the output. */
+ insert_string ("<!-- /@w -->");
+
+ non_splitting_words--;
+ }
}
@@ -970,8 +1285,7 @@ cm_w (arg, start, end)
for TeX (the space stretches and stretches, and does not inhibit
hyphenation). */
void
-cm_tie (arg)
- int arg;
+cm_tie (int arg)
{
if (arg == START)
{
@@ -985,8 +1299,7 @@ cm_tie (arg)
/* Explain that this command is obsolete, thus the user shouldn't
do anything with it. */
static void
-cm_obsolete (arg, start, end)
- int arg, start, end;
+cm_obsolete (int arg, int start, int end)
{
if (arg == START)
warning (_("%c%s is obsolete"), COMMAND_PREFIX, command);
@@ -996,17 +1309,44 @@ cm_obsolete (arg, start, end)
/* Inhibit the indentation of the next paragraph, but not of following
paragraphs. */
void
-cm_noindent ()
+cm_noindent (void)
{
if (!inhibit_paragraph_indentation)
inhibit_paragraph_indentation = -1;
}
+void
+cm_noindent_cmd (void)
+{
+ cm_noindent ();
+ xml_no_indent = 1;
+ skip_whitespace_and_newlines();
+
+ if (xml)
+ xml_start_para ();
+ else if (html && !paragraph_is_open)
+ add_html_block_elt ("<p class=\"noindent\">");
+ else
+ {
+ paragraph_is_open = 0;
+ start_paragraph ();
+ }
+}
+
/* Force indentation of the next paragraph. */
void
-cm_indent ()
+cm_indent (void)
{
inhibit_paragraph_indentation = 0;
+ xml_no_indent = 0;
+ skip_whitespace_and_newlines();
+
+ if (xml)
+ xml_start_para ();
+ else if (html && !paragraph_is_open)
+ add_html_block_elt ("<p class=\"indent\">");
+ else
+ start_paragraph ();
}
/* I don't know exactly what to do with this. Should I allow
@@ -1016,7 +1356,7 @@ cm_indent ()
switch files. Finally, complain, or at least warn. It doesn't
really matter, anyway, since this doesn't get executed. */
void
-cm_setfilename ()
+cm_setfilename (void)
{
char *filename;
get_rest_of_line (1, &filename);
@@ -1027,7 +1367,7 @@ cm_setfilename ()
}
void
-cm_settitle ()
+cm_settitle (void)
{
if (xml)
{
@@ -1038,11 +1378,6 @@ cm_settitle ()
execute_string ("%s", title);
xml_in_book_title = 0;
xml_insert_element (SETTITLE, END);
- if (docbook && !xml_in_bookinfo)
- {
- xml_insert_element (BOOKINFO, START);
- xml_in_bookinfo = 1;
- }
}
else
get_rest_of_line (0, &title);
@@ -1051,8 +1386,7 @@ cm_settitle ()
/* Ignore argument in braces. */
void
-cm_ignore_arg (arg, start_pos, end_pos)
- int arg, start_pos, end_pos;
+cm_ignore_arg (int arg, int start_pos, int end_pos)
{
if (arg == END)
output_paragraph_offset = start_pos;
@@ -1060,19 +1394,21 @@ cm_ignore_arg (arg, start_pos, end_pos)
/* Ignore argument on rest of line. */
void
-cm_ignore_line ()
+cm_ignore_line (void)
{
discard_until ("\n");
}
/* Insert the number of blank lines passed as argument. */
void
-cm_sp ()
+cm_sp (void)
{
int lines;
char *line;
- get_rest_of_line (1, &line);
+ /* Due to tricky stuff in execute_string(), @value{} can't be expanded.
+ So there is really no reason to enable expansion for @sp parameters. */
+ get_rest_of_line (0, &line);
if (sscanf (line, "%d", &lines) != 1 || lines <= 0)
line_error (_("@sp requires a positive numeric argument, not `%s'"), line);
@@ -1080,41 +1416,45 @@ cm_sp ()
{
if (xml)
{
+ /* @sp can appear between @item and @itemx, @deffn and @deffnx. */
+ xml_dont_touch_items_defs++;
xml_insert_element_with_attribute (SP, START, "lines=\"%s\"", line);
/* insert_string (line);*/
xml_insert_element (SP, END);
+ xml_dont_touch_items_defs--;
}
else
- {
- /* Must disable filling since otherwise multiple newlines is like
- multiple spaces. Must close paragraph since that's what the
- manual says and that's what TeX does. */
- int save_filling_enabled = filling_enabled;
- filling_enabled = 0;
-
- /* close_paragraph generates an extra blank line. */
- close_single_paragraph ();
+ {
+ /* Must disable filling since otherwise multiple newlines is like
+ multiple spaces. Must close paragraph since that's what the
+ manual says and that's what TeX does. */
+ int save_filling_enabled = filling_enabled;
+ filling_enabled = 0;
- if (lines && html && !executing_string)
- html_output_head ();
+ /* close_paragraph generates an extra blank line. */
+ close_single_paragraph ();
- while (lines--)
- {
- if (html)
- insert_string ("<br><p>\n");
- else
- add_char ('\n');
- }
+ if (lines && html && !executing_string)
+ html_output_head ();
- filling_enabled = save_filling_enabled;
- }
+ if (html)
+ add_html_block_elt ("<pre class=\"sp\">\n");
+
+ while (lines--)
+ add_char ('\n');
+
+ if (html)
+ add_html_block_elt ("</pre>\n");
+
+ filling_enabled = save_filling_enabled;
+ }
}
free (line);
}
/* @dircategory LINE outputs INFO-DIR-SECTION LINE, unless --no-headers. */
void
-cm_dircategory ()
+cm_dircategory (void)
{
char *line;
@@ -1148,77 +1488,79 @@ cm_dircategory ()
Then center the line of text.
*/
void
-cm_center ()
+cm_center (void)
{
if (xml)
{
- unsigned char *line;
+ char *line;
xml_insert_element (CENTER, START);
- get_rest_of_line (0, (char **)&line);
- execute_string ("%s", (char *)line);
+ get_rest_of_line (0, &line);
+ execute_string ("%s", line);
free (line);
xml_insert_element (CENTER, END);
}
else
{
- int i, start, length;
- unsigned char *line;
- int save_indented_fill = indented_fill;
- int save_filling_enabled = filling_enabled;
- int fudge_factor = 1;
+ int i, start, length;
+ char *line;
+ int save_indented_fill = indented_fill;
+ int save_filling_enabled = filling_enabled;
+ int fudge_factor = 1;
- filling_enabled = indented_fill = 0;
- cm_noindent ();
- start = output_paragraph_offset;
+ filling_enabled = indented_fill = 0;
+ cm_noindent ();
+ start = output_paragraph_offset;
- if (html)
- add_word ("<div align=\"center\">");
+ if (html)
+ add_html_block_elt ("<div align=\"center\">");
- inhibit_output_flushing ();
- get_rest_of_line (0, (char **)&line);
- execute_string ("%s", (char *)line);
- free (line);
- uninhibit_output_flushing ();
- if (html)
- add_word ("</div>");
+ inhibit_output_flushing ();
+ get_rest_of_line (0, &line);
+ execute_string ("%s", line);
+ free (line);
+ uninhibit_output_flushing ();
+ if (html)
+ add_html_block_elt ("</div>");
- else
- {
- i = output_paragraph_offset - 1;
- while (i > (start - 1) && output_paragraph[i] == '\n')
- i--;
+ else
+ {
+ i = output_paragraph_offset - 1;
+ while (i > (start - 1) && output_paragraph[i] == '\n')
+ i--;
- output_paragraph_offset = ++i;
- length = output_paragraph_offset - start;
+ output_paragraph_offset = ++i;
+ length = output_paragraph_offset - start;
- if (length < (fill_column - fudge_factor))
- {
- line = xmalloc (1 + length);
- memcpy (line, (char *)(output_paragraph + start), length);
+ if (length < (fill_column - fudge_factor))
+ {
+ line = xmalloc (1 + length);
+ memcpy (line, (char *)(output_paragraph + start), length);
- i = (fill_column - fudge_factor - length) / 2;
- output_paragraph_offset = start;
+ i = (fill_column - fudge_factor - length) / 2;
+ output_paragraph_offset = start;
- while (i--)
- insert (' ');
+ while (i--)
+ insert (' ');
- for (i = 0; i < length; i++)
- insert (line[i]);
+ for (i = 0; i < length; i++)
+ insert (line[i]);
- free (line);
- }
- }
+ free (line);
+ }
+ }
- insert ('\n');
- filling_enabled = save_filling_enabled;
- indented_fill = save_indented_fill;
+ insert ('\n');
+ filling_enabled = save_filling_enabled;
+ indented_fill = save_indented_fill;
+ close_single_paragraph ();
+ if (looking_at("\n"))
+ insert ('\n');
}
}
/* Show what an expression returns. */
void
-cm_result (arg)
- int arg;
+cm_result (int arg)
{
if (arg == END)
add_word (html ? "=&gt;" : "=>");
@@ -1226,8 +1568,7 @@ cm_result (arg)
/* What an expression expands to. */
void
-cm_expansion (arg)
- int arg;
+cm_expansion (int arg)
{
if (arg == END)
add_word (html ? "==&gt;" : "==>");
@@ -1235,8 +1576,7 @@ cm_expansion (arg)
/* Indicates two expressions are equivalent. */
void
-cm_equiv (arg)
- int arg;
+cm_equiv (int arg)
{
if (arg == END)
add_word ("==");
@@ -1244,8 +1584,7 @@ cm_equiv (arg)
/* What an expression may print. */
void
-cm_print (arg)
- int arg;
+cm_print (int arg)
{
if (arg == END)
add_word ("-|");
@@ -1253,8 +1592,7 @@ cm_print (arg)
/* An error signaled. */
void
-cm_error (arg)
- int arg;
+cm_error (int arg)
{
if (arg == END)
add_word (html ? "error--&gt;" : "error-->");
@@ -1262,8 +1600,7 @@ cm_error (arg)
/* The location of point in an example of a buffer. */
void
-cm_point (arg)
- int arg;
+cm_point (int arg)
{
if (arg == END)
add_word ("-!-");
@@ -1272,7 +1609,7 @@ cm_point (arg)
/* @exdent: Start a new line with just this text on it.
The text is outdented one level if possible. */
void
-cm_exdent ()
+cm_exdent (void)
{
char *line;
int save_indent = current_indent;
@@ -1294,6 +1631,10 @@ cm_exdent ()
if (html)
add_word ("<br>");
+ else if (docbook)
+ xml_insert_element (LINEANNOTATION, START);
+ else if (xml)
+ xml_insert_element (EXDENT, START);
/* Can't close_single_paragraph, then we lose preceding blank lines. */
flush_output ();
@@ -1302,11 +1643,18 @@ cm_exdent ()
if (html)
add_word ("<br>");
+ else if (xml)
+ {
+ xml_insert_element (docbook ? LINEANNOTATION : EXDENT, END);
+ insert ('\n');
+ }
+
close_single_paragraph ();
current_indent = save_indent;
in_fixed_width_font = save_in_fixed_width_font;
- start_paragraph ();
+ if (!xml)
+ start_paragraph ();
}
/*
@@ -1315,15 +1663,16 @@ cm_exdent ()
verbatim_include != 0: process through handle_verbatim_environment
*/
static void
-handle_include (verbatim_include)
- int verbatim_include;
+handle_include (int verbatim_include)
{
char *arg, *filename;
if (macro_expansion_output_stream && !executing_string)
me_append_before_this_command ();
- close_paragraph ();
+ if (!insertion_stack)
+ close_paragraph (); /* No blank lines etc. if not at outer level. */
+
get_rest_of_line (0, &arg);
/* We really only want to expand @value, but it's easier to just do
everything. TeX will only work with @value. */
@@ -1350,7 +1699,7 @@ handle_include (verbatim_include)
fflush (stdout);
}
- if (!find_and_load (filename))
+ if (!find_and_load (filename, 1))
{
popfile ();
line_number--;
@@ -1379,7 +1728,7 @@ handle_include (verbatim_include)
/* Include file as if put in @verbatim environment */
void
-cm_verbatiminclude ()
+cm_verbatiminclude (void)
{
handle_include (1);
}
@@ -1387,7 +1736,7 @@ cm_verbatiminclude ()
/* Remember this file, and move onto the next. */
void
-cm_include ()
+cm_include (void)
{
handle_include (0);
}
@@ -1396,17 +1745,16 @@ cm_include ()
/* @bye: Signals end of processing. Easy to make this happen. */
void
-cm_bye ()
+cm_bye (void)
{
discard_braces (); /* should not have any unclosed braces left */
- flush_output ();
input_text_offset = input_text_length;
}
/* @paragraphindent */
static void
-cm_paragraphindent ()
+cm_paragraphindent (void)
{
char *arg;
@@ -1420,26 +1768,28 @@ cm_paragraphindent ()
/* @exampleindent: change indentation of example-like environments. */
static int
-set_default_indentation_increment (string)
- char *string;
+set_example_indentation_increment (char *string)
{
if (strcmp (string, "asis") == 0 || strcmp (string, _("asis")) == 0)
;
else if (strcmp (string, "none") == 0 || strcmp (string, _("none")) == 0)
- default_indentation_increment = 0;
- else if (sscanf (string, "%d", &default_indentation_increment) != 1)
+ example_indentation_increment = 0;
+ else if (sscanf (string, "%d", &example_indentation_increment) != 1)
return -1;
return 0;
}
static void
-cm_exampleindent ()
+cm_exampleindent (void)
{
char *arg;
get_rest_of_line (1, &arg);
- if (set_default_indentation_increment (arg) != 0)
- line_error (_("Bad argument to %c%s"), COMMAND_PREFIX, command);
+ if (set_example_indentation_increment (arg) != 0)
+ line_error (_("Bad argument to @%s"), command);
+
+ if (input_text[input_text_offset] == '\n')
+ close_single_paragraph ();
free (arg);
}
@@ -1448,8 +1798,7 @@ cm_exampleindent ()
/* @firstparagraphindent: suppress indentation in first paragraphs after
headings. */
static int
-set_firstparagraphindent (string)
- char *string;
+set_firstparagraphindent (char *string)
{
if (STREQ (string, "insert") || STREQ (string, _("insert")))
do_first_par_indent = 1;
@@ -1461,7 +1810,7 @@ set_firstparagraphindent (string)
}
static void
-cm_firstparagraphindent ()
+cm_firstparagraphindent (void)
{
char *arg;
@@ -1471,3 +1820,64 @@ cm_firstparagraphindent ()
free (arg);
}
+
+/* For DocBook and XML, produce &period; for `.@:'. This gives the processing
+ software a fighting chance to treat it specially by not adding extra space.
+
+ Do this also for ?, !, and :. */
+void
+cm_colon (void)
+{
+ if (xml)
+ {
+ if (strchr (".?!:", input_text[input_text_offset-3]) != NULL)
+ {
+ /* Erase literal character that's there, except `>', which is
+ part of the XML tag. */
+ if (output_paragraph[output_paragraph_offset-1] != '>')
+ output_paragraph_offset--;
+
+ switch (input_text[input_text_offset-3])
+ {
+ case '.':
+ xml_insert_entity ("period");
+ break;
+ case '?':
+ xml_insert_entity ("quest");
+ break;
+ case '!':
+ xml_insert_entity ("excl");
+ break;
+ case ':':
+ xml_insert_entity ("colon");
+ break;
+ }
+ }
+ }
+}
+
+/* Ending sentences explicitly. Currently, only outputs entities for XML
+ output, for other formats it calls insert_self. */
+void
+cm_punct (int arg)
+{
+ if (xml && !docbook)
+ {
+ switch (input_text[input_text_offset-1])
+ {
+ case '.':
+ xml_insert_entity ("eosperiod");
+ break;
+ case '?':
+ xml_insert_entity ("eosquest");
+ break;
+ case '!':
+ xml_insert_entity ("eosexcl");
+ break;
+ }
+ }
+ else
+ {
+ insert_self (arg);
+ }
+}
diff --git a/contrib/texinfo/makeinfo/cmds.h b/contrib/texinfo/makeinfo/cmds.h
index e9b860a..6824550 100644
--- a/contrib/texinfo/makeinfo/cmds.h
+++ b/contrib/texinfo/makeinfo/cmds.h
@@ -1,7 +1,8 @@
/* cmds.h -- declarations for cmds.c.
- $Id: cmds.h,v 1.3 2002/11/04 22:15:19 karl Exp $
+ $Id: cmds.h,v 1.9 2004/11/26 00:48:35 karl Exp $
- Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2002, 2003, 2004 Free Software Foundation,
+ Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -47,7 +48,166 @@ typedef struct
extern COMMAND command_table[];
-/* Nonzero if we have seen an @titlepage command. */
-extern int titlepage_cmd_present;
+typedef struct acronym_desc
+{
+ struct acronym_desc *next;
+ char *acronym;
+ char *description;
+} ACRONYM_DESC;
+
+/* Texinfo commands. */
+extern void insert_self (int arg),
+ insert_space (int arg),
+ cm_ignore_line (void),
+ cm_ignore_arg (int arg, int start_pos, int end_pos),
+ cm_comment (void),
+ cm_no_op (void);
+
+/* Document structure and meta information. */
+extern void cm_setfilename (void),
+ cm_settitle (void),
+ cm_documentdescription (void),
+ cm_node (void),
+ cm_menu (void),
+ cm_detailmenu (void),
+ cm_dircategory (void),
+ cm_direntry (void),
+ cm_bye (void);
+
+/* File inclusion. */
+extern void cm_include (void),
+ cm_verbatiminclude (void);
+
+/* Cross referencing commands. */
+extern void cm_anchor (int arg),
+ cm_xref (int arg),
+ cm_pxref (int arg),
+ cm_ref (int arg),
+ cm_inforef (int arg),
+ cm_uref (int arg);
+
+/* Special insertions. */
+extern void cm_LaTeX (int arg),
+ cm_TeX (int arg),
+ cm_bullet (int arg),
+ cm_colon (void),
+ cm_comma (int arg),
+ cm_copyright (int arg),
+ cm_dots (int arg),
+ cm_enddots (int arg),
+ cm_equiv (int arg),
+ cm_error (int arg),
+ cm_expansion (int arg),
+ cm_image (int arg),
+ cm_insert_copying (void),
+ cm_minus (int arg),
+ cm_point (int arg),
+ cm_print (int arg),
+ cm_punct (int arg),
+ cm_registeredsymbol (int arg),
+ cm_result (int arg);
+
+/* Emphasis and markup. */
+extern void cm_acronym (int arg),
+ cm_abbr (int arg),
+ cm_b (int arg),
+ cm_cite (int arg, int position),
+ cm_code (int arg),
+ cm_dfn (int arg, int position),
+ cm_dmn (int arg),
+ cm_email (int arg),
+ cm_emph (int arg),
+ cm_i (int arg),
+ cm_kbd (int arg),
+ cm_key (int arg),
+ cm_math (int arg),
+ cm_not_fixed_width (int arg, int start, int end),
+ cm_r (int arg),
+ cm_sansserif (int arg),
+ cm_sc (int arg, int start_pos, int end_pos),
+ cm_slanted (int arg),
+ cm_strong (int arg, int start_pos, int end_pos),
+ cm_tt (int arg),
+ cm_indicate_url (int arg, int start, int end),
+ cm_var (int arg, int start_pos, int end_pos),
+ cm_verb (int arg);
+
+/* Block environments. */
+extern void cm_cartouche (void),
+ cm_group (void),
+ cm_display (void),
+ cm_smalldisplay (void),
+ cm_example (void),
+ cm_smallexample (void),
+ cm_smalllisp (void),
+ cm_lisp (void),
+ cm_format (void),
+ cm_smallformat (void),
+ cm_quotation (void),
+ cm_copying (void),
+ cm_flushleft (void),
+ cm_flushright (void),
+ cm_verbatim (void),
+ cm_end (void);
+
+/* Tables, lists, enumerations. */
+extern void cm_table (void),
+ cm_ftable (void),
+ cm_vtable (void),
+ cm_itemize (void),
+ cm_enumerate (void),
+ cm_multitable (void),
+ cm_headitem (void),
+ cm_item (void),
+ cm_itemx (void),
+ cm_tab (void);
+
+extern void cm_center (void),
+ cm_exdent (void),
+ cm_indent (void),
+ cm_noindent (void),
+ cm_noindent_cmd (void);
+
+/* Line and page breaks. */
+extern void cm_asterisk (void),
+ cm_sp (void),
+ cm_page (void);
+
+/* Non breaking words. */
+extern void cm_tie (int arg),
+ cm_w (int arg);
+
+/* Title page creation. */
+extern void cm_titlepage (void),
+ cm_author (void),
+ cm_titlepage_cmds (void),
+ cm_titlefont (int arg),
+ cm_today (int arg);
+
+/* Floats. */
+extern void cm_float (void),
+ cm_caption (int arg),
+ cm_shortcaption (void),
+ cm_listoffloats (void);
+
+/* Indices. */
+extern void cm_kindex (void),
+ cm_cindex (void),
+ cm_findex (void),
+ cm_pindex (void),
+ cm_vindex (void),
+ cm_tindex (void),
+ cm_defindex (void),
+ cm_defcodeindex (void),
+ cm_synindex (void),
+ cm_printindex (void);
+
+/* Conditionals. */
+extern void cm_set (void),
+ cm_clear (void),
+ cm_ifset (void),
+ cm_ifclear (void),
+ cm_ifeq (void),
+ cm_value (int arg, int start_pos, int end_pos);
#endif /* !CMDS_H */
diff --git a/contrib/texinfo/makeinfo/defun.c b/contrib/texinfo/makeinfo/defun.c
index 992cf3b..0323353 100644
--- a/contrib/texinfo/makeinfo/defun.c
+++ b/contrib/texinfo/makeinfo/defun.c
@@ -1,7 +1,7 @@
/* defun.c -- @defun and friends.
- $Id: defun.c,v 1.6 2003/05/09 23:51:10 karl Exp $
+ $Id: defun.c,v 1.11 2004/04/11 17:56:46 karl Exp $
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -38,8 +38,7 @@ struct token_accumulator
};
static void
-initialize_token_accumulator (accumulator)
- struct token_accumulator *accumulator;
+initialize_token_accumulator (struct token_accumulator *accumulator)
{
accumulator->length = 0;
accumulator->index = 0;
@@ -47,9 +46,7 @@ initialize_token_accumulator (accumulator)
}
static void
-accumulate_token (accumulator, token)
- struct token_accumulator *accumulator;
- char *token;
+accumulate_token (struct token_accumulator *accumulator, char *token)
{
if (accumulator->index >= accumulator->length)
{
@@ -64,8 +61,7 @@ accumulate_token (accumulator, token)
/* Given STRING_POINTER pointing at an open brace, skip forward and return a
pointer to just past the matching close brace. */
static int
-scan_group_in_string (string_pointer)
- char **string_pointer;
+scan_group_in_string (char **string_pointer)
{
char *scan_string = (*string_pointer) + 1;
unsigned int level = 1;
@@ -106,8 +102,7 @@ scan_group_in_string (string_pointer)
Contiguous whitespace characters are converted to a token
consisting of a single space. */
static char **
-args_from_string (string)
- char *string;
+args_from_string (char *string)
{
struct token_accumulator accumulator;
char *token_start, *token_end;
@@ -176,6 +171,15 @@ args_from_string (string)
token_end = balanced ? (scan_string - 1) : scan_string;
}
+ /* Make commas separate tokens so to differentiate them from
+ parameter types in XML output. */
+ else if (*scan_string == ',')
+ {
+ token_start = scan_string;
+ scan_string += 1;
+ token_end = scan_string;
+ }
+
/* Otherwise a token is delimited by whitespace, parentheses,
brackets, or braces. A token is also ended by a command. */
else
@@ -198,6 +202,14 @@ args_from_string (string)
break;
}
+ /* End token if we are looking at a comma, as commas are
+ delimiters too. */
+ if (c == ',')
+ {
+ scan_string--;
+ break;
+ }
+
/* If we encounter a command embedded within a token,
then end the token. */
if (c == COMMAND_PREFIX)
@@ -216,12 +228,16 @@ args_from_string (string)
}
static void
-process_defun_args (defun_args, auto_var_p)
- char **defun_args;
- int auto_var_p;
+process_defun_args (char **defun_args, int auto_var_p)
{
int pending_space = 0;
+ if (xml)
+ {
+ xml_process_defun_args (defun_args, auto_var_p);
+ return;
+ }
+
for (;;)
{
char *defun_arg = *defun_args++;
@@ -245,38 +261,25 @@ process_defun_args (defun_args, auto_var_p)
{
/* Within @deffn and friends, texinfo.tex makes parentheses
sans serif and brackets bold. We use roman instead. */
- insert_html_tag (START, "");
+ if (html)
+ insert_html_tag (START, "");
+
add_char (defun_arg[0]);
- insert_html_tag (END, "");
+
+ if (html)
+ insert_html_tag (END, "");
}
- else if (defun_arg[0] == '&')
- if (html)
- {
- defun_arg = escape_string (xstrdup (defun_arg));
- add_word (defun_arg);
- free (defun_arg);
- }
- else
- add_word (defun_arg);
- else if (defun_arg[0] == COMMAND_PREFIX)
- execute_string ("%s", defun_arg);
- else if (auto_var_p)
- if (html)
- {
- defun_arg = escape_string (xstrdup (defun_arg));
- add_word (defun_arg);
- free (defun_arg);
- }
- else
- add_word (defun_arg);
+ /* else if (defun_arg[0] == '&' || defun_arg[0] == COMMAND_PREFIX) */
+ /* execute_string ("%s", defun_arg); */
+ /* else if (auto_var_p) */
+ /* execute_string ("%s", defun_arg); */
else
- add_word (defun_arg);
+ execute_string ("%s", defun_arg);
}
}
static char *
-next_nonwhite_defun_arg (arg_pointer)
- char ***arg_pointer;
+next_nonwhite_defun_arg (char ***arg_pointer)
{
char **scan = (*arg_pointer);
char *arg = (*scan++);
@@ -296,10 +299,9 @@ next_nonwhite_defun_arg (arg_pointer)
/* This is needed also in insertion.c. */
enum insertion_type
-get_base_type (type)
- enum insertion_type type;
+get_base_type (int type)
{
- enum insertion_type base_type;
+ int base_type;
switch (type)
{
case defivar: base_type = defcv; break;
@@ -307,6 +309,7 @@ get_base_type (type)
case defmethod: base_type = defop; break;
case defopt: base_type = defvr; break;
case defspec: base_type = deffn; break;
+ case deftypecv: base_type = deftypecv; break;
case deftypefun: base_type = deftypefn; break;
case deftypeivar: base_type = deftypeivar; break;
case deftypemethod: base_type = deftypemethod; break;
@@ -326,14 +329,14 @@ get_base_type (type)
TYPE says which insertion this is.
X_P, if nonzero, says not to start a new insertion. */
static void
-defun_internal (type, x_p)
- enum insertion_type type;
- int x_p;
+defun_internal (int type, int x_p)
{
- enum insertion_type base_type;
+ int base_type;
char **defun_args, **scan_args;
const char *category;
- char *defined_name, *type_name, *type_name2;
+ char *defined_name;
+ char *type_name = NULL;
+ char *type_name2 = NULL;
{
char *line;
@@ -355,6 +358,33 @@ defun_internal (type, x_p)
Unfortunately, this means that you can't call macros, use @value, etc.
inside @def.. commands, sigh. */
get_rest_of_line (0, &line);
+
+ /* Basic line continuation. If a line ends with \s*@\s* concatanate
+ the next line. */
+ {
+ char *next_line, *new_line;
+ int i;
+
+ line_continuation:
+ i = strlen (line) - 1;
+
+ if (line[i] == '@' && line[i-1] != '@')
+ {
+ get_rest_of_line (0, &next_line);
+ new_line = (char *) xmalloc (i + strlen (next_line) + 2);
+ strncpy (new_line, line, i);
+ new_line[i] = '\0';
+ free (line);
+ strcat (new_line, " ");
+ strcat (new_line, next_line);
+ line = xstrdup (new_line);
+ free (next_line);
+ free (new_line);
+
+ goto line_continuation;
+ }
+ }
+
defun_args = (args_from_string (line));
free (line);
}
@@ -399,7 +429,8 @@ defun_internal (type, x_p)
}
/* The class name. */
- if ((base_type == deftypefn)
+ if ((base_type == deftypecv)
+ || (base_type == deftypefn)
|| (base_type == deftypevr)
|| (base_type == defcv)
|| (base_type == defop)
@@ -410,8 +441,9 @@ defun_internal (type, x_p)
type_name = next_nonwhite_defun_arg (&scan_args);
/* The type name for typed languages. */
- if ((base_type == deftypemethod)
+ if ((base_type == deftypecv)
|| (base_type == deftypeivar)
+ || (base_type == deftypemethod)
|| (base_type == deftypeop)
)
type_name2 = next_nonwhite_defun_arg (&scan_args);
@@ -452,131 +484,115 @@ defun_internal (type, x_p)
current_indent -= default_indentation_increment;
start_paragraph ();
- if (!x_p) {
- /* Start the definition on new paragraph. */
- if (html)
- add_word ("<p>\n");
- }
-
- if (!html && !docbook)
+ if (!html && !xml)
switch (base_type)
{
case deffn:
case defvr:
case deftp:
- execute_string (" -- %s: %s", category, defined_name);
+ execute_string (" --- %s: %s", category, defined_name);
break;
case deftypefn:
case deftypevr:
- execute_string (" -- %s: %s %s", category, type_name, defined_name);
+ execute_string (" --- %s: %s %s", category, type_name, defined_name);
break;
case defcv:
- execute_string (" -- %s %s %s: %s", category, _("of"), type_name,
+ execute_string (" --- %s %s %s: %s", category, _("of"), type_name,
defined_name);
break;
+ case deftypecv:
case deftypeivar:
- execute_string (" -- %s %s %s: %s %s", category, _("of"), type_name,
+ execute_string (" --- %s %s %s: %s %s", category, _("of"), type_name,
type_name2, defined_name);
break;
case defop:
- execute_string (" -- %s %s %s: %s", category, _("on"), type_name,
+ execute_string (" --- %s %s %s: %s", category, _("on"), type_name,
defined_name);
break;
case deftypeop:
- execute_string (" -- %s %s %s: %s %s", category, _("on"), type_name,
+ execute_string (" --- %s %s %s: %s %s", category, _("on"), type_name,
type_name2, defined_name);
break;
case deftypemethod:
- execute_string (" -- %s %s %s: %s %s", category, _("on"), type_name,
+ execute_string (" --- %s %s %s: %s %s", category, _("on"), type_name,
type_name2, defined_name);
break;
}
-
- if (html)
+ else if (html)
{
/* If this is not a @def...x version, it could only
be a normal version @def.... So start the table here. */
if (!x_p)
- {
- add_html_elt ("<table width=");
- add_word ("\"100%\">\n");
- }
-
- /* If this is an @def...x there has to be an other @def... before
- it, so this is only a new row within an existing table. With
- two complete standalone tables the gap between them is too big. */
- add_word ("<tr>\n");
- add_html_elt ("<td align=\"left\">");
+ insert_string ("<div class=\"defun\">\n");
+ else
+ rollback_empty_tag ("blockquote");
+ /* xx The single words (on, off) used here, should depend on
+ documentlanguage and NOT on gettext --kama. */
switch (base_type)
{
case deffn:
case defvr:
case deftp:
- /* <i> is for the following function arguments. */
- insert_html_tag (START, "b");
- execute_string ("%s", defined_name);
- insert_html_tag (END, "b");
- insert_html_tag (START, "i");
- break;
case deftypefn:
case deftypevr:
- execute_string ("%s ", type_name);
- insert_html_tag (START, "b");
- execute_string ("%s", defined_name);
- insert_html_tag (END, "b");
- insert_html_tag (START, "i");
+ execute_string ("--- %s: ", category);
break;
+
case defcv:
+ case deftypecv:
+ case deftypeivar:
+ execute_string ("--- %s %s %s: ", category, _("of"), type_name);
+ break;
+
case defop:
- insert_html_tag (START, "b");
- execute_string ("%s", defined_name);
- insert_html_tag (END, "b");
- insert_html_tag (START, "i");
- break;
case deftypemethod:
case deftypeop:
- case deftypeivar:
- execute_string ("%s ", type_name2);
- insert_html_tag (START, "b");
- execute_string ("%s", defined_name);
- insert_html_tag (END, "b");
- insert_html_tag (START, "i");
- break;
- }
- } /* if (html)... */
+ execute_string ("--- %s %s %s: ", category, _("on"), type_name);
+ break;
+ } /* switch (base_type)... */
- if (docbook)
- {
switch (base_type)
{
case deffn:
case defvr:
case deftp:
- case defcv:
- case defop:
- xml_insert_element (FUNCTION, START);
+ /* <var> is for the following function arguments. */
+ insert_html_tag (START, "b");
execute_string ("%s", defined_name);
- xml_insert_element (FUNCTION, END);
+ insert_html_tag (END, "b");
+ insert_html_tag (START, "var");
break;
case deftypefn:
case deftypevr:
execute_string ("%s ", type_name);
- xml_insert_element (FUNCTION, START);
+ insert_html_tag (START, "b");
execute_string ("%s", defined_name);
- xml_insert_element (FUNCTION, END);
+ insert_html_tag (END, "b");
+ insert_html_tag (START, "var");
break;
+ case defcv:
+ case defop:
+ insert_html_tag (START, "b");
+ execute_string ("%s", defined_name);
+ insert_html_tag (END, "b");
+ insert_html_tag (START, "var");
+ break;
+ case deftypecv:
+ case deftypeivar:
case deftypemethod:
case deftypeop:
- case deftypeivar:
execute_string ("%s ", type_name2);
- xml_insert_element (FUNCTION, START);
+ insert_html_tag (START, "b");
execute_string ("%s", defined_name);
- xml_insert_element (FUNCTION, END);
+ insert_html_tag (END, "b");
+ insert_html_tag (START, "var");
break;
}
-
- } /* if (docbook)... */
+ }
+ else if (xml)
+ xml_begin_def_term (base_type, category, defined_name, type_name,
+ type_name2);
current_indent += default_indentation_increment;
@@ -606,95 +622,52 @@ defun_internal (type, x_p)
}
current_indent -= default_indentation_increment;
- close_single_paragraph ();
-
- if (html)
- {
- /* xx The single words (on, off) used here, should depend on
- documentlanguage and NOT on gettext --kama. */
- switch (base_type)
- {
- case deffn:
- case defvr:
- case deftp:
- case deftypefn:
- case deftypevr:
- insert_html_tag (END, "i"); /* close italic area for arguments */
- /* put the rest into the second column */
- add_word ("</td>\n");
- add_html_elt ("<td align=\"right\">");
- execute_string ("%s", category);
- break;
-
- case defcv:
- add_word ("</td>\n");
- add_html_elt ("<td align=\"right\">");
- execute_string ("%s %s %s", category, _("of"), type_name);
- break;
-
- case defop:
- case deftypemethod:
- case deftypeop:
- insert_html_tag (END, "i");
- add_word ("</td>\n");
- add_html_elt ("<td align=\"right\">");
- execute_string ("%s %s %s", category, _("on"), type_name);
- break;
-
- case deftypeivar:
- insert_html_tag (END, "i");
- add_word ("</td>\n");
- add_html_elt ("<td align=\"right\">");
- execute_string ("%s %s %s", category, _("of"), type_name);
- break;
- } /* switch (base_type)... */
+ if (!html)
+ close_single_paragraph ();
- add_word ("</td>\n"); /* close second column */
- add_word ("</tr>\n"); /* close row */
-
- /* This is needed because I have to know if the next line is
- normal text or another @def..x. If text follows, create a new
- table to get the indentation for the following text.
-
- This construction would fail if someone uses:
- @deffn
- @sp 2
- @deffnx
- .
- @end deffn
- But we don't care. */
- if (!looking_at ("@def"))
- {
- add_word ("</table>\n");
- add_html_elt ("<table width=\"95%\" align=\"center\">");
- add_word ("\n<tr><td>\n");
- }
-
- } /* if (html)... */
+ /* Make an entry in the appropriate index. (XML and
+ Docbook already got their entries, so skip them.) */
+ if (!xml)
+ switch (base_type)
+ {
+ case deffn:
+ case deftypefn:
+ execute_string ("@findex %s\n", defined_name);
+ break;
+ case defcv:
+ case deftypecv:
+ case deftypevr:
+ case defvr:
+ execute_string ("@vindex %s\n", defined_name);
+ break;
+ case deftypeivar:
+ execute_string ("@vindex %s %s %s\n", defined_name, _("of"),
+ type_name);
+ break;
+ case defop:
+ case deftypeop:
+ case deftypemethod:
+ execute_string ("@findex %s %s %s\n", defined_name, _("on"),
+ type_name);
+ break;
+ case deftp:
+ execute_string ("@tindex %s\n", defined_name);
+ break;
+ }
- /* Make an entry in the appropriate index. */
- switch (base_type)
+ if (xml)
+ xml_end_def_term ();
+ else if (html)
{
- case deffn:
- case deftypefn:
- execute_string ("@findex %s\n", defined_name);
- break;
- case defvr:
- case deftypevr:
- case defcv:
- execute_string ("@vindex %s\n", defined_name);
- break;
- case deftypeivar:
- execute_string ("@vindex %s %s %s\n", defined_name, _("of"), type_name);
- break;
- case defop:
- case deftypeop:
- case deftypemethod:
- execute_string ("@findex %s %s %s\n", defined_name, _("on"), type_name);
- break;
- case deftp:
- execute_string ("@tindex %s\n", defined_name);
- break;
+ inhibit_paragraph_indentation = 1;
+ no_indent = 1;
+ insert_html_tag (END, "var");
+ insert_string ("<br>\n");
+ /* Indent the definition a bit. */
+ add_html_block_elt ("<blockquote>");
+ no_indent = 0;
+ inhibit_paragraph_indentation = 0;
+ paragraph_is_open = 0;
}
/* Deallocate the token list. */
@@ -713,9 +686,9 @@ defun_internal (type, x_p)
If the name of the calling command ends in `x', then this is an extra
entry included in the body of an insertion of the same type. */
void
-cm_defun ()
+cm_defun (void)
{
- enum insertion_type type;
+ int type;
char *base_command = xstrdup (command); /* command with any `x' removed */
int x_p = (command[strlen (command) - 1] == 'x');
@@ -726,15 +699,22 @@ cm_defun ()
/* If we are adding to an already existing insertion, then make sure
that we are already in an insertion of type TYPE. */
- if (x_p && (!insertion_level || insertion_stack->insertion != type))
+ if (x_p)
{
- line_error (_("Must be in `@%s' environment to use `@%s'"),
- base_command, command);
- discard_until ("\n");
- return;
+ INSERTION_ELT *i = insertion_stack;
+ /* Skip over ifclear and ifset conditionals. */
+ while (i && (i->insertion == ifset || i->insertion == ifclear))
+ i = i->next;
+
+ if (!i || i->insertion != type)
+ {
+ line_error (_("Must be in `@%s' environment to use `@%s'"),
+ base_command, command);
+ discard_until ("\n");
+ return;
+ }
}
- else
- defun_internal (type, x_p);
+ defun_internal (type, x_p);
free (base_command);
}
diff --git a/contrib/texinfo/makeinfo/defun.h b/contrib/texinfo/makeinfo/defun.h
index a701201..9af73ec 100644
--- a/contrib/texinfo/makeinfo/defun.h
+++ b/contrib/texinfo/makeinfo/defun.h
@@ -1,5 +1,5 @@
/* defun.h -- declaration for defuns.
- $Id: defun.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: defun.h,v 1.2 2004/04/11 17:56:47 karl Exp $
Copyright (C) 1999 Free Software Foundation, Inc.
@@ -24,8 +24,8 @@
#include "insertion.h"
-extern enum insertion_type get_base_type ();
-extern void cm_defun ();
+extern enum insertion_type get_base_type (int type);
+extern void cm_defun (void);
#endif /* !DEFUN_H */
diff --git a/contrib/texinfo/makeinfo/files.c b/contrib/texinfo/makeinfo/files.c
index a6a69d2..db11226 100644
--- a/contrib/texinfo/makeinfo/files.c
+++ b/contrib/texinfo/makeinfo/files.c
@@ -1,7 +1,7 @@
/* files.c -- file-related functions for makeinfo.
- $Id: files.c,v 1.3 2003/03/06 14:05:30 karl Exp $
+ $Id: files.c,v 1.5 2004/07/27 00:06:31 karl Exp $
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -20,15 +20,17 @@
#include "system.h"
#include "files.h"
+#include "html.h"
+#include "index.h"
#include "macro.h"
#include "makeinfo.h"
+#include "node.h"
FSTACK *filestack = NULL;
static int node_filename_stack_index = 0;
static int node_filename_stack_size = 0;
static char **node_filename_stack = NULL;
-
/* Looking for include files. */
@@ -36,9 +38,7 @@ static char **node_filename_stack = NULL;
return the next one pointed to by INDEX, or NULL if there are no more.
Advance INDEX to the character after the colon. */
static char *
-extract_colon_unit (string, index)
- char *string;
- int *index;
+extract_colon_unit (char *string, int *index)
{
int start;
int path_sep_char = PATH_SEP[0];
@@ -84,9 +84,7 @@ extract_colon_unit (string, index)
If PATH is NULL, only the current directory is searched.
If the file could not be found, return a NULL pointer. */
char *
-get_file_info_in_path (filename, path, finfo)
- char *filename, *path;
- struct stat *finfo;
+get_file_info_in_path (char *filename, char *path, struct stat *finfo)
{
char *dir;
int result, index = 0;
@@ -129,12 +127,68 @@ get_file_info_in_path (filename, path, finfo)
}
return NULL;
}
+
+/* Prepend and append new paths to include_files_path. */
+void
+prepend_to_include_path (char *path)
+{
+ if (!include_files_path)
+ {
+ include_files_path = xstrdup (path);
+ include_files_path = xrealloc (include_files_path,
+ strlen (include_files_path) + 3); /* 3 for ":.\0" */
+ strcat (strcat (include_files_path, PATH_SEP), ".");
+ }
+ else
+ {
+ char *tmp = xstrdup (include_files_path);
+ include_files_path = xrealloc (include_files_path,
+ strlen (include_files_path) + strlen (path) + 2); /* 2 for ":\0" */
+ strcpy (include_files_path, path);
+ strcat (include_files_path, PATH_SEP);
+ strcat (include_files_path, tmp);
+ free (tmp);
+ }
+}
+
+void
+append_to_include_path (char *path)
+{
+ if (!include_files_path)
+ include_files_path = xstrdup (".");
+
+ include_files_path = (char *) xrealloc (include_files_path,
+ 2 + strlen (include_files_path) + strlen (path));
+ strcat (include_files_path, PATH_SEP);
+ strcat (include_files_path, path);
+}
+
+/* Remove the first path from the include_files_path. */
+void
+pop_path_from_include_path (void)
+{
+ int i = 0;
+ char *tmp;
+
+ if (include_files_path)
+ for (i = 0; i < strlen (include_files_path)
+ && include_files_path[i] != ':'; i++);
+
+ /* Advance include_files_path to the next char from ':' */
+ tmp = (char *) xmalloc (strlen (include_files_path) - i);
+ strcpy (tmp, (char *) include_files_path + i + 1);
+
+ free (include_files_path);
+ include_files_path = tmp;
+}
/* Find and load the file named FILENAME. Return a pointer to
- the loaded file, or NULL if it can't be loaded. */
+ the loaded file, or NULL if it can't be loaded. If USE_PATH is zero,
+ just look for the given file (this is used in handle_delayed_writes),
+ else search along include_files_path. */
+
char *
-find_and_load (filename)
- char *filename;
+find_and_load (char *filename, int use_path)
{
struct stat fileinfo;
long file_size;
@@ -144,7 +198,9 @@ find_and_load (filename)
result = fullpath = NULL;
- fullpath = get_file_info_in_path (filename, include_files_path, &fileinfo);
+ fullpath
+ = get_file_info_in_path (filename, use_path ? include_files_path : NULL,
+ &fileinfo);
if (!fullpath)
goto error_exit;
@@ -205,8 +261,8 @@ error_exit:
}
/* Pushing and popping files. */
-void
-push_node_filename ()
+static void
+push_node_filename (void)
{
if (node_filename_stack_index + 1 > node_filename_stack_size)
node_filename_stack = xrealloc
@@ -216,15 +272,15 @@ push_node_filename ()
node_filename_stack_index++;
}
-void
-pop_node_filename ()
+static void
+pop_node_filename (void)
{
node_filename = node_filename_stack[--node_filename_stack_index];
}
/* Save the state of the current input file. */
void
-pushfile ()
+pushfile (void)
{
FSTACK *newstack = xmalloc (sizeof (FSTACK));
newstack->filename = input_filename;
@@ -240,7 +296,7 @@ pushfile ()
/* Make the current file globals be what is on top of the file stack. */
void
-popfile ()
+popfile (void)
{
FSTACK *tos = filestack;
@@ -274,7 +330,7 @@ popfile ()
/* Flush all open files on the file stack. */
void
-flush_file_stack ()
+flush_file_stack (void)
{
while (filestack)
{
@@ -289,8 +345,7 @@ flush_file_stack ()
/* Return the index of the first character in the filename
which is past all the leading directory characters. */
static int
-skip_directory_part (filename)
- char *filename;
+skip_directory_part (char *filename)
{
int i = strlen (filename) - 1;
@@ -304,9 +359,8 @@ skip_directory_part (filename)
return i;
}
-char *
-filename_non_directory (name)
- char *name;
+static char *
+filename_non_directory (char *name)
{
return xstrdup (name + skip_directory_part (name));
}
@@ -315,8 +369,7 @@ filename_non_directory (name)
filename without the path information, or extensions.
This conses up a new string. */
char *
-filename_part (filename)
- char *filename;
+filename_part (char *filename)
{
char *basename = filename_non_directory (filename);
@@ -333,10 +386,8 @@ filename_part (filename)
/* Return the pathname part of filename. This can be NULL. */
char *
-pathname_part (filename)
- char *filename;
+pathname_part (char *filename)
{
- char *expand_filename ();
char *result = NULL;
int i;
@@ -353,72 +404,9 @@ pathname_part (filename)
return result;
}
-/* Return the expansion of FILENAME. */
-char *
-expand_filename (filename, input_name)
- char *filename, *input_name;
-{
- int i;
- char *full_pathname ();
-
- if (filename)
- {
- filename = full_pathname (filename);
- if (IS_ABSOLUTE (filename)
- || (*filename == '.' &&
- (IS_SLASH (filename[1]) ||
- (filename[1] == '.' && IS_SLASH (filename[2])))))
- return filename;
- }
- else
- {
- filename = filename_non_directory (input_name);
-
- if (!*filename)
- {
- free (filename);
- filename = xstrdup ("noname.texi");
- }
-
- for (i = strlen (filename) - 1; i; i--)
- if (filename[i] == '.')
- break;
-
- if (!i)
- i = strlen (filename);
-
- if (i + 6 > (strlen (filename)))
- filename = xrealloc (filename, i + 6);
- strcpy (filename + i, html ? ".html" : ".info");
- return filename;
- }
-
- if (IS_ABSOLUTE (input_name))
- {
- /* Make it so that relative names work. */
- char *result;
-
- i = strlen (input_name) - 1;
-
- result = xmalloc (1 + strlen (input_name) + strlen (filename));
- strcpy (result, input_name);
-
- while (!IS_SLASH (result[i]) && i)
- i--;
- if (IS_SLASH (result[i]))
- i++;
-
- strcpy (&result[i], filename);
- free (filename);
- return result;
- }
- return filename;
-}
-
/* Return the full path to FILENAME. */
-char *
-full_pathname (filename)
- char *filename;
+static char *
+full_pathname (char *filename)
{
int initial_character;
char *result;
@@ -508,9 +496,68 @@ full_pathname (filename)
return result;
}
+/* Return the expansion of FILENAME. */
char *
-output_name_from_input_name (name)
- char *name;
+expand_filename (char *filename, char *input_name)
+{
+ int i;
+
+ if (filename)
+ {
+ filename = full_pathname (filename);
+ if (IS_ABSOLUTE (filename)
+ || (*filename == '.' &&
+ (IS_SLASH (filename[1]) ||
+ (filename[1] == '.' && IS_SLASH (filename[2])))))
+ return filename;
+ }
+ else
+ {
+ filename = filename_non_directory (input_name);
+
+ if (!*filename)
+ {
+ free (filename);
+ filename = xstrdup ("noname.texi");
+ }
+
+ for (i = strlen (filename) - 1; i; i--)
+ if (filename[i] == '.')
+ break;
+
+ if (!i)
+ i = strlen (filename);
+
+ if (i + 6 > (strlen (filename)))
+ filename = xrealloc (filename, i + 6);
+ strcpy (filename + i, html ? ".html" : ".info");
+ return filename;
+ }
+
+ if (IS_ABSOLUTE (input_name))
+ {
+ /* Make it so that relative names work. */
+ char *result;
+
+ i = strlen (input_name) - 1;
+
+ result = xmalloc (1 + strlen (input_name) + strlen (filename));
+ strcpy (result, input_name);
+
+ while (!IS_SLASH (result[i]) && i)
+ i--;
+ if (IS_SLASH (result[i]))
+ i++;
+
+ strcpy (&result[i], filename);
+ free (filename);
+ return result;
+ }
+ return filename;
+}
+
+char *
+output_name_from_input_name (char *name)
{
return expand_filename (NULL, name);
}
@@ -522,8 +569,7 @@ output_name_from_input_name (name)
never be longer than the original, otherwise we couldn't be sure we
have enough space in the original string to modify it in place. */
char *
-normalize_filename (fname)
- char *fname;
+normalize_filename (char *fname)
{
int maxlen;
char orig[PATH_MAX + 1];
@@ -573,3 +619,166 @@ normalize_filename (fname)
return fname;
}
+
+/* Delayed writing functions. A few of the commands
+ needs to be handled at the end, namely @contents,
+ @shortcontents, @printindex and @listoffloats.
+ These functions take care of that. */
+static DELAYED_WRITE *delayed_writes = NULL;
+int handling_delayed_writes = 0;
+
+void
+register_delayed_write (char *delayed_command)
+{
+ DELAYED_WRITE *new;
+
+ if (!current_output_filename || !*current_output_filename)
+ {
+ /* Cannot register if we don't know what the output file is. */
+ warning (_("`%s' omitted before output filename"), delayed_command);
+ return;
+ }
+
+ if (STREQ (current_output_filename, "-"))
+ {
+ /* Do not register a new write if the output file is not seekable.
+ Let the user know about it first, though. */
+ warning (_("`%s' omitted since writing to stdout"), delayed_command);
+ return;
+ }
+
+ /* Don't complain if the user is writing /dev/null, since surely they
+ don't care, but don't register the delayed write, either. */
+ if (FILENAME_CMP (current_output_filename, NULL_DEVICE) == 0
+ || FILENAME_CMP (current_output_filename, ALSO_NULL_DEVICE) == 0)
+ return;
+
+ /* We need the HTML header in the output,
+ to get a proper output_position. */
+ if (!executing_string && html)
+ html_output_head ();
+ /* Get output_position updated. */
+ flush_output ();
+
+ new = xmalloc (sizeof (DELAYED_WRITE));
+ new->command = xstrdup (delayed_command);
+ new->filename = xstrdup (current_output_filename);
+ new->input_filename = xstrdup (input_filename);
+ new->position = output_position;
+ new->calling_line = line_number;
+ new->node = current_node ? xstrdup (current_node): "";
+
+ new->node_order = node_order;
+ new->index_order = index_counter;
+
+ new->next = delayed_writes;
+ delayed_writes = new;
+}
+
+void
+handle_delayed_writes (void)
+{
+ DELAYED_WRITE *temp = (DELAYED_WRITE *) reverse_list
+ ((GENERIC_LIST *) delayed_writes);
+ int position_shift_amount, line_number_shift_amount;
+ char *delayed_buf;
+
+ handling_delayed_writes = 1;
+
+ while (temp)
+ {
+ delayed_buf = find_and_load (temp->filename, 0);
+
+ if (output_paragraph_offset > 0)
+ {
+ error (_("Output buffer not empty."));
+ return;
+ }
+
+ if (!delayed_buf)
+ {
+ fs_error (temp->filename);
+ return;
+ }
+
+ output_stream = fopen (temp->filename, "w");
+ if (!output_stream)
+ {
+ fs_error (temp->filename);
+ return;
+ }
+
+ if (fwrite (delayed_buf, 1, temp->position, output_stream) != temp->position)
+ {
+ fs_error (temp->filename);
+ return;
+ }
+
+ {
+ int output_position_at_start = output_position;
+ int line_number_at_start = output_line_number;
+
+ /* In order to make warnings and errors
+ refer to the correct line number. */
+ input_filename = temp->input_filename;
+ line_number = temp->calling_line;
+
+ execute_string ("%s", temp->command);
+ flush_output ();
+
+ /* Since the output file is modified, following delayed writes
+ need to be updated by this amount. */
+ position_shift_amount = output_position - output_position_at_start;
+ line_number_shift_amount = output_line_number - line_number_at_start;
+ }
+
+ if (fwrite (delayed_buf + temp->position, 1,
+ input_text_length - temp->position, output_stream)
+ != input_text_length - temp->position
+ || fclose (output_stream) != 0)
+ fs_error (temp->filename);
+
+ /* Done with the buffer. */
+ free (delayed_buf);
+
+ /* Update positions in tag table for nodes that are defined after
+ the line this delayed write is registered. */
+ if (!html && !xml)
+ {
+ TAG_ENTRY *node;
+ for (node = tag_table; node; node = node->next_ent)
+ if (node->order > temp->node_order)
+ node->position += position_shift_amount;
+ }
+
+ /* Something similar for the line numbers in all of the defined
+ indices. */
+ {
+ int i;
+ for (i = 0; i < defined_indices; i++)
+ if (name_index_alist[i])
+ {
+ char *name = ((INDEX_ALIST *) name_index_alist[i])->name;
+ INDEX_ELT *index;
+ for (index = index_list (name); index; index = index->next)
+ if ((no_headers || STREQ (index->node, temp->node))
+ && index->entry_number > temp->index_order)
+ index->output_line += line_number_shift_amount;
+ }
+ }
+
+ /* Shift remaining delayed positions
+ by the length of this write. */
+ {
+ DELAYED_WRITE *future_write = temp->next;
+ while (future_write)
+ {
+ if (STREQ (temp->filename, future_write->filename))
+ future_write->position += position_shift_amount;
+ future_write = future_write->next;
+ }
+ }
+
+ temp = temp->next;
+ }
+}
diff --git a/contrib/texinfo/makeinfo/files.h b/contrib/texinfo/makeinfo/files.h
index 0e1cde3..0943663 100644
--- a/contrib/texinfo/makeinfo/files.h
+++ b/contrib/texinfo/makeinfo/files.h
@@ -1,7 +1,7 @@
/* files.h -- declarations for files.c.
- $Id: files.h,v 1.2 2003/03/06 14:05:30 karl Exp $
+ $Id: files.h,v 1.4 2004/07/27 00:06:31 karl Exp $
- Copyright (C) 1998, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2002, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -34,14 +34,37 @@ typedef struct fstack
} FSTACK;
extern FSTACK *filestack;
-extern void pushfile (), popfile ();
-extern void flush_file_stack ();
-extern char *get_file_info_in_path ();
-extern char *find_and_load ();
-extern char *output_name_from_input_name ();
-extern char *expand_filename ();
-extern char *filename_part ();
-extern char *pathname_part ();
-extern char *normalize_filename ();
+extern void pushfile (void);
+extern void popfile (void);
+extern void flush_file_stack (void);
+extern char *get_file_info_in_path (char *filename, char *path,
+ struct stat *finfo);
+extern char *find_and_load (char *filename, int use_path);
+extern char *output_name_from_input_name (char *name);
+extern char *expand_filename (char *filename, char *input_name);
+extern char *filename_part (char *filename);
+extern char *pathname_part (char *filename);
+extern char *normalize_filename (char *fname);
+extern void append_to_include_path (char *path);
+extern void prepend_to_include_path (char *path);
+extern void pop_path_from_include_path (void);
+extern void register_delayed_write (char *delayed_command);
+extern void handle_delayed_writes (void);
+
+typedef struct delayed_write
+{
+ struct delayed_write *next;
+ char *command;
+ char *filename;
+ char *input_filename;
+ char *node;
+ int position;
+ int calling_line;
+
+ int node_order;
+ int index_order;
+} DELAYED_WRITE;
+
+extern int handling_delayed_writes;
#endif /* !FILES_H */
diff --git a/contrib/texinfo/makeinfo/float.c b/contrib/texinfo/makeinfo/float.c
new file mode 100644
index 0000000..b2c9a33
--- /dev/null
+++ b/contrib/texinfo/makeinfo/float.c
@@ -0,0 +1,430 @@
+/* float.c -- float environment functions.
+ $Id: float.c,v 1.8 2004/07/05 22:23:22 karl Exp $
+
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Originally written by Alper Ersoy <dirt@gtk.org>. */
+
+#include "system.h"
+#include "makeinfo.h"
+#include "cmds.h"
+#include "files.h"
+#include "float.h"
+#include "html.h"
+#include "sectioning.h"
+#include "xml.h"
+
+static FLOAT_ELT *float_stack = NULL;
+
+void
+add_new_float (char *id, char *title, char *shorttitle,
+ char *type, char *position)
+{
+ FLOAT_ELT *new = xmalloc (sizeof (FLOAT_ELT));
+ unsigned long num_len;
+
+ new->id = id;
+ new->type = type;
+ new->title = title;
+ new->shorttitle = shorttitle;
+ new->position = position;
+ new->title_used = 0;
+ new->defining_line = line_number - 1;
+
+ new->number = current_chapter_number ();
+ /* Append dot if not @unnumbered. */
+ num_len = strlen (new->number);
+ if (num_len > 0)
+ {
+ new->number = xrealloc (new->number, num_len + 1 + 1);
+ new->number[num_len] = '.';
+ new->number[num_len+1] = '\0';
+ }
+
+ { /* Append the current float number. */
+ unsigned len = strlen (new->number) + 21; /* that's 64 bits */
+ char *s = xmalloc (len + 1);
+
+ sprintf (s, "%s%d", new->number,
+ count_floats_of_type_in_chapter (text_expansion (type),
+ new->number) + 1);
+ free (new->number);
+ new->number = xstrdup (s);
+ }
+
+ /* Plain text output needs sectioning number and its title,
+ when listing floats. */
+ if (!html && !xml && no_headers)
+ {
+ new->section = current_sectioning_number ();
+ if (strlen (new->section) == 0)
+ new->section_name = current_sectioning_name ();
+ else
+ new->section_name = "";
+ }
+
+ new->next = float_stack;
+ float_stack = new;
+}
+
+int
+count_floats_of_type_in_chapter (char *type, char *chapter)
+{
+ int i = 0;
+ int l = strlen (chapter);
+ FLOAT_ELT *temp = float_stack;
+
+ while (temp && strncmp (temp->number, chapter, l) == 0)
+ {
+ if (strlen (temp->id) > 0 && STREQ (text_expansion (temp->type), type))
+ i++;
+ temp = temp->next;
+ }
+
+ return i;
+}
+
+char *
+current_float_title (void)
+{
+ return float_stack->title;
+}
+
+char *
+current_float_shorttitle (void)
+{
+ return float_stack->shorttitle;
+}
+
+char *
+current_float_type (void)
+{
+ return float_stack->type;
+}
+
+char *
+current_float_position (void)
+{
+ return float_stack->position;
+}
+
+char *
+current_float_number (void)
+{
+ return float_stack->number;
+}
+
+char *
+current_float_id (void)
+{
+ return float_stack->id;
+}
+
+char *
+get_float_ref (char *id)
+{
+ FLOAT_ELT *temp = float_stack;
+
+ while (temp)
+ {
+ if (STREQ (id, temp->id))
+ {
+ char *s = xmalloc (strlen (temp->type) + strlen (temp->number) + 2);
+ sprintf (s, "%s %s", temp->type, temp->number);
+ return s;
+ }
+ temp = temp->next;
+ }
+
+ return NULL;
+}
+
+static int
+float_type_exists (char *check_type)
+{
+ /* Check if the requested float_type exists in the floats stack. */
+ FLOAT_ELT *temp;
+
+ for (temp = float_stack; temp; temp = temp->next)
+ if (STREQ (temp->type, check_type) && temp->id && *temp->id)
+ return 1;
+
+ return 0;
+}
+
+void
+cm_listoffloats (void)
+{
+ char *float_type;
+ get_rest_of_line (1, &float_type);
+
+ /* get_rest_of_line increments the line number by one,
+ so to make warnings/errors point to the correct line,
+ we decrement the line_number again. */
+ if (!handling_delayed_writes)
+ line_number--;
+
+ if (handling_delayed_writes && !float_type_exists (float_type))
+ warning (_("Requested float type `%s' not previously used"), float_type);
+
+ if (xml)
+ {
+ xml_insert_element_with_attribute (LISTOFFLOATS, START,
+ "type=\"%s\"", text_expansion (float_type));
+ xml_insert_element (LISTOFFLOATS, END);
+ }
+ else if (!handling_delayed_writes)
+ {
+ int command_len = sizeof ("@ ") + strlen (command) + strlen (float_type);
+ char *list_command = xmalloc (command_len + 1);
+
+ /* These are for the text following @listoffloats command.
+ Handling them with delayed writes is too late. */
+ close_paragraph ();
+ cm_noindent ();
+
+ sprintf (list_command, "@%s %s", command, float_type);
+ register_delayed_write (list_command);
+ free (list_command);
+ }
+ else if (float_type_exists (float_type))
+ {
+ FLOAT_ELT *temp = (FLOAT_ELT *) reverse_list
+ ((GENERIC_LIST *) float_stack);
+ FLOAT_ELT *new_start = temp;
+
+ if (html)
+ insert_string ("<ul class=\"listoffloats\">\n");
+ else
+ {
+ if (!no_headers)
+ insert_string ("* Menu:\n\n");
+ }
+
+ while (temp)
+ {
+ if (strlen (temp->id) > 0 && STREQ (float_type, temp->type))
+ {
+ if (html)
+ {
+ /* A bit of space for HTML reabality. */
+ insert_string (" ");
+ add_html_block_elt ("<li>");
+
+ /* Simply relying on @ref command doesn't work here, because
+ commas in the caption may confuse the argument parsing. */
+ add_word ("<a href=\"");
+ add_anchor_name (temp->id, 1);
+ add_word ("\">");
+
+ if (strlen (float_type) > 0)
+ execute_string ("%s", float_type);
+
+ if (strlen (temp->id) > 0)
+ {
+ if (strlen (float_type) > 0)
+ add_char (' ');
+
+ add_word (temp->number);
+ }
+
+ if (strlen (temp->title) > 0)
+ {
+ if (strlen (float_type) > 0
+ || strlen (temp->id) > 0)
+ insert_string (": ");
+
+ execute_string ("%s", temp->title);
+ }
+
+ add_word ("</a>");
+
+ add_html_block_elt ("</li>\n");
+ }
+ else
+ {
+ char *entry;
+ char *raw_entry;
+ char *title = expansion (temp->title, 0);
+
+ int len;
+ int aux_chars_len; /* these are asterisk, colon, etc. */
+ int column_width; /* width of the first column in menus. */
+ int number_len; /* length of Figure X.Y: etc. */
+ int i = 0;
+
+ /* Chosen widths are to match what @printindex produces. */
+ if (no_headers)
+ {
+ column_width = 43;
+ /* We have only one auxiliary character, NULL. */
+ aux_chars_len = sizeof ("");
+ }
+ else
+ {
+ column_width = 37;
+ /* We'll be adding an asterisk, followed by a space
+ and then a colon after the title, to construct a
+ proper menu item. */
+ aux_chars_len = sizeof ("* :");
+ }
+
+ /* Allocate enough space for possible expansion later. */
+ raw_entry = (char *) xmalloc (strlen (float_type)
+ + strlen (temp->number) + strlen (title)
+ + sizeof (": "));
+
+ sprintf (raw_entry, "%s %s", float_type, temp->number);
+
+ if (strlen (title) > 0)
+ strcat (raw_entry, ": ");
+
+ number_len = strlen (raw_entry);
+
+ len = strlen (title) + strlen (raw_entry);
+
+ /* If we have a @shortcaption, try it if @caption is
+ too long to fit on a line. */
+ if (len + aux_chars_len > column_width
+ && strlen (temp->shorttitle) > 0)
+ title = expansion (temp->shorttitle, 0);
+
+ strcat (raw_entry, title);
+ len = strlen (raw_entry);
+
+ if (len + aux_chars_len > column_width)
+ { /* Shorten long titles by looking for a space before
+ column_width - strlen (" ..."). */
+ /* -1 is for NULL, which is already in aux_chars_len. */
+ aux_chars_len += sizeof ("...") - 1;
+ len = column_width - aux_chars_len;
+ while (raw_entry[len] != ' ' && len >= 0)
+ len--;
+
+ /* Advance to the whitespace. */
+ len++;
+
+ /* If we are at the end of, say, Figure X.Y:, but
+ we have a title, then this means title does not
+ contain any whitespaces. Or it may be that we
+ went as far as the beginning. Just print as much
+ as possible of the title. */
+ if (len == 0
+ || (len == number_len && strlen (title) > 0))
+ len = column_width - sizeof ("...");
+
+ /* Break here. */
+ raw_entry[len] = 0;
+
+ entry = xmalloc (len + aux_chars_len);
+
+ if (!no_headers)
+ strcpy (entry, "* ");
+ else
+ entry[0] = 0;
+
+ strcat (entry, raw_entry);
+ strcat (entry, "...");
+
+ if (!no_headers)
+ strcat (entry, ":");
+ }
+ else
+ {
+ entry = xmalloc (len + aux_chars_len);
+
+ if (!no_headers)
+ strcpy (entry, "* ");
+ else
+ entry[0] = 0;
+
+ strcat (entry, raw_entry);
+
+ if (!no_headers)
+ strcat (entry, ":");
+ }
+
+ insert_string (entry);
+
+ i = strlen (entry);
+ /* We insert space chars until ``column_width + four spaces''
+ is reached, to make the layout the same with what we produce
+ for @printindex. This is of course not obligatory, though
+ easier on the eye. -1 is for NULL. */
+ while (i < column_width + sizeof (" ") - 1)
+ {
+ insert (' ');
+ i++;
+ }
+
+ if (no_headers)
+ {
+ if (strlen (temp->section) > 0)
+ { /* We got your number. */
+ insert_string ((char *) _("See "));
+ insert_string (temp->section);
+ }
+ else
+ { /* Sigh, @float in an @unnumbered. :-\ */
+ insert_string ("\n ");
+ insert_string ((char *) _("See "));
+ insert_string ("``");
+ insert_string (expansion (temp->section_name, 0));
+ insert_string ("''");
+ }
+ }
+ else
+ insert_string (temp->id);
+
+ insert_string (".\n");
+
+ free (entry);
+ free (title);
+ }
+ }
+ temp = temp->next;
+ }
+
+ if (html)
+ {
+ inhibit_paragraph_indentation = 1;
+ insert_string ("</ul>\n\n");
+ }
+ else
+ insert ('\n');
+
+ /* Retain the original order of float stack. */
+ temp = new_start;
+ float_stack = (FLOAT_ELT *) reverse_list ((GENERIC_LIST *) temp);
+ }
+
+ free (float_type);
+ /* Re-increment the line number, because get_rest_of_line
+ left us looking at the next line after the command. */
+ line_number++;
+}
+
+int
+current_float_used_title (void)
+{
+ return float_stack->title_used;
+}
+
+void current_float_set_title_used (void)
+{
+ float_stack->title_used = 1;
+}
diff --git a/contrib/texinfo/makeinfo/float.h b/contrib/texinfo/makeinfo/float.h
new file mode 100644
index 0000000..be9deb5
--- /dev/null
+++ b/contrib/texinfo/makeinfo/float.h
@@ -0,0 +1,56 @@
+/* float.h -- declarations for the float environment.
+ $Id: float.h,v 1.5 2004/04/11 17:56:47 karl Exp $
+
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Written by Alper Ersoy <dirt@gtk.org>. */
+
+#ifndef FLOAT_H
+#define FLOAT_H
+
+typedef struct float_elt
+{
+ struct float_elt *next;
+ char *id;
+ char *type;
+ char *title;
+ char *shorttitle;
+ char *position;
+ char *number;
+ char *section;
+ char *section_name;
+ short title_used;
+ int defining_line;
+} FLOAT_ELT;
+
+extern void add_new_float (char *id, char *title, char *shorttitle,
+ char *type, char *position);
+extern void current_float_set_title_used (void);
+
+/* Information retrieval about the current float env. */
+extern char *current_float_id (void);
+extern char *current_float_title (void);
+extern char *current_float_shorttitle (void);
+extern char *current_float_type (void);
+extern char *current_float_position (void);
+extern char *current_float_number (void);
+extern char *get_float_ref (char *id);
+
+extern int count_floats_of_type_in_chapter (char *type, char *chapter);
+extern int current_float_used_title (void);
+
+#endif /* not FLOAT_H */
diff --git a/contrib/texinfo/makeinfo/footnote.c b/contrib/texinfo/makeinfo/footnote.c
index 5a11028..e5a7f4c 100644
--- a/contrib/texinfo/makeinfo/footnote.c
+++ b/contrib/texinfo/makeinfo/footnote.c
@@ -1,5 +1,5 @@
/* footnote.c -- footnotes for Texinfo.
- $Id: footnote.c,v 1.4 2002/11/05 03:04:26 karl Exp $
+ $Id: footnote.c,v 1.7 2004/04/11 17:56:47 karl Exp $
Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
@@ -21,7 +21,9 @@
#include "footnote.h"
#include "macro.h"
#include "makeinfo.h"
+#include "node.h"
#include "xml.h"
+#include "xref.h"
/* Nonzero means that the footnote style for this document was set on
the command line, which overrides any other settings. */
@@ -53,11 +55,10 @@ int already_outputting_pending_notes = 0;
int footnote_style = end_node;
int first_footnote_this_node = 1;
int footnote_count = 0;
-
+
/* Set the footnote style based on the style identifier in STRING. */
int
-set_footnote_style (string)
- char *string;
+set_footnote_style (char *string)
{
if (strcasecmp (string, "separate") == 0)
footnote_style = separate_node;
@@ -70,7 +71,7 @@ set_footnote_style (string)
}
void
-cm_footnotestyle ()
+cm_footnotestyle (void)
{
char *arg;
@@ -95,9 +96,8 @@ FN *pending_notes = NULL;
/* A method for remembering footnotes. Note that this list gets output
at the end of the current node. */
-void
-remember_note (marker, note)
- char *marker, *note;
+static void
+remember_note (char *marker, char *note)
{
FN *temp = xmalloc (sizeof (FN));
@@ -111,7 +111,7 @@ remember_note (marker, note)
/* How to get rid of existing footnotes. */
static void
-free_pending_notes ()
+free_pending_notes (void)
{
FN *temp;
@@ -133,7 +133,7 @@ free_pending_notes ()
footnote *{this is a footnote}
where "*" is the (optional) marker character for this note. */
void
-cm_footnote ()
+cm_footnote (void)
{
char *marker;
char *note;
@@ -237,9 +237,12 @@ cm_footnote ()
`fn-<n>', though that's unlikely. */
if (html)
{
+ /* Hyperlink also serves as an anchor (mnemonic: fnd is footnote
+ definition.) */
add_html_elt ("<a rel=\"footnote\" href=");
- add_word_args ("\"#fn-%d\"><sup>%s</sup></a>",
- current_footnote_number, marker);
+ add_word_args ("\"#fn-%d\" name=\"fnd-%d\"><sup>%s</sup></a>",
+ current_footnote_number, current_footnote_number,
+ marker);
}
else
/* Your method should at least insert MARKER. */
@@ -282,7 +285,7 @@ cm_footnote ()
/* Output the footnotes. We are at the end of the current node. */
void
-output_pending_notes ()
+output_pending_notes (void)
{
FN *footnote = pending_notes;
@@ -290,13 +293,13 @@ output_pending_notes ()
return;
if (html)
- { /* The type= attribute is used just in case some weirdo browser
- out there doesn't use numbers by default. Since we rely on the
- browser to produce the footnote numbers, we need to make sure
- they ARE indeed numbers. Pre-HTML4 browsers seem to not care. */
- add_word ("<div class=\"footnote\">\n<hr>\n<h4>");
- add_word (_("Footnotes"));
- add_word ("</h4>\n<ol type=\"1\">\n");
+ {
+ add_html_block_elt ("<div class=\"footnote\">\n<hr>\n");
+ /* We add an anchor here so @printindex can refer to this point
+ (as the node name) for entries defined in footnotes. */
+ if (!splitting)
+ add_word ("<a name=\"texinfo-footnotes-in-document\"></a>");
+ add_word_args ("<h4>%s</h4>", (char *) _("Footnotes"));
}
else
switch (footnote_style)
@@ -329,6 +332,7 @@ output_pending_notes ()
/* Handle the footnotes in reverse order. */
{
+ int save_in_fixed_width_font = in_fixed_width_font;
FN **array = xmalloc ((footnote_count + 1) * sizeof (FN *));
array[footnote_count] = NULL;
@@ -340,14 +344,18 @@ output_pending_notes ()
filling_enabled = 1;
indented_fill = 1;
+ in_fixed_width_font = 0;
while ((footnote = array[++footnote_count]))
{
if (html)
{
/* Make the text of every footnote begin a separate paragraph. */
- add_word_args ("<li><a name=\"fn-%d\"></a>\n<p>",
- footnote->number);
+ add_html_block_elt ("<p class=\"footnote\"><small>");
+ /* Make footnote number a link to its definition. */
+ add_word_args ("[<a name=\"fn-%d\" href=\"#fnd-%d\">%d</a>]",
+ footnote->number, footnote->number, footnote->number);
+ add_word ("</small> ");
already_outputting_pending_notes++;
execute_string ("%s", footnote->note);
already_outputting_pending_notes--;
@@ -372,10 +380,12 @@ output_pending_notes ()
}
if (html)
- add_word ("</ol><hr></div>");
+ add_word ("<hr></div>");
close_paragraph ();
free (array);
+
+ in_fixed_width_font = save_in_fixed_width_font;
}
-
+
free_pending_notes ();
}
diff --git a/contrib/texinfo/makeinfo/footnote.h b/contrib/texinfo/makeinfo/footnote.h
index ad6ac85..e4f9510 100644
--- a/contrib/texinfo/makeinfo/footnote.h
+++ b/contrib/texinfo/makeinfo/footnote.h
@@ -1,7 +1,8 @@
/* footnote.h -- declarations for footnote.c.
- $Id: footnote.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: footnote.h,v 1.2 2004/04/11 17:56:47 karl Exp $
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+ Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -27,11 +28,11 @@ extern int number_footnotes;
extern int already_outputting_pending_notes;
/* The Texinfo @commands. */
-extern void cm_footnote ();
-extern void cm_footnotestyle ();
+extern void cm_footnote (void);
+extern void cm_footnotestyle (void);
-extern int set_footnote_style (); /* called for -s option */
+extern int set_footnote_style (char *string); /* called for -s option */
-extern void output_pending_notes (); /* called for output */
+extern void output_pending_notes (void); /* called for output */
#endif /* !FOOTNOTE_H */
diff --git a/contrib/texinfo/makeinfo/html.c b/contrib/texinfo/makeinfo/html.c
index 0c06c6c..be2c136 100644
--- a/contrib/texinfo/makeinfo/html.c
+++ b/contrib/texinfo/makeinfo/html.c
@@ -1,7 +1,8 @@
/* html.c -- html-related utilities.
- $Id: html.c,v 1.18 2003/06/02 12:32:29 karl Exp $
+ $Id: html.c,v 1.28 2004/12/06 01:13:06 karl Exp $
- Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+ Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -19,115 +20,13 @@
#include "system.h"
#include "cmds.h"
+#include "files.h"
#include "html.h"
#include "lang.h"
#include "makeinfo.h"
+#include "node.h"
#include "sectioning.h"
-HSTACK *htmlstack = NULL;
-
-static char *process_css_file (/* char * */);
-
-/* See html.h. */
-int html_output_head_p = 0;
-int html_title_written = 0;
-
-
-void
-html_output_head ()
-{
- static const char *html_title = NULL;
-
- if (html_output_head_p)
- return;
- html_output_head_p = 1;
-
- /* The <title> should not have markup, so use text_expansion. */
- if (!html_title)
- html_title = title ? text_expansion (title) : _("Untitled");
-
- add_word_args ("<html lang=\"%s\">\n<head>\n<title>%s</title>\n",
- language_table[language_code].abbrev, html_title);
-
- add_word ("<meta http-equiv=\"Content-Type\" content=\"text/html");
- if (document_encoding_code != no_encoding)
- add_word_args ("; charset=%s",
- encoding_table[document_encoding_code].encname);
- add_word ("\">\n");
-
- if (!document_description)
- document_description = html_title;
-
- add_word_args ("<meta name=\"description\" content=\"%s\">\n",
- document_description);
- add_word_args ("<meta name=\"generator\" content=\"makeinfo %s\">\n",
- VERSION);
-#if 0
- /* let's not do this now, since it causes mozilla to put up a
- navigation bar. */
- add_word ("<link href=\"http://www.gnu.org/software/texinfo/\" \
-rel=\"generator-home\">\n");
-#endif
-
- if (copying_text)
- { /* copying_text has already been fully expanded in
- begin_insertion (by full_expansion), so use insert_ rather than
- add_. It is not ideal that we include the html markup here within
- <head>, but the alternative is to have yet more and different
- expansions of the copying text. Yuck. */
- insert_string ("<!--\n");
- insert_string (copying_text);
- insert_string ("-->\n");
- }
-
- /* Put the style definitions in a comment for the sake of browsers
- that don't support <style>. */
- add_word ("<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">\n");
- add_word ("<style type=\"text/css\"><!--\n");
-
- {
- char *css_inline = NULL;
-
- if (css_include)
- /* This writes out any @import commands from the --css-file,
- and returns any actual css code following the imports. */
- css_inline = process_css_file (css_include);
-
- /* This seems cleaner than adding <br>'s at the end of each line for
- these "roman" displays. It's hardly the end of the world if the
- browser doesn't do <style>s, in any case; they'll just come out in
- typewriter. */
-#define CSS_FONT_INHERIT "font-family:inherit"
- add_word_args (" pre.display { %s }\n", CSS_FONT_INHERIT);
- add_word_args (" pre.format { %s }\n", CSS_FONT_INHERIT);
-
- /* Alternatively, we could do <font size=-1> in insertion.c, but this
- way makes it easier to override. */
-#define CSS_FONT_SMALLER "font-size:smaller"
- add_word_args (" pre.smalldisplay { %s; %s }\n", CSS_FONT_INHERIT,
- CSS_FONT_SMALLER);
- add_word_args (" pre.smallformat { %s; %s }\n", CSS_FONT_INHERIT,
- CSS_FONT_SMALLER);
- add_word_args (" pre.smallexample { %s }\n", CSS_FONT_SMALLER);
- add_word_args (" pre.smalllisp { %s }\n", CSS_FONT_SMALLER);
-
- /* Write out any css code from the user's --css-file. */
- if (css_inline)
- add_word (css_inline);
-
- add_word ("--></style>\n");
- }
-
- add_word ("</head>\n<body>\n");
-
- if (title && !html_title_written && titlepage_cmd_present)
- {
- add_word_args ("<h1 class=\"settitle\">%s</h1>\n", html_title);
- html_title_written = 1;
- }
-}
-
-
/* Append CHAR to BUFFER, (re)allocating as necessary. We don't handle
null characters. */
@@ -139,9 +38,8 @@ typedef struct
char *buffer;
} buffer_type;
-
static buffer_type *
-init_buffer ()
+init_buffer (void)
{
buffer_type *buf = xmalloc (sizeof (buffer_type));
buf->length = 0;
@@ -151,11 +49,8 @@ init_buffer ()
return buf;
}
-
static void
-append_char (buf, c)
- buffer_type *buf;
- int c;
+append_char (buffer_type *buf, int c)
{
buf->length++;
if (buf->length >= buf->size)
@@ -167,17 +62,15 @@ append_char (buf, c)
buf->buffer[buf->length] = 0;
}
-
/* Read the cascading style-sheet file FILENAME. Write out any @import
commands, which must come first, by the definition of css. If the
file contains any actual css code following the @imports, return it;
else return NULL. */
-
static char *
-process_css_file (filename)
- char *filename;
+process_css_file (char *filename)
{
- int c, lastchar;
+ int c;
+ int lastchar = 0;
FILE *f;
buffer_type *import_text = init_buffer ();
buffer_type *inline_text = init_buffer ();
@@ -185,6 +78,8 @@ process_css_file (filename)
enum { null_state, comment_state, import_state, inline_state } state
= null_state, prev_state;
+ prev_state = null_state;
+
/* read from stdin if `-' is the filename. */
f = STREQ (filename, "-") ? stdin : fopen (filename, "r");
if (!f)
@@ -204,12 +99,22 @@ process_css_file (filename)
{
case null_state: /* between things */
if (c == '@')
- {
- /* If there's some other @command, just call it an
- import, it's all the same to us. So don't bother
- looking for the `import'. */
- append_char (import_text, c);
- state = import_state;
+ { /* Only @import and @charset should switch into
+ import_state, other @-commands, such as @media, should
+ put us into inline_state. I don't think any other css
+ @-commands start with `i' or `c', although of course
+ this will break when such a command is defined. */
+ int nextchar = getc (f);
+ if (nextchar == 'i' || nextchar == 'c')
+ {
+ append_char (import_text, c);
+ state = import_state;
+ }
+ else
+ {
+ ungetc (nextchar, f); /* wasn't an @import */
+ state = inline_state;
+ }
}
else if (c == '/')
{ /* possible start of a comment */
@@ -277,23 +182,176 @@ process_css_file (filename)
/* We're wasting the buffer struct memory, but so what. */
return inline_text->buffer;
}
+
+HSTACK *htmlstack = NULL;
+
+/* See html.h. */
+int html_output_head_p = 0;
+int html_title_written = 0;
+
+void
+html_output_head (void)
+{
+ static const char *html_title = NULL;
+ char *encoding;
+
+ if (html_output_head_p)
+ return;
+ html_output_head_p = 1;
+
+ encoding = current_document_encoding ();
+
+ /* The <title> should not have markup, so use text_expansion. */
+ if (!html_title)
+ html_title = escape_string (title ?
+ text_expansion (title) : (char *) _("Untitled"));
+
+ /* Make sure this is the very first string of the output document. */
+ output_paragraph_offset = 0;
+
+ add_html_block_elt_args ("<html lang=\"%s\">\n<head>\n",
+ language_table[language_code].abbrev);
+
+ /* When splitting, add current node's name to title if it's available and not
+ Top. */
+ if (splitting && current_node && !STREQ (current_node, "Top"))
+ add_word_args ("<title>%s - %s</title>\n",
+ escape_string (xstrdup (current_node)), html_title);
+ else
+ add_word_args ("<title>%s</title>\n", html_title);
+
+ add_word ("<meta http-equiv=\"Content-Type\" content=\"text/html");
+ if (encoding && *encoding)
+ add_word_args ("; charset=%s", encoding);
+
+ add_word ("\">\n");
+
+ if (!document_description)
+ document_description = html_title;
+
+ add_word_args ("<meta name=\"description\" content=\"%s\">\n",
+ document_description);
+ add_word_args ("<meta name=\"generator\" content=\"makeinfo %s\">\n",
+ VERSION);
+
+ /* Navigation bar links. */
+ if (!splitting)
+ add_word ("<link title=\"Top\" rel=\"top\" href=\"#Top\">\n");
+ else if (tag_table)
+ {
+ /* Always put a top link. */
+ add_word ("<link title=\"Top\" rel=\"start\" href=\"index.html#Top\">\n");
+
+ /* We already have a top link, avoid duplication. */
+ if (tag_table->up && !STREQ (tag_table->up, "Top"))
+ add_link (tag_table->up, "rel=\"up\"");
+
+ if (tag_table->prev)
+ add_link (tag_table->prev, "rel=\"prev\"");
+
+ if (tag_table->next)
+ add_link (tag_table->next, "rel=\"next\"");
+
+ /* fixxme: Look for a way to put links to various indices in the
+ document. Also possible candidates to be added here are First and
+ Last links. */
+ }
+ else
+ {
+ /* We are splitting, but we neither have a tag_table. So this must be
+ index.html. So put a link to Top. */
+ add_word ("<link title=\"Top\" rel=\"start\" href=\"#Top\">\n");
+ }
+
+ add_word ("<link href=\"http://www.gnu.org/software/texinfo/\" \
+rel=\"generator-home\" title=\"Texinfo Homepage\">\n");
+
+ if (copying_text)
+ { /* It is not ideal that we include the html markup here within
+ <head>, so we use text_expansion. */
+ insert_string ("<!--\n");
+ insert_string (text_expansion (copying_text));
+ insert_string ("-->\n");
+ }
+
+ /* Put the style definitions in a comment for the sake of browsers
+ that don't support <style>. */
+ add_word ("<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">\n");
+ add_word ("<style type=\"text/css\"><!--\n");
+
+ {
+ char *css_inline = NULL;
+
+ if (css_include)
+ /* This writes out any @import commands from the --css-file,
+ and returns any actual css code following the imports. */
+ css_inline = process_css_file (css_include);
+
+ /* This seems cleaner than adding <br>'s at the end of each line for
+ these "roman" displays. It's hardly the end of the world if the
+ browser doesn't do <style>s, in any case; they'll just come out in
+ typewriter. */
+#define CSS_FONT_INHERIT "font-family:inherit"
+ add_word_args (" pre.display { %s }\n", CSS_FONT_INHERIT);
+ add_word_args (" pre.format { %s }\n", CSS_FONT_INHERIT);
+
+ /* Alternatively, we could do <font size=-1> in insertion.c, but this
+ way makes it easier to override. */
+#define CSS_FONT_SMALLER "font-size:smaller"
+ add_word_args (" pre.smalldisplay { %s; %s }\n", CSS_FONT_INHERIT,
+ CSS_FONT_SMALLER);
+ add_word_args (" pre.smallformat { %s; %s }\n", CSS_FONT_INHERIT,
+ CSS_FONT_SMALLER);
+ add_word_args (" pre.smallexample { %s }\n", CSS_FONT_SMALLER);
+ add_word_args (" pre.smalllisp { %s }\n", CSS_FONT_SMALLER);
+
+ /* Since HTML doesn't have a sc element, we use span with a bit of
+ CSS spice instead. */
+#define CSS_FONT_SMALL_CAPS "font-variant:small-caps"
+ add_word_args (" span.sc { %s }\n", CSS_FONT_SMALL_CAPS);
+ /* Roman (default) font class, closest we can come. */
+#define CSS_FONT_ROMAN "font-family:serif; font-weight:normal;"
+ add_word_args (" span.roman { %s } \n", CSS_FONT_ROMAN);
+ /* Sans serif font class. */
+#define CSS_FONT_SANSSERIF "font-family:sans-serif; font-weight:normal;"
+ add_word_args (" span.sansserif { %s } \n", CSS_FONT_SANSSERIF);
+
+ /* Write out any css code from the user's --css-file. */
+ if (css_inline)
+ insert_string (css_inline);
+
+ add_word ("--></style>\n");
+ }
+
+ add_word ("</head>\n<body>\n");
+
+ if (title && !html_title_written && titlepage_cmd_present)
+ {
+ add_word_args ("<h1 class=\"settitle\">%s</h1>\n", html_title);
+ html_title_written = 1;
+ }
+
+ free (encoding);
+}
/* Escape HTML special characters in the string if necessary,
returning a pointer to a possibly newly-allocated one. */
char *
-escape_string (string)
- char * string;
+escape_string (char *string)
{
- int i=0, newlen=0;
- char * newstring;
+ char *newstring;
+ int i = 0, newlen = 0;
do
{
/* Find how much to allocate. */
switch (string[i])
{
+ case '"':
+ newlen += 6; /* `&quot;' */
+ break;
case '&':
newlen += 5; /* `&amp;' */
break;
@@ -315,6 +373,10 @@ escape_string (string)
{
switch (string[i])
{
+ case '"':
+ strcpy (newstring, "&quot;");
+ newstring += 6;
+ break;
case '&':
strcpy (newstring, "&amp;");
newstring += 5;
@@ -336,24 +398,22 @@ escape_string (string)
free (string);
return newstring - newlen;
}
-
-
/* Save current tag. */
-void
-push_tag (tag)
- char *tag;
+static void
+push_tag (char *tag, char *attribs)
{
HSTACK *newstack = xmalloc (sizeof (HSTACK));
newstack->tag = tag;
+ newstack->attribs = xstrdup (attribs);
newstack->next = htmlstack;
htmlstack = newstack;
}
/* Get last tag. */
-void
-pop_tag ()
+static void
+pop_tag (void)
{
HSTACK *tos = htmlstack;
@@ -363,77 +423,162 @@ pop_tag ()
return;
}
+ free (htmlstack->attribs);
+
htmlstack = htmlstack->next;
free (tos);
}
+/* Check if tag is an empty or a whitespace only element.
+ If so, remove it, keeping whitespace intact. */
+int
+rollback_empty_tag (char *tag)
+{
+ int check_position = output_paragraph_offset;
+ int taglen = strlen (tag);
+ int rollback_happened = 0;
+ char *contents = "";
+ char *contents_canon_white = "";
+
+ /* If output_paragraph is empty, we cannot rollback :-\ */
+ if (output_paragraph_offset <= 0)
+ return 0;
+
+ /* Find the end of the previous tag. */
+ while (output_paragraph[check_position-1] != '>' && check_position > 0)
+ check_position--;
+
+ /* Save stuff between tag's end to output_paragraph's end. */
+ if (check_position != output_paragraph_offset)
+ {
+ contents = xmalloc (output_paragraph_offset - check_position + 1);
+ memcpy (contents, output_paragraph + check_position,
+ output_paragraph_offset - check_position);
+
+ contents[output_paragraph_offset - check_position] = '\0';
+
+ contents_canon_white = xstrdup (contents);
+ canon_white (contents_canon_white);
+ }
+
+ /* Find the start of the previous tag. */
+ while (output_paragraph[check_position-1] != '<' && check_position > 0)
+ check_position--;
+
+ /* Check to see if this is the tag. */
+ if (strncmp ((char *) output_paragraph + check_position, tag, taglen) == 0
+ && (whitespace (output_paragraph[check_position + taglen])
+ || output_paragraph[check_position + taglen] == '>'))
+ {
+ if (!contents_canon_white || !*contents_canon_white)
+ {
+ /* Empty content after whitespace removal, so roll it back. */
+ output_paragraph_offset = check_position - 1;
+ rollback_happened = 1;
+
+ /* Original contents may not be empty (whitespace.) */
+ if (contents && *contents)
+ {
+ insert_string (contents);
+ free (contents);
+ }
+ }
+ }
+
+ return rollback_happened;
+}
+
/* Open or close TAG according to START_OR_END. */
void
-insert_html_tag (start_or_end, tag)
+#if defined (VA_FPRINTF) && __STDC__
+insert_html_tag_with_attribute (int start_or_end, char *tag, char *format, ...)
+#else
+insert_html_tag_with_attribute (start_or_end, tag, format, va_alist)
int start_or_end;
char *tag;
+ char *format;
+ va_dcl
+#endif
{
char *old_tag = NULL;
+ char *old_attribs = NULL;
+ char formatted_attribs[2000]; /* xx no fixed limits */
int do_return = 0;
-
- if (!paragraph_is_open && (start_or_end == START))
- {
- /* Need to compensate for the <p> we are about to insert, or
- else cm_xxx functions that call us will get wrong text
- between START and END. */
- adjust_braces_following (output_paragraph_offset, 3);
- add_word ("<p>");
- }
+ extern int in_html_elt;
if (start_or_end != START)
pop_tag ();
if (htmlstack)
- old_tag = htmlstack->tag;
+ {
+ old_tag = htmlstack->tag;
+ old_attribs = htmlstack->attribs;
+ }
+
+ if (format)
+ {
+#ifdef VA_SPRINTF
+ va_list ap;
+#endif
+
+ VA_START (ap, format);
+#ifdef VA_SPRINTF
+ VA_SPRINTF (formatted_attribs, format, ap);
+#else
+ sprintf (formatted_attribs, format, a1, a2, a3, a4, a5, a6, a7, a8);
+#endif
+ va_end (ap);
+ }
+ else
+ formatted_attribs[0] = '\0';
+ /* Exception: can nest multiple spans. */
if (htmlstack
- && (strcmp (htmlstack->tag, tag) == 0))
+ && STREQ (htmlstack->tag, tag)
+ && !(STREQ (tag, "span") && STREQ (old_attribs, formatted_attribs)))
do_return = 1;
if (start_or_end == START)
- push_tag (tag);
+ push_tag (tag, formatted_attribs);
if (do_return)
return;
+ in_html_elt++;
+
/* texinfo.tex doesn't support more than one font attribute
at the same time. */
- if ((start_or_end == START) && old_tag && *old_tag)
- {
- add_word ("</");
- add_word (old_tag);
- add_char ('>');
- }
+ if ((start_or_end == START) && old_tag && *old_tag
+ && !rollback_empty_tag (old_tag))
+ add_word_args ("</%s>", old_tag);
if (*tag)
{
- add_char ('<');
- if (start_or_end != START)
- add_char ('/');
- add_word (tag);
- add_char ('>');
+ if (start_or_end == START)
+ add_word_args (format ? "<%s %s>" : "<%s>", tag, formatted_attribs);
+ else if (!rollback_empty_tag (tag))
+ /* Insert close tag only if we didn't rollback,
+ in which case the opening tag is removed. */
+ add_word_args ("</%s>", tag);
}
if ((start_or_end != START) && old_tag && *old_tag)
- {
- add_char ('<');
- add_word (old_tag);
- add_char ('>');
- }
-}
+ add_word_args (strlen (old_attribs) > 0 ? "<%s %s>" : "<%s>",
+ old_tag, old_attribs);
+ in_html_elt--;
+}
+void
+insert_html_tag (int start_or_end, char *tag)
+{
+ insert_html_tag_with_attribute (start_or_end, tag, NULL);
+}
/* Output an HTML <link> to the filename for NODE, including the
other string as extra attributes. */
void
-add_link (nodename, attributes)
- char *nodename, *attributes;
+add_link (char *nodename, char *attributes)
{
if (nodename)
{
@@ -441,39 +586,64 @@ add_link (nodename, attributes)
add_word_args ("%s", attributes);
add_word_args (" href=\"");
add_anchor_name (nodename, 1);
- add_word ("\">\n");
+ add_word_args ("\" title=\"%s\">\n", nodename);
}
}
/* Output NAME with characters escaped as appropriate for an anchor
- name, i.e., escape URL special characters as %<n>. */
+ name, i.e., escape URL special characters with our _00hh convention
+ if OLD is zero. (See the manual for details on the new scheme.)
+
+ If OLD is nonzero, generate the node name with the 4.6-and-earlier
+ convention of %hh (and more special characters output as-is, notably
+ - and *). This is only so that external references to old names can
+ still work with HTML generated by the new makeinfo; the gcc folks
+ needed this. Our own HTML does not refer to these names. */
+
void
-add_escaped_anchor_name (name)
- char *name;
+add_escaped_anchor_name (char *name, int old)
{
+ canon_white (name);
+
+ if (!old && !strchr ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
+ *name))
+ { /* XHTML does not allow anything but an ASCII letter to start an
+ identifier. Therefore kludge in this constant string if we
+ have a nonletter. */
+ add_word ("g_t");
+ }
+
for (; *name; name++)
{
- if (*name == '&')
- add_word ("&amp;");
- else if (! URL_SAFE_CHAR (*name))
+ if (cr_or_whitespace (*name))
+ add_char ('-');
+
+ else if (!old && !URL_SAFE_CHAR (*name))
/* Cast so characters with the high bit set are treated as >128,
for example o-umlaut should be 246, not -10. */
+ add_word_args ("_00%x", (unsigned char) *name);
+
+ else if (old && !URL_SAFE_CHAR (*name) && !OLD_URL_SAFE_CHAR (*name))
+ /* Different output convention, but still cast as above. */
add_word_args ("%%%x", (unsigned char) *name);
+
else
add_char (*name);
}
}
/* Insert the text for the name of a reference in an HTML anchor
- appropriate for NODENAME. If HREF is nonzero, it will be
- appropriate for a href= attribute, rather than name= i.e., including
- the `#' if it's an internal reference. */
+ appropriate for NODENAME.
+
+ If HREF is zero, generate text for name= in the new node name
+ conversion convention.
+ If HREF is negative, generate text for name= in the old convention.
+ If HREF is positive, generate the name for an href= attribute, i.e.,
+ including the `#' if it's an internal reference. */
void
-add_anchor_name (nodename, href)
- char *nodename;
- int href;
+add_anchor_name (char *nodename, int href)
{
- if (href)
+ if (href > 0)
{
if (splitting)
add_url_name (nodename, href);
@@ -486,38 +656,52 @@ add_anchor_name (nodename, href)
if (strcasecmp (nodename, "(dir)") == 0)
/* Strip the parens, but keep the original letter-case. */
add_word_args ("%.3s", nodename + 1);
+ else if (strcasecmp (nodename, "top") == 0)
+ add_word ("Top");
else
- add_escaped_anchor_name (nodename);
+ add_escaped_anchor_name (nodename, href < 0);
}
/* Insert the text for the name of a reference in an HTML url, aprropriate
for NODENAME */
void
-add_url_name (nodename, href)
- char *nodename;
- int href;
+add_url_name (char *nodename, int href)
{
add_nodename_to_filename (nodename, href);
}
-/* Only allow [-0-9a-zA-Z_.] when nodifying filenames. This may
- result in filename clashes; e.g.,
+/* Convert non [A-Za-z0-9] to _00xx, where xx means the hexadecimal
+ representation of the ASCII character. Also convert spaces and
+ newlines to dashes. */
+static void
+fix_filename (char *filename)
+{
+ int i;
+ int len = strlen (filename);
+ char *oldname = xstrdup (filename);
- @node Foo ],,,
- @node Foo [,,,
+ *filename = '\0';
- both map to Foo--.html. If that happens, cm_node will put all
- the nodes whose file names clash on the same file. */
-void
-fix_filename (filename)
- char *filename;
-{
- char *p;
- for (p = filename; *p; p++)
+ for (i = 0; i < len; i++)
{
- if (!(isalnum (*p) || strchr ("-._", *p)))
- *p = '-';
+ if (cr_or_whitespace (oldname[i]))
+ strcat (filename, "-");
+ else if (URL_SAFE_CHAR (oldname[i]))
+ strncat (filename, (char *) oldname + i, 1);
+ else
+ {
+ char *hexchar = xmalloc (6 * sizeof (char));
+ sprintf (hexchar, "_00%x", (unsigned char) oldname[i]);
+ strcat (filename, hexchar);
+ free (hexchar);
+ }
+
+ /* Check if we are nearing boundaries. */
+ if (strlen (filename) >= PATH_MAX - 20)
+ break;
}
+
+ free (oldname);
}
/* As we can't look-up a (forward-referenced) nodes' html filename
@@ -525,9 +709,7 @@ fix_filename (filename)
nodenames are unique, and generate the html filename from the
nodename, that's always known. */
static char *
-nodename_to_filename_1 (nodename, href)
- char *nodename;
- int href;
+nodename_to_filename_1 (char *nodename, int href)
{
char *p;
char *filename;
@@ -623,9 +805,7 @@ nodename_to_filename_1 (nodename, href)
/* If necessary, ie, if current filename != filename of node, output
the node name. */
void
-add_nodename_to_filename (nodename, href)
- char *nodename;
- int href;
+add_nodename_to_filename (char *nodename, int href)
{
/* for now, don't check: always output filename */
char *filename = nodename_to_filename_1 (nodename, href);
@@ -634,8 +814,7 @@ add_nodename_to_filename (nodename, href)
}
char *
-nodename_to_filename (nodename)
- char *nodename;
+nodename_to_filename (char *nodename)
{
/* The callers of nodename_to_filename use the result to produce
<a href=, so call nodename_to_filename_1 with last arg non-zero. */
diff --git a/contrib/texinfo/makeinfo/html.h b/contrib/texinfo/makeinfo/html.h
index 84960db..d2b5411 100644
--- a/contrib/texinfo/makeinfo/html.h
+++ b/contrib/texinfo/makeinfo/html.h
@@ -1,7 +1,7 @@
/* html.h -- declarations for html-related utilities.
- $Id: html.h,v 1.4 2002/10/31 22:08:23 karl Exp $
+ $Id: html.h,v 1.6 2004/11/30 02:03:23 karl Exp $
- Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2002, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -25,6 +25,7 @@ typedef struct hstack
{
struct hstack *next;
char *tag;
+ char *attribs;
} HSTACK;
/* Nonzero if we have output the <head>. */
@@ -34,24 +35,31 @@ extern int html_output_head_p;
extern int html_title_written;
/* Perform the <head> output. */
-extern void html_output_head ();
+extern void html_output_head (void);
/* Escape &<>. */
-extern char *escape_string (/* char * */);
+extern char *escape_string (char *);
/* Open or close TAG according to START_OR_END. */
-extern void insert_html_tag (/* int start_or_end, char *tag */);
+extern void insert_html_tag (int start_or_end, char *tag);
/* Output HTML <link> to NODE, plus extra ATTRIBUTES. */
-extern void add_link (/* char *node, char *attributes */);
+extern void add_link (char *nodename, char *attributes);
-/* Escape URL-special characters as %xy. */
-extern void add_escaped_anchor_name (/* char *name */);
+/* Escape URL-special characters. */
+extern void add_escaped_anchor_name (char *name, int old);
/* See html.c. */
-extern void add_anchor_name (/* nodename, href */);
-extern void add_url_name ( /* nodename, href */ );
-extern char* nodename_to_filename ( /* nodename */ );
-extern void add_nodename_to_filename ( /*nodename, href */ );
+extern void add_anchor_name (char *nodename, int href);
+extern void add_url_name (char *nodename, int href);
+extern void add_nodename_to_filename (char *nodename, int href);
+extern char *nodename_to_filename (char *nodename);
+extern int rollback_empty_tag (char *tag);
+
+#if defined (VA_FPRINTF) && __STDC__
+extern void insert_html_tag_with_attribute (int start_or_end, char *tag, char *format, ...);
+#else
+extern void insert_html_tag_with_attribute ();
+#endif
#endif /* !HTML_H */
diff --git a/contrib/texinfo/makeinfo/index.c b/contrib/texinfo/makeinfo/index.c
index ab6a53c..710e8b6 100644
--- a/contrib/texinfo/makeinfo/index.c
+++ b/contrib/texinfo/makeinfo/index.c
@@ -1,7 +1,8 @@
/* index.c -- indexing for Texinfo.
- $Id: index.c,v 1.8 2003/05/16 23:52:40 karl Exp $
+ $Id: index.c,v 1.17 2004/11/30 02:03:23 karl Exp $
- Copyright (C) 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2002, 2003, 2004 Free Software Foundation,
+ Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -18,59 +19,16 @@
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "system.h"
+#include "files.h"
+#include "footnote.h"
+#include "html.h"
#include "index.h"
#include "lang.h"
#include "macro.h"
+#include "sectioning.h"
#include "toc.h"
#include "xml.h"
-/* An index element... */
-typedef struct index_elt
-{
- struct index_elt *next;
- char *entry; /* The index entry itself, after expansion. */
- char *entry_text; /* The original, non-expanded entry text. */
- char *node; /* The node from whence it came. */
- int code; /* Nonzero means add `@code{...}' when
- printing this element. */
- int defining_line; /* Line number where this entry was written. */
- char *defining_file; /* Source file for defining_line. */
-} INDEX_ELT;
-
-
-/* A list of short-names for each index.
- There are two indices into the the_indices array.
- * read_index is the index that points to the list of index
- entries that we will find if we ask for the list of entries for
- this name.
- * write_index is the index that points to the list of index entries
- that we will add new entries to.
-
- Initially, read_index and write_index are the same, but the
- @syncodeindex and @synindex commands can change the list we add
- entries to.
-
- For example, after the commands
- @cindex foo
- @defindex ii
- @synindex cp ii
- @cindex bar
-
- the cp index will contain the entry `foo', and the new ii
- index will contain the entry `bar'. This is consistent with the
- way texinfo.tex handles the same situation.
-
- In addition, for each index, it is remembered whether that index is
- a code index or not. Code indices have @code{} inserted around the
- first word when they are printed with printindex. */
-typedef struct
-{
- char *name;
- int read_index; /* index entries for `name' */
- int write_index; /* store index entries here, @synindex can change it */
- int code;
-} INDEX_ALIST;
-
INDEX_ALIST **name_index_alist = NULL;
/* An array of pointers. Each one is for a different index. The
@@ -81,18 +39,24 @@ INDEX_ELT **the_indices = NULL;
/* The number of defined indices. */
int defined_indices = 0;
+/* This is the order of the index. */
+int index_counter = 0;
+
/* Stuff for defining commands on the fly. */
COMMAND **user_command_array = NULL;
int user_command_array_len = 0;
/* How to compare index entries for sorting. May be set to strcoll. */
-int (*index_compare_fn) () = strcasecmp;
+int (*index_compare_fn) (const char *a, const char *b) = strcasecmp;
+
+/* Function to compare index entries for sorting. (Calls
+ `index_compare_fn' above.) */
+int index_element_compare (const void *element1, const void *element2);
/* Find which element in the known list of indices has this name.
Returns -1 if NAME isn't found. */
static int
-find_index_offset (name)
- char *name;
+find_index_offset (char *name)
{
int i;
for (i = 0; i < defined_indices; i++)
@@ -103,9 +67,8 @@ find_index_offset (name)
/* Return a pointer to the entry of (name . index) for this name.
Return NULL if the index doesn't exist. */
-INDEX_ALIST *
-find_index (name)
- char *name;
+static INDEX_ALIST *
+find_index (char *name)
{
int offset = find_index_offset (name);
if (offset > -1)
@@ -116,11 +79,8 @@ find_index (name)
/* User-defined commands, which happens only from user-defined indexes.
Used to initialize the builtin indices, too. */
-void
-define_user_command (name, proc, needs_braces_p)
- char *name;
- COMMAND_FUNCTION *proc;
- int needs_braces_p;
+static void
+define_user_command (char *name, COMMAND_FUNCTION (*proc), int needs_braces_p)
{
int slot = user_command_array_len;
user_command_array_len++;
@@ -139,8 +99,7 @@ define_user_command (name, proc, needs_braces_p)
/* Please release me, let me go... */
static void
-free_index (index)
- INDEX_ELT *index;
+free_index (INDEX_ELT *index)
{
INDEX_ELT *temp;
@@ -159,8 +118,7 @@ free_index (index)
/* Flush an index by name. This will delete the list of entries that
would be written by a @printindex command for this index. */
static void
-undefindex (name)
- char *name;
+undefindex (char *name)
{
int i;
int which = find_index_offset (name);
@@ -180,11 +138,9 @@ undefindex (name)
name_index_alist[which] = NULL;
}
-/* Add the arguments to the current index command to the index NAME.
- html fixxme generate specific html anchor */
+/* Add the arguments to the current index command to the index NAME. */
static void
-index_add_arg (name)
- char *name;
+index_add_arg (char *name)
{
int which;
char *index_entry;
@@ -216,17 +172,57 @@ index_add_arg (name)
else
{
INDEX_ELT *new = xmalloc (sizeof (INDEX_ELT));
+
+ index_counter++;
+
+ /* Get output line number updated before doing anything. */
+ if (!html && !xml)
+ flush_output ();
+
new->next = the_indices[which];
- new->entry_text = index_entry;
new->entry = NULL;
- new->node = current_node ? current_node : xstrdup ("");
+ new->entry_text = index_entry;
+ /* Since footnotes are handled at the very end of the document,
+ node name in the non-split HTML outputs always show the last
+ node. We artificially make it ``Footnotes''. */
+ if (html && !splitting && already_outputting_pending_notes)
+ new->node = xstrdup (_("Footnotes"));
+ else
+ new->node = current_node ? current_node : xstrdup ("");
+ if (!html && !xml && no_headers)
+ {
+ new->section = current_sectioning_number ();
+ if (strlen (new->section) == 0)
+ new->section_name = current_sectioning_name ();
+ else
+ new->section_name = "";
+ }
+ else
+ {
+ new->section = NULL;
+ new->section_name = NULL;
+ }
new->code = tem->code;
new->defining_line = line_number - 1;
+ new->output_line = no_headers ? output_line_number : node_line_number;
/* We need to make a copy since input_filename may point to
something that goes away, for example, inside a macro.
(see the findexerr test). */
new->defining_file = xstrdup (input_filename);
+
+ if (html && splitting)
+ {
+ if (current_output_filename && *current_output_filename)
+ new->output_file = filename_part (current_output_filename);
+ else
+ new->output_file = xstrdup ("");
+ }
+ else
+ new->output_file = NULL;
+
+ new->entry_number = index_counter;
the_indices[which] = new;
+
#if 0
/* The index breaks if there are colons in the entry.
-- This is true, but it's too painful to force changing index
@@ -238,14 +234,36 @@ index_add_arg (name)
warning (_("Info cannot handle `:' in index entry `%s'"),
new->entry_text);
#endif
+
+ if (html)
+ {
+ /* Anchor. */
+ int removed_empty_elt = 0;
+
+ /* We must put the anchor outside the <dl> and <ul> blocks. */
+ if (rollback_empty_tag ("dl"))
+ removed_empty_elt = 1;
+ else if (rollback_empty_tag ("ul"))
+ removed_empty_elt = 2;
+
+ add_word ("<a name=\"index-");
+ add_escaped_anchor_name (index_entry, 0);
+ add_word_args ("-%d\"></a>", index_counter);
+
+ if (removed_empty_elt == 1)
+ add_html_block_elt_args ("\n<dl>");
+ else if (removed_empty_elt == 2)
+ add_html_block_elt_args ("\n<ul>");
+ }
}
+
if (xml)
xml_insert_indexterm (index_entry, name);
}
/* The function which user defined index commands call. */
static void
-gen_index ()
+gen_index (void)
{
char *name = xstrdup (command);
if (strlen (name) >= strlen ("index"))
@@ -257,9 +275,7 @@ gen_index ()
/* Define an index known as NAME. We assign the slot number.
If CODE is nonzero, make this a code index. */
static void
-defindex (name, code)
- char *name;
- int code;
+defindex (char *name, int code)
{
int i, slot;
@@ -299,9 +315,7 @@ defindex (name, code)
/* Define an index NAME, implicitly @code if CODE is nonzero. */
static void
-top_defindex (name, code)
- char *name;
- int code;
+top_defindex (char *name, int code)
{
char *temp;
@@ -314,7 +328,7 @@ top_defindex (name, code)
/* Set up predefined indices. */
void
-init_indices ()
+init_indices (void)
{
int i;
@@ -364,9 +378,8 @@ init_indices ()
/* Given an index name, return the offset in the_indices of this index,
or -1 if there is no such index. */
-int
-translate_index (name)
- char *name;
+static int
+translate_index (char *name)
{
INDEX_ALIST *which = find_index (name);
@@ -378,8 +391,7 @@ translate_index (name)
/* Return the index list which belongs to NAME. */
INDEX_ELT *
-index_list (name)
- char *name;
+index_list (char *name)
{
int which = translate_index (name);
if (which < 0)
@@ -390,8 +402,7 @@ index_list (name)
/* Define a new index command. Arg is name of index. */
static void
-gen_defindex (code)
- int code;
+gen_defindex (int code)
{
char *name;
get_rest_of_line (0, &name);
@@ -413,13 +424,13 @@ gen_defindex (code)
}
void
-cm_defindex ()
+cm_defindex (void)
{
gen_defindex (0);
}
void
-cm_defcodeindex ()
+cm_defcodeindex (void)
{
gen_defindex (1);
}
@@ -428,7 +439,7 @@ cm_defcodeindex ()
Make the first one be a synonym for the second one, i.e. make the
first one have the same index as the second one. */
void
-cm_synindex ()
+cm_synindex (void)
{
int source, target;
char *abbrev1, *abbrev2;
@@ -446,8 +457,11 @@ cm_synindex ()
}
else
{
- name_index_alist[target]->write_index
- = name_index_alist[source]->write_index;
+ if (xml && !docbook)
+ xml_synindex (abbrev1, abbrev2);
+ else
+ name_index_alist[target]->write_index
+ = name_index_alist[source]->write_index;
}
free (abbrev1);
@@ -455,53 +469,53 @@ cm_synindex ()
}
void
-cm_pindex () /* Pinhead index. */
+cm_pindex (void) /* Pinhead index. */
{
index_add_arg ("pg");
}
void
-cm_vindex () /* Variable index. */
+cm_vindex (void) /* Variable index. */
{
index_add_arg ("vr");
}
void
-cm_kindex () /* Key index. */
+cm_kindex (void) /* Key index. */
{
index_add_arg ("ky");
}
void
-cm_cindex () /* Concept index. */
+cm_cindex (void) /* Concept index. */
{
index_add_arg ("cp");
}
void
-cm_findex () /* Function index. */
+cm_findex (void) /* Function index. */
{
index_add_arg ("fn");
}
void
-cm_tindex () /* Data Type index. */
+cm_tindex (void) /* Data Type index. */
{
index_add_arg ("tp");
}
int
-index_element_compare (element1, element2)
- INDEX_ELT **element1, **element2;
+index_element_compare (const void *element1, const void *element2)
{
- return index_compare_fn ((*element1)->entry, (*element2)->entry);
+ INDEX_ELT **elt1 = (INDEX_ELT **) element1;
+ INDEX_ELT **elt2 = (INDEX_ELT **) element2;
+
+ return index_compare_fn ((*elt1)->entry, (*elt2)->entry);
}
/* Force all index entries to be unique. */
-void
-make_index_entries_unique (array, count)
- INDEX_ELT **array;
- int count;
+static void
+make_index_entries_unique (INDEX_ELT **array, int count)
{
int i, j;
INDEX_ELT **copy;
@@ -560,9 +574,8 @@ make_index_entries_unique (array, count)
/* Sort the index passed in INDEX, returning an array of pointers to
elements. The array is terminated with a NULL pointer. */
-INDEX_ELT **
-sort_index (index)
- INDEX_ELT *index;
+static INDEX_ELT **
+sort_index (INDEX_ELT *index)
{
INDEX_ELT **array;
INDEX_ELT *temp;
@@ -641,38 +654,95 @@ sort_index (index)
return array;
}
+static void
+insert_index_output_line_no (int line_number, int output_line_number_len)
+{
+ int last_column;
+ int str_size = output_line_number_len + strlen (_("(line )"))
+ + sizeof (NULL);
+ char *out_line_no_str = (char *) xmalloc (str_size + 1);
+
+ /* Do not translate ``(line NNN)'' below for !no_headers case (Info output),
+ because it's something like the ``* Menu'' strings. For plaintext output
+ it should be translated though. */
+ sprintf (out_line_no_str,
+ no_headers ? _("(line %*d)") : "(line %*d)",
+ output_line_number_len, line_number);
+
+ {
+ int i = output_paragraph_offset;
+ while (0 < i && output_paragraph[i-1] != '\n')
+ i--;
+ last_column = output_paragraph_offset - i;
+ }
+
+ if (last_column + strlen (out_line_no_str) > fill_column)
+ {
+ insert ('\n');
+ last_column = 0;
+ }
+
+ while (last_column + strlen (out_line_no_str) < fill_column)
+ {
+ insert (' ');
+ last_column++;
+ }
+
+ insert_string (out_line_no_str);
+ insert ('\n');
+
+ free (out_line_no_str);
+}
+
/* Nonzero means that we are in the middle of printing an index. */
int printing_index = 0;
/* Takes one arg, a short name of an index to print.
Outputs a menu of the sorted elements of the index. */
void
-cm_printindex ()
+cm_printindex (void)
{
+ char *index_name;
+ get_rest_of_line (0, &index_name);
+
+ /* get_rest_of_line increments the line number by one,
+ so to make warnings/errors point to the correct line,
+ we decrement the line_number again. */
+ if (!handling_delayed_writes)
+ line_number--;
+
if (xml && !docbook)
{
- char *index_name;
- get_rest_of_line (0, &index_name);
xml_insert_element (PRINTINDEX, START);
insert_string (index_name);
xml_insert_element (PRINTINDEX, END);
}
+ else if (!handling_delayed_writes)
+ {
+ int command_len = sizeof ("@ ") + strlen (command) + strlen (index_name);
+ char *index_command = xmalloc (command_len + 1);
+
+ close_paragraph ();
+ if (docbook)
+ xml_begin_index ();
+
+ sprintf (index_command, "@%s %s", command, index_name);
+ register_delayed_write (index_command);
+ free (index_command);
+ }
else
{
int item;
INDEX_ELT *index;
INDEX_ELT *last_index = 0;
INDEX_ELT **array;
- char *index_name;
unsigned line_length;
char *line;
int saved_inhibit_paragraph_indentation = inhibit_paragraph_indentation;
int saved_filling_enabled = filling_enabled;
int saved_line_number = line_number;
char *saved_input_filename = input_filename;
-
- close_paragraph ();
- get_rest_of_line (0, &index_name);
+ unsigned output_line_number_len;
index = index_list (index_name);
if (index == (INDEX_ELT *)-1)
@@ -696,9 +766,17 @@ cm_printindex ()
xml_sort_index = 0;
close_paragraph ();
if (html)
- add_word_args ("<ul class=\"index-%s\" compact>", index_name);
+ add_html_block_elt_args ("<ul class=\"index-%s\" compact>",
+ index_name);
else if (!no_headers && !docbook)
- add_word ("* Menu:\n\n");
+ { /* Info. Add magic cookie for info readers (to treat this
+ menu differently), and the usual start-of-menu. */
+ add_char ('\0');
+ add_word ("\010[index");
+ add_char ('\0');
+ add_word ("\010]\n");
+ add_word ("* Menu:\n\n");
+ }
me_inhibit_expansion++;
@@ -706,11 +784,29 @@ cm_printindex ()
line_length = 100;
line = xmalloc (line_length);
+ {
+ char *max_output_line_number = (char *) xmalloc (25 * sizeof (char));
+
+ if (no_headers)
+ sprintf (max_output_line_number, "%d", output_line_number);
+ else
+ {
+ INDEX_ELT *tmp_entry = index;
+ unsigned tmp = 0;
+ for (tmp_entry = index; tmp_entry; tmp_entry = tmp_entry->next)
+ tmp = tmp_entry->output_line > tmp ? tmp_entry->output_line : tmp;
+ sprintf (max_output_line_number, "%d", tmp);
+ }
+
+ output_line_number_len = strlen (max_output_line_number);
+ free (max_output_line_number);
+ }
+
for (item = 0; (index = array[item]); item++)
{
/* A pathological document might have an index entry outside of any
node. Don't crash; try using the section name instead. */
- const char *index_node = index->node;
+ char *index_node = index->node;
line_number = index->defining_line;
input_filename = index->defining_file;
@@ -723,44 +819,39 @@ cm_printindex ()
line_error (_("Entry for index `%s' outside of any node"),
index_name);
if (html || !no_headers)
- index_node = _("(outside of any node)");
+ index_node = (char *) _("(outside of any node)");
}
if (html)
- /* fixme: html: we should use specific index anchors pointing
- to the actual location of the indexed position (but then we
- have to find something to wrap the anchor around). */
{
- if (last_index
- && STREQ (last_index->entry_text, index->entry_text))
- add_word (", "); /* Don't repeat the previous entry. */
- else
- {
- /* In the HTML case, the expanded index entry is not
- good for us, since it was expanded for non-HTML mode
- inside sort_index. So we need to HTML-escape and
- expand the original entry text here. */
- char *escaped_entry = xstrdup (index->entry_text);
- char *expanded_entry;
-
- /* expansion() doesn't HTML-escape the argument, so need
- to do it separately. */
- escaped_entry = escape_string (escaped_entry);
- expanded_entry = expansion (escaped_entry, index->code);
- add_word_args ("\n<li>%s: ", expanded_entry);
- free (escaped_entry);
- free (expanded_entry);
- }
+ /* For HTML, we need to expand and HTML-escape the
+ original entry text, at the same time. Consider
+ @cindex J@"urgen. We want J&uuml;urgen. We can't
+ expand and then escape since we'll end up with
+ J&amp;uuml;rgen. We can't escape and then expand
+ because then `expansion' will see J@&quot;urgen, and
+ @&quot;urgen is not a command. */
+ char *html_entry =
+ maybe_escaped_expansion (index->entry_text, index->code, 1);
+
+ add_html_block_elt_args ("\n<li><a href=\"%s#index-",
+ (splitting && index->output_file) ? index->output_file : "");
+ add_escaped_anchor_name (index->entry_text, 0);
+ add_word_args ("-%d\">%s</a>: ", index->entry_number,
+ html_entry);
+ free (html_entry);
+
add_word ("<a href=\"");
if (index->node && *index->node)
{
- /* Make sure any non-macros in the node name are expanded. */
+ /* Ensure any non-macros in the node name are expanded. */
char *expanded_index;
in_fixed_width_font++;
expanded_index = expansion (index_node, 0);
in_fixed_width_font--;
add_anchor_name (expanded_index, 1);
+ expanded_index = escape_string (expanded_index);
add_word_args ("\">%s</a>", expanded_index);
free (expanded_index);
}
@@ -773,6 +864,8 @@ cm_printindex ()
/* If we use the section instead of the (missing) node, then
index_node already includes all we need except the #. */
add_word_args ("#%s</a>", index_node);
+
+ add_html_block_elt ("</li>");
}
else if (xml && docbook)
{
@@ -806,7 +899,9 @@ cm_printindex ()
insert_string (line);
/* Make sure any non-macros in the node name are expanded. */
in_fixed_width_font++;
- execute_string ("%s.\n", index_node);
+ execute_string ("%s. ", index_node);
+ insert_index_output_line_no (index->output_line,
+ output_line_number_len);
in_fixed_width_font--;
}
else
@@ -815,40 +910,27 @@ cm_printindex ()
there's little sense in referring to them in the
index. Instead, output the number or name of the
section that corresponds to that node. */
- char *section_name = toc_find_section_of_node (index_node);
-
- sprintf (line, "%-*s ", number_sections ? 50 : 1, index->entry);
+ sprintf (line, "%-*s ", number_sections ? 46 : 1, index->entry);
line[strlen (index->entry)] = ':';
insert_string (line);
- if (section_name)
- {
- int idx = 0;
- unsigned ref_len = strlen (section_name) + 30;
-
- if (ref_len > line_length)
- {
- line_length = ref_len;
- line = xrealloc (line, line_length);
- }
-
- if (number_sections)
- {
- while (section_name[idx]
- && (isdigit (section_name[idx])
- || (idx && section_name[idx] == '.')))
- idx++;
- }
- if (idx)
- sprintf (line, " See %.*s.\n", idx, section_name);
- else
- sprintf (line, "\n See ``%s''.\n", section_name);
- insert_string (line);
+
+ if (strlen (index->section) > 0)
+ { /* We got your number. */
+ insert_string ((char *) _("See "));
+ insert_string (index->section);
}
else
- {
- insert_string (" "); /* force a blank */
- execute_string ("See node %s.\n", index_node);
+ { /* Sigh, index in an @unnumbered. :-\ */
+ insert_string ("\n ");
+ insert_string ((char *) _("See "));
+ insert_string ("``");
+ insert_string (expansion (index->section_name, 0));
+ insert_string ("''");
}
+
+ insert_string (". ");
+ insert_index_output_line_no (index->output_line,
+ output_line_number_len);
}
}
@@ -859,7 +941,6 @@ cm_printindex ()
}
free (line);
- free (index_name);
me_inhibit_expansion--;
printing_index = 0;
@@ -871,8 +952,13 @@ cm_printindex ()
line_number = saved_line_number;
if (html)
- add_word ("</ul>");
+ add_html_block_elt ("</ul>");
else if (xml && docbook)
xml_end_index ();
}
+
+ free (index_name);
+ /* Re-increment the line number, because get_rest_of_line
+ left us looking at the next line after the command. */
+ line_number++;
}
diff --git a/contrib/texinfo/makeinfo/index.h b/contrib/texinfo/makeinfo/index.h
index 3279a24..3ff723d 100644
--- a/contrib/texinfo/makeinfo/index.h
+++ b/contrib/texinfo/makeinfo/index.h
@@ -1,5 +1,5 @@
/* index.h -- declarations for index.c.
- $Id: index.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: index.h,v 1.2 2004/04/11 17:56:47 karl Exp $
Copyright (C) 1998, 99 Free Software Foundation, Inc.
@@ -27,10 +27,67 @@
extern COMMAND **user_command_array;
extern int user_command_array_len;
+/* An index element... */
+typedef struct index_elt
+{
+ struct index_elt *next;
+ char *entry; /* The index entry itself, after expansion. */
+ char *entry_text; /* The original, non-expanded entry text. */
+ char *node; /* The node from whence it came. */
+ char *section; /* Current section number we are in, */
+ char *section_name; /* ... and its title. */
+ int code; /* Nonzero means add `@code{...}' when
+ printing this element. */
+ int defining_line; /* Line number where this entry was written. */
+ int output_line; /* And line number where it is in the output. */
+ char *defining_file; /* Source file for defining_line. */
+ char *output_file; /* Output file for output_line. */
+ int entry_number; /* Entry number. */
+} INDEX_ELT;
+
+
+/* A list of short-names for each index.
+ There are two indices into the the_indices array.
+ * read_index is the index that points to the list of index
+ entries that we will find if we ask for the list of entries for
+ this name.
+ * write_index is the index that points to the list of index entries
+ that we will add new entries to.
+
+ Initially, read_index and write_index are the same, but the
+ @syncodeindex and @synindex commands can change the list we add
+ entries to.
+
+ For example, after the commands
+ @cindex foo
+ @defindex ii
+ @synindex cp ii
+ @cindex bar
+
+ the cp index will contain the entry `foo', and the new ii
+ index will contain the entry `bar'. This is consistent with the
+ way texinfo.tex handles the same situation.
+
+ In addition, for each index, it is remembered whether that index is
+ a code index or not. Code indices have @code{} inserted around the
+ first word when they are printed with printindex. */
+typedef struct
+{
+ char *name;
+ int read_index; /* index entries for `name' */
+ int write_index; /* store index entries here, @synindex can change it */
+ int code;
+} INDEX_ALIST;
+
+extern INDEX_ALIST **name_index_alist;
+
/* Initialize all indices. */
-extern void init_indices ();
+extern void init_indices (void);
+
+extern int defined_indices;
+extern int printing_index;
+extern int index_counter;
-/* Function to compare index entries for sorting. */
-extern int (*index_compare_fn) ();
+INDEX_ELT *index_list (char *name);
#endif /* !INDEX_H */
diff --git a/contrib/texinfo/makeinfo/insertion.c b/contrib/texinfo/makeinfo/insertion.c
index 95c0be2..05a2044 100644
--- a/contrib/texinfo/makeinfo/insertion.c
+++ b/contrib/texinfo/makeinfo/insertion.c
@@ -1,7 +1,7 @@
/* insertion.c -- insertions for Texinfo.
- $Id: insertion.c,v 1.21 2003/04/01 14:34:18 karl Exp $
+ $Id: insertion.c,v 1.55 2004/11/11 18:34:28 karl Exp $
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -21,25 +21,29 @@
#include "system.h"
#include "cmds.h"
#include "defun.h"
+#include "float.h"
+#include "html.h"
#include "insertion.h"
#include "macro.h"
#include "makeinfo.h"
+#include "multi.h"
#include "xml.h"
/* Must match list in insertion.h. */
static char *insertion_type_names[] =
{
"cartouche", "copying", "defcv", "deffn", "defivar", "defmac",
- "defmethod", "defop", "defopt", "defspec", "deftp", "deftypefn",
- "deftypefun", "deftypeivar", "deftypemethod", "deftypeop",
- "deftypevar", "deftypevr", "defun", "defvar", "defvr", "detailmenu",
- "direntry", "display", "documentdescription", "enumerate", "example",
- "flushleft", "flushright", "format", "ftable", "group", "ifclear",
- "ifhtml", "ifinfo", "ifnothtml", "ifnotinfo", "ifnotplaintext", "ifnottex", "ifnotxml",
- "ifplaintext", "ifset", "iftex", "ifxml", "itemize", "lisp", "menu",
- "multitable", "quotation", "rawhtml", "rawtex", "smalldisplay",
- "smallexample", "smallformat", "smalllisp", "verbatim", "table",
- "tex", "vtable", "bad_type"
+ "defmethod", "defop", "defopt", "defspec", "deftp", "deftypecv",
+ "deftypefn", "deftypefun", "deftypeivar", "deftypemethod",
+ "deftypeop", "deftypevar", "deftypevr", "defun", "defvar", "defvr",
+ "detailmenu", "direntry", "display", "documentdescription",
+ "enumerate", "example", "float", "flushleft", "flushright", "format",
+ "ftable", "group", "ifclear", "ifdocbook", "ifhtml", "ifinfo",
+ "ifnotdocbook", "ifnothtml", "ifnotinfo", "ifnotplaintext", "ifnottex",
+ "ifnotxml", "ifplaintext", "ifset", "iftex", "ifxml", "itemize", "lisp",
+ "menu", "multitable", "quotation", "rawdocbook", "rawhtml", "rawtex",
+ "rawxml", "smalldisplay", "smallexample", "smallformat", "smalllisp",
+ "verbatim", "table", "tex", "vtable", "titlepage", "bad_type"
};
/* All nested environments. */
@@ -62,19 +66,29 @@ int in_menu = 0;
Used for menu and itemize. */
int in_paragraph = 0;
-static const char dl_tag[] = "<dl>\n";
-extern void cm_insert_copying ();
+/* Since an insertion is already in the stack before we reach the switch
+ statement, we cannot use is_in_insertion_of_type (always returns true.) Also
+ making it return the level found, and comparing it with the current level is
+ no use, due to the order of stack. */
+static int float_active = 0;
+/* Unsetting escape_html blindly causes text inside @html/etc. to be escaped if
+ used within a rmacro. */
+static int raw_output_block = 0;
+
+/* Non-zero if a <dl> element has a <dt> element in it. We use this when
+ deciding whether to insert a <br> or not. */
+static int html_deflist_has_term = 0;
void
-init_insertion_stack ()
+init_insertion_stack (void)
{
insertion_stack = NULL;
}
/* Return the type of the current insertion. */
static enum insertion_type
-current_insertion_type ()
+current_insertion_type (void)
{
return insertion_level ? insertion_stack->insertion : bad_type;
}
@@ -82,7 +96,7 @@ current_insertion_type ()
/* Return the string which is the function to wrap around items, or NULL
if we're not in an environment where @item is ok. */
static char *
-current_item_function ()
+current_item_function (void)
{
int done = 0;
INSERTION_ELT *elt = insertion_stack;
@@ -106,7 +120,9 @@ current_item_function ()
case ifset:
case iftex:
case ifxml:
+ case rawdocbook:
case rawhtml:
+ case rawxml:
case rawtex:
case tex:
case cartouche:
@@ -126,8 +142,8 @@ current_item_function ()
change it to "@ ", since "@" by itself is not a command. This makes
"@ ", "@\t", and "@\n" all the same, but their default meanings are
the same anyway, and let's not worry about supporting redefining them. */
-char *
-get_item_function ()
+static char *
+get_item_function (void)
{
char *item_function;
char *item_loc;
@@ -161,10 +177,8 @@ get_item_function ()
}
/* Push the state of the current insertion on the stack. */
-void
-push_insertion (type, item_function)
- enum insertion_type type;
- char *item_function;
+static void
+push_insertion (enum insertion_type type, char *item_function)
{
INSERTION_ELT *new = xmalloc (sizeof (INSERTION_ELT));
@@ -184,7 +198,7 @@ push_insertion (type, item_function)
/* Pop the value on top of the insertion stack into the
global variables. */
void
-pop_insertion ()
+pop_insertion (void)
{
INSERTION_ELT *temp = insertion_stack;
@@ -204,12 +218,22 @@ pop_insertion ()
/* Return a pointer to the print name of this
enumerated type. */
-const char *
-insertion_type_pname (type)
- enum insertion_type type;
+static const char *
+insertion_type_pname (enum insertion_type type)
{
if ((int) type < (int) bad_type)
- return insertion_type_names[(int) type];
+ {
+ if (type == rawdocbook)
+ return "docbook";
+ else if (type == rawhtml)
+ return "html";
+ else if (type == rawxml)
+ return "xml";
+ else if (type == rawtex)
+ return "tex";
+ else
+ return insertion_type_names[(int) type];
+ }
else
return _("Broken-Type in insertion_type_pname");
}
@@ -217,18 +241,19 @@ insertion_type_pname (type)
/* Return the insertion_type associated with NAME.
If the type is not one of the known ones, return BAD_TYPE. */
enum insertion_type
-find_type_from_name (name)
- char *name;
+find_type_from_name (char *name)
{
int index = 0;
while (index < (int) bad_type)
{
if (STREQ (name, insertion_type_names[index]))
return (enum insertion_type) index;
+ if (index == rawdocbook && STREQ (name, "docbook"))
+ return rawdocbook;
if (index == rawhtml && STREQ (name, "html"))
return rawhtml;
- if (index == rawhtml && STREQ (name, "xml"))
- return rawhtml;
+ if (index == rawxml && STREQ (name, "xml"))
+ return rawxml;
if (index == rawtex && STREQ (name, "tex"))
return rawtex;
index++;
@@ -236,9 +261,29 @@ find_type_from_name (name)
return bad_type;
}
+/* Simple function to query insertion_stack to see if we are inside a given
+ insertion type. */
int
-defun_insertion (type)
- enum insertion_type type;
+is_in_insertion_of_type (int type)
+{
+ INSERTION_ELT *temp = insertion_stack;
+
+ if (!insertion_level)
+ return 0;
+
+ while (temp)
+ {
+ if (temp->insertion == type)
+ return 1;
+ temp = temp->next;
+ }
+
+ return 0;
+}
+
+
+static int
+defun_insertion (enum insertion_type type)
{
return 0
|| (type == defcv)
@@ -250,6 +295,7 @@ defun_insertion (type)
|| (type == defopt)
|| (type == defspec)
|| (type == deftp)
+ || (type == deftypecv)
|| (type == deftypefn)
|| (type == deftypefun)
|| (type == deftypeivar)
@@ -280,9 +326,8 @@ int current_enumval = 1;
int current_enumtype = ENUM_DIGITS;
char *enumeration_arg = NULL;
-void
-start_enumerating (at, type)
- int at, type;
+static void
+start_enumerating (int at, int type)
{
if ((enumstack_offset + 1) == max_stack_depth)
{
@@ -296,8 +341,8 @@ start_enumerating (at, type)
current_enumtype = type;
}
-void
-stop_enumerating ()
+static void
+stop_enumerating (void)
{
--enumstack_offset;
if (enumstack_offset < 0)
@@ -308,8 +353,8 @@ stop_enumerating ()
}
/* Place a letter or digits into the output stream. */
-void
-enumerate_item ()
+static void
+enumerate_item (void)
{
char temp[10];
@@ -331,7 +376,7 @@ enumerate_item ()
}
static void
-enum_html ()
+enum_html (void)
{
char type;
int start;
@@ -352,12 +397,12 @@ enum_html ()
start = *enumeration_arg - 'a' + 1;
}
- add_word_args ("<ol type=%c start=%d>\n", type, start);
+ add_html_block_elt_args ("<ol type=%c start=%d>\n", type, start);
}
/* Conditionally parse based on the current command name. */
void
-command_name_condition ()
+command_name_condition (void)
{
char *discarder = xmalloc (8 + strlen (command));
@@ -372,8 +417,7 @@ command_name_condition ()
commands is done. A huge switch statement handles the
various setups, and generic code is on both sides. */
void
-begin_insertion (type)
- enum insertion_type type;
+begin_insertion (enum insertion_type type)
{
int no_discard = 0;
@@ -405,10 +449,11 @@ begin_insertion (type)
if (xml)
xml_insert_element (MENU, START);
+ else
+ in_fixed_width_font++;
next_menu_item_number = 1;
in_menu++;
- in_fixed_width_font++;
no_discard++;
break;
@@ -424,7 +469,14 @@ begin_insertion (type)
no_discard++;
}
- in_fixed_width_font++;
+ if (xml)
+ {
+ xml_insert_element (DETAILMENU, START);
+ skip_whitespace_and_newlines();
+ }
+ else
+ in_fixed_width_font++;
+
in_detailmenu++;
break;
@@ -455,32 +507,15 @@ begin_insertion (type)
break;
case copying:
- {
/* Save the copying text away for @insertcopying,
typically used on the back of the @titlepage (for TeX) and
the Top node (for info/html). */
- char *text;
- int start_of_end;
- int save_paragraph_indentation;
-
+ if (input_text[input_text_offset] != '\n')
discard_until ("\n"); /* ignore remainder of @copying line */
- start_of_end = get_until ("\n@end copying", &text);
-
- /* include all the output-format-specific markup. */
- if (docbook)
- {
- save_paragraph_indentation = inhibit_paragraph_indentation;
- inhibit_paragraph_indentation = 1;
- }
- copying_text = full_expansion (text, 0);
- free (text);
-
- if (docbook)
- inhibit_paragraph_indentation = save_paragraph_indentation;
-
- input_text_offset = start_of_end; /* go back to the @end to match */
- }
-
+
+ input_text_offset = get_until ("\n@end copying", &copying_text);
+ canon_white (copying_text);
+
/* For info, output the copying text right away, so it will end up
in the header of the Info file, before the first node, and thus
get copied automatically to all the split files. For xml, also
@@ -495,25 +530,21 @@ begin_insertion (type)
xml_insert_element (BOOKINFO, START);
xml_in_bookinfo = 1;
}
- if (!xml_in_abstract)
- {
- xml_insert_element (ABSTRACT, START);
- xml_in_abstract = 1;
- }
+ xml_insert_element (LEGALNOTICE, START);
}
+
if (!html && !no_headers)
cm_insert_copying ();
- if (docbook && xml_in_abstract)
- {
- xml_insert_element (ABSTRACT, END);
- xml_in_abstract = 0;
- }
+
+ if (docbook)
+ xml_insert_element (LEGALNOTICE, END);
+
break;
-
+
case quotation:
/* @quotation does filling (@display doesn't). */
if (html)
- add_word ("<blockquote>\n");
+ add_html_block_elt ("<blockquote>\n");
else
{
/* with close_single_paragraph, we get no blank line above
@@ -524,32 +555,39 @@ begin_insertion (type)
inhibit_paragraph_indentation = 1;
}
current_indent += default_indentation_increment;
+ if (xml)
+ xml_insert_quotation (insertion_stack->item_function, START);
+ else if (strlen(insertion_stack->item_function))
+ execute_string ("@b{%s:} ", insertion_stack->item_function);
break;
- case display:
- case smalldisplay:
case example:
case smallexample:
case lisp:
case smalllisp:
+ in_fixed_width_font++;
+ /* fall through */
+
+ /* Like @example but no fixed width font. */
+ case display:
+ case smalldisplay:
/* Like @display but without indentation. */
case smallformat:
case format:
close_single_paragraph ();
inhibit_paragraph_indentation = 1;
- in_fixed_width_font++;
filling_enabled = 0;
last_char_was_newline = 0;
if (html)
- /* Kludge alert: if <pre> is followed by a newline, IE3
- renders an extra blank line before the pre-formatted block.
- Other browsers seem to not mind one way or the other. */
- add_word_args ("<pre class=\"%s\">", command);
+ /* Kludge alert: if <pre> is followed by a newline, IE3,
+ mozilla, maybe others render an extra blank line before the
+ pre-formatted block. So don't output a newline. */
+ add_html_block_elt_args ("<pre class=\"%s\">", command);
if (type != format && type != smallformat)
{
- current_indent += default_indentation_increment;
+ current_indent += example_indentation_increment;
if (html)
{
/* Since we didn't put \n after <pre>, we need to insert
@@ -559,7 +597,6 @@ begin_insertion (type)
add_char (' ');
}
}
-
break;
case multitable:
@@ -599,14 +636,26 @@ begin_insertion (type)
{
if (type == itemize)
{
- add_word ("<ul>\n");
+ add_html_block_elt ("<ul>\n");
in_paragraph = 0;
}
else
- add_word (dl_tag);
+ { /* We are just starting, so this <dl>
+ has no <dt> children yet. */
+ html_deflist_has_term = 0;
+ add_html_block_elt ("<dl>\n");
+ }
}
if (xml)
xml_begin_table (type, insertion_stack->item_function);
+
+ while (input_text[input_text_offset] == '\n'
+ && input_text[input_text_offset+1] == '\n')
+ {
+ line_number++;
+ input_text_offset++;
+ }
+
break;
case enumerate:
@@ -636,7 +685,7 @@ begin_insertion (type)
start_enumerating (*enumeration_arg, ENUM_ALPHA);
break;
- /* @group does nothing special in makeinfo. */
+ /* @group produces no output in info. */
case group:
/* Only close the paragraph if we are not inside of an
@example-like environment. */
@@ -658,15 +707,157 @@ begin_insertion (type)
case cartouche:
if (html)
- add_word ("<table class=\"cartouche\" border=1><tr><td>\n");
+ add_html_block_elt ("<p><table class=\"cartouche\" summary=\"cartouche\" border=\"1\"><tr><td>\n");
if (in_menu)
no_discard++;
break;
+ case floatenv:
+ /* Cannot nest floats, so complain. */
+ if (float_active)
+ {
+ line_error (_("%cfloat environments cannot be nested"), COMMAND_PREFIX);
+ pop_insertion ();
+ break;
+ }
+
+ float_active++;
+
+ { /* Collect data about this float. */
+ /* Example: @float [FLOATTYPE][,XREFLABEL][,POSITION] */
+ char floattype[200] = "";
+ char xreflabel[200] = "";
+ char position[200] = "";
+ char *text;
+ char *caption;
+ char *shortcaption;
+ int start_of_end;
+ int save_line_number = line_number;
+ int save_input_text_offset = input_text_offset;
+ int i;
+
+ if (strlen (insertion_stack->item_function) > 0)
+ {
+ int i = 0, t = 0, c = 0;
+ while (insertion_stack->item_function[i])
+ {
+ if (insertion_stack->item_function[i] == ',')
+ {
+ switch (t)
+ {
+ case 0:
+ floattype[c] = '\0';
+ break;
+ case 1:
+ xreflabel[c] = '\0';
+ break;
+ case 2:
+ position[c] = '\0';
+ break;
+ }
+ c = 0;
+ t++;
+ i++;
+ continue;
+ }
+
+ switch (t)
+ {
+ case 0:
+ floattype[c] = insertion_stack->item_function[i];
+ break;
+ case 1:
+ xreflabel[c] = insertion_stack->item_function[i];
+ break;
+ case 2:
+ position[c] = insertion_stack->item_function[i];
+ break;
+ }
+ c++;
+ i++;
+ }
+ }
+
+ skip_whitespace_and_newlines ();
+
+ start_of_end = get_until ("\n@end float", &text);
+
+ /* Get also the @caption. */
+ i = search_forward_until_pos ("\n@caption{",
+ save_input_text_offset, start_of_end);
+ if (i > -1)
+ {
+ input_text_offset = i + sizeof ("\n@caption{") - 1;
+ get_until_in_braces ("\n@end float", &caption);
+ input_text_offset = save_input_text_offset;
+ }
+ else
+ caption = "";
+
+ /* ... and the @shortcaption. */
+ i = search_forward_until_pos ("\n@shortcaption{",
+ save_input_text_offset, start_of_end);
+ if (i > -1)
+ {
+ input_text_offset = i + sizeof ("\n@shortcaption{") - 1;
+ get_until_in_braces ("\n@end float", &shortcaption);
+ input_text_offset = save_input_text_offset;
+ }
+ else
+ shortcaption = "";
+
+ canon_white (xreflabel);
+ canon_white (floattype);
+ canon_white (position);
+ canon_white (caption);
+ canon_white (shortcaption);
+
+ add_new_float (xstrdup (xreflabel),
+ xstrdup (caption), xstrdup (shortcaption),
+ xstrdup (floattype), xstrdup (position));
+
+ /* Move to the start of the @float so the contents get processed as
+ usual. */
+ input_text_offset = save_input_text_offset;
+ line_number = save_line_number;
+ }
+
+ if (html)
+ add_html_block_elt ("<div class=\"float\">\n");
+ else if (docbook)
+ xml_insert_element (FLOAT, START);
+ else if (xml)
+ {
+ xml_insert_element_with_attribute (FLOAT, START,
+ "name=\"%s\"", current_float_id ());
+
+ xml_insert_element (FLOATTYPE, START);
+ execute_string ("%s", current_float_type ());
+ xml_insert_element (FLOATTYPE, END);
+
+ xml_insert_element (FLOATPOS, START);
+ execute_string ("%s", current_float_position ());
+ xml_insert_element (FLOATPOS, END);
+ }
+ else
+ { /* Info */
+ close_single_paragraph ();
+ inhibit_paragraph_indentation = 1;
+ }
+
+ /* Anchor now. Note that XML documents get their
+ anchors with <float name="anchor"> tag. */
+ if ((!xml || docbook) && strlen (current_float_id ()) > 0)
+ execute_string ("@anchor{%s}", current_float_id ());
+
+ break;
+
/* Insertions that are no-ops in info, but do something in TeX. */
case ifclear:
+ case ifdocbook:
case ifhtml:
case ifinfo:
+ case ifnotdocbook:
case ifnothtml:
case ifnotinfo:
case ifnotplaintext:
@@ -681,8 +872,25 @@ begin_insertion (type)
no_discard++;
break;
+ case rawdocbook:
case rawhtml:
- escape_html = 0;
+ case rawxml:
+ raw_output_block++;
+
+ if (raw_output_block > 0)
+ {
+ xml_no_para = 1;
+ escape_html = 0;
+ xml_keep_space++;
+ }
+
+ {
+ /* Some deuglification for improved readability. */
+ extern int xml_in_para;
+ if (xml && !xml_in_para && xml_indentation_increment > 0)
+ add_char ('\n');
+ }
+
break;
case defcv:
@@ -694,6 +902,7 @@ begin_insertion (type)
case defopt:
case defspec:
case deftp:
+ case deftypecv:
case deftypefn:
case deftypefun:
case deftypeivar:
@@ -708,6 +917,8 @@ begin_insertion (type)
filling_enabled = indented_fill = 1;
current_indent += default_indentation_increment;
no_indent = 0;
+ if (xml)
+ xml_begin_definition ();
break;
case flushleft:
@@ -715,7 +926,7 @@ begin_insertion (type)
inhibit_paragraph_indentation = 1;
filling_enabled = indented_fill = no_indent = 0;
if (html)
- add_word ("<div align=\"left\">");
+ add_html_block_elt ("<div align=\"left\">");
break;
case flushright:
@@ -724,12 +935,15 @@ begin_insertion (type)
inhibit_paragraph_indentation = 1;
force_flush_right++;
if (html)
- add_word ("<div align=\"right\">");
+ add_html_block_elt ("<div align=\"right\">");
+ break;
+
+ case titlepage:
+ xml_insert_element (TITLEPAGE, START);
break;
default:
line_error ("begin_insertion internal error: type=%d", type);
-
}
if (!no_discard)
@@ -740,11 +954,10 @@ begin_insertion (type)
`bad_type', TYPE gets translated to match the value currently on top
of the stack. Otherwise, if TYPE doesn't match the top of the
insertion stack, give error. */
-void
-end_insertion (type)
- enum insertion_type type;
+static void
+end_insertion (int type)
{
- enum insertion_type temp_type;
+ int temp_type;
if (!insertion_level)
return;
@@ -771,23 +984,28 @@ end_insertion (type)
case ifinfo:
case documentdescription:
break;
- case copying:
- xml_insert_element (COPYING, END);
- break;
case quotation:
- xml_insert_element (QUOTATION, END);
+ xml_insert_quotation ("", END);
break;
case example:
xml_insert_element (EXAMPLE, END);
+ if (docbook && current_insertion_type () == floatenv)
+ xml_insert_element (FLOATEXAMPLE, END);
break;
case smallexample:
xml_insert_element (SMALLEXAMPLE, END);
+ if (docbook && current_insertion_type () == floatenv)
+ xml_insert_element (FLOATEXAMPLE, END);
break;
case lisp:
xml_insert_element (LISP, END);
+ if (docbook && current_insertion_type () == floatenv)
+ xml_insert_element (FLOATEXAMPLE, END);
break;
case smalllisp:
xml_insert_element (SMALLLISP, END);
+ if (docbook && current_insertion_type () == floatenv)
+ xml_insert_element (FLOATEXAMPLE, END);
break;
case cartouche:
xml_insert_element (CARTOUCHE, END);
@@ -817,21 +1035,28 @@ end_insertion (type)
xml_end_table (type);
break;
case enumerate:
- xml_end_enumerate (type);
+ xml_end_enumerate ();
break;
case group:
xml_insert_element (GROUP, END);
break;
+ case titlepage:
+ xml_insert_element (TITLEPAGE, END);
+ break;
}
}
switch (type)
{
/* Insertions which have no effect on paragraph formatting. */
case copying:
- case documentdescription:
+ line_number--;
+ break;
+
case ifclear:
+ case ifdocbook:
case ifinfo:
case ifhtml:
+ case ifnotdocbook:
case ifnothtml:
case ifnotinfo:
case ifnotplaintext:
@@ -842,13 +1067,29 @@ end_insertion (type)
case iftex:
case ifxml:
case rawtex:
+ case titlepage:
break;
+ case rawdocbook:
case rawhtml:
- escape_html = 1;
+ case rawxml:
+ raw_output_block--;
+
+ if (raw_output_block <= 0)
+ {
+ xml_no_para = 0;
+ escape_html = 1;
+ xml_keep_space--;
+ }
+
+ if ((xml || html) && output_paragraph[output_paragraph_offset-1] == '\n')
+ output_paragraph_offset--;
break;
case detailmenu:
+ if (xml)
+ xml_insert_element (DETAILMENU, END);
+
in_detailmenu--; /* No longer hacking menus. */
if (!in_menu)
{
@@ -862,11 +1103,17 @@ end_insertion (type)
close_insertion_paragraph ();
break;
+ case documentdescription:
+ if (xml)
+ insert_string (document_description);
+ xml_insert_element (DOCUMENTDESCRIPTION, END);
+ break;
+
case menu:
in_menu--; /* No longer hacking menus. */
if (html && !no_headers)
- add_word ("</ul>\n");
- else if (!no_headers)
+ add_html_block_elt ("</ul>\n");
+ else if (!no_headers && !xml)
close_insertion_paragraph ();
break;
@@ -879,23 +1126,76 @@ end_insertion (type)
close_insertion_paragraph ();
current_indent -= default_indentation_increment;
if (html)
- add_word ("</ol>\n");
+ add_html_block_elt ("</ol>\n");
break;
case flushleft:
if (html)
- add_word ("</div>\n");
+ add_html_block_elt ("</div>\n");
close_insertion_paragraph ();
break;
case cartouche:
if (html)
- add_word ("</td></tr></table>\n");
+ add_html_block_elt ("</td></tr></table>\n");
close_insertion_paragraph ();
break;
case group:
- close_insertion_paragraph ();
+ if (!xml || docbook)
+ close_insertion_paragraph ();
+ break;
+
+ case floatenv:
+ if (xml)
+ xml_insert_element (FLOAT, END);
+ else
+ {
+ if (html)
+ add_html_block_elt ("<p><strong class=\"float-caption\">");
+ else
+ close_paragraph ();
+
+ no_indent = 1;
+
+ /* Legend:
+ 1) @float Foo,lbl & no caption: Foo 1.1
+ 2) @float Foo & no caption: Foo
+ 3) @float ,lbl & no caption: 1.1
+ 4) @float & no caption: */
+
+ if (!xml && !html)
+ indent (current_indent);
+
+ if (strlen (current_float_type ()))
+ execute_string ("%s", current_float_type ());
+
+ if (strlen (current_float_id ()) > 0)
+ {
+ if (strlen (current_float_type ()) > 0)
+ add_char (' ');
+
+ add_word (current_float_number ());
+ }
+
+ if (strlen (current_float_title ()) > 0)
+ {
+ if (strlen (current_float_type ()) > 0
+ || strlen (current_float_id ()) > 0)
+ insert_string (": ");
+
+ execute_string ("%s", current_float_title ());
+ }
+
+ /* Indent the following paragraph. */
+ inhibit_paragraph_indentation = 0;
+
+ if (html)
+ add_word ("</strong></p></div>\n");
+ else
+ close_paragraph ();
+ }
+ float_active--;
break;
case format:
@@ -909,15 +1209,30 @@ end_insertion (type)
case quotation:
/* @format and @smallformat are the only fixed_width insertion
without a change in indentation. */
- if (type != format && type != smallformat)
+ if (type != format && type != smallformat && type != quotation)
+ current_indent -= example_indentation_increment;
+ else if (type == quotation)
current_indent -= default_indentation_increment;
if (html)
- add_word (type == quotation ? "</blockquote>\n" : "</pre>\n");
+ { /* The complex code in close_paragraph that kills whitespace
+ does not function here, since we've inserted non-whitespace
+ (the </whatever>) before it. The indentation already got
+ inserted at the end of the last example line, so we have to
+ delete it, or browsers wind up showing an extra blank line. */
+ kill_self_indent (default_indentation_increment);
+ add_html_block_elt (type == quotation
+ ? "</blockquote>\n" : "</pre>\n");
+ }
/* The ending of one of these insertions always marks the
- start of a new paragraph. */
- close_insertion_paragraph ();
+ start of a new paragraph, except for the XML output. */
+ if (!xml || docbook)
+ close_insertion_paragraph ();
+
+ /* </pre> closes paragraph without messing with </p>. */
+ if (html && type != quotation)
+ paragraph_is_open = 0;
break;
case table:
@@ -925,28 +1240,28 @@ end_insertion (type)
case vtable:
current_indent -= default_indentation_increment;
if (html)
- add_word ("</dl>\n");
+ add_html_block_elt ("</dl>\n");
close_insertion_paragraph ();
break;
case itemize:
current_indent -= default_indentation_increment;
if (html)
- add_word ("</ul>\n");
+ add_html_block_elt ("</ul>\n");
close_insertion_paragraph ();
break;
case flushright:
force_flush_right--;
if (html)
- add_word ("</div>\n");
+ add_html_block_elt ("</div>\n");
close_insertion_paragraph ();
break;
/* Handle the @defun insertions with this default clause. */
default:
{
- enum insertion_type base_type;
+ int base_type;
if (type < defcv || type > defvr)
line_error ("end_insertion internal error: type=%d", type);
@@ -957,6 +1272,7 @@ end_insertion (type)
case deffn:
case defvr:
case deftp:
+ case deftypecv:
case deftypefn:
case deftypevr:
case defcv:
@@ -965,8 +1281,16 @@ end_insertion (type)
case deftypeop:
case deftypeivar:
if (html)
- /* close the tables which has been opened in defun.c */
- add_word ("</td></tr>\n</table>\n");
+ {
+ if (paragraph_is_open)
+ add_html_block_elt ("</p>");
+ /* close the div and blockquote which has been opened in defun.c */
+ if (!rollback_empty_tag ("blockquote"))
+ add_html_block_elt ("</blockquote>");
+ add_html_block_elt ("</div>\n");
+ }
+ if (xml)
+ xml_end_definition ();
break;
} /* switch (base_type)... */
@@ -991,8 +1315,7 @@ end_insertion (type)
@if... conditionals, otherwise not. This is because conditionals can
cross node boundaries. Always happens with the @top node, for example. */
void
-discard_insertions (specials_ok)
- int specials_ok;
+discard_insertions (int specials_ok)
{
int real_line_number = line_number;
while (insertion_stack)
@@ -1000,7 +1323,9 @@ discard_insertions (specials_ok)
if (specials_ok
&& ((ifclear <= insertion_stack->insertion
&& insertion_stack->insertion <= iftex)
+ || insertion_stack->insertion == rawdocbook
|| insertion_stack->insertion == rawhtml
+ || insertion_stack->insertion == rawxml
|| insertion_stack->insertion == rawtex))
break;
else
@@ -1020,71 +1345,125 @@ discard_insertions (specials_ok)
/* Insertion (environment) commands. */
void
-cm_quotation ()
+cm_quotation (void)
{
- if (xml)
- xml_insert_element (QUOTATION, START);
+ /* We start the blockquote element in the insertion. */
begin_insertion (quotation);
}
void
-cm_example ()
+cm_example (void)
{
+ if (docbook && current_insertion_type () == floatenv)
+ xml_begin_docbook_float (FLOATEXAMPLE);
+
if (xml)
- xml_insert_element (EXAMPLE, START);
+ {
+ /* Rollback previous newlines. These occur between
+ </para> and <example>. */
+ if (output_paragraph[output_paragraph_offset-1] == '\n')
+ output_paragraph_offset--;
+
+ xml_insert_element (EXAMPLE, START);
+
+ /* Make sure example text is starting on a new line
+ for improved readability. */
+ if (docbook)
+ add_char ('\n');
+ }
+
begin_insertion (example);
}
void
-cm_smallexample ()
+cm_smallexample (void)
{
+ if (docbook && current_insertion_type () == floatenv)
+ xml_begin_docbook_float (FLOATEXAMPLE);
+
if (xml)
- xml_insert_element (SMALLEXAMPLE, START);
+ {
+ /* See cm_example comments about newlines. */
+ if (output_paragraph[output_paragraph_offset-1] == '\n')
+ output_paragraph_offset--;
+ xml_insert_element (SMALLEXAMPLE, START);
+ if (docbook)
+ add_char ('\n');
+ }
+
begin_insertion (smallexample);
}
void
-cm_lisp ()
+cm_lisp (void)
{
+ if (docbook && current_insertion_type () == floatenv)
+ xml_begin_docbook_float (FLOATEXAMPLE);
+
if (xml)
- xml_insert_element (LISP, START);
+ {
+ /* See cm_example comments about newlines. */
+ if (output_paragraph[output_paragraph_offset-1] == '\n')
+ output_paragraph_offset--;
+ xml_insert_element (LISP, START);
+ if (docbook)
+ add_char ('\n');
+ }
+
begin_insertion (lisp);
}
void
-cm_smalllisp ()
+cm_smalllisp (void)
{
+ if (docbook && current_insertion_type () == floatenv)
+ xml_begin_docbook_float (FLOATEXAMPLE);
+
if (xml)
- xml_insert_element (SMALLLISP, START);
+ {
+ /* See cm_example comments about newlines. */
+ if (output_paragraph[output_paragraph_offset-1] == '\n')
+ output_paragraph_offset--;
+ xml_insert_element (SMALLLISP, START);
+ if (docbook)
+ add_char ('\n');
+ }
+
begin_insertion (smalllisp);
}
void
-cm_cartouche ()
+cm_cartouche (void)
{
+ if (docbook && current_insertion_type () == floatenv)
+ xml_begin_docbook_float (CARTOUCHE);
+
if (xml)
xml_insert_element (CARTOUCHE, START);
begin_insertion (cartouche);
}
void
-cm_copying ()
+cm_copying (void)
{
- if (xml)
- xml_insert_element (COPYING, START);
begin_insertion (copying);
}
/* Not an insertion, despite the name, but it goes with cm_copying. */
void
-cm_insert_copying ()
+cm_insert_copying (void)
{
- if (copying_text)
- { /* insert_string rather than add_word because we've already done
- full expansion on copying_text when we saved it. */
- insert_string (copying_text);
- insert ('\n');
-
+ if (!copying_text)
+ {
+ warning ("@copying not used before %s", command);
+ return;
+ }
+
+ execute_string ("%s", copying_text);
+
+ if (!xml && !html)
+ {
+ add_word ("\n\n");
/* Update output_position so that the node positions in the tag
tables will take account of the copying text. */
flush_output ();
@@ -1092,7 +1471,7 @@ cm_insert_copying ()
}
void
-cm_format ()
+cm_format (void)
{
if (xml)
{
@@ -1102,56 +1481,94 @@ cm_format ()
xml_in_abstract = 1;
}
else
- xml_insert_element (FORMAT, START);
+ {
+ /* See cm_example comments about newlines. */
+ if (output_paragraph[output_paragraph_offset-1] == '\n')
+ output_paragraph_offset--;
+ xml_insert_element (FORMAT, START);
+ if (docbook)
+ add_char ('\n');
+ }
}
begin_insertion (format);
}
void
-cm_smallformat ()
+cm_smallformat (void)
{
if (xml)
- xml_insert_element (SMALLFORMAT, START);
+ {
+ /* See cm_example comments about newlines. */
+ if (output_paragraph[output_paragraph_offset-1] == '\n')
+ output_paragraph_offset--;
+ xml_insert_element (SMALLFORMAT, START);
+ if (docbook)
+ add_char ('\n');
+ }
+
begin_insertion (smallformat);
}
void
-cm_display ()
+cm_display (void)
{
if (xml)
- xml_insert_element (DISPLAY, START);
+ {
+ /* See cm_example comments about newlines. */
+ if (output_paragraph[output_paragraph_offset-1] == '\n')
+ output_paragraph_offset--;
+ xml_insert_element (DISPLAY, START);
+ if (docbook)
+ add_char ('\n');
+ }
+
begin_insertion (display);
}
void
-cm_smalldisplay ()
+cm_smalldisplay (void)
{
if (xml)
- xml_insert_element (SMALLDISPLAY, START);
+ {
+ /* See cm_example comments about newlines. */
+ if (output_paragraph[output_paragraph_offset-1] == '\n')
+ output_paragraph_offset--;
+ xml_insert_element (SMALLDISPLAY, START);
+ if (docbook)
+ add_char ('\n');
+ }
+
begin_insertion (smalldisplay);
}
void
-cm_direntry ()
+cm_direntry (void)
{
- if (html || xml)
+ if (html || xml || no_headers)
command_name_condition ();
else
begin_insertion (direntry);
}
void
-cm_documentdescription ()
+cm_documentdescription (void)
{
- if (html || xml)
+ if (html)
begin_insertion (documentdescription);
+
+ else if (xml)
+ {
+ xml_insert_element (DOCUMENTDESCRIPTION, START);
+ begin_insertion (documentdescription);
+ }
+
else
command_name_condition ();
}
void
-cm_itemize ()
+cm_itemize (void)
{
begin_insertion (itemize);
}
@@ -1159,9 +1576,7 @@ cm_itemize ()
/* Start an enumeration insertion of type TYPE. If the user supplied
no argument on the line, then use DEFAULT_STRING as the initial string. */
static void
-do_enumeration (type, default_string)
- int type;
- char *default_string;
+do_enumeration (int type, char *default_string)
{
get_until_in_line (0, ".", &enumeration_arg);
canon_white (enumeration_arg);
@@ -1188,7 +1603,7 @@ do_enumeration (type, default_string)
}
void
-cm_enumerate ()
+cm_enumerate (void)
{
do_enumeration (enumerate, "1");
}
@@ -1202,15 +1617,16 @@ cm_enumerate ()
verbatim environment may be encapsulated in an @example environment,
for example. */
void
-handle_verbatim_environment (find_end_verbatim)
- int find_end_verbatim;
+handle_verbatim_environment (int find_end_verbatim)
{
int character;
int seen_end = 0;
int save_filling_enabled = filling_enabled;
int save_inhibit_paragraph_indentation = inhibit_paragraph_indentation;
+ int save_escape_html = escape_html;
- close_single_paragraph ();
+ if (!insertion_stack)
+ close_single_paragraph (); /* no blank lines if not at outer level */
inhibit_paragraph_indentation = 1;
filling_enabled = 0;
in_fixed_width_font++;
@@ -1222,7 +1638,22 @@ handle_verbatim_environment (find_end_verbatim)
*/
if (html)
- add_word ("<pre class=\"verbatim\">");
+ { /* If inside @example, we'll be preceded by the indentation
+ already. Browsers will ignore those spaces because we're about
+ to start another <pre> (don't ask me). So, wipe them out for
+ cleanliness, and re-insert. */
+ int i;
+ kill_self_indent (default_indentation_increment);
+ add_html_block_elt ("<pre class=\"verbatim\">");
+ for (i = current_indent; i > 0; i--)
+ add_char (' ');
+ }
+ else if (xml)
+ {
+ xml_insert_element (VERBATIM, START);
+ escape_html = 0;
+ add_word ("<![CDATA[");
+ }
while (input_text_offset < input_text_length)
{
@@ -1230,9 +1661,8 @@ handle_verbatim_environment (find_end_verbatim)
if (character == '\n')
line_number++;
- /*
- Assume no newlines in END_VERBATIM
- */
+
+ /* Assume no newlines in END_VERBATIM. */
else if (find_end_verbatim && (character == COMMAND_PREFIX) /* @ */
&& (input_text_length - input_text_offset > sizeof (END_VERBATIM))
&& !strncmp (&input_text[input_text_offset+1], END_VERBATIM,
@@ -1257,7 +1687,16 @@ handle_verbatim_environment (find_end_verbatim)
warning (_("end of file inside verbatim block"));
if (html)
- add_word ("</pre>");
+ { /* See comments in example case above. */
+ kill_self_indent (default_indentation_increment);
+ add_word ("</pre>");
+ }
+ else if (xml)
+ {
+ add_word ("]]>");
+ xml_insert_element (VERBATIM, END);
+ escape_html = save_escape_html;
+ }
in_fixed_width_font--;
filling_enabled = save_filling_enabled;
@@ -1265,53 +1704,89 @@ handle_verbatim_environment (find_end_verbatim)
}
void
-cm_verbatim ()
+cm_verbatim (void)
{
handle_verbatim_environment (1);
}
void
-cm_table ()
+cm_table (void)
{
begin_insertion (table);
}
void
-cm_multitable ()
+cm_multitable (void)
{
begin_insertion (multitable); /* @@ */
}
void
-cm_ftable ()
+cm_ftable (void)
{
begin_insertion (ftable);
}
void
-cm_vtable ()
+cm_vtable (void)
{
begin_insertion (vtable);
}
void
-cm_group ()
+cm_group (void)
{
begin_insertion (group);
}
/* Insert raw HTML (no escaping of `<' etc.). */
void
-cm_html ()
+cm_html (int arg)
{
- if (process_html || process_xml)
+ if (process_html)
begin_insertion (rawhtml);
else
command_name_condition ();
}
void
-cm_ifhtml ()
+cm_xml (int arg)
+{
+ if (process_xml)
+ begin_insertion (rawxml);
+ else
+ command_name_condition ();
+}
+
+void
+cm_docbook (int arg)
+{
+ if (process_docbook)
+ begin_insertion (rawdocbook);
+ else
+ command_name_condition ();
+}
+
+void
+cm_ifdocbook (void)
+{
+ if (process_docbook)
+ begin_insertion (ifdocbook);
+ else
+ command_name_condition ();
+}
+
+void
+cm_ifnotdocbook (void)
+{
+ if (!process_docbook)
+ begin_insertion (ifnotdocbook);
+ else
+ command_name_condition ();
+}
+
+void
+cm_ifhtml (void)
{
if (process_html)
begin_insertion (ifhtml);
@@ -1320,7 +1795,7 @@ cm_ifhtml ()
}
void
-cm_ifnothtml ()
+cm_ifnothtml (void)
{
if (!process_html)
begin_insertion (ifnothtml);
@@ -1330,7 +1805,7 @@ cm_ifnothtml ()
void
-cm_ifinfo ()
+cm_ifinfo (void)
{
if (process_info)
begin_insertion (ifinfo);
@@ -1339,7 +1814,7 @@ cm_ifinfo ()
}
void
-cm_ifnotinfo ()
+cm_ifnotinfo (void)
{
if (!process_info)
begin_insertion (ifnotinfo);
@@ -1349,7 +1824,7 @@ cm_ifnotinfo ()
void
-cm_ifplaintext ()
+cm_ifplaintext (void)
{
if (process_plaintext)
begin_insertion (ifplaintext);
@@ -1358,7 +1833,7 @@ cm_ifplaintext ()
}
void
-cm_ifnotplaintext ()
+cm_ifnotplaintext (void)
{
if (!process_plaintext)
begin_insertion (ifnotplaintext);
@@ -1368,7 +1843,7 @@ cm_ifnotplaintext ()
void
-cm_tex ()
+cm_tex (void)
{
if (process_tex)
begin_insertion (rawtex);
@@ -1377,7 +1852,7 @@ cm_tex ()
}
void
-cm_iftex ()
+cm_iftex (void)
{
if (process_tex)
begin_insertion (iftex);
@@ -1386,7 +1861,7 @@ cm_iftex ()
}
void
-cm_ifnottex ()
+cm_ifnottex (void)
{
if (!process_tex)
begin_insertion (ifnottex);
@@ -1395,7 +1870,7 @@ cm_ifnottex ()
}
void
-cm_ifxml ()
+cm_ifxml (void)
{
if (process_xml)
begin_insertion (ifxml);
@@ -1404,7 +1879,7 @@ cm_ifxml ()
}
void
-cm_ifnotxml ()
+cm_ifnotxml (void)
{
if (!process_xml)
begin_insertion (ifnotxml);
@@ -1413,9 +1888,47 @@ cm_ifnotxml ()
}
+/* Generic xrefable block with a caption. */
+void
+cm_float (void)
+{
+ begin_insertion (floatenv);
+}
+
+void
+cm_caption (int arg)
+{
+ char *temp;
+
+ /* This is a no_op command for most formats, as we handle it during @float
+ insertion. For XML though, we handle it here to keep document structure
+ as close as possible, to the Texinfo source. */
+
+ /* Everything is already handled at START. */
+ if (arg == END)
+ return;
+
+ /* Check if it's mislocated. */
+ if (current_insertion_type () != floatenv)
+ line_error (_("@%s not meaningful outside `@float' environment"), command);
+
+ get_until_in_braces ("\n@end float", &temp);
+
+ if (xml)
+ {
+ int elt = STREQ (command, "shortcaption") ? SHORTCAPTION : CAPTION;
+ xml_insert_element (elt, START);
+ if (!docbook)
+ execute_string ("%s", temp);
+ xml_insert_element (elt, END);
+ }
+
+ free (temp);
+}
+
/* Begin an insertion where the lines are not filled or indented. */
void
-cm_flushleft ()
+cm_flushleft (void)
{
begin_insertion (flushleft);
}
@@ -1423,15 +1936,15 @@ cm_flushleft ()
/* Begin an insertion where the lines are not filled, and each line is
forced to the right-hand side of the page. */
void
-cm_flushright ()
+cm_flushright (void)
{
begin_insertion (flushright);
}
void
-cm_menu ()
+cm_menu (void)
{
- if (current_node == NULL)
+ if (current_node == NULL && !macro_expansion_output_stream)
{
warning (_("@menu seen before first @node, creating `Top' node"));
warning (_("perhaps your @top node should be wrapped in @ifnottex rather than @ifinfo?"));
@@ -1442,22 +1955,108 @@ cm_menu ()
}
void
-cm_detailmenu ()
+cm_detailmenu (void)
{
- if (current_node == NULL)
+ if (current_node == NULL && !macro_expansion_output_stream)
{ /* Problems anyway, @detailmenu should always be inside @menu. */
warning (_("@detailmenu seen before first node, creating `Top' node"));
execute_string ("@node top\n@top Top\n");
}
begin_insertion (detailmenu);
}
+
+/* Title page commands. */
+
+void
+cm_titlepage (void)
+{
+ titlepage_cmd_present = 1;
+ if (xml && !docbook)
+ begin_insertion (titlepage);
+ else
+ command_name_condition ();
+}
+
+void
+cm_author (void)
+{
+ char *rest;
+ get_rest_of_line (1, &rest);
+
+ if (is_in_insertion_of_type (quotation))
+ {
+ if (html)
+ add_word_args ("&mdash; %s", rest);
+ else if (docbook)
+ {
+ /* FIXME Ideally, we should use an attribution element,
+ but they are supposed to be at the start of quotation
+ blocks. So to avoid looking ahead mess, let's just
+ use mdash like HTML for now. */
+ xml_insert_entity ("mdash");
+ add_word (rest);
+ }
+ else if (xml)
+ {
+ xml_insert_element (AUTHOR, START);
+ add_word (rest);
+ xml_insert_element (AUTHOR, END);
+ }
+ else
+ add_word_args ("-- %s", rest);
+ }
+ else if (is_in_insertion_of_type (titlepage))
+ {
+ if (xml && !docbook)
+ {
+ xml_insert_element (AUTHOR, START);
+ add_word (rest);
+ xml_insert_element (AUTHOR, END);
+ }
+ }
+ else
+ line_error (_("@%s not meaningful outside `@titlepage' and `@quotation' environments"),
+ command);
+
+ free (rest);
+}
+
+void
+cm_titlepage_cmds (void)
+{
+ char *rest;
+
+ get_rest_of_line (1, &rest);
+
+ if (!is_in_insertion_of_type (titlepage))
+ line_error (_("@%s not meaningful outside `@titlepage' environment"),
+ command);
+
+ if (xml && !docbook)
+ {
+ int elt = 0;
+
+ if (STREQ (command, "title"))
+ elt = BOOKTITLE;
+ else if (STREQ (command, "subtitle"))
+ elt = BOOKSUBTITLE;
+
+ xml_insert_element (elt, START);
+ add_word (rest);
+ xml_insert_element (elt, END);
+ }
+
+ free (rest);
+}
/* End existing insertion block. */
void
-cm_end ()
+cm_end (void)
{
char *temp;
- enum insertion_type type;
+ int type;
+
+ get_rest_of_line (0, &temp);
if (!insertion_level)
{
@@ -1465,8 +2064,6 @@ cm_end ()
return;
}
- get_rest_of_line (0, &temp);
-
if (temp[0] == 0)
line_error (_("`%c%s' needs something after it"), COMMAND_PREFIX, command);
@@ -1474,8 +2071,8 @@ cm_end ()
if (type == bad_type)
{
- line_error (_("Bad argument to `%s', `%s', using `%s'"),
- command, temp, insertion_type_pname (current_insertion_type ()));
+ line_error (_("Bad argument `%s' to `@%s', using `%s'"),
+ temp, command, insertion_type_pname (current_insertion_type ()));
}
if (xml && type == menu) /* fixme */
{
@@ -1490,9 +2087,8 @@ cm_end ()
static int itemx_flag = 0;
/* Return whether CMD takes a brace-delimited {arg}. */
-/*static */int
-command_needs_braces (cmd)
- char *cmd;
+int
+command_needs_braces (char *cmd)
{
int i;
for (i = 0; command_table[i].name; i++)
@@ -1506,7 +2102,7 @@ command_needs_braces (cmd)
void
-cm_item ()
+cm_item (void)
{
char *rest_of_line, *item_func;
@@ -1548,7 +2144,9 @@ cm_item ()
case ifset:
case iftex:
case ifxml:
+ case rawdocbook:
case rawhtml:
+ case rawxml:
case rawtex:
case tex:
case cartouche:
@@ -1585,14 +2183,7 @@ cm_item ()
else
{
if (html)
- {
- if (in_paragraph)
- {
- add_word ("</p>");
- in_paragraph = 0;
- }
- add_word ("<li>");
- }
+ add_html_block_elt ("<li>");
else if (xml)
xml_begin_item ();
else
@@ -1646,17 +2237,11 @@ cm_item ()
case ftable:
case vtable:
if (html)
- {
- static int last_html_output_position = 0;
-
- /* If nothing has been output since the last <dd>,
+ { /* If nothing has been output since the last <dd>,
remove the empty <dd> element. Some browsers render
an extra empty line for <dd><dt>, which makes @itemx
conversion look ugly. */
- if (last_html_output_position == output_position
- && strncmp ((char *) output_paragraph, "<dd>",
- output_paragraph_offset) == 0)
- output_paragraph_offset = 0;
+ rollback_empty_tag ("dd");
/* Force the browser to render one blank line before
each new @item in a table. But don't do that if
@@ -1666,14 +2251,14 @@ cm_item ()
Note that there are some browsers which ignore <br>
in this context, but I cannot find any way to force
them all render exactly one blank line. */
- if (!itemx_flag
- && ((output_paragraph_offset < sizeof (dl_tag) + 1)
- || strncmp ((char *) output_paragraph
- + output_paragraph_offset - sizeof (dl_tag) + 1,
- dl_tag, sizeof (dl_tag) - 1) != 0))
- add_word ("<br>");
+ if (!itemx_flag && html_deflist_has_term)
+ add_html_block_elt ("<br>");
+
+ /* We are about to insert a <dt>, so this <dl> has a term.
+ Feel free to insert a <br> next time. :) */
+ html_deflist_has_term = 1;
- add_word ("<dt>");
+ add_html_block_elt ("<dt>");
if (item_func && *item_func)
execute_string ("%s{%s}", item_func, rest_of_line);
else
@@ -1684,15 +2269,19 @@ cm_item ()
if (current_insertion_type () == vtable)
execute_string ("%cvindex %s\n", COMMAND_PREFIX, rest_of_line);
- /* Make sure output_position is updated, so we could
- remember it. */
- close_single_paragraph ();
- last_html_output_position = output_position;
- add_word ("<dd>");
+
+ add_html_block_elt ("<dd>");
}
else if (xml) /* && docbook)*/ /* 05-08 */
{
xml_begin_table_item ();
+
+ if (!docbook && current_insertion_type () == ftable)
+ execute_string ("%cfindex %s\n", COMMAND_PREFIX, rest_of_line);
+
+ if (!docbook && current_insertion_type () == vtable)
+ execute_string ("%cvindex %s\n", COMMAND_PREFIX, rest_of_line);
+
if (item_func && *item_func)
execute_string ("%s{%s}", item_func, rest_of_line);
else
@@ -1770,9 +2359,18 @@ cm_item ()
}
void
-cm_itemx ()
+cm_itemx (void)
{
itemx_flag++;
cm_item ();
itemx_flag--;
}
+
+int headitem_flag = 0;
+
+void
+cm_headitem (void)
+{
+ headitem_flag = 1;
+ cm_item ();
+}
diff --git a/contrib/texinfo/makeinfo/insertion.h b/contrib/texinfo/makeinfo/insertion.h
index 17916e7..ace5571 100644
--- a/contrib/texinfo/makeinfo/insertion.h
+++ b/contrib/texinfo/makeinfo/insertion.h
@@ -1,7 +1,7 @@
/* insertion.h -- declarations for insertion.c.
- $Id: insertion.h,v 1.2 2002/09/29 19:15:20 karl Exp $
+ $Id: insertion.h,v 1.10 2004/04/11 17:56:47 karl Exp $
- Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -24,14 +24,15 @@
enum insertion_type
{
cartouche, copying, defcv, deffn, defivar, defmac, defmethod, defop,
- defopt, defspec, deftp, deftypefn, deftypefun, deftypeivar,
+ defopt, defspec, deftp, deftypecv, deftypefn, deftypefun, deftypeivar,
deftypemethod, deftypeop, deftypevar, deftypevr, defun, defvar, defvr,
detailmenu, direntry, display, documentdescription, enumerate,
- example, flushleft, flushright, format, ftable, group, ifclear,
- ifhtml, ifinfo, ifnothtml, ifnotinfo, ifnotplaintext, ifnottex, ifnotxml,
- ifplaintext, ifset, iftex, ifxml, itemize, lisp, menu, multitable, quotation,
- rawhtml, rawtex, smalldisplay, smallexample, smallformat, smalllisp,
- verbatim, table, tex, vtable, bad_type
+ example, floatenv, flushleft, flushright, format, ftable, group,
+ ifclear, ifdocbook, ifhtml, ifinfo, ifnotdocbook, ifnothtml, ifnotinfo,
+ ifnotplaintext, ifnottex, ifnotxml, ifplaintext, ifset, iftex, ifxml,
+ itemize, lisp, menu, multitable, quotation, rawdocbook, rawhtml, rawtex,
+ rawxml, smalldisplay, smallexample, smallformat, smalllisp, verbatim,
+ table, tex, vtable, titlepage, bad_type
};
typedef struct istack_elt
@@ -42,12 +43,11 @@ typedef struct istack_elt
int line_number;
int filling_enabled;
int indented_fill;
- enum insertion_type insertion;
+ int insertion;
int inhibited;
int in_fixed_width_font;
} INSERTION_ELT;
-
extern int insertion_level;
extern INSERTION_ELT *insertion_stack;
extern int in_menu;
@@ -55,10 +55,24 @@ extern int in_detailmenu;
extern int had_menu_commentary;
extern int in_paragraph;
-extern void command_name_condition ();
-extern void cm_ifhtml (), cm_ifnothtml(), cm_html ();
-extern void cm_ifinfo (), cm_ifnotinfo ();
-extern void cm_ifplaintext (), cm_ifnotplaintext();
-extern void cm_iftex (), cm_ifnottex (), cm_tex ();
-extern void cm_ifxml (), cm_ifnotxml ();
+extern int headitem_flag;
+extern int after_headitem;
+
+extern void init_insertion_stack (void);
+extern void command_name_condition (void);
+extern void cm_ifdocbook (void), cm_ifnotdocbook(void), cm_docbook (int arg);
+extern void cm_ifhtml (void), cm_ifnothtml(void), cm_html (int arg);
+extern void cm_ifinfo (void), cm_ifnotinfo (void);
+extern void cm_ifplaintext (void), cm_ifnotplaintext(void);
+extern void cm_iftex (void), cm_ifnottex (void), cm_tex (void);
+extern void cm_ifxml (void), cm_ifnotxml (void), cm_xml (int arg);
+extern void handle_verbatim_environment (int find_end_verbatim);
+extern void begin_insertion (enum insertion_type type);
+extern void pop_insertion (void);
+extern void discard_insertions (int specials_ok);
+
+extern int is_in_insertion_of_type (int type);
+extern int command_needs_braces (char *cmd);
+
+extern enum insertion_type find_type_from_name (char *name);
#endif /* !INSERTION_H */
diff --git a/contrib/texinfo/makeinfo/lang.c b/contrib/texinfo/makeinfo/lang.c
index 2938196..c72e8db 100644
--- a/contrib/texinfo/makeinfo/lang.c
+++ b/contrib/texinfo/makeinfo/lang.c
@@ -1,7 +1,8 @@
/* lang.c -- language-dependent support.
- $Id: lang.c,v 1.8 2003/05/01 00:05:27 karl Exp $
+ $Id: lang.c,v 1.14 2004/11/22 23:57:33 karl Exp $
- Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+ Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -21,6 +22,7 @@
#include "system.h"
#include "cmds.h"
+#include "files.h"
#include "lang.h"
#include "makeinfo.h"
#include "xml.h"
@@ -31,6 +33,9 @@ encoding_code_type document_encoding_code = no_encoding;
/* Current language code; default is English. */
language_code_type language_code = en;
+/* By default, unsupported encoding is an empty string. */
+char *unknown_encoding = NULL;
+
static iso_map_type us_ascii_map [] = {{NULL, 0, 0}}; /* ASCII map is trivial */
/* Translation table between HTML and ISO Codes. The last item is
@@ -137,6 +142,126 @@ static iso_map_type iso8859_1_map [] = {
{ NULL, 0, 0 }
};
+
+/* ISO 8859-15, also known as Latin 9, differs from Latin 1 in only a
+ few positions. http://www.cs.tut.fi/~jkorpela/latin9.html has a good
+ explanation and listing, summarized here. The names are abbreviated
+ from the official Unicode names, to fit in a decent line length.
+
+ code position
+ dec oct hex latin1 latin1 name latin9 latin9 name
+
+ 164 0244 0xA4 U+00A4 currency symbol U+20AC euro sign
+ 166 0246 0xA6 U+00A6 broken bar U+0160 S with caron
+ 168 0250 0xA8 U+00A8 diaeresis U+0161 s with caron
+ 180 0264 0xB4 U+00B4 acute accent U+017D Z with caron
+ 184 0270 0xB8 U+00B8 cedilla U+017E z with caron
+ 188 0274 0xBC U+00BC fraction 1/4 U+0152 ligature OE
+ 189 0275 0xBD U+00BD fraction 1/2 U+0153 ligature oe
+ 190 0276 0xBE U+00BE fraction 3/4 U+0178 Y with diaeresis
+*/
+
+static iso_map_type iso8859_15_map [] = {
+ { "nbsp", 0xA0, 0x00A0 },
+ { "iexcl", 0xA1, 0x00A1 },
+ { "cent", 0xA2, 0x00A2 },
+ { "pound", 0xA3, 0x00A3 },
+ { "euro", 0xA4, 0x20AC },
+ { "yen", 0xA5, 0x00A5 },
+ { "Scaron", 0xA6, 0x0160 },
+ { "sect", 0xA7, 0x00A7 },
+ { "scaron", 0xA8, 0x0161 },
+ { "copy", 0xA9, 0x00A9 },
+ { "ordf", 0xAA, 0x00AA },
+ { "laquo", 0xAB, 0x00AB },
+ { "not", 0xAC, 0x00AC },
+ { "shy", 0xAD, 0x00AD },
+ { "reg", 0xAE, 0x00AE },
+ { "hibar", 0xAF, 0x00AF },
+ { "deg", 0xB0, 0x00B0 },
+ { "plusmn", 0xB1, 0x00B1 },
+ { "sup2", 0xB2, 0x00B2 },
+ { "sup3", 0xB3, 0x00B3 },
+ { "Zcaron", 0xB4, 0x017D },
+ { "micro", 0xB5, 0x00B5 },
+ { "para", 0xB6, 0x00B6 },
+ { "middot", 0xB7, 0x00B7 },
+ { "zcaron", 0xB8, 0x017E },
+ { "sup1", 0xB9, 0x00B9 },
+ { "ordm", 0xBA, 0x00BA },
+ { "raquo", 0xBB, 0x00BB },
+ { "OElig", 0xBC, 0x0152 },
+ { "oelig", 0xBD, 0x0153 },
+ { "Yuml", 0xBE, 0x0178 },
+ { "iquest", 0xBF, 0x00BF },
+ { "Agrave", 0xC0, 0x00C0 },
+ { "Aacute", 0xC1, 0x00C1 },
+ { "Acirc", 0xC2, 0x00C2 },
+ { "Atilde", 0xC3, 0x00C3 },
+ { "Auml", 0xC4, 0x00C4 },
+ { "Aring", 0xC5, 0x00C5 },
+ { "AElig", 0xC6, 0x00C6 },
+ { "Ccedil", 0xC7, 0x00C7 },
+ { "Ccedil", 0xC7, 0x00C7 },
+ { "Egrave", 0xC8, 0x00C8 },
+ { "Eacute", 0xC9, 0x00C9 },
+ { "Ecirc", 0xCA, 0x00CA },
+ { "Euml", 0xCB, 0x00CB },
+ { "Igrave", 0xCC, 0x00CC },
+ { "Iacute", 0xCD, 0x00CD },
+ { "Icirc", 0xCE, 0x00CE },
+ { "Iuml", 0xCF, 0x00CF },
+ { "ETH", 0xD0, 0x00D0 },
+ { "Ntilde", 0xD1, 0x00D1 },
+ { "Ograve", 0xD2, 0x00D2 },
+ { "Oacute", 0xD3, 0x00D3 },
+ { "Ocirc", 0xD4, 0x00D4 },
+ { "Otilde", 0xD5, 0x00D5 },
+ { "Ouml", 0xD6, 0x00D6 },
+ { "times", 0xD7, 0x00D7 },
+ { "Oslash", 0xD8, 0x00D8 },
+ { "Ugrave", 0xD9, 0x00D9 },
+ { "Uacute", 0xDA, 0x00DA },
+ { "Ucirc", 0xDB, 0x00DB },
+ { "Uuml", 0xDC, 0x00DC },
+ { "Yacute", 0xDD, 0x00DD },
+ { "THORN", 0xDE, 0x00DE },
+ { "szlig", 0xDF, 0x00DF },
+ { "agrave", 0xE0, 0x00E0 },
+ { "aacute", 0xE1, 0x00E1 },
+ { "acirc", 0xE2, 0x00E2 },
+ { "atilde", 0xE3, 0x00E3 },
+ { "auml", 0xE4, 0x00E4 },
+ { "aring", 0xE5, 0x00E5 },
+ { "aelig", 0xE6, 0x00E6 },
+ { "ccedil", 0xE7, 0x00E7 },
+ { "egrave", 0xE8, 0x00E8 },
+ { "eacute", 0xE9, 0x00E9 },
+ { "ecirc", 0xEA, 0x00EA },
+ { "euml", 0xEB, 0x00EB },
+ { "igrave", 0xEC, 0x00EC },
+ { "iacute", 0xED, 0x00ED },
+ { "icirc", 0xEE, 0x00EE },
+ { "iuml", 0xEF, 0x00EF },
+ { "eth", 0xF0, 0x00F0 },
+ { "ntilde", 0xF1, 0x00F1 },
+ { "ograve", 0xF2, 0x00F2 },
+ { "oacute", 0xF3, 0x00F3 },
+ { "ocirc", 0xF4, 0x00F4 },
+ { "otilde", 0xF5, 0x00F5 },
+ { "ouml", 0xF6, 0x00F6 },
+ { "divide", 0xF7, 0x00F7 },
+ { "oslash", 0xF8, 0x00F8 },
+ { "ugrave", 0xF9, 0x00F9 },
+ { "uacute", 0xFA, 0x00FA },
+ { "ucirc", 0xFB, 0x00FB },
+ { "uuml", 0xFC, 0x00FC },
+ { "yacute", 0xFD, 0x00FD },
+ { "thorn", 0xFE, 0x00FE },
+ { "yuml", 0xFF, 0x00FF },
+ { NULL, 0, 0 }
+};
+
/* Date: Mon, 31 Mar 2003 00:19:28 +0200
@@ -262,21 +387,21 @@ static iso_map_type iso8859_2_map [] = {
encoding_type encoding_table[] = {
{ no_encoding, "(no encoding)", NULL },
{ US_ASCII, "US-ASCII", us_ascii_map },
- { ISO_8859_1, "ISO-8859-1", (iso_map_type *) iso8859_1_map },
- { ISO_8859_2, "ISO-8859-2", (iso_map_type *) iso8859_2_map },
- { ISO_8859_3, "ISO-8859-3", NULL },
- { ISO_8859_4, "ISO-8859-4", NULL },
- { ISO_8859_5, "ISO-8859-5", NULL },
- { ISO_8859_6, "ISO-8859-6", NULL },
- { ISO_8859_7, "ISO-8859-7", NULL },
- { ISO_8859_8, "ISO-8859-8", NULL },
- { ISO_8859_9, "ISO-8859-9", NULL },
- { ISO_8859_10, "ISO-8859-10", NULL },
- { ISO_8859_11, "ISO-8859-11", NULL },
- { ISO_8859_12, "ISO-8859-12", NULL },
- { ISO_8859_13, "ISO-8859-13", NULL },
- { ISO_8859_14, "ISO-8859-14", NULL },
- { ISO_8859_15, "ISO-8859-15", NULL },
+ { ISO_8859_1, "iso-8859-1", (iso_map_type *) iso8859_1_map },
+ { ISO_8859_2, "iso-8859-2", (iso_map_type *) iso8859_2_map },
+ { ISO_8859_3, "iso-8859-3", NULL },
+ { ISO_8859_4, "iso-8859-4", NULL },
+ { ISO_8859_5, "iso-8859-5", NULL },
+ { ISO_8859_6, "iso-8859-6", NULL },
+ { ISO_8859_7, "iso-8859-7", NULL },
+ { ISO_8859_8, "iso-8859-8", NULL },
+ { ISO_8859_9, "iso-8859-9", NULL },
+ { ISO_8859_10, "iso-8859-10", NULL },
+ { ISO_8859_11, "iso-8859-11", NULL },
+ { ISO_8859_12, "iso-8859-12", NULL },
+ { ISO_8859_13, "iso-8859-13", NULL },
+ { ISO_8859_14, "iso-8859-14", NULL },
+ { ISO_8859_15, "iso-8859-15", (iso_map_type *) iso8859_15_map },
{ last_encoding_code, NULL, NULL }
};
@@ -423,13 +548,16 @@ language_type language_table[] = {
{ zu, "zu", "Zulu" },
{ last_language_code, NULL, NULL }
};
-
-
/* @documentlanguage. Maybe we'll do something useful with this in the
future. For now, we just recognize it. */
+
+/* XML documents can make use of this data. Unfortunately, it clashes with
+ the structure currently used. So instead of enclosing content into
+ a language block, we just output an empty element. Anyways, a stream based
+ parser can make good use of it. */
void
-cm_documentlanguage ()
+cm_documentlanguage (void)
{
language_code_type c;
char *lang_arg;
@@ -451,6 +579,12 @@ cm_documentlanguage ()
if (c == last_language_code)
warning (_("%s is not a valid ISO 639 language code"), lang_arg);
+ if (xml && !docbook)
+ {
+ xml_insert_element_with_attribute (DOCUMENTLANGUAGE, START, "xml:lang=\"%s\"", lang_arg);
+ xml_insert_element (DOCUMENTLANGUAGE, END);
+ }
+
free (lang_arg);
}
@@ -460,8 +594,7 @@ cm_documentlanguage ()
its equivalent. */
static int
-cm_search_iso_map (html)
- char *html;
+cm_search_iso_map (char *html)
{
int i;
iso_map_type *iso = encoding_table[document_encoding_code].isotab;
@@ -483,43 +616,88 @@ cm_search_iso_map (html)
/* @documentencoding. Set the translation table. */
void
-cm_documentencoding ()
+cm_documentencoding (void)
{
- encoding_code_type enc;
- char *enc_arg;
-
- get_rest_of_line (1, &enc_arg);
-
- /* See if we have this encoding. */
- for (enc = no_encoding+1; enc != last_encoding_code; enc++)
+ if (!handling_delayed_writes)
{
- if (strcasecmp (enc_arg, encoding_table[enc].encname) == 0)
+ encoding_code_type enc;
+ char *enc_arg;
+
+ /* This is ugly and probably needs to apply to other commands'
+ argument parsing as well. When we're doing @documentencoding,
+ we're generally in the frontmatter of the document, and so the.
+ expansion in html/xml/docbook would generally be the empty string.
+ (Because those modes wait until the first normal text of the
+ document to start outputting.) The result would thus be a warning
+ "unrecognized encoding name `'". Sigh. */
+ int save_html = html;
+ int save_xml = xml;
+
+ html = 0;
+ xml = 0;
+ get_rest_of_line (1, &enc_arg);
+ html = save_html;
+ xml = save_xml;
+
+ /* See if we have this encoding. */
+ for (enc = no_encoding+1; enc != last_encoding_code; enc++)
{
- document_encoding_code = enc;
- break;
+ if (strcasecmp (enc_arg, encoding_table[enc].encname) == 0)
+ {
+ document_encoding_code = enc;
+ break;
+ }
+ }
+
+ /* If we didn't find this code, complain. */
+ if (enc == last_encoding_code)
+ {
+ warning (_("unrecognized encoding name `%s'"), enc_arg);
+ /* Let the previous one go. */
+ if (unknown_encoding && *unknown_encoding)
+ free (unknown_encoding);
+ unknown_encoding = xstrdup (enc_arg);
}
+
+ else if (encoding_table[document_encoding_code].isotab == NULL)
+ warning (_("sorry, encoding `%s' not supported"), enc_arg);
+
+ free (enc_arg);
}
+ else if (xml)
+ {
+ char *encoding = current_document_encoding ();
- /* If we didn't find this code, complain. */
- if (enc == last_encoding_code)
- warning (_("unrecognized encoding name `%s'"), enc_arg);
+ if (encoding && *encoding)
+ {
+ insert_string (" encoding=\"");
+ insert_string (encoding);
+ insert_string ("\"");
+ }
- else if (encoding_table[document_encoding_code].isotab == NULL)
- warning (_("sorry, encoding `%s' not supported"), enc_arg);
+ free (encoding);
+ }
+}
- free (enc_arg);
+char *
+current_document_encoding (void)
+{
+ if (document_encoding_code != no_encoding)
+ return xstrdup (encoding_table[document_encoding_code].encname);
+ else if (unknown_encoding && *unknown_encoding)
+ return xstrdup (unknown_encoding);
+ else
+ return xstrdup ("");
}
-/* If html or xml output, add HTML_STR to the output. If not html and
+/* If html or xml output, add &HTML_STR; to the output. If not html and
the user requested encoded output, add the real 8-bit character
corresponding to HTML_STR from the translation tables. Otherwise,
add INFO_STR. */
-void
-add_encoded_char (html_str, info_str)
- char *html_str;
- char *info_str;
+static void
+add_encoded_char (char *html_str, char *info_str)
{
if (html)
add_word_args ("&%s;", html_str);
@@ -547,13 +725,8 @@ add_encoded_char (html_str, info_str)
/* Output an accent for HTML or XML. */
static void
-cm_accent_generic_html (arg, start, end, html_supported, single,
- html_solo_standalone, html_solo)
- int arg, start, end;
- char *html_supported;
- int single;
- int html_solo_standalone;
- char *html_solo;
+cm_accent_generic_html (int arg, int start, int end, char *html_supported,
+ int single, int html_solo_standalone, char *html_solo)
{
static int valid_html_accent; /* yikes */
@@ -569,20 +742,39 @@ cm_accent_generic_html (arg, start, end, html_supported, single,
escape_html = saved_escape_html;
}
else
- {
- valid_html_accent = 0;
- if (html_solo_standalone)
- { /* No special HTML support, so produce standalone char. */
- if (xml)
- xml_insert_entity (html_solo);
+ { /* @dotless{i} is not listed in html_supported but HTML entities
+ starting with `i' can be used, such as &icirc;. */
+ int save_input_text_offset = input_text_offset;
+ char *accent_contents;
+
+ get_until_in_braces ("\n", &accent_contents);
+ canon_white (accent_contents);
+
+ if (strstr (accent_contents, "@dotless{i"))
+ {
+ add_word_args ("&%c", accent_contents[9]);
+ valid_html_accent = 1;
+ }
+ else
+ {
+ /* Search for @dotless{} wasn't successful, so rewind. */
+ input_text_offset = save_input_text_offset;
+ valid_html_accent = 0;
+ if (html_solo_standalone)
+ { /* No special HTML support, so produce standalone char. */
+ if (xml)
+ xml_insert_entity (html_solo);
+ else
+ add_word_args ("&%s;", html_solo);
+ }
else
- add_word_args ("&%s;", html_solo);
- }
- else
- /* If the html_solo does not exist as standalone character
- (namely &circ; &grave; &tilde;), then we use
- the single character version instead. */
- add_char (single);
+ /* If the html_solo does not exist as standalone character
+ (namely &circ; &grave; &tilde;), then we use
+ the single character version instead. */
+ add_char (single);
+ }
+
+ free (accent_contents);
}
}
else if (arg == END)
@@ -598,10 +790,8 @@ cm_accent_generic_html (arg, start, end, html_supported, single,
static void
-cm_accent_generic_no_headers (arg, start, end, single, html_solo)
- int arg, start, end;
- int single;
- char *html_solo;
+cm_accent_generic_no_headers (int arg, int start, int end, int single,
+ char *html_solo)
{
if (arg == END)
{
@@ -628,8 +818,11 @@ cm_accent_generic_no_headers (arg, start, end, single, html_solo)
{ /* If we didn't find a translation for this character,
put the single instead. E.g., &Xuml; does not exist so X&uml;
should be produced. */
- warning (_("%s is an invalid ISO code, using %c"),
- buffer, single);
+ /* When the below warning is issued, an author has nothing
+ wrong in their document, let alone anything ``fixable''
+ on their side. So it is commented out for now. */
+ /* warning (_("%s is an invalid ISO code, using %c"),
+ buffer, single); */
add_char (single);
}
@@ -644,8 +837,7 @@ cm_accent_generic_no_headers (arg, start, end, single, html_solo)
special HTML support. */
void
-cm_accent (arg)
- int arg;
+cm_accent (int arg)
{
int old_escape_html = escape_html;
escape_html = 0;
@@ -687,14 +879,14 @@ cm_accent (arg)
exists as valid standalone character in HTML, e.g., &uml;. */
static void
-cm_accent_generic (arg, start, end, html_supported, single,
- html_solo_standalone, html_solo)
- int arg, start, end;
- char *html_supported;
- int single;
- int html_solo_standalone;
- char *html_solo;
+cm_accent_generic (int arg, int start, int end, char *html_supported,
+ int single, int html_solo_standalone, char *html_solo)
{
+ /* Accentuating space characters makes no sense, so issue a warning. */
+ if (arg == START && isspace (input_text[input_text_offset]))
+ warning ("Accent command `@%s' must not be followed by whitespace",
+ command);
+
if (html || xml)
cm_accent_generic_html (arg, start, end, html_supported,
single, html_solo_standalone, html_solo);
@@ -712,43 +904,37 @@ cm_accent_generic (arg, start, end, html_supported, single,
}
void
-cm_accent_umlaut (arg, start, end)
- int arg, start, end;
+cm_accent_umlaut (int arg, int start, int end)
{
cm_accent_generic (arg, start, end, "aouAOUEeIiy", '"', 1, "uml");
}
void
-cm_accent_acute (arg, start, end)
- int arg, start, end;
+cm_accent_acute (int arg, int start, int end)
{
cm_accent_generic (arg, start, end, "AEIOUYaeiouy", '\'', 1, "acute");
}
void
-cm_accent_cedilla (arg, start, end)
- int arg, start, end;
+cm_accent_cedilla (int arg, int start, int end)
{
cm_accent_generic (arg, start, end, "Cc", ',', 1, "cedil");
}
void
-cm_accent_hat (arg, start, end)
- int arg, start, end;
+cm_accent_hat (int arg, int start, int end)
{
cm_accent_generic (arg, start, end, "AEIOUaeiou", '^', 0, "circ");
}
void
-cm_accent_grave (arg, start, end)
- int arg, start, end;
+cm_accent_grave (int arg, int start, int end)
{
cm_accent_generic (arg, start, end, "AEIOUaeiou", '`', 0, "grave");
}
void
-cm_accent_tilde (arg, start, end)
- int arg, start, end;
+cm_accent_tilde (int arg, int start, int end)
{
cm_accent_generic (arg, start, end, "ANOano", '~', 0, "tilde");
}
@@ -757,7 +943,7 @@ cm_accent_tilde (arg, start, end)
/* Non-English letters/characters that don't insert themselves. */
void
-cm_special_char (arg)
+cm_special_char (int arg)
{
int old_escape_html = escape_html;
escape_html = 0;
@@ -769,27 +955,35 @@ cm_special_char (arg)
&& command[1] == 0)
{ /* Lslash lslash Oslash oslash.
Lslash and lslash aren't supported in HTML. */
- if ((html || xml) && command[0] == 'O')
+ if (command[0] == 'O')
add_encoded_char ("Oslash", "/O");
- else if ((html || xml) && command[0] == 'o')
+ else if (command[0] == 'o')
add_encoded_char ("oslash", "/o");
else
add_word_args ("/%c", command[0]);
}
else if (strcmp (command, "exclamdown") == 0)
add_encoded_char ("iexcl", "!");
- else if (strcmp (command, "pounds") == 0)
- add_encoded_char ("pound" , "#");
else if (strcmp (command, "questiondown") == 0)
add_encoded_char ("iquest", "?");
+ else if (strcmp (command, "euro") == 0)
+ /* http://www.cs.tut.fi/~jkorpela/html/euro.html suggests that
+ &euro; degrades best in old browsers. */
+ add_encoded_char ("euro", "Euro ");
+ else if (strcmp (command, "pounds") == 0)
+ add_encoded_char ("pound" , "#");
+ else if (strcmp (command, "ordf") == 0)
+ add_encoded_char ("ordf" , "a");
+ else if (strcmp (command, "ordm") == 0)
+ add_encoded_char ("ordm" , "o");
else if (strcmp (command, "AE") == 0)
add_encoded_char ("AElig", command);
else if (strcmp (command, "ae") == 0)
add_encoded_char ("aelig", command);
else if (strcmp (command, "OE") == 0)
- add_encoded_char ("#140", command);
+ add_encoded_char ("OElig", command);
else if (strcmp (command, "oe") == 0)
- add_encoded_char ("#156", command);
+ add_encoded_char ("oelig", command);
else if (strcmp (command, "AA") == 0)
add_encoded_char ("Aring", command);
else if (strcmp (command, "aa") == 0)
@@ -804,8 +998,7 @@ cm_special_char (arg)
/* Dotless i or j. */
void
-cm_dotless (arg, start, end)
- int arg, start, end;
+cm_dotless (int arg, int start, int end)
{
if (arg == END)
{
diff --git a/contrib/texinfo/makeinfo/lang.h b/contrib/texinfo/makeinfo/lang.h
index a1e9489..b231455 100644
--- a/contrib/texinfo/makeinfo/lang.h
+++ b/contrib/texinfo/makeinfo/lang.h
@@ -1,5 +1,5 @@
/* lang.h -- declarations for language codes etc.
- $Id: lang.h,v 1.4 2003/05/01 00:05:27 karl Exp $
+ $Id: lang.h,v 1.6 2004/04/11 17:56:47 karl Exp $
Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
@@ -73,34 +73,35 @@ extern language_type language_table[];
-/* The document encoding. This is usefull if we working e.g.
- * with german Texinfo so we can produce correct german umlaut
- * while creating output (--no-headers ASCII like).
- */
+/* The document encoding. This is useful to produce true 8-bit
+ characters according to the @documentencoding. */
+
typedef enum {
- no_encoding,
- US_ASCII,
- ISO_8859_1,
- ISO_8859_2,
- ISO_8859_3, /* this and none of the rest are supported. */
- ISO_8859_4,
- ISO_8859_5,
- ISO_8859_6,
- ISO_8859_7,
- ISO_8859_8,
- ISO_8859_9,
- ISO_8859_10,
- ISO_8859_11,
- ISO_8859_12,
- ISO_8859_13,
- ISO_8859_14,
- ISO_8859_15,
- last_encoding_code
+ no_encoding,
+ US_ASCII,
+ ISO_8859_1,
+ ISO_8859_2,
+ ISO_8859_3, /* this and none of the rest are supported. */
+ ISO_8859_4,
+ ISO_8859_5,
+ ISO_8859_6,
+ ISO_8859_7,
+ ISO_8859_8,
+ ISO_8859_9,
+ ISO_8859_10,
+ ISO_8859_11,
+ ISO_8859_12,
+ ISO_8859_13,
+ ISO_8859_14,
+ ISO_8859_15,
+ last_encoding_code
} encoding_code_type;
/* The current document encoding, or null if not set. */
extern encoding_code_type document_encoding_code;
+/* If an encoding is not supported, just keep it as a string. */
+extern char *unknown_encoding;
/* Maps an HTML abbreviation to ISO and Unicode codes for a given code. */
@@ -118,7 +119,8 @@ typedef struct
typedef struct
{
encoding_code_type ec; /* document encoding type (see above enum) */
- char *encname; /* encoding name like "ISO-8859-1", valid in Emacs */
+ char *encname; /* encoding name like "iso-8859-1", valid in
+ HTML and Emacs */
iso_map_type *isotab; /* address of ISO translation table */
} encoding_type;
@@ -127,12 +129,20 @@ extern encoding_type encoding_table[];
/* The commands. */
-extern void cm_documentlanguage (), cm_documentencoding ();
+extern void cm_documentlanguage (void),
+ cm_documentencoding (void);
/* Accents, other non-English characters. */
-void cm_accent (), cm_special_char (), cm_dotless ();
+void cm_accent (int arg), cm_special_char (int arg),
+ cm_dotless (int arg, int start, int end);
+
+extern void cm_accent_umlaut (int arg, int start, int end),
+ cm_accent_acute (int arg, int start, int end),
+ cm_accent_cedilla (int arg, int start, int end),
+ cm_accent_hat (int arg, int start, int end),
+ cm_accent_grave (int arg, int start, int end),
+ cm_accent_tilde (int arg, int start, int end);
-extern void cm_accent_umlaut (), cm_accent_acute (), cm_accent_cedilla (),
- cm_accent_hat (), cm_accent_grave (), cm_accent_tilde ();
+extern char *current_document_encoding (void);
#endif /* not LANG_H */
diff --git a/contrib/texinfo/makeinfo/macro.c b/contrib/texinfo/makeinfo/macro.c
index ef33a53..65ac0da 100644
--- a/contrib/texinfo/makeinfo/macro.c
+++ b/contrib/texinfo/makeinfo/macro.c
@@ -1,5 +1,5 @@
/* macro.c -- user-defined macros for Texinfo.
- $Id: macro.c,v 1.2 2003/06/01 23:41:23 karl Exp $
+ $Id: macro.c,v 1.6 2004/04/11 17:56:47 karl Exp $
Copyright (C) 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
@@ -19,6 +19,7 @@
#include "system.h"
#include "cmds.h"
+#include "files.h"
#include "macro.h"
#include "makeinfo.h"
#include "insertion.h"
@@ -54,8 +55,7 @@ int macro_list_size = 0; /* Number of slots in total. */
/* Return the length of the array in ARRAY. */
int
-array_len (array)
- char **array;
+array_len (char **array)
{
int i = 0;
@@ -66,8 +66,7 @@ array_len (array)
}
void
-free_array (array)
- char **array;
+free_array (char **array)
{
if (array)
{
@@ -81,8 +80,7 @@ free_array (array)
/* Return the macro definition of NAME or NULL if NAME is not defined. */
MACRO_DEF *
-find_macro (name)
- char *name;
+find_macro (char *name)
{
int i;
MACRO_DEF *def;
@@ -101,13 +99,9 @@ find_macro (name)
and SOURCE_LINENO is the line number within that file. If a macro already
exists with NAME, then a warning is produced, and that previous
definition is overwritten. */
-void
-add_macro (name, arglist, body, source_file, source_lineno, flags)
- char *name;
- char **arglist;
- char *body;
- char *source_file;
- int source_lineno, flags;
+static void
+add_macro (char *name, char **arglist, char *body, char *source_file,
+ int source_lineno, int flags)
{
MACRO_DEF *def;
@@ -163,8 +157,7 @@ add_macro (name, arglist, body, source_file, source_lineno, flags)
char **
-get_brace_args (quote_single)
- int quote_single;
+get_brace_args (int quote_single)
{
char **arglist, *word;
int arglist_index, arglist_size;
@@ -243,9 +236,8 @@ get_brace_args (quote_single)
return arglist;
}
-char **
-get_macro_args (def)
- MACRO_DEF *def;
+static char **
+get_macro_args (MACRO_DEF *def)
{
int i;
char *word;
@@ -298,9 +290,8 @@ get_macro_args (def)
/* Substitute actual parameters for named parameters in body.
The named parameters which appear in BODY must by surrounded
reverse slashes, as in \foo\. */
-char *
-apply (named, actuals, body)
- char **named, **actuals, *body;
+static char *
+apply (char **named, char **actuals, char *body)
{
int i;
int new_body_index, new_body_size;
@@ -391,8 +382,7 @@ apply (named, actuals, body)
/* Expand macro passed in DEF, a pointer to a MACRO_DEF, and
return its expansion as a string. */
char *
-expand_macro (def)
- MACRO_DEF *def;
+expand_macro (MACRO_DEF *def)
{
char **arglist;
int num_args;
@@ -422,8 +412,7 @@ expand_macro (def)
/* Execute the macro passed in DEF, a pointer to a MACRO_DEF. */
void
-execute_macro (def)
- MACRO_DEF *def;
+execute_macro (MACRO_DEF *def)
{
char *execution_string;
int start_line = line_number, end_line;
@@ -444,7 +433,8 @@ execute_macro (def)
end_line = line_number;
line_number = start_line;
- if (macro_expansion_output_stream && !executing_string && !me_inhibit_expansion)
+ if (macro_expansion_output_stream
+ && !executing_string && !me_inhibit_expansion)
{
remember_itext (input_text, input_text_offset);
me_execute_string (execution_string);
@@ -462,21 +452,17 @@ execute_macro (def)
set the ME_RECURSE flag. MACTYPE is either "macro" or "rmacro", and
tells us what the matching @end should be. */
static void
-define_macro (mactype, recursive)
- char *mactype;
- int recursive;
+define_macro (char *mactype, int recursive)
{
- int i;
- char *name, **arglist, *body, *line, *last_end;
- int body_size, body_index;
+ int i, start;
+ char *name, *line;
+ char *last_end = NULL;
+ char *body = NULL;
+ char **arglist = NULL;
+ int body_size = 0, body_index = 0;
int depth = 1;
- int defining_line = line_number;
int flags = 0;
-
- arglist = NULL;
- body = NULL;
- body_size = 0;
- body_index = 0;
+ int defining_line = line_number;
if (macro_expansion_output_stream && !executing_string)
me_append_before_this_command ();
@@ -485,15 +471,13 @@ define_macro (mactype, recursive)
/* Get the name of the macro. This is the set of characters which are
not whitespace and are not `{' immediately following the @macro. */
+ start = input_text_offset;
{
- int start = input_text_offset;
int len;
- for (i = start;
- (i < input_text_length) &&
- (input_text[i] != '{') &&
- (!cr_or_whitespace (input_text[i]));
- i++);
+ for (i = start; i < input_text_length && input_text[i] != '{'
+ && !cr_or_whitespace (input_text[i]);
+ i++) ;
len = i - start;
name = xmalloc (1 + len);
@@ -653,7 +637,7 @@ define_macro (mactype, recursive)
depth--;
last_end = "macro";
}
- if (*line == COMMAND_PREFIX && strncmp (line + 1, "end rmacro", 9) == 0)
+ if (*line == COMMAND_PREFIX && strncmp (line + 1, "end rmacro", 10) == 0)
{
depth--;
last_end = "rmacro";
@@ -697,17 +681,32 @@ define_macro (mactype, recursive)
add_macro (name, arglist, body, input_filename, defining_line, flags);
if (macro_expansion_output_stream && !executing_string)
- remember_itext (input_text, input_text_offset);
+ {
+ /* Remember text for future expansions. */
+ remember_itext (input_text, input_text_offset);
+
+ /* Bizarrely, output the @macro itself. This is so texinfo.tex
+ will have a chance to read it when texi2dvi calls makeinfo -E.
+ The problem is that we don't really expand macros in all
+ contexts; a @table's @item is one. And a fix is not obvious to
+ me, since it appears virtually identical to any other internal
+ expansion. Just setting a variable in cm_item caused other
+ strange expansion problems. */
+ write_region_to_macro_output ("@", 0, 1);
+ write_region_to_macro_output (mactype, 0, strlen (mactype));
+ write_region_to_macro_output (" ", 0, 1);
+ write_region_to_macro_output (input_text, start, input_text_offset);
+ }
}
void
-cm_macro ()
+cm_macro (void)
{
define_macro ("macro", 0);
}
void
-cm_rmacro ()
+cm_rmacro (void)
{
define_macro ("rmacro", 1);
}
@@ -717,8 +716,7 @@ cm_rmacro ()
returned. */
static MACRO_DEF *
-delete_macro (name)
- char *name;
+delete_macro (char *name)
{
int i;
MACRO_DEF *def;
@@ -737,7 +735,7 @@ delete_macro (name)
}
void
-cm_unmacro ()
+cm_unmacro (void)
{
int i;
char *line, *name;
@@ -785,9 +783,7 @@ cm_unmacro ()
/* Set the value of POINTER's offset to OFFSET. */
ITEXT *
-remember_itext (pointer, offset)
- char *pointer;
- int offset;
+remember_itext (char *pointer, int offset)
{
int i;
ITEXT *itext = NULL;
@@ -841,8 +837,7 @@ remember_itext (pointer, offset)
/* Forget the input text associated with POINTER. */
void
-forget_itext (pointer)
- char *pointer;
+forget_itext (char *pointer)
{
int i;
@@ -858,7 +853,7 @@ forget_itext (pointer)
/* Append the text which appeared in input_text from the last offset to
the character just before the command that we are currently executing. */
void
-me_append_before_this_command ()
+me_append_before_this_command (void)
{
int i;
@@ -870,8 +865,7 @@ me_append_before_this_command ()
/* Similar to execute_string, but only takes a single string argument,
and remembers the input text location, etc. */
void
-me_execute_string (execution_string)
- char *execution_string;
+me_execute_string (char *execution_string)
{
int saved_escape_html = escape_html;
int saved_in_paragraph = in_paragraph;
@@ -903,8 +897,7 @@ me_execute_string (execution_string)
when we need to produce macro-expanded output for input which
leaves no traces in the Info output. */
void
-me_execute_string_keep_state (execution_string, append_string)
- char *execution_string, *append_string;
+me_execute_string_keep_state (char *execution_string, char *append_string)
{
int op_orig, opcol_orig, popen_orig;
int fill_orig, newline_orig, indent_orig, meta_pos_orig;
@@ -934,8 +927,7 @@ me_execute_string_keep_state (execution_string, append_string)
/* Append the text which appears in input_text from the last offset to
the current OFFSET. */
void
-append_to_expansion_output (offset)
- int offset;
+append_to_expansion_output (int offset)
{
int i;
ITEXT *itext = NULL;
@@ -959,9 +951,7 @@ append_to_expansion_output (offset)
/* Only write this input text iff it appears in our itext list. */
void
-maybe_write_itext (pointer, offset)
- char *pointer;
- int offset;
+maybe_write_itext (char *pointer, int offset)
{
int i;
ITEXT *itext = NULL;
@@ -981,9 +971,7 @@ maybe_write_itext (pointer, offset)
}
void
-write_region_to_macro_output (string, start, end)
- char *string;
- int start, end;
+write_region_to_macro_output (char *string, int start, int end)
{
if (macro_expansion_output_stream)
fwrite (string + start, 1, end - start, macro_expansion_output_stream);
@@ -1000,14 +988,15 @@ typedef struct alias_struct
static alias_type *aliases;
-/* @alias */
+/* @alias aname = cmdname */
+
void
-cm_alias ()
+cm_alias (void)
{
alias_type *a = xmalloc (sizeof (alias_type));
skip_whitespace ();
- get_until_in_line (1, "=", &(a->alias));
+ get_until_in_line (0, "=", &(a->alias));
canon_white (a->alias);
discard_until ("=");
@@ -1020,8 +1009,7 @@ cm_alias ()
/* Perform an alias expansion. Called from read_command. */
char *
-alias_expand (tok)
- char *tok;
+alias_expand (char *tok)
{
alias_type *findit = aliases;
@@ -1062,7 +1050,7 @@ static enclosure_stack_type *enclosure_stack;
/* @definfoenclose */
void
-cm_definfoenclose ()
+cm_definfoenclose (void)
{
enclosure_type *e = xmalloc (sizeof (enclosure_type));
@@ -1081,8 +1069,7 @@ cm_definfoenclose ()
return 1. Else return 0. */
int
-enclosure_command (tok)
- char *tok;
+enclosure_command (char *tok)
{
enclosure_type *findit = enclosures;
@@ -1104,8 +1091,7 @@ enclosure_command (tok)
/* actually perform the enclosure expansion */
void
-enclosure_expand (arg, start, end)
- int arg, start, end;
+enclosure_expand (int arg, int start, int end)
{
if (arg == START)
add_word (enclosure_stack->current->before);
diff --git a/contrib/texinfo/makeinfo/macro.h b/contrib/texinfo/makeinfo/macro.h
index 5161084..fbc0e59 100644
--- a/contrib/texinfo/makeinfo/macro.h
+++ b/contrib/texinfo/makeinfo/macro.h
@@ -1,5 +1,5 @@
/* macro.h -- declarations for macro.c.
- $Id: macro.h,v 1.1 2002/08/25 23:38:38 karl Exp $
+ $Id: macro.h,v 1.2 2004/04/11 17:56:47 karl Exp $
Copyright (C) 1998, 99 Free Software Foundation, Inc.
@@ -48,24 +48,30 @@ typedef struct {
#define ME_RECURSE 0x01
#define ME_QUOTE_ARG 0x02
-extern void execute_macro ();
-extern MACRO_DEF *find_macro ();
-extern char *expand_macro ();
+extern void execute_macro (MACRO_DEF *def);
+extern MACRO_DEF *find_macro (char *name);
+extern char *expand_macro (MACRO_DEF *def);
-extern ITEXT *remember_itext ();
-extern void forget_itext ();
-extern void maybe_write_itext ();
-extern void write_region_to_macro_output ();
-extern void append_to_expansion_output ();
-extern void me_append_before_this_command ();
-extern void me_execute_string ();
+extern ITEXT *remember_itext (char *pointer, int offset);
+extern void forget_itext (char *pointer);
+extern void maybe_write_itext (char *pointer, int offset);
+extern void write_region_to_macro_output (char *string, int start, int end);
+extern void append_to_expansion_output (int offset);
+extern void me_append_before_this_command (void);
+extern void me_execute_string (char *execution_string);
+extern void me_execute_string_keep_state (char *execution_string,
+ char *append_string);
-extern char *alias_expand ();
-extern int enclosure_command ();
-extern void enclosure_expand ();
+extern char *alias_expand (char *tok);
+extern int enclosure_command (char *tok);
+extern void enclosure_expand (int arg, int start, int end);
/* The @commands. */
-extern void cm_macro (), cm_rmacro (), cm_unmacro ();
-extern void cm_alias (), cm_definfoenclose ();
+extern void cm_macro (void), cm_rmacro (void), cm_unmacro (void);
+extern void cm_alias (void), cm_definfoenclose (void);
+
+extern int array_len (char **array);
+extern void free_array (char **array);
+extern char **get_brace_args (int quote_single);
#endif /* not MACRO_H */
diff --git a/contrib/texinfo/makeinfo/makeinfo.c b/contrib/texinfo/makeinfo/makeinfo.c
index a5e63fc..22ed4c4 100644
--- a/contrib/texinfo/makeinfo/makeinfo.c
+++ b/contrib/texinfo/makeinfo/makeinfo.c
@@ -1,8 +1,8 @@
/* makeinfo -- convert Texinfo source into other formats.
- $Id: makeinfo.c,v 1.34 2003/06/02 12:32:29 karl Exp $
+ $Id: makeinfo.c,v 1.74 2004/12/19 17:15:42 karl Exp $
Copyright (C) 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -18,7 +18,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- Makeinfo was authored by Brian Fox (bfox@ai.mit.edu). */
+ Original author of makeinfo: Brian Fox (bfox@ai.mit.edu). */
#include "system.h"
#include "getopt.h"
@@ -27,6 +27,7 @@
#include "makeinfo.h"
#include "cmds.h"
#include "files.h"
+#include "float.h"
#include "footnote.h"
#include "html.h"
#include "index.h"
@@ -34,6 +35,7 @@
#include "lang.h"
#include "macro.h"
#include "node.h"
+#include "sectioning.h"
#include "toc.h"
#include "xml.h"
@@ -69,10 +71,6 @@ char *output_filename = NULL;
char *command_output_filename = NULL;
static char *save_command_output_filename = NULL;
-/* Flags which control initial output string for xrefs. */
-int px_ref_flag = 0;
-int ref_flag = 0;
-
#define INITIAL_PARAGRAPH_SPACE 5000
int paragraph_buffer_len = INITIAL_PARAGRAPH_SPACE;
@@ -135,9 +133,16 @@ int do_justification = 0;
/* Nonzero means don't replace whitespace with &nbsp; in HTML mode. */
int in_html_elt = 0;
+/* Nonzero means we are inserting a block level HTML element that must not be
+ enclosed in a <p>, such as <ul>, <ol> and <h?>. */
+int in_html_block_level_elt = 0;
+
/* True when expanding a macro definition. */
static int executing_macro = 0;
+/* True when we are inside a <li> block of a menu. */
+static int in_menu_item = 0;
+
typedef struct brace_element
{
struct brace_element *next;
@@ -149,64 +154,44 @@ typedef struct brace_element
BRACE_ELEMENT *brace_stack = NULL;
-extern void do_multitable (), end_multitable ();
-
-void push_node_filename (), pop_node_filename ();
-void remember_error ();
-void convert_from_stream (), convert_from_file (), convert_from_loaded_file ();
-void init_internals (), init_paragraph (), init_brace_stack ();
-void init_insertion_stack (), init_indices ();
-void init_tag_table (), write_tag_table (), write_tag_table_internal ();
-void validate_file (), validate_other_references (), split_file ();
-void free_node_references (), handle_variable ();
-void handle_variable_internal ();
-void normalize_node_name ();
-void add_anchor_name ();
-void free_node_node_references (), remember_node_node_reference ();
-
-char **get_brace_args ();
-int array_len ();
-void free_array ();
-static int end_of_sentence_p ();
-void reader_loop ();
-void remember_brace (), remember_brace_1 ();
-void pop_and_call_brace (), discard_braces ();
-void add_word (), add_char (), insert (), flush_output ();
-void insert_string ();
-void close_paragraph ();
-void ignore_blank_line ();
-void do_flush_right_indentation (), discard_insertions ();
-void start_paragraph (), indent ();
-void inhibit_output_flushing (), uninhibit_output_flushing ();
-int set_paragraph_indent ();
-int self_delimiting (), search_forward ();
-int multitable_item (), number_of_node ();
-
-void me_execute_string_keep_state ();
-void maybe_update_execution_strings ();
-
-extern char *escape_string ();
-extern void insert_html_tag ();
-extern void sectioning_html ();
-
-#if defined (VA_FPRINTF) && __STDC__
-/* Unfortunately we must use prototypes if we are to use <stdarg.h>. */
-void add_word_args (const char *, ...);
-void execute_string (char *, ...);
-#else
-void add_word_args ();
-void execute_string ();
-#endif /* no prototypes */
+static void convert_from_file (char *name);
+static void convert_from_loaded_file (char *name);
+static void convert_from_stream (FILE *stream, char *name);
+static void do_flush_right_indentation (void);
+static void handle_variable (int action);
+static void handle_variable_internal (int action, char *name);
+static void init_brace_stack (void);
+static void init_internals (void);
+static void pop_and_call_brace (void);
+static void remember_brace (COMMAND_FUNCTION (*proc));
+static int end_of_sentence_p (void);
+
+void maybe_update_execution_strings (char **text, unsigned int new_len);
/* Error handling. */
/* Number of errors encountered. */
int errors_printed = 0;
+/* Remember that an error has been printed. If more than
+ max_error_level have been printed, then exit the program. */
+static void
+remember_error (void)
+{
+ errors_printed++;
+ if (max_error_level && (errors_printed > max_error_level))
+ {
+ fprintf (stderr, _("Too many errors! Gave up.\n"));
+ flush_file_stack ();
+ if (errors_printed - max_error_level < 2)
+ cm_bye ();
+ xexit (1);
+ }
+}
+
/* Print the last error gotten from the file system. */
int
-fs_error (filename)
- char *filename;
+fs_error (char *filename)
{
remember_error ();
perror (filename);
@@ -329,24 +314,9 @@ warning (format, va_alist)
}
-/* Remember that an error has been printed. If more than
- max_error_level have been printed, then exit the program. */
-void
-remember_error ()
-{
- errors_printed++;
- if (max_error_level && (errors_printed > max_error_level))
- {
- fprintf (stderr, _("Too many errors! Gave up.\n"));
- flush_file_stack ();
- cm_bye ();
- xexit (1);
- }
-}
-
/* The other side of a malformed expression. */
-void
-misplaced_brace ()
+static void
+misplaced_brace (void)
{
line_error (_("Misplaced %c"), '}');
}
@@ -355,7 +325,7 @@ misplaced_brace ()
/* Display the version info of this invocation of Makeinfo. */
static void
-print_version_info ()
+print_version_info (void)
{
printf ("makeinfo (GNU %s) %s\n", PACKAGE, VERSION);
}
@@ -364,8 +334,7 @@ print_version_info ()
Otherwise, just say to use --help for more info.
Then exit with EXIT_VALUE. */
static void
-usage (exit_value)
- int exit_value;
+usage (int exit_value)
{
if (exit_value != 0)
fprintf (stderr, _("Try `%s --help' for more information.\n"), progname);
@@ -389,14 +358,15 @@ General options:\n\
-v, --verbose explain what is being done.\n\
--version display version information and exit.\n"),
max_error_level, reference_warning_limit);
- puts ("\n");
+ puts ("");
/* xgettext: no-wrap */
puts (_("\
Output format selection (default is to produce Info):\n\
- --docbook output DocBook XML rather than Info.\n\
+ --docbook output Docbook XML rather than Info.\n\
--html output HTML rather than Info.\n\
--xml output Texinfo XML rather than Info.\n\
+ --plaintext output plain text rather than Info.\n\
"));
puts (_("\
@@ -428,7 +398,7 @@ Options for Info and plain text:\n\
--split-size=NUM split Info files at size NUM (default %d).\n"),
fill_column, paragraph_start_indent,
DEFAULT_SPLIT_SIZE);
- puts ("\n");
+ puts ("");
puts (_("\
Options for HTML:\n\
@@ -436,6 +406,13 @@ Options for HTML:\n\
read stdin if FILE is -.\n\
"));
+ printf (_("\
+Options for XML and Docbook:\n\
+ --output-indent=VAL indent XML elements by VAL spaces (default %d).\n\
+ If VAL is 0, ignorable whitespace is dropped.\n\
+"), xml_indentation_increment);
+ puts ("");
+
puts (_("\
Input file options:\n\
--commands-in-node-names allow @ commands in node names.\n\
@@ -447,16 +424,21 @@ Input file options:\n\
puts (_("\
Conditional processing in input:\n\
+ --ifdocbook process @ifdocbook and @docbook even if\n\
+ not generating Docbook.\n\
--ifhtml process @ifhtml and @html even if not generating HTML.\n\
--ifinfo process @ifinfo even if not generating Info.\n\
--ifplaintext process @ifplaintext even if not generating plain text.\n\
--iftex process @iftex and @tex; implies --no-split.\n\
--ifxml process @ifxml and @xml.\n\
+ --no-ifdocbook do not process @ifdocbook and @docbook text.\n\
--no-ifhtml do not process @ifhtml and @html text.\n\
--no-ifinfo do not process @ifinfo text.\n\
--no-ifplaintext do not process @ifplaintext text.\n\
--no-iftex do not process @iftex and @tex text.\n\
--no-ifxml do not process @ifxml and @xml text.\n\
+\n\
+ Also, for the --no-ifFORMAT options, do process @ifnotFORMAT text.\n\
"));
puts (_("\
@@ -502,6 +484,7 @@ struct option long_options[] =
{ "force", 0, &force, 1 },
{ "help", 0, 0, 'h' },
{ "html", 0, 0, 'w' },
+ { "ifdocbook", 0, &process_docbook, 1 },
{ "ifhtml", 0, &process_html, 1 },
{ "ifinfo", 0, &process_info, 1 },
{ "ifplaintext", 0, &process_plaintext, 1 },
@@ -509,6 +492,7 @@ struct option long_options[] =
{ "ifxml", 0, &process_xml, 1 },
{ "macro-expand", 1, 0, 'E' },
{ "no-headers", 0, &no_headers, 1 },
+ { "no-ifdocbook", 0, &process_docbook, 0 },
{ "no-ifhtml", 0, &process_html, 0 },
{ "no-ifinfo", 0, &process_info, 0 },
{ "no-ifplaintext", 0, &process_plaintext, 0 },
@@ -523,7 +507,9 @@ struct option long_options[] =
{ "number-footnotes", 0, &number_footnotes, 1 },
{ "number-sections", 0, &number_sections, 1 },
{ "output", 1, 0, 'o' },
+ { "output-indent", 1, 0, 'i' },
{ "paragraph-indent", 1, 0, 'p' },
+ { "plaintext", 0, 0, 't' },
{ "reference-limit", 1, 0, 'r' },
{ "split-size", 1, 0, 'S'},
{ "verbose", 0, &verbose_mode, 1 },
@@ -532,14 +518,24 @@ struct option long_options[] =
{NULL, 0, NULL, 0}
};
+/* We use handle_variable_internal for -D and -U, and it depends on
+ execute_string, which depends on input_filename, which is not defined
+ while we are handling options. :-\ So we save these defines in this
+ struct, and handle them later. */
+typedef struct command_line_define
+{
+ struct command_line_define *next;
+ int action;
+ char *define;
+} COMMAND_LINE_DEFINE;
+
+static COMMAND_LINE_DEFINE *command_line_defines = NULL;
+
/* For each file mentioned in the command line, process it, turning
Texinfo commands into wonderfully formatted output text. */
int
-main (argc, argv)
- int argc;
- char **argv;
+main (int argc, char **argv)
{
- extern int errors_printed;
int c, ind;
int reading_from_stdin = 0;
@@ -547,17 +543,69 @@ main (argc, argv)
/* Do not use LC_ALL, because LC_NUMERIC screws up the scanf parsing
of the argument to @multicolumn. */
setlocale (LC_TIME, "");
+#ifdef LC_MESSAGES /* ultrix */
setlocale (LC_MESSAGES, "");
+#endif
setlocale (LC_CTYPE, "");
setlocale (LC_COLLATE, "");
#endif
+#ifdef ENABLE_NLS
/* Set the text message domain. */
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
+#endif
+
+ /* If TEXINFO_OUTPUT_FORMAT envvar is set, use it to set default output.
+ Can be overridden with one of the output options. */
+ if (getenv ("TEXINFO_OUTPUT_FORMAT") != NULL)
+ {
+ if (STREQ (getenv ("TEXINFO_OUTPUT_FORMAT"), "docbook"))
+ {
+ splitting = 0;
+ html = 0;
+ docbook = 1;
+ xml = 1;
+ process_docbook = 1;
+ }
+ else if (STREQ (getenv ("TEXINFO_OUTPUT_FORMAT"), "html"))
+ {
+ html = 1;
+ docbook = 0;
+ xml = 0;
+ process_html = 1;
+ }
+ else if (STREQ (getenv ("TEXINFO_OUTPUT_FORMAT"), "info"))
+ {
+ html = 0;
+ docbook = 0;
+ xml = 0;
+ }
+ else if (STREQ (getenv ("TEXINFO_OUTPUT_FORMAT"), "plaintext"))
+ {
+ splitting = 0;
+ no_headers = 1;
+ html = 0;
+ docbook = 0;
+ xml = 0;
+ process_plaintext = 1;
+ }
+ else if (STREQ (getenv ("TEXINFO_OUTPUT_FORMAT"), "xml"))
+ {
+ splitting = 0;
+ html = 0;
+ docbook = 0;
+ xml = 1;
+ process_xml = 1;
+ }
+ else
+ fprintf (stderr,
+ _("%s: Ignoring unrecognized TEXINFO_OUTPUT_FORMAT value `%s'.\n"),
+ progname, getenv ("TEXINFO_OUTPUT_FORMAT"));
+ }
/* Parse argument flags from the input line. */
- while ((c = getopt_long (argc, argv, "D:de:E:f:hI:o:p:P:r:s:U:vV:wx",
+ while ((c = getopt_long (argc, argv, "D:de:E:f:hI:i:o:p:P:r:s:t:U:vV:wx",
long_options, &ind)) != EOF)
{
if (c == 0 && long_options[ind].flag == 0)
@@ -572,13 +620,24 @@ main (argc, argv)
case 'D':
case 'U':
/* User specified variable to set or clear. */
- handle_variable_internal ((c == 'D') ? SET : CLEAR, optarg);
+ if (xml && !docbook)
+ {
+ COMMAND_LINE_DEFINE *new = xmalloc (sizeof (COMMAND_LINE_DEFINE));
+ new->action = (c == 'D') ? SET : CLEAR;
+ new->define = xstrdup (optarg);
+ new->next = command_line_defines;
+ command_line_defines = new;
+ }
+ else
+ handle_variable_internal ((c == 'D' ? SET : CLEAR), optarg);
break;
case 'd': /* --docbook */
splitting = 0;
xml = 1;
docbook = 1;
+ html = 0;
+ process_docbook = 1;
break;
case 'e': /* --error-limit */
@@ -586,7 +645,7 @@ main (argc, argv)
{
fprintf (stderr,
_("%s: %s arg must be numeric, not `%s'.\n"),
- "--error-limit", progname, optarg);
+ progname, "--error-limit", optarg);
usage (1);
}
break;
@@ -598,10 +657,13 @@ main (argc, argv)
macro_expansion_output_stream
= strcmp (optarg, "-") == 0 ? stdout : fopen (optarg, "w");
if (!macro_expansion_output_stream)
- error (_("Couldn't open macro expansion output `%s'"), optarg);
+ error (_("%s: could not open macro expansion output `%s'"),
+ progname, optarg);
}
else
- error (_("Cannot specify more than one macro expansion output"));
+ fprintf (stderr,
+ _("%s: ignoring second macro expansion output `%s'.\n"),
+ progname, optarg);
break;
case 'f': /* --fill-column */
@@ -609,7 +671,7 @@ main (argc, argv)
{
fprintf (stderr,
_("%s: %s arg must be numeric, not `%s'.\n"),
- "--fill-column", progname, optarg);
+ progname, "--fill-column", optarg);
usage (1);
}
break;
@@ -620,14 +682,17 @@ main (argc, argv)
case 'I':
/* Append user-specified dir to include file path. */
- if (!include_files_path)
- include_files_path = xstrdup (".");
-
- include_files_path = (char *)
- xrealloc (include_files_path,
- 2 + strlen (include_files_path) + strlen (optarg));
- strcat (include_files_path, PATH_SEP);
- strcat (include_files_path, optarg);
+ append_to_include_path (optarg);
+ break;
+
+ case 'i':
+ if (sscanf (optarg, "%d", &xml_indentation_increment) != 1)
+ {
+ fprintf (stderr,
+ _("%s: %s arg must be numeric, not `%s'.\n"),
+ progname, "--output-indent", optarg);
+ usage (1);
+ }
break;
case 'o': /* --output */
@@ -647,23 +712,7 @@ main (argc, argv)
case 'P':
/* Prepend user-specified include dir to include path. */
- if (!include_files_path)
- {
- include_files_path = xstrdup (optarg);
- include_files_path = xrealloc (include_files_path,
- strlen (include_files_path) + 3); /* 3 for ":.\0" */
- strcat (strcat (include_files_path, PATH_SEP), ".");
- }
- else
- {
- char *tmp = xstrdup (include_files_path);
- include_files_path = xrealloc (include_files_path,
- strlen (include_files_path) + strlen (optarg) + 2); /* 2 for ":\0" */
- strcpy (include_files_path, optarg);
- strcat (include_files_path, ":");
- strcat (include_files_path, tmp);
- free (tmp);
- }
+ prepend_to_include_path (optarg);
break;
case 'r': /* --reference-limit */
@@ -671,7 +720,7 @@ main (argc, argv)
{
fprintf (stderr,
_("%s: %s arg must be numeric, not `%s'.\n"),
- "--reference-limit", progname, optarg);
+ progname, "--reference-limit", optarg);
usage (1);
}
break;
@@ -680,7 +729,7 @@ main (argc, argv)
if (set_footnote_style (optarg) < 0)
{
fprintf (stderr,
- _("%s: --footnote-style arg must be `separate' or `end', not `%s'.\n"),
+ _("%s: --footnote-style arg must be `separate' or `end', not `%s'.\n"),
progname, optarg);
usage (1);
}
@@ -692,11 +741,20 @@ main (argc, argv)
{
fprintf (stderr,
_("%s: %s arg must be numeric, not `%s'.\n"),
- "--split-size", progname, optarg);
+ progname, "--split-size", optarg);
usage (1);
}
break;
+ case 't': /* --plaintext */
+ splitting = 0;
+ no_headers = 1;
+ html = 0;
+ docbook = 0;
+ xml = 0;
+ process_plaintext = 1;
+ break;
+
case 'v':
verbose_mode++;
break;
@@ -704,21 +762,24 @@ main (argc, argv)
case 'V': /* --version */
print_version_info ();
puts ("");
- printf (_("Copyright (C) %s Free Software Foundation, Inc.\n\
-There is NO warranty. You may redistribute this software\n\
+ puts ("Copyright (C) 2004 Free Software Foundation, Inc.");
+ printf (_("There is NO warranty. You may redistribute this software\n\
under the terms of the GNU General Public License.\n\
-For more information about these matters, see the files named COPYING.\n"),
- "2003");
+For more information about these matters, see the files named COPYING.\n"));
xexit (0);
break;
case 'w': /* --html */
+ xml = 0;
+ docbook = 0;
html = 1;
process_html = 1;
break;
case 'x': /* --xml */
splitting = 0;
+ html = 0;
+ docbook = 0;
xml = 1;
process_xml = 1;
break;
@@ -729,6 +790,9 @@ For more information about these matters, see the files named COPYING.\n"),
}
}
+ if (macro_expansion_output_stream)
+ validating = 0;
+
if (!validating)
expensive_validation = 0;
@@ -746,6 +810,10 @@ For more information about these matters, see the files named COPYING.\n"),
if (no_headers)
{
+ /* If the user did not specify an output file, use stdout. */
+ if (!command_output_filename)
+ command_output_filename = xstrdup ("-");
+
if (html && splitting && !STREQ (command_output_filename, "-"))
{ /* --no-headers --no-split --html indicates confusion. */
fprintf (stderr,
@@ -756,10 +824,6 @@ For more information about these matters, see the files named COPYING.\n"),
/* --no-headers implies --no-split. */
splitting = 0;
-
- /* If the user did not specify an output file, use stdout. */
- if (!command_output_filename)
- command_output_filename = xstrdup ("-");
}
if (process_info == -1)
@@ -790,7 +854,6 @@ For more information about these matters, see the files named COPYING.\n"),
xexit (errors_printed ? 2 : 0);
return 0; /* Avoid bogus warnings. */
}
-
/* Hacking tokens and strings. */
@@ -808,8 +871,8 @@ For more information about these matters, see the files named COPYING.\n"),
&& (c) != '^' \
)
-char *
-read_token ()
+static char *
+read_token (void)
{
int i, character;
char *result;
@@ -841,8 +904,7 @@ read_token ()
/* Return nonzero if CHARACTER is self-delimiting. */
int
-self_delimiting (character)
- int character;
+self_delimiting (int character)
{
/* @; and @\ are not Texinfo commands, but they are listed here
anyway. I don't know why. --karl, 10aug96. */
@@ -851,35 +913,35 @@ self_delimiting (character)
/* Clear whitespace from the front and end of string. */
void
-canon_white (string)
- char *string;
+canon_white (char *string)
{
- int len = strlen (string);
- int x;
+ char *p = string;
+ unsigned len;
- if (!len)
+ if (!*p)
return;
- for (x = 0; x < len; x++)
+ do
{
- if (!cr_or_whitespace (string[x]))
- {
- strcpy (string, string + x);
- break;
- }
+ if (!cr_or_whitespace (*p))
+ break;
+ ++p;
}
- len = strlen (string);
- if (len)
- len--;
- while (len > -1 && cr_or_whitespace (string[len]))
- len--;
- string[len + 1] = 0;
+ while (*p);
+
+ len = strlen (p);
+ while (len && cr_or_whitespace (p[len-1]))
+ --len;
+
+ if (p != string)
+ memmove (string, p, len);
+
+ string[len] = 0;
}
/* Bash STRING, replacing all whitespace with just one space. */
void
-fix_whitespace (string)
- char *string;
+fix_whitespace (char *string)
{
char *temp = xmalloc (strlen (string) + 1);
int string_index = 0;
@@ -909,8 +971,7 @@ fix_whitespace (string)
/* Discard text until the desired string is found. The string is
included in the discarded text. */
void
-discard_until (string)
- char *string;
+discard_until (char *string)
{
int temp = search_forward (string, input_text_offset);
@@ -924,18 +985,26 @@ discard_until (string)
if (temp < 0)
{
- input_text_offset = input_text_length - strlen (string);
-
+ /* not found, move current position to end of string */
+ input_text_offset = input_text_length;
if (strcmp (string, "\n") != 0)
- {
- line_error (_("Expected `%s'"), string);
+ { /* Give a more descriptive feedback, if we are looking for ``@end ''
+ during macro execution. That means someone used a multiline
+ command as an argument to, say, @section ... style commands. */
+ char *end_block = xmalloc (8);
+ sprintf (end_block, "\n%cend ", COMMAND_PREFIX);
+ if (executing_string && strstr (string, end_block))
+ line_error (_("Multiline command %c%s used improperly"),
+ COMMAND_PREFIX, command);
+ else
+ line_error (_("Expected `%s'"), string);
+ free (end_block);
return;
}
}
else
- input_text_offset = temp;
-
- input_text_offset += strlen (string);
+ /* found, move current position to after the found string */
+ input_text_offset = temp + strlen (string);
}
/* Read characters from the file until we are at MATCH.
@@ -943,8 +1012,7 @@ discard_until (string)
On exit input_text_offset is after the match string.
Return the offset where the string starts. */
int
-get_until (match, string)
- char *match, **string;
+get_until (char *match, char **string)
{
int len, current_point, x, new_point, tem;
@@ -977,8 +1045,7 @@ get_until (match, string)
/* Replace input_text[FROM .. TO] with its expansion. */
void
-replace_with_expansion (from, to)
- int from, *to;
+replace_with_expansion (int from, int *to)
{
char *xp;
unsigned xp_len, new_len;
@@ -1054,9 +1121,7 @@ replace_with_expansion (from, to)
expand the text before looking for MATCH for those cases where
MATCH might be produced by some macro. */
void
-get_until_in_line (expand, match, string)
- int expand;
- char *match, **string;
+get_until_in_line (int expand, char *match, char **string)
{
int real_bottom = input_text_length;
int limit = search_forward ("\n", input_text_offset);
@@ -1088,9 +1153,7 @@ get_until_in_line (expand, match, string)
}
void
-get_rest_of_line (expand, string)
- int expand;
- char **string;
+get_rest_of_line (int expand, char **string)
{
xml_no_para ++;
if (expand)
@@ -1121,7 +1184,7 @@ get_rest_of_line (expand, string)
/* Backup the input pointer to the previous character, keeping track
of the current line number. */
void
-backup_input_pointer ()
+backup_input_pointer (void)
{
if (input_text_offset)
{
@@ -1134,8 +1197,7 @@ backup_input_pointer ()
/* Read characters from the file until we are at MATCH or closing brace.
Place the characters read into STRING. */
void
-get_until_in_braces (match, string)
- char *match, **string;
+get_until_in_braces (char *match, char **string)
{
char *temp;
int i, brace = 0;
@@ -1192,8 +1254,8 @@ static char *suffixes[] = {
NULL
};
-void
-initialize_conversion ()
+static void
+initialize_conversion (void)
{
init_tag_table ();
init_indices ();
@@ -1207,16 +1269,11 @@ initialize_conversion ()
output_position = 0;
}
-typedef struct generic_list {
- struct generic_list *next;
-} GENERIC_LIST;
-
/* Reverse the chain of structures in LIST. Output the new head
of the chain. You should always assign the output value of this
function to something, or you will lose the chain. */
GENERIC_LIST *
-reverse_list (list)
- GENERIC_LIST *list;
+reverse_list (GENERIC_LIST *list)
{
GENERIC_LIST *next;
GENERIC_LIST *prev = NULL;
@@ -1237,10 +1294,8 @@ reverse_list (list)
/* Convert the Texinfo file coming from the open stream STREAM. Assume the
source of the stream is named NAME. */
-void
-convert_from_stream (stream, name)
- FILE *stream;
- char *name;
+static void
+convert_from_stream (FILE *stream, char *name)
{
char *buffer = NULL;
int buffer_offset = 0, buffer_size = 0;
@@ -1287,13 +1342,15 @@ convert_from_stream (stream, name)
convert_from_loaded_file (name);
}
-void
-convert_from_file (name)
- char *name;
+static void
+convert_from_file (char *name)
{
int i;
char *filename = xmalloc (strlen (name) + 50);
+ /* Prepend file directory to the search path, so relative links work. */
+ prepend_to_include_path (pathname_part (name));
+
initialize_conversion ();
/* Try to load the file specified by NAME, concatenated with our
@@ -1304,7 +1361,7 @@ convert_from_file (name)
strcpy (filename, name);
strcat (filename, suffixes[i]);
- if (find_and_load (filename))
+ if (find_and_load (filename, 1))
break;
if (!suffixes[i][0] && strrchr (filename, '.'))
@@ -1325,6 +1382,38 @@ convert_from_file (name)
input_filename = filename;
convert_from_loaded_file (name);
+
+ /* Pop the prepended path, so multiple filenames in the
+ command line do not screw each others include paths. */
+ pop_path_from_include_path ();
+}
+
+static int
+create_html_directory (char *dir, int can_remove_file)
+{
+ struct stat st;
+
+ /* Already exists. */
+ if (stat (dir, &st) == 0)
+ {
+ /* And it's a directory, so silently reuse it. */
+ if (S_ISDIR (st.st_mode))
+ return 1;
+ /* Not a directory, so move it out of the way if we are allowed. */
+ else if (can_remove_file)
+ {
+ if (unlink (dir) != 0)
+ return 0;
+ }
+ else
+ return 0;
+ }
+
+ if (mkdir (dir, 0777) == 0)
+ /* Success! */
+ return 1;
+ else
+ return 0;
}
/* Given OUTPUT_FILENAME == ``/foo/bar/baz.html'', return
@@ -1339,13 +1428,11 @@ convert_from_file (name)
foo.whatever unchanged. */
static char *
-insert_toplevel_subdirectory (output_filename)
- char *output_filename;
+insert_toplevel_subdirectory (char *output_filename)
{
static const char index_name[] = "index.html";
char *dir, *subdir, *base, *basename, *p;
char buf[PATH_MAX];
- struct stat st;
const int index_len = sizeof (index_name) - 1;
strcpy (buf, output_filename);
@@ -1375,41 +1462,34 @@ insert_toplevel_subdirectory (output_filename)
if (strlen (dir))
strcat (output_filename, "/");
strcat (output_filename, subdir);
- if ((mkdir (output_filename, 0777) == -1 && errno != EEXIST)
- /* output_filename might exist, but be a non-directory. */
- || (stat (output_filename, &st) == 0 && !S_ISDIR (st.st_mode)))
- { /* that failed, try subdir name with .html */
+
+ /* First try, do not remove existing file. */
+ if (!create_html_directory (output_filename, 0))
+ {
+ /* That failed, try subdir name with .html.
+ Remove it if it exists. */
strcpy (output_filename, dir);
if (strlen (dir))
strcat (output_filename, "/");
strcat (output_filename, basename);
- if (mkdir (output_filename, 0777) == -1)
- {
- const char *errmsg = strerror (errno);
- if ((errno == EEXIST
-#ifdef __MSDOS__
- || errno == EACCES
-#endif
- )
- && (stat (output_filename, &st) == 0 && !S_ISDIR (st.st_mode)))
- errmsg = _("File exists, but is not a directory");
+ if (!create_html_directory (output_filename, 1))
+ {
+ /* Last try failed too :-\ */
line_error (_("Can't create directory `%s': %s"),
- output_filename, errmsg);
+ output_filename, strerror (errno));
xexit (1);
}
- strcat (output_filename, "/");
}
- else if (strlen (subdir))
- strcat (output_filename, "/");
+
+ strcat (output_filename, "/");
strcat (output_filename, index_name);
return output_filename;
}
/* FIXME: this is way too hairy */
-void
-convert_from_loaded_file (name)
- char *name;
+static void
+convert_from_loaded_file (char *name)
{
char *real_output_filename = NULL;
@@ -1476,8 +1556,6 @@ convert_from_loaded_file (name)
if (!command_output_filename)
{
get_until ("\n", &output_filename); /* read rest of line */
- if (xml && !docbook)
- xml_begin_document (output_filename);
if (html || xml)
{ /* Change any extension to .html or .xml. */
char *html_name, *directory_part, *basename_part, *temp;
@@ -1553,6 +1631,9 @@ convert_from_loaded_file (name)
set_current_output_filename (real_output_filename);
+ if (xml && !docbook)
+ xml_begin_document (filename_part (output_filename));
+
if (verbose_mode)
printf (_("Making %s file `%s' from `%s'.\n"),
no_headers ? "text"
@@ -1593,6 +1674,19 @@ convert_from_loaded_file (name)
output_filename, VERSION, input_filename);
close_paragraph ();
+
+ if (xml && !docbook)
+ {
+ /* Just before the real main loop, let's handle the defines. */
+ COMMAND_LINE_DEFINE *temp;
+
+ for (temp = command_line_defines; temp; temp = temp->next)
+ {
+ handle_variable_internal (temp->action, temp->define);
+ free(temp->define);
+ }
+ }
+
reader_loop ();
if (xml)
xml_end_document ();
@@ -1611,7 +1705,8 @@ finished:
&& FILENAME_CMP (macro_expansion_filename, NULL_DEVICE) != 0
&& FILENAME_CMP (macro_expansion_filename, ALSO_NULL_DEVICE) != 0)
{
- fprintf (stderr, _("%s: Removing macro output file `%s' due to errors; use --force to preserve.\n"),
+ fprintf (stderr,
+_("%s: Removing macro output file `%s' due to errors; use --force to preserve.\n"),
progname, macro_expansion_filename);
if (unlink (macro_expansion_filename) < 0)
perror (macro_expansion_filename);
@@ -1621,15 +1716,10 @@ finished:
if (output_stream)
{
output_pending_notes ();
- if (tag_table)
- {
- tag_table = (TAG_ENTRY *) reverse_list (tag_table);
- if (!no_headers && !html)
- write_tag_table ();
- }
if (html)
{
+ no_indent = 1;
start_paragraph ();
add_word ("</body></html>\n");
close_paragraph ();
@@ -1638,14 +1728,19 @@ finished:
/* maybe we want local variables in info output. */
{
char *trailer = info_trailer ();
- if (trailer)
+ if (!xml && !docbook && trailer)
{
+ if (html)
+ insert_string ("<!--");
insert_string (trailer);
free (trailer);
+ if (html)
+ insert_string ("\n-->\n");
}
}
- flush_output (); /* in case there was no @bye */
+ /* Write stuff makeinfo generates after @bye, ie. info_trailer. */
+ flush_output ();
if (output_stream != stdout)
fclose (output_stream);
@@ -1654,19 +1749,28 @@ finished:
if (validating)
validate_file (tag_table);
- /* If we need to output the table of contents, do it now. */
- if (contents_filename || shortcontents_filename)
- toc_update ();
+ handle_delayed_writes ();
+
+ if (tag_table)
+ {
+ tag_table = (TAG_ENTRY *) reverse_list ((GENERIC_LIST *) tag_table);
+ if (!no_headers && !html && !STREQ (current_output_filename, "-"))
+ write_tag_table (real_output_filename);
+ }
if (splitting && !html && (!errors_printed || force))
- split_file (real_output_filename, split_size);
+ {
+ clean_old_split_files (real_output_filename);
+ split_file (real_output_filename, split_size);
+ }
else if (errors_printed
&& !force
&& strcmp (real_output_filename, "-") != 0
&& FILENAME_CMP (real_output_filename, NULL_DEVICE) != 0
&& FILENAME_CMP (real_output_filename, ALSO_NULL_DEVICE) != 0)
{ /* If there were errors, and no --force, remove the output. */
- fprintf (stderr, _("%s: Removing output file `%s' due to errors; use --force to preserve.\n"),
+ fprintf (stderr,
+ _("%s: Removing output file `%s' due to errors; use --force to preserve.\n"),
progname, real_output_filename);
if (unlink (real_output_filename) < 0)
perror (real_output_filename);
@@ -1674,33 +1778,35 @@ finished:
}
free (real_output_filename);
}
-
-
-/* If enable_encoding and document_encoding are both set, return a Local
- Variables section (as a malloc-ed string) so that Emacs' locale
- features can work. Else return NULL. */
-
+/* If enable_encoding is set and @documentencoding is used, return a
+ Local Variables section (as a malloc-ed string) so that Emacs'
+ locale features can work. Else return NULL. */
char *
-info_trailer ()
+info_trailer (void)
{
- if (!enable_encoding || document_encoding_code <= US_ASCII)
+ char *encoding;
+
+ if (!enable_encoding)
return NULL;
- {
-#define LV_FMT "\n\037\nLocal Variables:\ncoding: %s\nEnd:\n"
- char *enc_name = encoding_table[document_encoding_code].encname;
- char *lv = xmalloc (sizeof (LV_FMT) + strlen (enc_name));
- sprintf (lv, LV_FMT, enc_name);
- return lv;
- }
-}
+ encoding = current_document_encoding ();
+ if (encoding && *encoding)
+ {
+#define LV_FMT "\n\037\nLocal Variables:\ncoding: %s\nEnd:\n"
+ char *lv = xmalloc (sizeof (LV_FMT) + strlen (encoding));
+ sprintf (lv, LV_FMT, encoding);
+ free (encoding);
+ return lv;
+ }
+ free (encoding);
+ return NULL;
+}
void
-free_and_clear (pointer)
- char **pointer;
+free_and_clear (char **pointer)
{
if (*pointer)
{
@@ -1710,8 +1816,8 @@ free_and_clear (pointer)
}
/* Initialize some state. */
-void
-init_internals ()
+static void
+init_internals (void)
{
free_and_clear (&output_filename);
free_and_clear (&command);
@@ -1731,9 +1837,9 @@ init_internals ()
}
void
-init_paragraph ()
+init_paragraph (void)
{
- free_and_clear (&output_paragraph);
+ free (output_paragraph);
output_paragraph = xmalloc (paragraph_buffer_len);
output_paragraph[0] = 0;
output_paragraph_offset = 0;
@@ -1747,7 +1853,7 @@ init_paragraph ()
menu line. */
static void
-handle_menu_entry ()
+handle_menu_entry (void)
{
char *tem;
@@ -1773,23 +1879,21 @@ handle_menu_entry ()
if (had_menu_commentary)
{
- add_word ("<ul class=\"menu\">\n");
+ add_html_block_elt ("<ul class=\"menu\">\n");
had_menu_commentary = 0;
in_paragraph = 0;
}
- else if (!in_paragraph && !paragraph_is_open)
- {
- add_word ("<p>\n");
- in_paragraph = 1;
- }
if (in_paragraph)
{
- add_word ("</p>");
+ add_html_block_elt ("</p>\n");
+ add_html_block_elt ("<ul class=\"menu\">\n");
in_paragraph = 0;
}
- add_word ("<li><a");
+ in_menu_item = 1;
+
+ add_html_block_elt ("<li><a");
if (next_menu_item_number <= 9)
{
add_word(" accesskey=");
@@ -1819,7 +1923,18 @@ handle_menu_entry ()
free (string);
}
input_text_offset++; /* discard the second colon or the period */
- add_word (": ");
+
+ /* Insert a colon only if there is a description of this menu item. */
+ {
+ int save_input_text_offset = input_text_offset;
+ int save_line_number = line_number;
+ char *test_string;
+ get_rest_of_line (0, &test_string);
+ if (strlen (test_string) > 0)
+ add_word (": ");
+ input_text_offset = save_input_text_offset;
+ line_number = save_line_number;
+ }
}
else if (xml && tem)
{
@@ -1840,8 +1955,7 @@ handle_menu_entry ()
/* Find the command corresponding to STRING. If the command is found,
return a pointer to the data structure. Otherwise return -1. */
static COMMAND *
-get_command_entry (string)
- char *string;
+get_command_entry (char *string)
{
int i;
@@ -1864,7 +1978,7 @@ get_command_entry (string)
Read the next token to determine what to do. Return zero
if there's no known command or macro after the prefix character. */
static int
-read_command ()
+read_command (void)
{
COMMAND *entry;
int old_text_offset = input_text_offset++;
@@ -1894,7 +2008,7 @@ read_command ()
return 1;
}
- }
+ }
if (only_macro_expansion)
{
@@ -1970,11 +2084,10 @@ read_command ()
the function with the proper arguments. Although the filling isn't
necessary for HTML, it should do no harm. */
void
-reader_loop ()
+reader_loop (void)
{
int character;
int done = 0;
- int dash_count = 0;
while (!done)
{
@@ -1986,25 +2099,79 @@ reader_loop ()
/* If only_macro_expansion, only handle macros and leave
everything else intact. */
if (!only_macro_expansion && !in_fixed_width_font
+ && ((!html && !xml) || escape_html)
&& (character == '\'' || character == '`')
&& input_text[input_text_offset + 1] == character)
{
- input_text_offset++;
- character = '"'; /* html fixxme */
+ if (html)
+ {
+ input_text_offset += 2;
+ add_word (character == '`' ? "&ldquo;" : "&rdquo;");
+ continue;
+ }
+ else if (xml)
+ {
+ input_text_offset += 2;
+ xml_insert_entity (character == '`' ? "ldquo" : "rdquo");
+ continue;
+ }
+ else
+ {
+ input_text_offset++;
+ character = '"';
+ }
}
/* Convert --- to --. */
- if (!only_macro_expansion && character == '-')
+ if (!only_macro_expansion && character == '-' && !in_fixed_width_font
+ && ((!html && !xml) || escape_html))
{
- dash_count++;
- if (dash_count == 2 && !in_fixed_width_font)
+ int dash_count = 0;
+
+ /* Get the number of consequtive dashes. */
+ while (input_text[input_text_offset] == '-')
{
+ dash_count++;
input_text_offset++;
- continue;
}
+
+ /* Eat one dash. */
+ dash_count--;
+
+ if (html || xml)
+ {
+ if (dash_count == 0)
+ add_char ('-');
+ else
+ while (dash_count > 0)
+ {
+ if (dash_count >= 2)
+ {
+ if (html)
+ add_word ("&mdash;");
+ else
+ xml_insert_entity ("mdash");
+ dash_count -= 2;
+ }
+ else if (dash_count >= 1)
+ {
+ if (html)
+ add_word ("&ndash;");
+ else
+ xml_insert_entity ("ndash");
+ dash_count--;
+ }
+ }
+ }
+ else
+ {
+ add_char ('-');
+ while (--dash_count > 0)
+ add_char ('-');
+ }
+
+ continue;
}
- else if (dash_count > 0)
- dash_count = 0;
/* If this is a whitespace character, then check to see if the line
is blank. If so, advance to the carriage return. */
@@ -2094,10 +2261,8 @@ reader_loop ()
remember_brace (misplaced_brace);
}
else
- { /* We don't mind `extra' braces inside @math. */
- extern void cm_no_op ();
- remember_brace (cm_no_op);
- }
+ /* We don't mind `extra' braces inside @math. */
+ remember_brace (cm_no_op);
/* remember_brace advances input_text_offset. */
break;
}
@@ -2121,29 +2286,16 @@ reader_loop ()
maybe_write_itext (input_text, input_text_offset);
}
-void
-init_brace_stack ()
+static void
+init_brace_stack (void)
{
brace_stack = NULL;
}
-void
-remember_brace (proc)
- COMMAND_FUNCTION *proc;
-{
- if (curchar () != '{')
- line_error (_("%c%s expected braces"), COMMAND_PREFIX, command);
- else
- input_text_offset++;
- remember_brace_1 (proc, output_paragraph_offset);
-}
-
/* Remember the current output position here. Save PROC
along with it so you can call it later. */
-void
-remember_brace_1 (proc, position)
- COMMAND_FUNCTION *proc;
- int position;
+static void
+remember_brace_1 (COMMAND_FUNCTION (*proc), int position)
{
BRACE_ELEMENT *new = xmalloc (sizeof (BRACE_ELEMENT));
new->next = brace_stack;
@@ -2155,10 +2307,20 @@ remember_brace_1 (proc, position)
brace_stack = new;
}
+static void
+remember_brace (COMMAND_FUNCTION (*proc))
+{
+ if (curchar () != '{')
+ line_error (_("%c%s expected braces"), COMMAND_PREFIX, command);
+ else
+ input_text_offset++;
+ remember_brace_1 (proc, output_paragraph_offset);
+}
+
/* Pop the top of the brace stack, and call the associated function
with the args END and POS. */
-void
-pop_and_call_brace ()
+static void
+pop_and_call_brace (void)
{
if (brace_stack == NULL)
{
@@ -2186,9 +2348,8 @@ pop_and_call_brace ()
}
/* Shift all of the markers in `brace_stack' by AMOUNT. */
-void
-adjust_braces_following (here, amount)
- int here, amount;
+static void
+adjust_braces_following (int here, int amount)
{
BRACE_ELEMENT *stack = brace_stack;
@@ -2204,8 +2365,7 @@ adjust_braces_following (here, amount)
Always returns the first function in the command table if more than
one matches PROC. */
static const char *
-find_proc_name (proc)
- COMMAND_FUNCTION *proc;
+find_proc_name (COMMAND_FUNCTION (*proc))
{
int i;
@@ -2220,7 +2380,7 @@ find_proc_name (proc)
in braces, but that was wrong because of things like @code{foo @@}. So now
I only detect it at the beginning of nodes. */
void
-discard_braces ()
+discard_braces (void)
{
if (!brace_stack)
return;
@@ -2247,9 +2407,8 @@ discard_braces ()
}
}
-int
-get_char_len (character)
- int character;
+static int
+get_char_len (int character)
{
/* Return the printed length of the character. */
int len;
@@ -2307,8 +2466,7 @@ add_word_args (format, va_alist)
/* Add STRING to output_paragraph. */
void
-add_word (string)
- char *string;
+add_word (char *string)
{
while (*string)
add_char (*string++);
@@ -2318,14 +2476,49 @@ add_word (string)
Use this to output HTML directives with embedded blanks, to make
them @w-safe. */
void
-add_html_elt (string)
- char *string;
+add_html_elt (char *string)
{
in_html_elt++;
add_word (string);
in_html_elt--;
}
+/* These two functions below, add_html_block_elt and add_html_block_elt_args,
+ are mixtures of add_html_elt and add_word_args. They inform makeinfo that
+ the current HTML element being inserted should not be enclosed in a <p>
+ element. */
+void
+add_html_block_elt (char *string)
+{
+ in_html_block_level_elt++;
+ add_word (string);
+ in_html_block_level_elt--;
+}
+
+void
+#if defined (VA_FPRINTF) && __STDC__
+add_html_block_elt_args (const char *format, ...)
+#else
+add_html_block_elt_args (format, va_alist)
+ const char *format;
+ va_dcl
+#endif
+{
+ char buffer[2000]; /* xx no fixed limits */
+#ifdef VA_FPRINTF
+ va_list ap;
+#endif
+
+ VA_START (ap, format);
+#ifdef VA_SPRINTF
+ VA_SPRINTF (buffer, format, ap);
+#else
+ sprintf (buffer, format, a1, a2, a3, a4, a5, a6, a7, a8);
+#endif /* not VA_SPRINTF */
+ va_end (ap);
+ add_html_block_elt (buffer);
+}
+
/* Here is another awful kludge, used in add_char. Ordinarily, macro
expansions take place in the body of the document, and therefore we
should html_output_head when we see one. But there's an exception: a
@@ -2335,7 +2528,7 @@ add_html_elt (string)
So we need to be able to check if we are defining the @copying text.
We do this by looking back through the insertion stack. */
static int
-defining_copying ()
+defining_copying (void)
{
INSERTION_ELT *i;
for (i = insertion_stack; i; i = i->next)
@@ -2350,8 +2543,7 @@ defining_copying ()
/* Add the character to the current paragraph. If filling_enabled is
nonzero, then do filling as well. */
void
-add_char (character)
- int character;
+add_char (int character)
{
if (xml)
{
@@ -2463,6 +2655,7 @@ add_char (character)
any order and with any omissions, and we'll still output
the html <head> `just in time'. */
if ((executing_macro || !executing_string)
+ && !only_macro_expansion
&& html && !html_output_head_p && !defining_copying ())
html_output_head ();
@@ -2476,12 +2669,16 @@ add_char (character)
indent (pending_indent);
pending_indent = 0;
- /* This horrible kludge of checking for a < prevents <p>
- from being inserted when we already have html markup
- starting a paragraph, as with <ul> and <h1> and the like. */
- if ((html || xml) && escape_html && character != '<'
- && (!in_fixed_width_font || in_menu || in_detailmenu))
+ /* This check for in_html_block_level_elt prevents <p> from being
+ inserted when we already have html markup starting a paragraph,
+ as with <ul> and <h1> and the like. */
+ if (html && !in_html_block_level_elt)
{
+ if ((in_menu || in_detailmenu) && in_menu_item)
+ {
+ insert_string ("</li></ul>\n");
+ in_menu_item = 0;
+ }
insert_string ("<p>");
in_paragraph = 1;
adjust_braces_following (0, 3); /* adjust for <p> */
@@ -2536,9 +2733,9 @@ add_char (character)
if (t1 != temp)
{
adjust_braces_following (temp, (- (t1 - temp)));
- strncpy ((char *) &output_paragraph[temp],
- (char *) &output_paragraph[t1],
- (output_paragraph_offset - t1));
+ memmove (&output_paragraph[temp],
+ &output_paragraph[t1],
+ output_paragraph_offset - t1);
output_paragraph_offset -= (t1 - temp);
}
}
@@ -2600,8 +2797,7 @@ add_char (character)
/* Add a character and store its position in meta_char_pos. */
void
-add_meta_char (character)
- int character;
+add_meta_char (int character)
{
meta_char_pos = output_paragraph_offset;
add_char (character);
@@ -2609,9 +2805,19 @@ add_meta_char (character)
/* Insert CHARACTER into `output_paragraph'. */
void
-insert (character)
- int character;
+insert (int character)
{
+ /* We don't want to strip trailing whitespace in multitables. Otherwise
+ horizontal separators confuse the font locking in Info mode in Emacs,
+ because it looks like a @subsection. Adding a trailing space to those
+ lines fixes it. */
+ if (character == '\n' && !html && !xml && !multitable_active)
+ {
+ while (output_paragraph_offset
+ && whitespace (output_paragraph[output_paragraph_offset-1]))
+ output_paragraph_offset--;
+ }
+
output_paragraph[output_paragraph_offset++] = character;
if (output_paragraph_offset == paragraph_buffer_len)
{
@@ -2622,8 +2828,7 @@ insert (character)
/* Insert the null-terminated string STRING into `output_paragraph'. */
void
-insert_string (string)
- char *string;
+insert_string (const char *string)
{
while (*string)
insert (*string++);
@@ -2637,7 +2842,7 @@ insert_string (string)
/* Return true if at an end-of-sentence character, possibly followed by
post-sentence punctuation to ignore. */
static int
-end_of_sentence_p ()
+end_of_sentence_p (void)
{
int loc = output_paragraph_offset - 1;
@@ -2660,8 +2865,7 @@ end_of_sentence_p ()
the current output line. If COUNT is less than zero,
then remove until none left. */
void
-kill_self_indent (count)
- int count;
+kill_self_indent (int count)
{
/* Handle infinite case first. */
if (count < 0)
@@ -2690,20 +2894,20 @@ static int flushing_ignored = 0;
/* Prevent calls to flush_output () from having any effect. */
void
-inhibit_output_flushing ()
+inhibit_output_flushing (void)
{
flushing_ignored++;
}
/* Allow calls to flush_output () to write the paragraph data. */
void
-uninhibit_output_flushing ()
+uninhibit_output_flushing (void)
{
flushing_ignored--;
}
void
-flush_output ()
+flush_output (void)
{
int i;
@@ -2712,6 +2916,12 @@ flush_output ()
for (i = 0; i < output_paragraph_offset; i++)
{
+ if (output_paragraph[i] == '\n')
+ {
+ output_line_number++;
+ node_line_number++;
+ }
+
/* If we turned on the 8th bit for a space inside @w, turn it
back off for output. This might be problematic, since the
0x80 character may be used in 8-bit character sets. Sigh.
@@ -2741,8 +2951,7 @@ flush_output ()
int paragraph_spacing = DEFAULT_PARAGRAPH_SPACING;
static void
-close_paragraph_with_lines (lines)
- int lines;
+close_paragraph_with_lines (int lines)
{
int old_spacing = paragraph_spacing;
paragraph_spacing = lines;
@@ -2752,14 +2961,14 @@ close_paragraph_with_lines (lines)
/* Close the current paragraph, leaving no blank lines between them. */
void
-close_single_paragraph ()
+close_single_paragraph (void)
{
close_paragraph_with_lines (0);
}
/* Close a paragraph after an insertion has ended. */
void
-close_insertion_paragraph ()
+close_insertion_paragraph (void)
{
if (!insertion_paragraph_closed)
{
@@ -2795,18 +3004,21 @@ close_insertion_paragraph ()
/* Close the currently open paragraph. */
void
-close_paragraph ()
+close_paragraph (void)
{
int i;
+ /* We don't need these newlines in XML and Docbook outputs for
+ paragraph seperation. We have <para> element for that. */
+ if (xml)
+ return;
+
/* The insertion paragraph is no longer closed. */
insertion_paragraph_closed = 0;
if (paragraph_is_open && !must_start_paragraph)
{
- int tindex, c;
-
- tindex = output_paragraph_offset;
+ int tindex = output_paragraph_offset;
/* Back up to last non-newline/space character, forcing all such
subsequent characters to be newlines. This isn't strictly
@@ -2814,7 +3026,7 @@ close_paragraph ()
to make decisions. */
for (tindex = output_paragraph_offset - 1; tindex >= 0; --tindex)
{
- c = output_paragraph[tindex];
+ int c = output_paragraph[tindex];
if (c == ' '|| c == '\n')
output_paragraph[tindex] = '\n';
@@ -2858,15 +3070,15 @@ close_paragraph ()
/* Make the last line just read look as if it were only a newline. */
void
-ignore_blank_line ()
+ignore_blank_line (void)
{
last_inserted_character = '\n';
last_char_was_newline = 1;
}
/* Align the end of the text in output_paragraph with fill_column. */
-void
-do_flush_right_indentation ()
+static void
+do_flush_right_indentation (void)
{
char *temp;
int temp_len;
@@ -2903,7 +3115,7 @@ do_flush_right_indentation ()
/* Begin a new paragraph. */
void
-start_paragraph ()
+start_paragraph (void)
{
/* First close existing one. */
if (paragraph_is_open)
@@ -2950,8 +3162,7 @@ start_paragraph ()
/* Insert the indentation specified by AMOUNT. */
void
-indent (amount)
- int amount;
+indent (int amount)
{
/* For every START_POS saved within the brace stack which will be affected
by this indentation, bump that start pos forward. */
@@ -2964,9 +3175,7 @@ indent (amount)
/* Search forward for STRING in input_text.
FROM says where where to start. */
int
-search_forward (string, from)
- char *string;
- int from;
+search_forward (char *string, int from)
{
int len = strlen (string);
@@ -2978,518 +3187,64 @@ search_forward (string, from)
}
return -1;
}
-
-/* Cross references. */
-
-/* Return next comma-delimited argument, but do not cross a close-brace
- boundary. Clean up whitespace, too. If EXPAND is nonzero, replace
- the entire brace-delimited argument list with its expansion before
- looking for the next comma. */
-char *
-get_xref_token (expand)
- int expand;
-{
- char *string;
-
- if (docbook)
- xml_in_xref_token = 1;
-
- if (expand)
- {
- int old_offset = input_text_offset;
- int old_lineno = line_number;
-
- get_until_in_braces ("}", &string);
- if (curchar () == '}') /* as opposed to end of text */
- input_text_offset++;
- if (input_text_offset > old_offset)
- {
- int limit = input_text_offset;
-
- input_text_offset = old_offset;
- line_number = old_lineno;
- only_macro_expansion++;
- replace_with_expansion (input_text_offset, &limit);
- only_macro_expansion--;
- }
- free (string);
- }
-
- get_until_in_braces (",", &string);
- if (curchar () == ',')
- input_text_offset++;
- fix_whitespace (string);
-
- if (docbook)
- xml_in_xref_token = 0;
-
- return string;
-}
-/* NOTE: If you wonder why the HTML output is produced with such a
- peculiar mix of calls to add_word and execute_string, here's the
- reason. get_xref_token (1) expands all macros in a reference, but
- any other commands, like @value, @@, etc., are left intact. To
- expand them, we need to run the arguments through execute_string.
- However, characters like <, &, > and others cannot be let into
- execute_string, because they will be escaped. See the mess? */
-
-/* Make a cross reference. */
-void
-cm_xref (arg)
+/* search_forward until n characters. */
+int
+search_forward_until_pos (char *string, int from, int end_pos)
{
- if (arg == START)
- {
- char *arg1 = get_xref_token (1); /* expands all macros in xref */
- char *arg2 = get_xref_token (0);
- char *arg3 = get_xref_token (0);
- char *arg4 = get_xref_token (0);
- char *arg5 = get_xref_token (0);
- char *tem;
-
- /* "@xref{,Foo,, Bar, Baz} is not valid usage of @xref. The
- first argument must never be blank." --rms.
- We hereby comply by disallowing such constructs. */
- if (!*arg1)
- line_error (_("First argument to cross-reference may not be empty"));
-
- if (xml && docbook)
- {
- if (!*arg4 && !*arg5)
- {
- char *arg1_id = xml_id (arg1);
- if (*arg2)
- {
- xml_insert_element_with_attribute (XREFNODENAME, START,
- "linkend=\"%s\"", arg1_id);
- free (arg1_id);
- if (*arg2)
- execute_string (arg2);
- xml_insert_element (XREFNODENAME, END);
- }
- else
- {
- xml_insert_element_with_attribute (XREF, START,
- "linkend=\"%s\"", arg1_id);
- free (arg1_id);
- xml_pop_current_element ();
- }
- }
- }
- else if (xml)
- {
- xml_insert_element (XREF, START);
- xml_insert_element (XREFNODENAME, START);
- execute_string (arg1);
- xml_insert_element (XREFNODENAME, END);
- if (*arg2)
- {
- xml_insert_element (XREFINFONAME, START);
- execute_string (arg2);
- xml_insert_element (XREFINFONAME, END);
- }
- if (*arg3)
- {
- xml_insert_element (XREFPRINTEDDESC, START);
- execute_string (arg3);
- xml_insert_element (XREFPRINTEDDESC, END);
- }
- if (*arg4)
- {
- xml_insert_element (XREFINFOFILE, START);
- execute_string (arg4);
- xml_insert_element (XREFINFOFILE, END);
- }
- if (*arg5)
- {
- xml_insert_element (XREFPRINTEDNAME, START);
- execute_string (arg5);
- xml_insert_element (XREFPRINTEDNAME, END);
- }
- xml_insert_element (XREF, END);
- }
- else if (html)
- {
- if (!ref_flag)
- add_word_args ("%s", px_ref_flag ? _("see ") : _("See "));
- }
- else
- add_word_args ("%s", px_ref_flag ? "*note " : "*Note ");
-
- if (!xml)
- {
- if (*arg5 || *arg4)
- {
- /* arg1 - node name
- arg2 - reference name
- arg3 - title or topic (and reference name if arg2 is NULL)
- arg4 - info file name
- arg5 - printed manual title */
- char *ref_name;
-
- if (!*arg2)
- {
- if (*arg3)
- ref_name = arg3;
- else
- ref_name = arg1;
- }
- else
- ref_name = arg2;
-
- if (html)
- {
- /* html fixxme: revisit this; external node name not
- much use to us with numbered nodes. */
- add_html_elt ("<a href=");
- /* Note that if we are splitting, and the referenced
- tag is an anchor rather than a node, we will
- produce a reference to a file whose name is
- derived from the anchor name. However, only
- nodes create files, so we are referencing a
- non-existent file. cm_anchor, which see, deals
- with that problem. */
- if (splitting)
- execute_string ("\"../%s/", arg4);
- else
- execute_string ("\"%s.html", arg4);
- /* Do not collapse -- to -, etc., in references. */
- in_fixed_width_font++;
- tem = expansion (arg1, 0); /* expand @-commands in node */
- in_fixed_width_font--;
- add_anchor_name (tem, 1);
- free (tem);
- add_word ("\">");
- execute_string ("%s", ref_name);
- add_word ("</a>");
- }
- else
- {
- execute_string ("%s:", ref_name);
- in_fixed_width_font++;
- execute_string (" (%s)%s%s", arg4, arg1, px_ref_flag ? "." : "");
- in_fixed_width_font--;
- }
+ int save_input_text_length = input_text_length;
+ input_text_length = end_pos;
- /* Free all of the arguments found. */
- if (arg1) free (arg1);
- if (arg2) free (arg2);
- if (arg3) free (arg3);
- if (arg4) free (arg4);
- if (arg5) free (arg5);
- return;
- }
- else
- remember_node_reference (arg1, line_number, followed_reference);
+ from = search_forward (string, from);
- if (*arg3)
- {
- if (html)
- {
- add_html_elt ("<a href=\"");
- in_fixed_width_font++;
- tem = expansion (arg1, 0);
- in_fixed_width_font--;
- add_anchor_name (tem, 1);
- free (tem);
- add_word ("\">");
- execute_string ("%s", *arg2 ? arg2 : arg3);
- add_word ("</a>");
- }
- else
- {
- execute_string ("%s:", *arg2 ? arg2 : arg3);
- in_fixed_width_font++;
- execute_string (" %s%s", arg1, px_ref_flag ? "." : "");
- in_fixed_width_font--;
- }
- }
- else
- {
- if (html)
- {
- add_html_elt ("<a href=\"");
- in_fixed_width_font++;
- tem = expansion (arg1, 0);
- in_fixed_width_font--;
- add_anchor_name (tem, 1);
- free (tem);
- add_word ("\">");
- execute_string ("%s", *arg2 ? arg2 : arg1);
- add_word ("</a>");
- }
- else
- {
- if (*arg2)
- {
- execute_string ("%s:", arg2);
- in_fixed_width_font++;
- execute_string (" %s%s", arg1, px_ref_flag ? "." : "");
- in_fixed_width_font--;
- }
- else
- {
- in_fixed_width_font++;
- execute_string ("%s::", arg1);
- in_fixed_width_font--;
- }
- }
- }
- }
- /* Free all of the arguments found. */
- if (arg1) free (arg1);
- if (arg2) free (arg2);
- if (arg3) free (arg3);
- if (arg4) free (arg4);
- if (arg5) free (arg5);
- }
- else
- { /* Check to make sure that the next non-whitespace character is
- valid to follow an xref (so info readers can find the node
- names). `input_text_offset' is pointing at the "}" which ended
- the xref or ref command. */
- int temp;
+ input_text_length = save_input_text_length;
- for (temp = input_text_offset + 1; temp < input_text_length; )
- {
- if (cr_or_whitespace (input_text[temp]))
- temp++;
- else
- {
- if (input_text[temp] != '.' && input_text[temp] != ',')
- warning (_("`.' or `,' must follow cross reference, not %c"),
- input_text[temp]);
- break;
- }
- }
- }
+ return from;
}
-void
-cm_pxref (arg)
- int arg;
-{
- if (arg == START)
- {
- px_ref_flag++;
- cm_xref (arg);
- px_ref_flag--;
- }
- /* Note that cm_xref isn't called with arg == END, which disables
- the code near the end of cm_xref that checks for `.' or `,'
- after the cross-reference. This is because @pxref{} generates
- the required character itself, when needed. */
-}
-
-void
-cm_ref (arg)
- int arg;
+/* Return next non-whitespace and non-cr character. */
+int
+next_nonwhitespace_character (void)
{
- if (arg == START)
- {
- ref_flag++;
- cm_xref (arg);
- ref_flag--;
- }
-}
+ /* First check the current input_text. Start from the next char because
+ we already have input_text[input_text_offset] in ``current''. */
+ int pos = input_text_offset + 1;
-void
-cm_inforef (arg)
- int arg;
-{
- if (arg == START)
+ while (pos < input_text_length)
{
- char *node = get_xref_token (1); /* expands all macros in inforef */
- char *pname = get_xref_token (0);
- char *file = get_xref_token (0);
-
- /* (see comments at cm_xref). */
- if (!*node)
- line_error (_("First argument to @inforef may not be empty"));
-
- if (xml && !docbook)
- {
- xml_insert_element (INFOREF, START);
- xml_insert_element (INFOREFNODENAME, START);
- execute_string (node);
- xml_insert_element (INFOREFNODENAME, END);
- if (*pname)
- {
- xml_insert_element (INFOREFREFNAME, START);
- execute_string (pname);
- xml_insert_element (INFOREFREFNAME, END);
- }
- xml_insert_element (INFOREFINFONAME, START);
- execute_string (file);
- xml_insert_element (INFOREFINFONAME, END);
-
- xml_insert_element (INFOREF, END);
- }
- else if (html)
- {
- char *tem;
-
- add_word (_("see "));
- /* html fixxme: revisit this */
- add_html_elt ("<a href=");
- if (splitting)
- execute_string ("\"../%s/", file);
- else
- execute_string ("\"%s.html", file);
- tem = expansion (node, 0);
- add_anchor_name (tem, 1);
- add_word ("\">");
- execute_string ("%s", *pname ? pname : tem);
- add_word ("</a>");
- free (tem);
- }
- else
- {
- if (*pname)
- execute_string ("*note %s: (%s)%s", pname, file, node);
- else
- execute_string ("*note (%s)%s::", file, node);
- }
-
- free (node);
- free (pname);
- free (file);
+ if (!cr_or_whitespace(input_text[pos]))
+ return input_text[pos];
+ pos++;
}
-}
-/* A URL reference. */
-void
-cm_uref (arg)
- int arg;
-{
- if (arg == START)
- {
- extern int printing_index;
- char *url = get_xref_token (1); /* expands all macros in uref */
- char *desc = get_xref_token (0);
- char *replacement = get_xref_token (0);
+ { /* Can't find a valid character, so go through filestack
+ in case we are doing @include or expanding a macro. */
+ FSTACK *tos = filestack;
- if (xml)
- {
- xml_insert_element (UREF, START);
- xml_insert_element (UREFURL, START);
- execute_string (url);
- xml_insert_element (UREFURL, END);
- if (*desc)
- {
- xml_insert_element (UREFDESC, START);
- execute_string (desc);
- xml_insert_element (UREFDESC, END);
- }
- if (*replacement)
- {
- xml_insert_element (UREFREPLACEMENT, START);
- execute_string (replacement);
- xml_insert_element (UREFREPLACEMENT, END);
- }
- xml_insert_element (UREF, END);
- }
- else if (html)
- { /* never need to show the url */
- add_html_elt ("<a href=");
- /* don't collapse `--' etc. in the url */
- in_fixed_width_font++;
- execute_string ("\"%s\"", url);
- in_fixed_width_font--;
- add_word (">");
- execute_string ("%s", *replacement ? replacement
- : (*desc ? desc : url));
- add_word ("</a>");
- }
- else if (*replacement) /* do not show the url */
- execute_string ("%s", replacement);
- else if (*desc) /* show both text and url */
- {
- execute_string ("%s ", desc);
- in_fixed_width_font++;
- execute_string ("(%s)", url);
- in_fixed_width_font--;
- }
- else /* no text at all, so have the url to show */
- {
- in_fixed_width_font++;
- execute_string ("%s%s%s",
- printing_index ? "" : "`",
- url,
- printing_index ? "" : "'");
- in_fixed_width_font--;
- }
- if (url)
- free (url);
- if (desc)
- free (desc);
- if (replacement)
- free (replacement);
- }
-}
+ while (tos)
+ {
+ int tmp_input_text_length = filestack->size;
+ int tmp_input_text_offset = filestack->offset;
+ char *tmp_input_text = filestack->text;
-/* An email reference. */
-void
-cm_email (arg)
- int arg;
-{
- if (arg == START)
- {
- char *addr = get_xref_token (1); /* expands all macros in email */
- char *name = get_xref_token (0);
+ while (tmp_input_text_offset < tmp_input_text_length)
+ {
+ if (!cr_or_whitespace(tmp_input_text[tmp_input_text_offset]))
+ return tmp_input_text[tmp_input_text_offset];
+ tmp_input_text_offset++;
+ }
- if (xml && docbook)
- {
- xml_insert_element_with_attribute (EMAIL, START, "url=\"mailto:%s\"", addr);
- if (*name)
- execute_string (name);
- xml_insert_element (EMAIL, END);
- }
- else if (xml)
- {
- xml_insert_element (EMAIL, START);
- xml_insert_element (EMAILADDRESS, START);
- execute_string (addr);
- xml_insert_element (EMAILADDRESS, END);
- if (*name)
- {
- xml_insert_element (EMAILNAME, START);
- execute_string (name);
- xml_insert_element (EMAILNAME, END);
- }
- xml_insert_element (EMAIL, END);
- }
- else if (html)
- {
- add_html_elt ("<a href=");
- /* don't collapse `--' etc. in the address */
- in_fixed_width_font++;
- execute_string ("\"mailto:%s\"", addr);
- in_fixed_width_font--;
- add_word (">");
- execute_string ("%s", *name ? name : addr);
- add_word ("</a>");
- }
- else
- {
- execute_string ("%s%s", name, *name ? " " : "");
- in_fixed_width_font++;
- execute_string ("<%s>", addr);
- in_fixed_width_font--;
- }
+ tos = tos->next;
+ }
+ }
- if (addr)
- free (addr);
- if (name)
- free (name);
- }
+ return -1;
}
-
+
/* An external image is a reference, kind of. The parsing is (not
coincidentally) similar, anyway. */
void
-cm_image (arg)
- int arg;
+cm_image (int arg)
{
char *name_arg, *w_arg, *h_arg, *alt_arg, *ext_arg;
@@ -3507,34 +3262,48 @@ cm_image (arg)
struct stat file_info;
char *pathname = NULL;
char *fullname = xmalloc (strlen (name_arg)
- + (ext_arg && *ext_arg ? strlen (ext_arg) + 1 : 4) + 1);
+ + (ext_arg && *ext_arg ? strlen (ext_arg) + 1: 4) + 1);
if (ext_arg && *ext_arg)
{
- sprintf (fullname, "%s.%s", name_arg, ext_arg);
+ sprintf (fullname, "%s%s", name_arg, ext_arg);
if (access (fullname, R_OK) != 0)
pathname = get_file_info_in_path (fullname, include_files_path,
&file_info);
+
+ if (pathname == NULL)
+ {
+ /* Backwards compatibility (4.6 <= version < 4.7):
+ try prefixing @image's EXTENSION parameter with a period. */
+ sprintf (fullname, "%s.%s", name_arg, ext_arg);
+ if (access (fullname, R_OK) != 0)
+ pathname = get_file_info_in_path (fullname, include_files_path,
+ &file_info);
+ }
}
else
{
sprintf (fullname, "%s.png", name_arg);
- if (access (fullname, R_OK) != 0)
- {
- pathname = get_file_info_in_path (fullname,
- include_files_path, &file_info);
- if (pathname == NULL)
- {
- sprintf (fullname, "%s.jpg", name_arg);
- if (access (fullname, R_OK) != 0)
- pathname = get_file_info_in_path (fullname,
+ if (access (fullname, R_OK) != 0) {
+ pathname = get_file_info_in_path (fullname,
+ include_files_path, &file_info);
+ if (pathname == NULL) {
+ sprintf (fullname, "%s.jpg", name_arg);
+ if (access (fullname, R_OK) != 0) {
+ sprintf (fullname, "%s.gif", name_arg);
+ if (access (fullname, R_OK) != 0) {
+ pathname = get_file_info_in_path (fullname,
include_files_path, &file_info);
}
+ }
}
+ }
}
if (html)
{
+ int image_in_div = 0;
+
if (pathname == NULL && access (fullname, R_OK) != 0)
{
line_error(_("@image file `%s' (for HTML) not readable: %s"),
@@ -3548,19 +3317,42 @@ cm_image (arg)
return;
}
+ if (!paragraph_is_open)
+ {
+ add_html_block_elt ("<div class=\"block-image\">");
+ image_in_div = 1;
+ }
+
add_html_elt ("<img src=");
add_word_args ("\"%s\"", fullname);
add_html_elt (" alt=");
- add_word_args ("\"%s\">", (*alt_arg) ? alt_arg : fullname);
+ add_word_args ("\"%s\">",
+ escape_string (*alt_arg ? text_expansion (alt_arg) : fullname));
+
+ if (image_in_div)
+ add_html_block_elt ("</div>");
}
else if (xml && docbook)
xml_insert_docbook_image (name_arg);
else if (xml)
{
- xml_insert_element_with_attribute (IMAGE, START, "width=\"%s\" height=\"%s\" alttext=\"%s\" extension=\"%s\"",
- w_arg, h_arg, alt_arg, ext_arg);
- add_word (name_arg);
- xml_insert_element (IMAGE, END);
+ extern int xml_in_para;
+ extern int xml_no_para;
+ int elt = xml_in_para ? INLINEIMAGE : IMAGE;
+
+ if (!xml_in_para)
+ xml_no_para++;
+
+ xml_insert_element_with_attribute (elt,
+ START, "width=\"%s\" height=\"%s\" name=\"%s\" extension=\"%s\"",
+ w_arg, h_arg, name_arg, ext_arg);
+ xml_insert_element (IMAGEALTTEXT, START);
+ execute_string ("%s", alt_arg);
+ xml_insert_element (IMAGEALTTEXT, END);
+ xml_insert_element (elt, END);
+
+ if (!xml_in_para)
+ xml_no_para--;
}
else
{ /* Try to open foo.EXT or foo.txt. */
@@ -3568,7 +3360,7 @@ cm_image (arg)
char *txtpath = NULL;
char *txtname = xmalloc (strlen (name_arg)
+ (ext_arg && *ext_arg
- ? strlen (ext_arg) + 1 : 4) + 1);
+ ? strlen (ext_arg) : 4) + 1);
strcpy (txtname, name_arg);
strcat (txtname, ".txt");
image_file = fopen (txtname, "r");
@@ -3587,49 +3379,72 @@ cm_image (arg)
int ch;
int save_inhibit_indentation = inhibit_paragraph_indentation;
int save_filling_enabled = filling_enabled;
+ int image_in_brackets = paragraph_is_open;
+
+ /* Write magic ^@^H[image ...^@^H] cookie in the info file, if
+ there's an accompanying bitmap. Otherwise just include the
+ text image. In the plaintext output, always include the text
+ image without the magic cookie. */
+ int use_magic_cookie = !no_headers
+ && access (fullname, R_OK) == 0 && !STREQ (fullname, txtname);
inhibit_paragraph_indentation = 1;
filling_enabled = 0;
last_char_was_newline = 0;
- /* Write magic ^@^H[image ...^@^H] cookie in the info file. */
- add_char ('\0');
- add_word ("\010[image");
+ if (use_magic_cookie)
+ {
+ add_char ('\0');
+ add_word ("\010[image");
- if (access (fullname, R_OK) == 0
- || (pathname != NULL && access (pathname, R_OK) == 0))
- add_word_args (" src=%s", fullname);
+ if (access (fullname, R_OK) == 0
+ || (pathname != NULL && access (pathname, R_OK) == 0))
+ add_word_args (" src=\"%s\"", fullname);
- if (*alt_arg)
- add_word_args (" alt=\"%s\"", alt_arg);
+ if (*alt_arg)
+ add_word_args (" alt=\"%s\"", alt_arg);
+ }
if (image_file != NULL)
{
- add_word (" text=\"");
+ if (use_magic_cookie)
+ add_word (" text=\"");
+
+ if (image_in_brackets)
+ add_char ('[');
+
/* Maybe we need to remove the final newline if the image
file is only one line to allow in-line images. On the
other hand, they could just make the file without a
final newline. */
while ((ch = getc (image_file)) != EOF)
{
- if (ch == '"' || ch == '\\')
+ if (use_magic_cookie && (ch == '"' || ch == '\\'))
add_char ('\\');
add_char (ch);
}
- add_char ('"');
+
+ if (image_in_brackets)
+ add_char (']');
+
+ if (use_magic_cookie)
+ add_char ('"');
if (fclose (image_file) != 0)
perror (txtname);
}
+ if (use_magic_cookie)
+ {
+ add_char ('\0');
+ add_word ("\010]");
+ }
+
inhibit_paragraph_indentation = save_inhibit_indentation;
filling_enabled = save_filling_enabled;
-
- add_char ('\0');
- add_word ("\010]");
}
else
- line_error (_("@image file `%s' (for text) unreadable: %s"),
+ warning (_("@image file `%s' (for text) unreadable: %s"),
txtname, strerror (errno));
}
@@ -3665,10 +3480,8 @@ typedef struct defines {
DEFINE *defines = NULL;
/* Add NAME to the list of `set' defines. */
-void
-set (name, value)
- char *name;
- char *value;
+static void
+set (char *name, char *value)
{
DEFINE *temp;
@@ -3685,12 +3498,18 @@ set (name, value)
temp->name = xstrdup (name);
temp->value = xstrdup (value);
defines = temp;
+
+ if (xml && !docbook)
+ {
+ xml_insert_element_with_attribute (SETVALUE, START, "name=\"%s\"", name);
+ execute_string ("%s", value);
+ xml_insert_element (SETVALUE, END);
+ }
}
/* Remove NAME from the list of `set' defines. */
-void
-clear (name)
- char *name;
+static void
+clear (char *name)
{
DEFINE *temp, *last;
@@ -3714,12 +3533,17 @@ clear (name)
last = temp;
temp = temp->next;
}
+
+ if (xml && !docbook)
+ {
+ xml_insert_element_with_attribute (CLEARVALUE, START, "name=\"%s\"", name);
+ xml_insert_element (CLEARVALUE, END);
+ }
}
/* Return the value of NAME. The return value is NULL if NAME is unset. */
-char *
-set_p (name)
- char *name;
+static char *
+set_p (char *name)
{
DEFINE *temp;
@@ -3732,26 +3556,26 @@ set_p (name)
/* Create a variable whose name appears as the first word on this line. */
void
-cm_set ()
+cm_set (void)
{
handle_variable (SET);
}
/* Remove a variable whose name appears as the first word on this line. */
void
-cm_clear ()
+cm_clear (void)
{
handle_variable (CLEAR);
}
void
-cm_ifset ()
+cm_ifset (void)
{
handle_variable (IFSET);
}
void
-cm_ifclear ()
+cm_ifclear (void)
{
handle_variable (IFCLEAR);
}
@@ -3763,7 +3587,7 @@ cm_ifclear ()
if ARG1 and ARG2 caselessly string compare to the same string, otherwise,
it produces no output. */
void
-cm_ifeq ()
+cm_ifeq (void)
{
char **arglist;
@@ -3783,11 +3607,16 @@ cm_ifeq ()
}
void
-cm_value (arg, start_pos, end_pos)
- int arg, start_pos, end_pos;
+cm_value (int arg, int start_pos, int end_pos)
{
static int value_level = 0, saved_meta_pos = -1;
+ /* xml_add_char() skips any content inside menus when output format is
+ Docbook, so @value{} is no use there. Also start_pos and end_pos does not
+ get updated, causing name to be empty string. So just return. */
+ if (docbook && in_menu)
+ return;
+
/* All the text after @value{ upto the matching } will eventually
disappear from output_paragraph, when this function is called
with ARG == END. If the text produced until then sets
@@ -3833,11 +3662,18 @@ cm_value (arg, start_pos, end_pos)
among other things. */
if (value)
- execute_string ("%s", value);
+ {
+ /* We need to get past the closing brace since the value may
+ expand to a context-sensitive macro (e.g. @xref) and produce
+ spurious warnings */
+ input_text_offset++;
+ execute_string ("%s", value);
+ input_text_offset--;
+ }
else
{
- warning (_("undefined flag: %s"), name);
- add_word_args (_("{No value for `%s'}"), name);
+ warning (_("undefined flag: %s"), name);
+ add_word_args (_("{No value for `%s'}"), name);
}
free (name);
@@ -3845,9 +3681,8 @@ cm_value (arg, start_pos, end_pos)
}
/* Set, clear, or conditionalize based on ACTION. */
-void
-handle_variable (action)
- int action;
+static void
+handle_variable (int action)
{
char *name;
@@ -3861,10 +3696,8 @@ handle_variable (action)
free (name);
}
-void
-handle_variable_internal (action, name)
- int action;
- char *name;
+static void
+handle_variable_internal (int action, char *name)
{
char *temp;
int delimiter, additional_text_present = 0;
@@ -4020,7 +3853,6 @@ handle_variable_internal (action, name)
}
/* Execution of random text not in file. */
-
typedef struct {
char *string; /* The string buffer. */
int size; /* The size of the buffer. */
@@ -4031,9 +3863,8 @@ static EXECUTION_STRING **execution_strings = NULL;
static int execution_strings_index = 0;
static int execution_strings_slots = 0;
-EXECUTION_STRING *
-get_execution_string (initial_size)
- int initial_size;
+static EXECUTION_STRING *
+get_execution_string (int initial_size)
{
int i = 0;
EXECUTION_STRING *es = NULL;
@@ -4081,9 +3912,7 @@ get_execution_string (initial_size)
entry in the execution_strings[] array and change the .STRING and
.SIZE members of that entry as appropriate. */
void
-maybe_update_execution_strings (text, new_len)
- char **text;
- unsigned new_len;
+maybe_update_execution_strings (char **text, unsigned int new_len)
{
int i = 0;
@@ -4127,10 +3956,11 @@ execute_string (format, va_alist)
#endif
{
EXECUTION_STRING *es;
- char *temp_string;
+ char *temp_string, *temp_input_filename;
#ifdef VA_FPRINTF
va_list ap;
#endif
+ int insertion_level_at_start = insertion_level;
es = get_execution_string (EXECUTE_STRING_MAX);
temp_string = es->string;
@@ -4147,28 +3977,50 @@ execute_string (format, va_alist)
pushfile ();
input_text_offset = 0;
input_text = temp_string;
- input_filename = xstrdup (input_filename);
input_text_length = strlen (temp_string);
+ input_filename = xstrdup (input_filename);
+ temp_input_filename = input_filename;
executing_string++;
reader_loop ();
- free (input_filename);
+
+ /* If insertion stack level changes during execution, that means a multiline
+ command is used inside braces or @section ... kind of commands. */
+ if (insertion_level_at_start != insertion_level && !executing_macro)
+ {
+ line_error (_("Multiline command %c%s used improperly"),
+ COMMAND_PREFIX,
+ command);
+ /* We also need to keep insertion_level intact to make sure warnings are
+ issued for @end ... command. */
+ while (insertion_level > insertion_level_at_start)
+ pop_insertion ();
+ }
popfile ();
executing_string--;
es->in_use = 0;
+ free (temp_input_filename);
}
/* Return what would be output for STR (in newly-malloced memory), i.e.,
- expand Texinfo commands. If IMPLICIT_CODE is set, expand @code{STR}.
- This is generally used for short texts; filling, indentation, and
- html escapes are disabled. */
+ expand Texinfo commands according to the current output format. If
+ IMPLICIT_CODE is set, expand @code{STR}. This is generally used for
+ short texts; filling, indentation, and html escapes are disabled. */
+
+char *
+expansion (char *str, int implicit_code)
+{
+ return maybe_escaped_expansion (str, implicit_code, 0);
+}
+
+
+/* Do HTML escapes according to DO_HTML_ESCAPE. Needed in
+ cm_printindex, q.v. */
char *
-expansion (str, implicit_code)
- char *str;
- int implicit_code;
+maybe_escaped_expansion (char *str, int implicit_code, int do_html_escape)
{
char *result;
@@ -4183,7 +4035,7 @@ expansion (str, implicit_code)
filling_enabled = 0;
indented_fill = 0;
no_indent = 1;
- escape_html = 0;
+ escape_html = do_html_escape;
result = full_expansion (str, implicit_code);
@@ -4198,12 +4050,10 @@ expansion (str, implicit_code)
/* Expand STR (or @code{STR} if IMPLICIT_CODE is nonzero). No change to
any formatting parameters -- filling, indentation, html escapes,
- etc., are not reset. */
+ etc., are not reset. Always returned in new memory. */
char *
-full_expansion (str, implicit_code)
- char *str;
- int implicit_code;
+full_expansion (char *str, int implicit_code)
{
int length;
char *result;
@@ -4260,18 +4110,20 @@ full_expansion (str, implicit_code)
format is. */
char *
-text_expansion (str)
- char *str;
+text_expansion (char *str)
{
char *ret;
int save_html = html;
int save_xml = xml;
+ int save_docbook = docbook;
html = 0;
xml = 0;
+ docbook = 0;
ret = expansion (str, 0);
html = save_html;
xml = save_xml;
+ docbook = save_docbook;
return ret;
}
@@ -4285,8 +4137,7 @@ text_expansion (str)
If NUM is zero, we assume `none'.
Returns 0 if successful, or nonzero if STRING isn't one of the above. */
int
-set_paragraph_indent (string)
- char *string;
+set_paragraph_indent (char *string)
{
if (strcmp (string, "asis") == 0 || strcmp (string, _("asis")) == 0)
paragraph_start_indent = 0;
diff --git a/contrib/texinfo/makeinfo/makeinfo.h b/contrib/texinfo/makeinfo/makeinfo.h
index dd77fe6..de4d423 100644
--- a/contrib/texinfo/makeinfo/makeinfo.h
+++ b/contrib/texinfo/makeinfo/makeinfo.h
@@ -1,7 +1,7 @@
/* makeinfo.h -- declarations for Makeinfo.
- $Id: makeinfo.h,v 1.10 2003/05/12 13:12:32 karl Exp $
+ $Id: makeinfo.h,v 1.17 2004/11/30 02:03:23 karl Exp $
- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -31,13 +31,6 @@
/* Hardcoded per GNU standards, not dependent on argv[0]. */
DECLARE (char *, progname, "makeinfo");
-
-enum reftype
-{
- menu_reference, followed_reference
-};
-
-extern char *get_xref_token ();
/* Nonzero means a string is in execution, as opposed to a file. */
DECLARE (int, executing_string, 0);
@@ -45,8 +38,6 @@ DECLARE (int, executing_string, 0);
/* Nonzero means to inhibit writing macro expansions to the output
stream, because it has already been written. */
DECLARE (int, me_inhibit_expansion, 0);
-
-extern char *expansion (), *text_expansion (), *full_expansion ();
/* Current output stream. */
DECLARE (FILE *, output_stream, NULL);
@@ -68,6 +59,10 @@ DECLARE (int, output_column, 0);
/* Position in the output file. */
DECLARE (int, output_position, 0);
+/* Number of lines in the output. */
+DECLARE (int, output_line_number, 1);
+DECLARE (int, node_line_number, 0);
+
/* The offset into OUTPUT_PARAGRAPH where we have a meta character
produced by a markup such as @code or @dfn. */
DECLARE (int, meta_char_pos, -1);
@@ -96,8 +91,15 @@ DECLARE (int, current_indent, 0);
DECLARE (int, do_first_par_indent, 0);
/* Amount by which @example indentation increases/decreases. */
+DECLARE (int, example_indentation_increment, 5);
+
+/* Amount by which @table, @defun, etc. indentation increases/decreases. */
DECLARE (int, default_indentation_increment, 5);
+/* Amount by which xml indentation increases/decreases.
+ Zero means unnecessary whitespace is compressed. */
+DECLARE (int, xml_indentation_increment, 2);
+
/* Nonzero indicates that filling a line also indents the new line. */
DECLARE (int, indented_fill, 0);
@@ -133,7 +135,6 @@ DECLARE (int, enable_encoding, 0);
/* Nonzero means escape characters in HTML output. */
DECLARE (int, escape_html, 1);
-extern char *escape_string (); /* do HTML escapes */
/* Access key number for next menu entry to be generated (1 to 9, or 10 to
mean no access key) */
@@ -154,6 +155,9 @@ DECLARE (char *, current_node, NULL);
/* Command name in the process of being hacked. */
DECLARE (char *, command, NULL);
+/* Nonzero if we have seen an @titlepage command. */
+DECLARE (int, titlepage_cmd_present, 0);
+
/* @copying ... @end copying. */
DECLARE (char *, copying_text, NULL);
@@ -186,6 +190,9 @@ DECLARE (char *, css_include, NULL);
is, generate plain text. (--no-headers) */
DECLARE (int, no_headers, 0);
+/* Nonzero means that we process @docbook and @ifdocbook. (--ifdocbook) */
+DECLARE (int, process_docbook, 0);
+
/* Nonzero means that we process @html and @rawhtml even when not
generating HTML. (--ifhtml) */
DECLARE (int, process_html, 0);
@@ -218,7 +225,7 @@ DECLARE (int, verbose_mode, 0);
/* Nonzero means prefix each @chapter, ... with a number like
1, 1.1, etc. (--number-sections) */
-DECLARE (int, number_sections, 0);
+DECLARE (int, number_sections, 1);
/* Nonzero means split size. When zero, DEFAULT_SPLIT_SIZE is used. */
DECLARE (int, split_size, 0);
@@ -262,8 +269,16 @@ DECLARE (int, expensive_validation, 0);
#define digit_value(c) ((c) - '0')
#endif
-#define HTML_SAFE "$-_.+!*'()"
-#define URL_SAFE_CHAR(ch) (isalnum (ch) || strchr (HTML_SAFE, ch))
+/* These characters are not really HTML-safe (with strict XHTML),
+ and also there are possible collisions. That's the whole reason we
+ designed a new conversion scheme in the first place. But we
+ nevertheless need to generate the old names. See
+ `add_escaped_anchor_name' in html.c. */
+#define OLD_HTML_SAFE "$-_.+!*'()"
+#define OLD_URL_SAFE_CHAR(ch) (strchr (OLD_HTML_SAFE, ch))
+
+/* For the current/stable scheme. */
+#define URL_SAFE_CHAR(ch) (isalnum (ch))
#define COMMAND_PREFIX '@'
@@ -296,7 +311,76 @@ DECLARE (int, splitting, 1); /* Defaults to true for now. */
#define looking_at(string) \
(strncmp (input_text + input_text_offset, string, strlen (string)) == 0)
+/* Any list with a member named `next'. */
+typedef struct generic_list {
+ struct generic_list *next;
+} GENERIC_LIST;
+
+/* Reverse the order of a list. */
+extern GENERIC_LIST * reverse_list (GENERIC_LIST *list);
+
/* Possibly return Local Variables trailer for Info output. */
-extern char *info_trailer ();
+extern char *info_trailer (void),
+ *expansion (char *str, int implicit_code),
+ *text_expansion (char *str),
+ *maybe_escaped_expansion (char *str, int implicit_code, int do_escape_html),
+ *full_expansion (char *str, int implicit_code);
+
+extern void free_and_clear (char **pointer),
+ add_word (char *string),
+ add_char (int character),
+ add_meta_char (int character),
+ close_single_paragraph (void),
+ insert_string (const char *),
+ insert (int character),
+ get_rest_of_line (int expand, char **string),
+ add_html_block_elt (char *string),
+ get_until_in_braces (char *match, char **string),
+ get_until_in_line (int expand, char *match, char **string),
+ canon_white (char *string),
+ discard_until (char *string),
+ indent (int amount),
+ kill_self_indent (int count),
+ backup_input_pointer (void),
+ inhibit_output_flushing (void),
+ uninhibit_output_flushing (void),
+ flush_output (void),
+ start_paragraph (void),
+ close_paragraph (void),
+ close_insertion_paragraph (void),
+ init_paragraph (void),
+ ignore_blank_line (void),
+ reader_loop (void),
+ discard_braces (void),
+ replace_with_expansion (int from, int *to),
+ fix_whitespace (char *string),
+ add_html_elt (char *string);
+
+extern int get_until (char *match, char **string),
+ set_paragraph_indent (char *string),
+ self_delimiting (int character),
+ search_forward (char *string, int from),
+ search_forward_until_pos (char *string, int from, int end_pos),
+ next_nonwhitespace_character (void),
+ fs_error (char *filename);
+
+#if defined (VA_FPRINTF) && __STDC__
+/* Unfortunately we must use prototypes if we are to use <stdarg.h>. */
+extern void add_word_args (const char *, ...),
+ add_html_block_elt_args (const char *, ...),
+ execute_string (char *, ...),
+ warning (const char *format, ...),
+ error (const char *format, ...),
+ line_error (const char *format, ...),
+ file_line_error (char *infile, int lno, const char *format, ...);
+#else
+extern void add_word_args (),
+ add_html_block_elt_args (),
+ execute_string (),
+ warning (),
+ error (),
+ line_error (),
+ file_line_error ();
+#endif /* no prototypes */
#endif /* not MAKEINFO_H */
diff --git a/contrib/texinfo/makeinfo/multi.c b/contrib/texinfo/makeinfo/multi.c
index d5cc19c..06c548f 100644
--- a/contrib/texinfo/makeinfo/multi.c
+++ b/contrib/texinfo/makeinfo/multi.c
@@ -1,7 +1,7 @@
/* multi.c -- multiple-column tables (@multitable) for makeinfo.
- $Id: multi.c,v 1.4 2002/11/04 21:28:10 karl Exp $
+ $Id: multi.c,v 1.8 2004/04/11 17:56:47 karl Exp $
- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -18,11 +18,13 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- Written by phr@gnu.org (Paul Rubin). */
+ Originally written by phr@gnu.org (Paul Rubin). */
#include "system.h"
+#include "cmds.h"
#include "insertion.h"
#include "makeinfo.h"
+#include "multi.h"
#include "xml.h"
#define MAXCOLS 100 /* remove this limit later @@ */
@@ -66,6 +68,13 @@ struct env
/* index in environment table of currently selected environment */
static int current_env_no;
+/* current column number */
+static int current_column_no;
+
+/* We need to make a difference between template based widths and
+ @columnfractions for HTML tables' sake. Sigh. */
+static int seen_column_fractions;
+
/* column number of last column in current multitable */
static int last_column;
@@ -75,133 +84,13 @@ static int hsep, vsep;
/* whether this is the first row. */
static int first_row;
-
-static void output_multitable_row ();
-/* Output a row. Calls insert, but also flushes the buffered output
- when we see a newline, since in multitable every line is a separate
- paragraph. */
-static void
-out_char (ch)
- int ch;
-{
- if (html)
- add_char (ch);
- else
- {
- int env = select_output_environment (0);
- insert (ch);
- if (ch == '\n')
- {
- uninhibit_output_flushing ();
- flush_output ();
- inhibit_output_flushing ();
- }
- select_output_environment (env);
- }
-}
-
-
-void
-draw_horizontal_separator ()
-{
- int i, j, s;
-
- if (html)
- {
- add_word ("<hr>");
- return;
- }
- if (xml)
- return;
-
- for (s = 0; s < envs[0].current_indent; s++)
- out_char (' ');
- if (vsep)
- out_char ('+');
- for (i = 1; i <= last_column; i++) {
- for (j = 0; j <= envs[i].fill_column; j++)
- out_char ('-');
- if (vsep)
- out_char ('+');
- }
- out_char ('\n');
-}
-
-
-/* multitable strategy:
- for each item {
- for each column in an item {
- initialize a new paragraph
- do ordinary formatting into the new paragraph
- save the paragraph away
- repeat if there are more paragraphs in the column
- }
- dump out the saved paragraphs and free the storage
- }
-
- For HTML we construct a simple HTML 3.2 table with <br>s inserted
- to help non-tables browsers. `@item' inserts a <tr> and `@tab'
- inserts <td>; we also try to close <tr>. The only real
- alternative is to rely on the info formatting engine and present
- preformatted text. */
-
-void
-do_multitable ()
-{
- int ncolumns;
-
- if (multitable_active)
- {
- line_error ("Multitables cannot be nested");
- return;
- }
-
- close_single_paragraph ();
-
- /* scan the current item function to get the field widths
- and number of columns, and set up the output environment list
- accordingly. */
- /* if (docbook)*/ /* 05-08 */
- if (xml)
- xml_no_para = 1;
- ncolumns = setup_multitable_parameters ();
- first_row = 1;
-
- /* <p> for non-tables browsers. @multitable implicitly ends the
- current paragraph, so this is ok. */
- if (html)
- add_word ("<p><table>");
- /* else if (docbook)*/ /* 05-08 */
- else if (xml)
- {
- int *widths = xmalloc (ncolumns * sizeof (int));
- int i;
- for (i=0; i<ncolumns; i++)
- widths[i] = envs[i+1].fill_column;
- xml_begin_multitable (ncolumns, widths);
- free (widths);
- }
-
- if (hsep)
- draw_horizontal_separator ();
-
- /* The next @item command will direct stdout into the first column
- and start processing. @tab will then switch to the next column,
- and @item will flush out the saved output and return to the first
- column. Environment #1 is the first column. (Environment #0 is
- the normal output) */
-
- ++multitable_active;
-}
-
/* Called to handle a {...} template on the @multitable line.
We're at the { and our first job is to find the matching }; as a side
effect, we change *PARAMS to point to after it. Our other job is to
expand the template text and return the width of that string. */
static unsigned
-find_template_width (params)
- char **params;
+find_template_width (char **params)
{
char *template, *xtemplate;
unsigned len;
@@ -241,12 +130,63 @@ find_template_width (params)
return len;
}
+/* Direct current output to environment number N. Used when
+ switching work from one column of a multitable to the next.
+ Returns previous environment number. */
+static int
+select_output_environment (int n)
+{
+ struct env *e = &envs[current_env_no];
+ int old_env_no = current_env_no;
+
+ /* stash current env info from global vars into the old environment */
+ e->output_paragraph = output_paragraph;
+ e->output_paragraph_offset = output_paragraph_offset;
+ e->meta_char_pos = meta_char_pos;
+ e->output_column = output_column;
+ e->paragraph_is_open = paragraph_is_open;
+ e->current_indent = current_indent;
+ e->fill_column = fill_column;
+
+ /* now copy new environment into global vars */
+ current_env_no = n;
+ e = &envs[current_env_no];
+ output_paragraph = e->output_paragraph;
+ output_paragraph_offset = e->output_paragraph_offset;
+ meta_char_pos = e->meta_char_pos;
+ output_column = e->output_column;
+ paragraph_is_open = e->paragraph_is_open;
+ current_indent = e->current_indent;
+ fill_column = e->fill_column;
+ return old_env_no;
+}
+
+/* Initialize environment number ENV_NO, of width WIDTH.
+ The idea is that we're going to use one environment for each column of
+ a multitable, so we can build them up separately and print them
+ all out at the end. */
+static int
+setup_output_environment (int env_no, int width)
+{
+ int old_env = select_output_environment (env_no);
+
+ /* clobber old environment and set width of new one */
+ init_paragraph ();
+
+ /* make our change */
+ fill_column = width;
+
+ /* Save new environment and restore previous one. */
+ select_output_environment (old_env);
+
+ return env_no;
+}
/* Read the parameters for a multitable from the current command
line, save the parameters away, and return the
number of columns. */
-int
-setup_multitable_parameters ()
+static int
+setup_multitable_parameters (void)
{
char *params = insertion_stack->item_function;
int nchars;
@@ -259,6 +199,9 @@ setup_multitable_parameters ()
but TeX doesn't either. */
hsep = vsep = 0;
+ /* Assume no @columnfractions per default. */
+ seen_column_fractions = 0;
+
while (*params) {
while (whitespace (*params))
params++;
@@ -272,6 +215,7 @@ setup_multitable_parameters ()
else if (strcmp (command, "@vsep") == 0)
vsep++;
else if (strcmp (command, "@columnfractions") == 0) {
+ seen_column_fractions = 1;
/* Clobber old environments and create new ones, starting at #1.
Environment #0 is the normal output, so don't mess with it. */
for ( ; i <= MAXCOLS; i++) {
@@ -282,19 +226,26 @@ setup_multitable_parameters ()
number) and then non-whitespace (the number). */
while (*params && (*params == ' ' || *params == '\t'))
params++;
- /* Hmm, but what about @columnfractions 3foo. Well, I suppose
+ /* Hmm, but what about @columnfractions 3foo. Oh well,
it's invalid input anyway. */
while (*params && *params != ' ' && *params != '\t'
&& *params != '\n' && *params != '@')
params++;
- setup_output_environment (i,
- (int) (columnfrac * (fill_column - current_indent) + .5));
+
+ {
+ /* For html/xml/docbook, translate fractions into integer
+ percentages, adding .005 to avoid rounding problems. For
+ info, we want the character width. */
+ int width = xml || html ? (columnfrac + .005) * 100
+ : (columnfrac * (fill_column - current_indent) + .5);
+ setup_output_environment (i, width);
+ }
}
}
} else if (*params == '{') {
unsigned template_width = find_template_width (&params);
-
+
/* This gives us two spaces between columns. Seems reasonable.
How to take into account current_indent here? */
setup_output_environment (i++, template_width + 2);
@@ -313,64 +264,130 @@ done:
return last_column;
}
-/* Initialize environment number ENV_NO, of width WIDTH.
- The idea is that we're going to use one environment for each column of
- a multitable, so we can build them up separately and print them
- all out at the end. */
-int
-setup_output_environment (env_no, width)
- int env_no;
- int width;
+/* Output a row. Calls insert, but also flushes the buffered output
+ when we see a newline, since in multitable every line is a separate
+ paragraph. */
+static void
+out_char (int ch)
{
- int old_env = select_output_environment (env_no);
+ if (html || xml)
+ add_char (ch);
+ else
+ {
+ int env = select_output_environment (0);
+ insert (ch);
+ if (ch == '\n')
+ {
+ uninhibit_output_flushing ();
+ flush_output ();
+ inhibit_output_flushing ();
+ }
+ select_output_environment (env);
+ }
+}
- /* clobber old environment and set width of new one */
- init_paragraph ();
- /* make our change */
- fill_column = width;
+static void
+draw_horizontal_separator (void)
+{
+ int i, j, s;
- /* Save new environment and restore previous one. */
- select_output_environment (old_env);
+ if (html)
+ {
+ add_word ("<hr>");
+ return;
+ }
+ if (xml)
+ return;
- return env_no;
+ for (s = 0; s < envs[0].current_indent; s++)
+ out_char (' ');
+ if (vsep)
+ out_char ('+');
+ for (i = 1; i <= last_column; i++) {
+ for (j = 0; j <= envs[i].fill_column; j++)
+ out_char ('-');
+ if (vsep)
+ out_char ('+');
+ }
+ out_char (' ');
+ out_char ('\n');
}
-/* Direct current output to environment number N. Used when
- switching work from one column of a multitable to the next.
- Returns previous environment number. */
-int
-select_output_environment (n)
- int n;
+
+/* multitable strategy:
+ for each item {
+ for each column in an item {
+ initialize a new paragraph
+ do ordinary formatting into the new paragraph
+ save the paragraph away
+ repeat if there are more paragraphs in the column
+ }
+ dump out the saved paragraphs and free the storage
+ }
+
+ For HTML we construct a simple HTML 3.2 table with <br>s inserted
+ to help non-tables browsers. `@item' inserts a <tr> and `@tab'
+ inserts <td>; we also try to close <tr>. The only real
+ alternative is to rely on the info formatting engine and present
+ preformatted text. */
+
+void
+do_multitable (void)
{
- struct env *e = &envs[current_env_no];
- int old_env_no = current_env_no;
+ int ncolumns;
- /* stash current env info from global vars into the old environment */
- e->output_paragraph = output_paragraph;
- e->output_paragraph_offset = output_paragraph_offset;
- e->meta_char_pos = meta_char_pos;
- e->output_column = output_column;
- e->paragraph_is_open = paragraph_is_open;
- e->current_indent = current_indent;
- e->fill_column = fill_column;
+ if (multitable_active)
+ {
+ line_error ("Multitables cannot be nested");
+ return;
+ }
- /* now copy new environment into global vars */
- current_env_no = n;
- e = &envs[current_env_no];
- output_paragraph = e->output_paragraph;
- output_paragraph_offset = e->output_paragraph_offset;
- meta_char_pos = e->meta_char_pos;
- output_column = e->output_column;
- paragraph_is_open = e->paragraph_is_open;
- current_indent = e->current_indent;
- fill_column = e->fill_column;
- return old_env_no;
+ close_single_paragraph ();
+
+ if (xml)
+ {
+ xml_no_para = 1;
+ if (output_paragraph[output_paragraph_offset-1] == '\n')
+ output_paragraph_offset--;
+ }
+
+ /* scan the current item function to get the field widths
+ and number of columns, and set up the output environment list
+ accordingly. */
+ ncolumns = setup_multitable_parameters ();
+ first_row = 1;
+
+ /* <p> for non-tables browsers. @multitable implicitly ends the
+ current paragraph, so this is ok. */
+ if (html)
+ add_html_block_elt ("<p><table summary=\"\">");
+ /* else if (docbook)*/ /* 05-08 */
+ else if (xml)
+ {
+ int *widths = xmalloc (ncolumns * sizeof (int));
+ int i;
+ for (i=0; i<ncolumns; i++)
+ widths[i] = envs[i+1].fill_column;
+ xml_begin_multitable (ncolumns, widths);
+ free (widths);
+ }
+
+ if (hsep)
+ draw_horizontal_separator ();
+
+ /* The next @item command will direct stdout into the first column
+ and start processing. @tab will then switch to the next column,
+ and @item will flush out the saved output and return to the first
+ column. Environment #1 is the first column. (Environment #0 is
+ the normal output) */
+
+ ++multitable_active;
}
/* advance to the next environment number */
-void
-nselect_next_environment ()
+static void
+nselect_next_environment (void)
{
if (current_env_no >= last_column) {
line_error (_("Too many columns in multitable item (max %d)"), last_column);
@@ -382,8 +399,8 @@ nselect_next_environment ()
/* do anything needed at the beginning of processing a
multitable column. */
-void
-init_column ()
+static void
+init_column (void)
{
/* don't indent 1st paragraph in the item */
cm_noindent ();
@@ -392,50 +409,8 @@ init_column ()
skip_whitespace ();
}
-/* start a new item (row) of a multitable */
-int
-multitable_item ()
-{
- if (!multitable_active) {
- line_error ("multitable_item internal error: no active multitable");
- xexit (1);
- }
-
- if (html)
- {
- if (!first_row)
- add_word ("<br></td></tr>"); /* <br> for non-tables browsers. */
- add_word ("<tr align=\"left\"><td valign=\"top\">");
- first_row = 0;
- return 0;
- }
- /* else if (docbook)*/ /* 05-08 */
- else if (xml)
- {
- xml_end_multitable_row (first_row);
- first_row = 0;
- return 0;
- }
- first_row = 0;
-
- if (current_env_no > 0) {
- output_multitable_row ();
- }
- /* start at column 1 */
- select_output_environment (1);
- if (!output_paragraph) {
- line_error (_("[unexpected] cannot select column #%d in multitable"),
- current_env_no);
- xexit (1);
- }
-
- init_column ();
-
- return 0;
-}
-
static void
-output_multitable_row ()
+output_multitable_row (void)
{
/* offset in the output paragraph of the next char needing
to be output for that column. */
@@ -520,18 +495,108 @@ output_multitable_row ()
}
}
+int after_headitem = 0;
+int headitem_row = 0;
+
+/* start a new item (row) of a multitable */
+int
+multitable_item (void)
+{
+ if (!multitable_active) {
+ line_error ("multitable_item internal error: no active multitable");
+ xexit (1);
+ }
+
+ current_column_no = 1;
+
+ if (html)
+ {
+ if (!first_row)
+ /* <br> for non-tables browsers. */
+ add_word_args ("<br></%s></tr>", after_headitem ? "th" : "td");
+
+ if (seen_column_fractions)
+ add_word_args ("<tr align=\"left\"><%s valign=\"top\" width=\"%d%%\">",
+ headitem_flag ? "th" : "td",
+ envs[current_column_no].fill_column);
+ else
+ add_word_args ("<tr align=\"left\"><%s valign=\"top\">",
+ headitem_flag ? "th" : "td");
+
+ if (headitem_flag)
+ after_headitem = 1;
+ else
+ after_headitem = 0;
+ first_row = 0;
+ headitem_row = headitem_flag;
+ headitem_flag = 0;
+ return 0;
+ }
+ /* else if (docbook)*/ /* 05-08 */
+ else if (xml)
+ {
+ xml_end_multitable_row (first_row);
+ if (headitem_flag)
+ after_headitem = 1;
+ else
+ after_headitem = 0;
+ first_row = 0;
+ headitem_flag = 0;
+ return 0;
+ }
+ first_row = 0;
+
+ if (current_env_no > 0) {
+ output_multitable_row ();
+ }
+ /* start at column 1 */
+ select_output_environment (1);
+ if (!output_paragraph) {
+ line_error (_("[unexpected] cannot select column #%d in multitable"),
+ current_env_no);
+ xexit (1);
+ }
+
+ init_column ();
+
+ if (headitem_flag)
+ hsep = 1;
+ else
+ hsep = 0;
+
+ if (headitem_flag)
+ after_headitem = 1;
+ else
+ after_headitem = 0;
+ headitem_flag = 0;
+
+ return 0;
+}
+
#undef CHAR_AT
#undef CHAR_ADDR
/* select a new column in current row of multitable */
void
-cm_tab ()
+cm_tab (void)
{
if (!multitable_active)
error (_("ignoring @tab outside of multitable"));
+
+ current_column_no++;
if (html)
- add_word ("</td><td valign=\"top\">");
+ {
+ if (seen_column_fractions)
+ add_word_args ("</%s><%s valign=\"top\" width=\"%d%%\">",
+ headitem_row ? "th" : "td",
+ headitem_row ? "th" : "td",
+ envs[current_column_no].fill_column);
+ else
+ add_word_args ("</%s><%s valign=\"top\">",
+ headitem_row ? "th" : "td",
+ headitem_row ? "th" : "td");
+ }
/* else if (docbook)*/ /* 05-08 */
else if (xml)
xml_end_multitable_column ();
@@ -544,7 +609,7 @@ cm_tab ()
/* close a multitable, flushing its output and resetting
whatever needs resetting */
void
-end_multitable ()
+end_multitable (void)
{
if (!html && !docbook)
output_multitable_row ();
@@ -558,7 +623,7 @@ end_multitable ()
close_insertion_paragraph ();
if (html)
- add_word ("<br></td></tr></table>\n");
+ add_word_args ("<br></%s></tr></table>\n", headitem_row ? "th" : "td");
/* else if (docbook)*/ /* 05-08 */
else if (xml)
xml_end_multitable ();
diff --git a/contrib/texinfo/makeinfo/multi.h b/contrib/texinfo/makeinfo/multi.h
new file mode 100644
index 0000000..64311e0
--- /dev/null
+++ b/contrib/texinfo/makeinfo/multi.h
@@ -0,0 +1,28 @@
+/* multi.h -- declarations for multi.c.
+ $Id: multi.h,v 1.1 2004/04/11 17:56:47 karl Exp $
+
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef MULTI_H
+#define MULTI_H
+
+extern void do_multitable (void);
+extern void end_multitable (void);
+extern int multitable_item (void);
+
+#endif /* !MULTI_H */
diff --git a/contrib/texinfo/makeinfo/node.c b/contrib/texinfo/makeinfo/node.c
index 2215d4c..07a37fe 100644
--- a/contrib/texinfo/makeinfo/node.c
+++ b/contrib/texinfo/makeinfo/node.c
@@ -1,7 +1,7 @@
/* node.c -- nodes for Texinfo.
- $Id: node.c,v 1.12 2003/05/01 00:30:07 karl Exp $
+ $Id: node.c,v 1.27 2004/12/20 23:56:07 karl Exp $
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -21,6 +21,7 @@
#include "system.h"
#include "cmds.h"
#include "files.h"
+#include "float.h"
#include "footnote.h"
#include "macro.h"
#include "makeinfo.h"
@@ -30,12 +31,12 @@
#include "insertion.h"
#include "xml.h"
-
/* See comments in node.h. */
NODE_REF *node_references = NULL;
NODE_REF *node_node_references = NULL;
TAG_ENTRY *tag_table = NULL;
int node_number = -1;
+int node_order = 0;
int current_section = 0;
int outstanding_node = 0;
@@ -43,7 +44,7 @@ int outstanding_node = 0;
/* Start a new tag table. */
void
-init_tag_table ()
+init_tag_table (void)
{
while (tag_table)
{
@@ -61,8 +62,7 @@ init_tag_table ()
INDIRECT_P says how to format the output (it depends on whether the
table is direct or indirect). */
static void
-write_tag_table_internal (indirect_p)
- int indirect_p;
+write_tag_table_internal (int indirect_p)
{
TAG_ENTRY *node;
int old_indent = no_indent;
@@ -112,29 +112,37 @@ write_tag_table_internal (indirect_p)
}
void
-write_tag_table ()
+write_tag_table (char *filename)
{
+ output_stream = fopen (filename, "a");
+ if (!output_stream)
+ {
+ fs_error (filename);
+ return;
+ }
+
write_tag_table_internal (0); /* Not indirect. */
+
+ if (fclose (output_stream) != 0)
+ fs_error (filename);
}
-void
-write_tag_table_indirect ()
+static void
+write_tag_table_indirect (void)
{
write_tag_table_internal (1);
}
/* Convert "top" and friends into "Top". */
static void
-normalize_node_name (string)
- char *string;
+normalize_node_name (char *string)
{
if (strcasecmp (string, "Top") == 0)
strcpy (string, "Top");
}
-char *
-get_node_token (expand)
- int expand;
+static char *
+get_node_token (int expand)
{
char *string;
@@ -154,8 +162,7 @@ get_node_token (expand)
/* Expand any macros and other directives in a node name, and
return the expanded name as an malloc'ed string. */
char *
-expand_node_name (node)
- char *node;
+expand_node_name (char *node)
{
char *result = node;
@@ -175,8 +182,7 @@ expand_node_name (node)
/* Look up NAME in the tag table, and return the associated
tag_entry. If the node is not in the table return NULL. */
TAG_ENTRY *
-find_node (name)
- char *name;
+find_node (char *name)
{
TAG_ENTRY *tag = tag_table;
char *expanded_name;
@@ -223,9 +229,8 @@ find_node (name)
/* Look in the tag table for a node whose file name is FNAME, and
return the associated tag_entry. If there's no such node in the
table, return NULL. */
-TAG_ENTRY *
-find_node_by_fname (fname)
- char *fname;
+static TAG_ENTRY *
+find_node_by_fname (char *fname)
{
TAG_ENTRY *tag = tag_table;
while (tag)
@@ -241,8 +246,7 @@ find_node_by_fname (fname)
/* Remember next, prev, etc. references in a @node command, where we
don't care about most of the entries. */
static void
-remember_node_node_reference (node)
- char *node;
+remember_node_node_reference (char *node)
{
NODE_REF *temp = xmalloc (sizeof (NODE_REF));
int number;
@@ -263,10 +267,9 @@ remember_node_node_reference (node)
}
/* Remember NODE and associates. */
-void
-remember_node (node, prev, next, up, position, line_no, fname, flags)
- char *node, *prev, *next, *up, *fname;
- int position, line_no, flags;
+static void
+remember_node (char *node, char *prev, char *next, char *up,
+ int position, int line_no, char *fname, int flags)
{
/* Check for existence of this tag already. */
if (validating)
@@ -314,6 +317,11 @@ remember_node (node, prev, next, up, position, line_no, fname, flags)
new->html_fname
= normalize_filename (filename_part (current_output_filename));
new->next_ent = tag_table;
+
+ /* Increment the order counter, and save it. */
+ node_order++;
+ new->order = node_order;
+
tag_table = new;
}
@@ -330,10 +338,7 @@ remember_node (node, prev, next, up, position, line_no, fname, flags)
output file has been written, if validation is on, then we use the
contents of `node_references' as a list of nodes to validate. */
void
-remember_node_reference (node, line, type)
- char *node;
- int line;
- enum reftype type;
+remember_node_reference (char *node, int line, enum reftype type)
{
NODE_REF *temp = xmalloc (sizeof (NODE_REF));
int number = number_of_node (node);
@@ -357,8 +362,7 @@ remember_node_reference (node, line, type)
}
static void
-isolate_nodename (nodename)
- char *nodename;
+isolate_nodename (char *nodename)
{
int i, c;
int paren_seen, paren;
@@ -417,9 +421,7 @@ isolate_nodename (nodename)
just before the menu line. If REMEMBER_REF is zero, REF_TYPE is unused. */
#define MENU_STARTER "* "
char *
-glean_node_from_menu (remember_ref, ref_type)
- int remember_ref;
- enum reftype ref_type;
+glean_node_from_menu (int remember_ref, enum reftype ref_type)
{
int i, orig_offset = input_text_offset;
char *nodename;
@@ -473,14 +475,60 @@ glean_node_from_menu (remember_ref, ref_type)
/* Set the name of the current output file. */
void
-set_current_output_filename (fname)
- const char *fname;
+set_current_output_filename (const char *fname)
{
if (current_output_filename)
free (current_output_filename);
current_output_filename = xstrdup (fname);
}
+
+/* Output the <a name="..."></a> constructs for NODE. We output both
+ the new-style conversion and the old-style, if they are different.
+ See comments at `add_escaped_anchor_name' in html.c. */
+
+static void
+add_html_names (char *node)
+{
+ char *tem = expand_node_name (node);
+ char *otem = xstrdup (tem);
+
+ /* Determine if the old and new schemes come up with different names;
+ only output the old scheme if that is so. We don't want to output
+ the same name twice. */
+ canon_white (otem);
+ {
+ char *optr = otem;
+ int need_old = 0;
+
+ for (; *optr; optr++)
+ {
+ if (!cr_or_whitespace (*optr) && !URL_SAFE_CHAR (*optr))
+ {
+ need_old = 1;
+ break;
+ }
+ }
+
+ if (need_old)
+ {
+ add_word ("<a name=\"");
+ add_anchor_name (otem, -1); /* old anchor name conversion */
+ add_word ("\"></a>\n");
+ }
+ free (otem);
+ }
+
+ /* Always output the new scheme. */
+ canon_white (tem);
+ add_word ("<a name=\"");
+ add_anchor_name (tem, 0);
+ add_word ("\"></a>\n");
+
+ free (tem);
+}
+
+
/* The order is: nodename, nextnode, prevnode, upnode.
If all of the NEXT, PREV, and UP fields are empty, they are defaulted.
You must follow a node command which has those fields defaulted
@@ -488,7 +536,7 @@ set_current_output_filename (fname)
It is an error not to do so.
The defaults come from the menu in this node's parent. */
void
-cm_node ()
+cm_node (void)
{
static long epilogue_len = 0L;
char *node, *prev, *next, *up;
@@ -510,7 +558,6 @@ cm_node ()
if (!html && !already_outputting_pending_notes)
{
- if (!xml)
close_paragraph ();
output_pending_notes ();
}
@@ -586,6 +633,7 @@ cm_node ()
epilogue_len = ftell (output_stream) - pos1;
fclose (output_stream);
output_stream = NULL;
+ output_position = 0;
tag = find_node_by_fname (fname_for_this_node);
}
free (fname_for_prev_node);
@@ -602,6 +650,10 @@ cm_node ()
if (macro_expansion_output_stream && !executing_string)
remember_itext (input_text, input_text_offset);
+ /* Reset the line number in each node for Info output, so that
+ index entries will save the line numbers of parent node. */
+ node_line_number = 0;
+
no_indent = 1;
if (xml)
{
@@ -621,6 +673,9 @@ cm_node ()
}
else if (!no_headers && !html)
{
+ /* Emacs Info reader cannot grok indented escape sequence. */
+ kill_self_indent (-1);
+
add_word_args ("\037\nFile: %s, Node: ", pretty_output_filename);
if (macro_expansion_output_stream && !executing_string)
@@ -633,7 +688,7 @@ cm_node ()
/* Check for defaulting of this node's next, prev, and up fields. */
defaulting = (*next == 0 && *prev == 0 && *up == 0);
- this_section = what_section (input_text + input_text_offset);
+ this_section = what_section (input_text + input_text_offset, NULL);
/* If we are defaulting, then look at the immediately following
sectioning command (error if none) to determine the node's
@@ -679,6 +734,8 @@ cm_node ()
int orig_offset, orig_size;
+ int bye_offset = search_forward ("\n@bye", input_text_offset);
+
/* No matter what, make this file point back at `(dir)'. */
free (up);
up = xstrdup ("(dir)"); /* html fixxme */
@@ -694,6 +751,7 @@ cm_node ()
input_text_offset = search_forward ("\n@menu", orig_offset);
if (input_text_offset > -1
+ && (bye_offset > -1 && input_text_offset < bye_offset)
&& cr_or_whitespace (input_text[input_text_offset + 6]))
{
char *nodename_from_menu = NULL;
@@ -911,61 +969,66 @@ cm_node ()
}
if (!splitting && no_headers)
- { /* cross refs need a name="#anchor" even if we're not writing headers*/
- add_word ("<a name=\"");
- tem = expand_node_name (node);
- add_anchor_name (tem, 0);
- add_word ("\"></a>");
- free (tem);
+ { /* cross refs need a name="#anchor" even if not writing headers */
+ add_html_names (node);
}
if (splitting || !no_headers)
{ /* Navigation bar. */
- add_word ("<div class=\"node\">\n");
+ add_html_block_elt ("<div class=\"node\">\n");
/* The <p> avoids the links area running on with old Lynxen. */
add_word_args ("<p>%s\n", splitting ? "" : "<hr>");
- add_word_args ("%s%s<a name=\"", _("Node:"), "&nbsp;");
- tem = expand_node_name (node);
- add_anchor_name (tem, 0);
- add_word_args ("\">%s</a>", tem);
- free (tem);
+
+ /* In the split HTML case, the filename is wrong for the
+ old-style converted names, but we'll add them anyway, for
+ consistency. (And we need them in the normal (not
+ no_headers) nonsplit case.) */
+ add_html_names (node);
if (next)
{
tem = expansion (next, 0);
- add_word (",\n");
- add_word (_("Next:"));
+ add_word ((char *) _("Next:"));
add_word ("&nbsp;");
+
add_word ("<a rel=\"next\" accesskey=\"n\" href=\"");
add_anchor_name (tem, 1);
+ tem = escape_string (tem);
add_word_args ("\">%s</a>", tem);
+
free (tem);
+
+ if (prev || up)
+ add_word (",\n");
}
if (prev)
{
tem = expansion (prev, 0);
- add_word (",\n");
- add_word (_("Previous:"));
+ add_word ((char *) _("Previous:"));
add_word ("&nbsp;");
add_word ("<a rel=\"previous\" accesskey=\"p\" href=\"");
add_anchor_name (tem, 1);
+ tem = escape_string (tem);
add_word_args ("\">%s</a>", tem);
free (tem);
+
+ if (up)
+ add_word (",\n");
}
if (up)
{
tem = expansion (up, 0);
- add_word (",\n");
- add_word (_("Up:"));
+ add_word ((char *) _("Up:"));
add_word ("&nbsp;");
add_word ("<a rel=\"up\" accesskey=\"u\" href=\"");
add_anchor_name (tem, 1);
+ tem = escape_string (tem);
add_word_args ("\">%s</a>", tem);
free (tem);
}
/* html fixxme: we want a `top' or `contents' link here. */
- add_word_args ("\n%s<br>\n", splitting ? "<hr>" : "");
+ add_word_args ("\n%s\n", splitting ? "<hr>" : "");
add_word ("</div>\n");
}
}
@@ -1033,8 +1096,7 @@ cm_node ()
/* Cross-reference target at an arbitrary spot. */
void
-cm_anchor (arg)
- int arg;
+cm_anchor (int arg)
{
char *anchor;
char *fname_for_anchor = NULL;
@@ -1170,9 +1232,7 @@ cm_anchor (arg)
/* Find NODE in REF_LIST. */
static NODE_REF *
-find_node_reference (node, ref_list)
- char *node;
- NODE_REF *ref_list;
+find_node_reference (char *node, NODE_REF *ref_list)
{
NODE_REF *orig_ref_list = ref_list;
char *expanded_node;
@@ -1210,7 +1270,7 @@ find_node_reference (node, ref_list)
}
void
-free_node_references ()
+free_node_references (void)
{
NODE_REF *list, *temp;
@@ -1228,7 +1288,7 @@ free_node_references ()
}
void
-free_node_node_references ()
+free_node_node_references (void)
{
NODE_REF *list, *temp;
@@ -1247,8 +1307,7 @@ free_node_node_references ()
/* Return the number assigned to a named node in either the tag_table
or node_references list or zero if no number has been assigned. */
int
-number_of_node (node)
- char *node;
+number_of_node (char *node)
{
NODE_REF *temp_ref;
TAG_ENTRY *temp_node = find_node (node);
@@ -1270,10 +1329,7 @@ number_of_node (node)
Menu, Cross, Next, etc. */
static int
-validate (tag, line, label)
- char *tag;
- int line;
- char *label;
+validate (char *tag, int line, const char *label)
{
TAG_ENTRY *result;
@@ -1299,8 +1355,7 @@ validate (tag, line, label)
the `validate' routine. They are only used in messages, thus are
translated. */
static const char *
-reftype_type_string (type)
- enum reftype type;
+reftype_type_string (enum reftype type)
{
switch (type)
{
@@ -1314,8 +1369,7 @@ reftype_type_string (type)
}
static void
-validate_other_references (ref_list)
- NODE_REF *ref_list;
+validate_other_references (NODE_REF *ref_list)
{
char *old_input_filename = input_filename;
@@ -1344,8 +1398,7 @@ validate_other_references (ref_list)
If the Next is different from the Next of the Up,
then the Next node must have a Prev pointing at this node. */
void
-validate_file (tag_table)
- TAG_ENTRY *tag_table;
+validate_file (TAG_ENTRY *tag_table)
{
char *old_input_filename = input_filename;
TAG_ENTRY *tags = tag_table;
@@ -1384,7 +1437,7 @@ validate_file (tag_table)
tem1 = expand_node_name (prev);
tem2 = expand_node_name (tags->node);
- if (STREQ (tem1, tem2))
+ if (tem1 && tem2 && STREQ (tem1, tem2))
you_lose = 0;
free (tem1);
free (tem2);
@@ -1590,8 +1643,7 @@ validate_file (tag_table)
This means only anchors follow. */
static int
-last_node_p (tags)
- TAG_ENTRY *tags;
+last_node_p (TAG_ENTRY *tags)
{
int last = 1;
while (tags->next_ent) {
@@ -1609,23 +1661,91 @@ last_node_p (tags)
}
+static char *
+enumerate_filename (char *pathname, char *basename, int number)
+{
+ /* Do we need to generate names of subfiles which don't exceed 8+3 limits? */
+ const int dos_file_names = !HAVE_LONG_FILENAMES (pathname ? pathname : ".");
+ unsigned name_len = strlen (basename);
+ char *filename = xmalloc (10 + strlen (pathname) + name_len);
+ char *base_filename = xmalloc (10 + name_len);
+
+ sprintf (base_filename, "%s-%d", basename, number);
+
+ if (dos_file_names)
+ {
+ char *dot = strchr (base_filename, '.');
+ unsigned base_len = strlen (base_filename);
+
+ if (dot)
+ { /* Make foobar.i1, .., foobar.i99, foobar.100, ... */
+ dot[1] = 'i';
+ memmove (number <= 99 ? dot + 2 : dot + 1,
+ base_filename + name_len + 1,
+ strlen (base_filename + name_len + 1) + 1);
+ }
+ else if (base_len > 8)
+ {
+ /* Make foobar-1, .., fooba-10, .., foob-100, ... */
+ unsigned numlen = base_len - name_len;
+
+ memmove (base_filename + 8 - numlen, base_filename + name_len, numlen + 1);
+ }
+ }
+
+ sprintf (filename, "%s%s", pathname, base_filename);
+
+ return filename;
+}
+
+/* Remove previously split files, to avoid
+ lingering parts of shrinked documents. */
+void
+clean_old_split_files (char *filename)
+{
+ char *root_filename = filename_part (filename);
+ char *root_pathname = pathname_part (filename);
+ int i;
+
+ /* We break as soon as we hit an inexistent file,
+ so looping until large numbers is harmless. */
+ for (i = 1; i < 1000; i++)
+ {
+ struct stat st;
+ char *check_file = enumerate_filename (root_pathname, root_filename, i);
+
+ if (stat (check_file, &st) != 0)
+ break;
+ else if (!S_ISDIR (st.st_mode))
+ {
+ /* Give feedback if requested, removing a file is important. */
+ if (verbose_mode)
+ printf (_("Removing %s\n"), check_file);
+
+ /* Warn user that we cannot remove the file. */
+ if (unlink (check_file) != 0)
+ warning (_("Can't remove file `%s': %s"), check_file, strerror (errno));
+ }
+
+ free (check_file);
+ }
+}
+
+
/* Split large output files into a series of smaller files. Each file
is pointed to in the tag table, which then gets written out as the
original file. The new files have the same name as the original file
with a "-num" attached. SIZE is the largest number of bytes to allow
in any single split file. */
void
-split_file (filename, size)
- char *filename;
- int size;
+split_file (char *filename, int size)
{
char *root_filename, *root_pathname;
- char *the_file, *filename_part ();
+ char *the_file;
struct stat fileinfo;
long file_size;
char *the_header;
int header_size;
- int dos_file_names = 0; /* if nonzero, don't exceed 8+3 limits */
/* Can only do this to files with tag tables. */
if (!tag_table)
@@ -1639,16 +1759,13 @@ split_file (filename, size)
return;
file_size = (long) fileinfo.st_size;
- the_file = find_and_load (filename);
+ the_file = find_and_load (filename, 0);
if (!the_file)
return;
root_filename = filename_part (filename);
root_pathname = pathname_part (filename);
- /* Do we need to generate names of subfiles which don't exceed 8+3 limits? */
- dos_file_names = !HAVE_LONG_FILENAMES (root_pathname ? root_pathname : ".");
-
if (!root_pathname)
root_pathname = xstrdup ("");
@@ -1751,36 +1868,9 @@ split_file (filename, size)
write_region:
{
int fd;
- char *split_filename, *split_basename;
- unsigned root_len = strlen (root_filename);
-
- split_filename = xmalloc (10 + strlen (root_pathname)
- + root_len);
- split_basename = xmalloc (10 + root_len);
- sprintf (split_basename, "%s-%d", root_filename, which_file);
- if (dos_file_names)
- {
- char *dot = strchr (split_basename, '.');
- unsigned base_len = strlen (split_basename);
-
- if (dot)
- { /* Make foobar.i1, .., foobar.i99, foobar.100, ... */
- dot[1] = 'i';
- memmove (which_file <= 99 ? dot + 2 : dot + 1,
- split_basename + root_len + 1,
- strlen (split_basename + root_len + 1) + 1);
- }
- else if (base_len > 8)
- {
- /* Make foobar-1, .., fooba-10, .., foob-100, ... */
- unsigned numlen = base_len - root_len;
-
- memmove (split_basename + 8 - numlen,
- split_basename + root_len, numlen + 1);
- }
- }
- sprintf (split_filename, "%s%s", root_pathname,
- split_basename);
+ char *split_filename = enumerate_filename (root_pathname,
+ root_filename, which_file);
+ char *split_basename = filename_part (split_filename);
fd = open (split_filename, O_WRONLY|O_TRUNC|O_CREAT, 0666);
if (fd < 0
@@ -1840,7 +1930,7 @@ split_file (filename, size)
/* preserve local variables in info output. */
if (trailer)
{
- insert_string (trailer);
+ fwrite (trailer, 1, trailer_len, output_stream);
free (trailer);
}
diff --git a/contrib/texinfo/makeinfo/node.h b/contrib/texinfo/makeinfo/node.h
index a625e88..766c503 100644
--- a/contrib/texinfo/makeinfo/node.h
+++ b/contrib/texinfo/makeinfo/node.h
@@ -1,5 +1,5 @@
/* node.h -- declarations for Node.
- $Id: node.h,v 1.1 2002/08/25 23:38:39 karl Exp $
+ $Id: node.h,v 1.2 2004/04/11 17:56:47 karl Exp $
Copyright (C) 1996, 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
@@ -22,6 +22,8 @@
#ifndef NODE_H
#define NODE_H
+#include "xref.h"
+
/* The various references that we know about. */
/* What we remember for each node. */
typedef struct tentry
@@ -39,6 +41,7 @@ typedef struct tentry
int number; /* Number for this node, relevant for HTML
splitting -- from use+define order, not just
define. */
+ int order; /* The order of the tag, starting from zero. */
char *html_fname; /* The HTML file to which this node is written
(non-NULL only for HTML splitting). */
} TAG_ENTRY;
@@ -85,6 +88,9 @@ extern TAG_ENTRY *tag_table;
/* Counter for setting node_ref.number; zero is Top. */
extern int node_number;
+/* Node order counter. */
+extern int node_order;
+
/* The current node's section level. */
extern int current_section;
@@ -92,22 +98,32 @@ extern int current_section;
corresponding to the current node in HTML mode. */
extern int outstanding_node;
-extern TAG_ENTRY *find_node ();
+extern TAG_ENTRY *find_node (char *name);
/* A search string which is used to find a line defining a node. */
DECLARE (char *, node_search_string, "\n@node ");
/* Extract node name from a menu item. */
-extern char *glean_node_from_menu ();
+extern char *glean_node_from_menu (int remember_ref, enum reftype ref_type);
/* Remember a node for later validation. */
-extern void remember_node_reference ();
+extern void remember_node_reference (char *node, int line, enum reftype type);
/* Remember the name of the current output file. */
-extern void set_current_output_filename ();
+extern void set_current_output_filename (const char *fname);
/* Expand macros and commands in the node name and canonicalize
whitespace in the resulting expansion. */
-extern char *expand_node_name ();
+extern char *expand_node_name (char *node);
+
+extern int number_of_node (char *node);
+
+extern void init_tag_table (void);
+extern void write_tag_table (char *filename);
+extern void free_node_references (void);
+extern void free_node_node_references (void);
+extern void validate_file (TAG_ENTRY *tag_table);
+extern void split_file (char *filename, int size);
+extern void clean_old_split_files (char *filename);
#endif /* NODE_H */
diff --git a/contrib/texinfo/makeinfo/sectioning.c b/contrib/texinfo/makeinfo/sectioning.c
index cd04dfa..ce32aeb 100644
--- a/contrib/texinfo/makeinfo/sectioning.c
+++ b/contrib/texinfo/makeinfo/sectioning.c
@@ -1,7 +1,7 @@
/* sectioning.c -- for @chapter, @section, ..., @contents ...
- $Id: sectioning.c,v 1.10 2003/05/13 16:37:54 karl Exp $
+ $Id: sectioning.c,v 1.25 2004/07/05 22:23:23 karl Exp $
- Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -34,6 +34,7 @@ section_alist_type section_alist[] = {
{ "unnumberedsubsec", 4, ENUM_SECT_NO, TOC_YES },
{ "unnumberedsec", 3, ENUM_SECT_NO, TOC_YES },
{ "unnumbered", 2, ENUM_SECT_NO, TOC_YES },
+ { "centerchap", 2, ENUM_SECT_NO, TOC_YES },
{ "appendixsubsubsec", 5, ENUM_SECT_APP, TOC_YES }, /* numbered like A.X.X.X */
{ "appendixsubsec", 4, ENUM_SECT_APP, TOC_YES },
@@ -81,14 +82,18 @@ static char *scoring_characters = "*=-.";
/* Amount to offset the name of sectioning commands to levels by. */
static int section_alist_offset = 0;
+/* These two variables are for @float, @cindex like commands that need to know
+ in which section they are used. */
+/* Last value returned by get_sectioning_number. */
+static char *last_sectioning_number = "";
+/* Last title used by sectioning_underscore, etc. */
+static char *last_sectioning_title = "";
/* num == ENUM_SECT_NO means unnumbered (should never call this)
num == ENUM_SECT_YES means numbered
num == ENUM_SECT_APP means numbered like A.1 and so on */
-char *
-get_sectioning_number (level, num)
- int level;
- int num;
+static char *
+get_sectioning_number (int level, int num)
{
static char s[100]; /* should ever be enough for 99.99.99.99
Appendix A.1 */
@@ -114,9 +119,14 @@ get_sectioning_number (level, num)
if ((num == ENUM_SECT_APP)
&& (i == 0)
&& (enum_marker == APPENDIX_MAGIC))
- sprintf (p, _("Appendix %c "), numbers[i] + 64);
+ sprintf (p, _("Appendix %c"), numbers[i] + 64);
else
- sprintf (p, "%d ", numbers[i]);
+ sprintf (p, "%d", numbers[i]);
+
+ /* Poor man's cache :-) */
+ if (strlen (last_sectioning_number))
+ free (last_sectioning_number);
+ last_sectioning_number = xstrdup (s);
return s;
}
@@ -124,8 +134,7 @@ get_sectioning_number (level, num)
/* Set the level of @top to LEVEL. Return the old level of @top. */
int
-set_top_section_level (level)
- int level;
+set_top_section_level (int level)
{
int i, result = -1;
@@ -141,9 +150,8 @@ set_top_section_level (level)
/* return the index of the given sectioning command in section_alist */
-int
-search_sectioning (text)
- char *text;
+static int
+search_sectioning (char *text)
{
int i;
char *t;
@@ -162,10 +170,13 @@ search_sectioning (text)
return -1;
}
-/* Return an integer which identifies the type section present in TEXT. */
+/* Return an integer which identifies the type of section present in
+ TEXT -- 1 for @top, 2 for chapters, ..., 5 for subsubsections (as
+ specified in section_alist). We take into account any @lowersections
+ and @raisesections. If SECNAME is non-NULL, also return the
+ corresponding section name. */
int
-what_section (text)
- char *text;
+what_section (char *text, char **secname)
{
int index, j;
char *temp;
@@ -205,126 +216,213 @@ what_section (text)
if (return_val < 0)
return_val = 0;
else if (return_val > 5)
- return_val = 5;
+ return_val = 5;
+
+ if (secname)
+ {
+ int i;
+ int alist_size = sizeof (section_alist) / sizeof(section_alist_type);
+ /* Find location of offset sectioning entry, but don't go off
+ either end of the array. */
+ int index_offset = MAX (index - section_alist_offset, 0);
+ index_offset = MIN (index_offset, alist_size - 1);
+
+ /* Also make sure we don't go into the next "group" of
+ sectioning changes, e.g., change from an @appendix to an
+ @heading or some such. */
+#define SIGN(expr) ((expr) < 0 ? -1 : 1)
+ for (i = index; i != index_offset; i -= SIGN (section_alist_offset))
+ {
+ /* As it happens, each group has unique .num/.toc values. */
+ if (section_alist[i].num != section_alist[index_offset].num
+ || section_alist[i].toc != section_alist[index_offset].toc)
+ break;
+ }
+ *secname = section_alist[i].name;
+ }
return return_val;
}
return -1;
}
-void
-sectioning_underscore (cmd)
- char *cmd;
+/* Returns current top level division (ie. chapter, unnumbered) number.
+ - For chapters, returns the number.
+ - For unnumbered sections, returns empty string.
+ - For appendices, returns A, B, etc. */
+char *
+current_chapter_number (void)
{
- /* If we're not indenting the first paragraph, we shall make it behave
- like @noindent is called directly after the section heading. */
- if (! do_first_par_indent)
- cm_noindent ();
-
- if (xml)
+ if (enum_marker == UNNUMBERED_MAGIC)
+ return xstrdup ("");
+ else if (enum_marker == APPENDIX_MAGIC)
{
- char *temp;
- int level;
- temp = xmalloc (2 + strlen (cmd));
- temp[0] = COMMAND_PREFIX;
- strcpy (&temp[1], cmd);
- level = what_section (temp);
- level -= 2;
- free (temp);
- xml_close_sections (level);
- /* Mark the beginning of the section
- If the next command is printindex, we will remove
- the section and put an Index instead */
- flush_output ();
- xml_last_section_output_position = output_paragraph_offset;
-
- xml_insert_element (xml_element (cmd), START);
- xml_insert_element (TITLE, START);
- xml_open_section (level, cmd);
- get_rest_of_line (0, &temp);
- execute_string ("%s\n", temp);
- free (temp);
- xml_insert_element (TITLE, END);
+ char s[1];
+ sprintf (s, "%c", numbers[0] + 64);
+ return xstrdup (s);
}
else
{
- char character;
- char *temp;
+ char s[5];
+ sprintf (s, "%d", numbers[0]);
+ return xstrdup (s);
+ }
+}
+
+/* Returns number of the last sectioning command used. */
+char *
+current_sectioning_number (void)
+{
+ if (enum_marker == UNNUMBERED_MAGIC || !number_sections)
+ return xstrdup ("");
+ else
+ return xstrdup (last_sectioning_number);
+}
+
+/* Returns arguments of the last sectioning command used. */
+char *
+current_sectioning_name (void)
+{
+ return xstrdup (last_sectioning_title);
+}
+
+/* insert_and_underscore, sectioning_underscore and sectioning_html call this. */
+
+static char *
+handle_enum_increment (int level, int index)
+{
+ /* Here is how TeX handles enumeration:
+ - Anything starting with @unnumbered is not enumerated.
+ - @majorheading and the like are not enumberated. */
+ int i;
+
+ /* First constraint above. */
+ if (enum_marker == UNNUMBERED_MAGIC && level == 0)
+ return xstrdup ("");
+
+ /* Second constraint. */
+ if (section_alist[index].num == ENUM_SECT_NO)
+ return xstrdup ("");
+
+ /* reset all counters which are one level deeper */
+ for (i = level; i < 3; i++)
+ numbers [i + 1] = 0;
+
+ numbers[level]++;
+ if (section_alist[index].num == ENUM_SECT_NO || enum_marker == UNNUMBERED_MAGIC
+ || !number_sections)
+ return xstrdup ("");
+ else
+ return xstrdup (get_sectioning_number (level, section_alist[index].num));
+}
+
+
+void
+sectioning_underscore (char *cmd)
+{
+ char *temp, *secname;
int level;
+
+ /* If we're not indenting the first paragraph, we shall make it behave
+ like @noindent is called directly after the section heading. */
+ if (! do_first_par_indent)
+ cm_noindent ();
temp = xmalloc (2 + strlen (cmd));
temp[0] = COMMAND_PREFIX;
strcpy (&temp[1], cmd);
- level = what_section (temp);
- free (temp);
+ level = what_section (temp, &secname);
level -= 2;
-
if (level < 0)
level = 0;
+ free (temp);
- if (html)
- sectioning_html (level, cmd);
- else
+ /* If the argument to @top is empty, we try using the one from @settitle.
+ Warn if both are unusable. */
+ if (STREQ (command, "top"))
{
- character = scoring_characters[level];
- insert_and_underscore (level, character, cmd);
- }
- }
-}
+ int save_input_text_offset = input_text_offset;
-/* insert_and_underscore and sectioning_html are the
- only functions which call this.
- I have created this, because it was exactly the same
- code in both functions. */
-static char *
-handle_enum_increment (level, index)
- int level;
- int index;
-{
- /* special for unnumbered */
- if (number_sections && section_alist[index].num == ENUM_SECT_NO)
- {
- if (level == 0
- && enum_marker != UNNUMBERED_MAGIC)
- enum_marker = UNNUMBERED_MAGIC;
+ get_rest_of_line (0, &temp);
+
+ /* Due to get_rest_of_line ... */
+ line_number--;
+
+ if (strlen (temp) == 0 && (!title || strlen (title) == 0))
+ warning ("Must specify a title with least one of @settitle or @top");
+
+ input_text_offset = save_input_text_offset;
}
- /* enumerate only things which are allowed */
- if (number_sections && section_alist[index].num)
+
+ if (xml)
{
- /* reset the marker if we get into enumerated areas */
- if (section_alist[index].num == ENUM_SECT_YES
- && level == 0
- && enum_marker == UNNUMBERED_MAGIC)
- enum_marker = 0;
- /* This is special for appendix; if we got the first
- time an appendix command then we are entering appendix.
- Thats the point we have to start countint with A, B and so on. */
- if (section_alist[index].num == ENUM_SECT_APP
- && level == 0
- && enum_marker != APPENDIX_MAGIC)
- {
- enum_marker = APPENDIX_MAGIC;
- numbers [0] = 0; /* this means we start with Appendix A */
- }
+ /* If the section appears in the toc, it means it's a real section
+ unlike majorheading, chapheading etc. */
+ if (section_alist[search_sectioning (cmd)].toc == TOC_YES)
+ {
+ xml_close_sections (level);
+ /* Mark the beginning of the section
+ If the next command is printindex, we will remove
+ the section and put an Index instead */
+ flush_output ();
+ xml_last_section_output_position = output_paragraph_offset;
+
+ get_rest_of_line (0, &temp);
+
+ /* Use @settitle value if @top parameter is empty. */
+ if (STREQ (command, "top") && strlen(temp) == 0)
+ temp = xstrdup (title ? title : "");
+
+ /* Docbook does not support @unnumbered at all. So we provide numbers
+ that other formats use. @appendix seems to be fine though, so we let
+ Docbook handle that as usual. */
+ if (docbook && enum_marker != APPENDIX_MAGIC)
+ {
+ if (section_alist[search_sectioning (cmd)].num == ENUM_SECT_NO
+ && section_alist[search_sectioning (cmd)].toc == TOC_YES)
+ xml_insert_element_with_attribute (xml_element (secname),
+ START, "label=\"%s\" xreflabel=\"%s\"",
+ handle_enum_increment (level, search_sectioning (cmd)),
+ text_expansion (temp));
+ else
+ xml_insert_element_with_attribute (xml_element (secname),
+ START, "label=\"%s\"",
+ handle_enum_increment (level, search_sectioning (cmd)));
+ }
+ else
+ xml_insert_element (xml_element (secname), START);
+
+ xml_insert_element (TITLE, START);
+ xml_open_section (level, secname);
+ execute_string ("%s", temp);
+ xml_insert_element (TITLE, END);
- /* only increment counters if we are not in unnumbered
- area. This handles situations like this:
- @unnumbered .... This sets enum_marker to UNNUMBERED_MAGIC
- @section .... */
- if (enum_marker != UNNUMBERED_MAGIC)
+ free (temp);
+ }
+ else
{
- int i;
+ if (docbook)
+ {
+ if (level > 0)
+ xml_insert_element_with_attribute (xml_element (secname), START,
+ "renderas=\"sect%d\"", level);
+ else
+ xml_insert_element_with_attribute (xml_element (secname), START,
+ "renderas=\"other\"");
+ }
+ else
+ xml_insert_element (xml_element (secname), START);
- /* reset all counters which are one level deeper */
- for (i = level; i < 3; i++)
- numbers [i + 1] = 0;
+ get_rest_of_line (0, &temp);
+ execute_string ("%s", temp);
+ free (temp);
- numbers[level]++;
- return xstrdup
- (get_sectioning_number (level, section_alist[index].num));
+ xml_insert_element (xml_element (secname), END);
}
- } /* if (number_sections)... */
-
- return xstrdup ("");
+ }
+ else if (html)
+ sectioning_html (level, secname);
+ else
+ insert_and_underscore (level, secname);
}
@@ -332,16 +430,14 @@ handle_enum_increment (level, index)
in a new, separate paragraph. Directly underneath it, insert a
line of WITH_CHAR, the same length of the inserted text. */
void
-insert_and_underscore (level, with_char, cmd)
- int level;
- int with_char;
- char *cmd;
+insert_and_underscore (int level, char *cmd)
{
int i, len;
int index;
int old_no_indent;
unsigned char *starting_pos, *ending_pos;
char *temp;
+ char with_char = scoring_characters[level];
close_paragraph ();
filling_enabled = indented_fill = 0;
@@ -352,13 +448,23 @@ insert_and_underscore (level, with_char, cmd)
append_to_expansion_output (input_text_offset + 1);
get_rest_of_line (0, &temp);
+
+ /* Use @settitle value if @top parameter is empty. */
+ if (STREQ (command, "top") && strlen(temp) == 0)
+ temp = xstrdup (title ? title : "");
+
starting_pos = output_paragraph + output_paragraph_offset;
+ /* Poor man's cache for section title. */
+ if (strlen (last_sectioning_title))
+ free (last_sectioning_title);
+ last_sectioning_title = xstrdup (temp);
+
index = search_sectioning (cmd);
if (index < 0)
{
/* should never happen, but a poor guy, named Murphy ... */
- warning (_("Internal error (search_sectioning) \"%s\"!"), cmd);
+ warning (_("Internal error (search_sectioning) `%s'!"), cmd);
return;
}
@@ -367,7 +473,7 @@ insert_and_underscore (level, with_char, cmd)
output. */
/* Step 1: produce "X.Y" and add it to Info output. */
- add_word (handle_enum_increment (level, index));
+ add_word_args ("%s ", handle_enum_increment (level, index));
/* Step 2: add "SECTION-NAME" to both Info and macro-expanded output. */
if (macro_expansion_output_stream && !executing_string)
@@ -404,9 +510,7 @@ insert_and_underscore (level, with_char, cmd)
tagged as an anchor for the current node.. */
void
-sectioning_html (level, cmd)
- int level;
- char *cmd;
+sectioning_html (int level, char *cmd)
{
static int toc_ref_count = 0;
int index;
@@ -419,10 +523,8 @@ sectioning_html (level, cmd)
old_no_indent = no_indent;
no_indent = 1;
- /* level 0 (chapter) is <h2>, everything else is <h3>. We don't want
- to go lower than that because browsers then start rendering the
- headings smaller than the text. */
- add_word_args ("<h%d class=\"%s\">", MIN (3, level + 2), cmd);
+ /* level 0 (chapter) is <h2>, and we go down from there. */
+ add_html_block_elt_args ("<h%d class=\"%s\">", level + 2, cmd);
/* If we are outside of any node, produce an anchor that
the TOC could refer to. */
@@ -449,6 +551,10 @@ sectioning_html (level, cmd)
get_rest_of_line (0, &temp);
+ /* Use @settitle value if @top parameter is empty. */
+ if (STREQ (command, "top") && strlen(temp) == 0)
+ temp = xstrdup (title ? title : "");
+
index = search_sectioning (cmd);
if (index < 0)
{
@@ -458,7 +564,11 @@ sectioning_html (level, cmd)
}
/* Produce "X.Y" and add it to HTML output. */
- add_word (handle_enum_increment (level, index));
+ {
+ char *title_number = handle_enum_increment (level, index);
+ if (strlen (title_number) > 0)
+ add_word_args ("%s ", title_number);
+ }
/* add the section name to both HTML and macro-expanded output. */
if (macro_expansion_output_stream && !executing_string)
@@ -492,7 +602,7 @@ sectioning_html (level, cmd)
/* Shift the meaning of @section to @chapter. */
void
-cm_raisesections ()
+cm_raisesections (void)
{
discard_until ("\n");
section_alist_offset--;
@@ -500,7 +610,7 @@ cm_raisesections ()
/* Shift the meaning of @chapter to @section. */
void
-cm_lowersections ()
+cm_lowersections (void)
{
discard_until ("\n");
section_alist_offset++;
@@ -508,8 +618,7 @@ cm_lowersections ()
/* The command still works, but prints a warning message in addition. */
void
-cm_ideprecated (arg, start, end)
- int arg, start, end;
+cm_ideprecated (int arg, int start, int end)
{
warning (_("%c%s is obsolete; use %c%s instead"),
COMMAND_PREFIX, command, COMMAND_PREFIX, command + 1);
@@ -520,7 +629,7 @@ cm_ideprecated (arg, start, end)
/* Treat this just like @unnumbered. The only difference is
in node defaulting. */
void
-cm_top ()
+cm_top (void)
{
/* It is an error to have more than one @top. */
if (top_node_seen && strcmp (current_node, "Top") != 0)
@@ -584,7 +693,8 @@ cm_top ()
if (input_text_offset < input_text_length)
input_text_offset++;
- this_section = what_section (input_text + input_text_offset);
+ this_section = what_section (input_text + input_text_offset,
+ NULL);
/* If we found a sectioning command, then give the top section
a level of this section - 1. */
@@ -598,42 +708,44 @@ cm_top ()
/* The remainder of the text on this line is a chapter heading. */
void
-cm_chapter ()
+cm_chapter (void)
{
+ enum_marker = 0;
sectioning_underscore ("chapter");
}
/* The remainder of the text on this line is a section heading. */
void
-cm_section ()
+cm_section (void)
{
sectioning_underscore ("section");
}
/* The remainder of the text on this line is a subsection heading. */
void
-cm_subsection ()
+cm_subsection (void)
{
sectioning_underscore ("subsection");
}
/* The remainder of the text on this line is a subsubsection heading. */
void
-cm_subsubsection ()
+cm_subsubsection (void)
{
sectioning_underscore ("subsubsection");
}
/* The remainder of the text on this line is an unnumbered heading. */
void
-cm_unnumbered ()
+cm_unnumbered (void)
{
+ enum_marker = UNNUMBERED_MAGIC;
sectioning_underscore ("unnumbered");
}
/* The remainder of the text on this line is an unnumbered section heading. */
void
-cm_unnumberedsec ()
+cm_unnumberedsec (void)
{
sectioning_underscore ("unnumberedsec");
}
@@ -641,7 +753,7 @@ cm_unnumberedsec ()
/* The remainder of the text on this line is an unnumbered
subsection heading. */
void
-cm_unnumberedsubsec ()
+cm_unnumberedsubsec (void)
{
sectioning_underscore ("unnumberedsubsec");
}
@@ -649,28 +761,32 @@ cm_unnumberedsubsec ()
/* The remainder of the text on this line is an unnumbered
subsubsection heading. */
void
-cm_unnumberedsubsubsec ()
+cm_unnumberedsubsubsec (void)
{
sectioning_underscore ("unnumberedsubsubsec");
}
/* The remainder of the text on this line is an appendix heading. */
void
-cm_appendix ()
+cm_appendix (void)
{
+ /* Reset top level number so we start from Appendix A */
+ if (enum_marker != APPENDIX_MAGIC)
+ numbers [0] = 0;
+ enum_marker = APPENDIX_MAGIC;
sectioning_underscore ("appendix");
}
/* The remainder of the text on this line is an appendix section heading. */
void
-cm_appendixsec ()
+cm_appendixsec (void)
{
sectioning_underscore ("appendixsec");
}
/* The remainder of the text on this line is an appendix subsection heading. */
void
-cm_appendixsubsec ()
+cm_appendixsubsec (void)
{
sectioning_underscore ("appendixsubsec");
}
@@ -678,38 +794,38 @@ cm_appendixsubsec ()
/* The remainder of the text on this line is an appendix
subsubsection heading. */
void
-cm_appendixsubsubsec ()
+cm_appendixsubsubsec (void)
{
sectioning_underscore ("appendixsubsubsec");
}
/* Compatibility functions substitute for chapter, section, etc. */
void
-cm_majorheading ()
+cm_majorheading (void)
{
sectioning_underscore ("majorheading");
}
void
-cm_chapheading ()
+cm_chapheading (void)
{
sectioning_underscore ("chapheading");
}
void
-cm_heading ()
+cm_heading (void)
{
sectioning_underscore ("heading");
}
void
-cm_subheading ()
+cm_subheading (void)
{
sectioning_underscore ("subheading");
}
void
-cm_subsubheading ()
+cm_subsubheading (void)
{
sectioning_underscore ("subsubheading");
}
diff --git a/contrib/texinfo/makeinfo/sectioning.h b/contrib/texinfo/makeinfo/sectioning.h
index 455fc32..8c3f220 100644
--- a/contrib/texinfo/makeinfo/sectioning.h
+++ b/contrib/texinfo/makeinfo/sectioning.h
@@ -1,7 +1,7 @@
/* sectioning.h -- all related stuff @chapter, @section... @contents
- $Id: sectioning.h,v 1.1 2002/08/25 23:38:39 karl Exp $
+ $Id: sectioning.h,v 1.5 2004/04/11 17:56:47 karl Exp $
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -23,28 +23,51 @@
#define SECTIONING_H
/* Sectioning. */
-extern void
- cm_chapter (), cm_unnumbered (), cm_appendix (), cm_top (),
- cm_section (), cm_unnumberedsec (), cm_appendixsec (),
- cm_subsection (), cm_unnumberedsubsec (), cm_appendixsubsec (),
- cm_subsubsection (), cm_unnumberedsubsubsec (), cm_appendixsubsubsec (),
- cm_heading (), cm_chapheading (), cm_subheading (), cm_subsubheading (),
- cm_majorheading (), cm_raisesections (), cm_lowersections (),
- cm_ideprecated ();
+/* Level 4. */
+extern void cm_chapter (void),
+ cm_unnumbered (void),
+ cm_appendix (void),
+ cm_top (void);
+
+/* Level 3. */
+extern void cm_section (void),
+ cm_unnumberedsec (void),
+ cm_appendixsec (void);
+
+/* Level 2. */
+extern void cm_subsection (void),
+ cm_unnumberedsubsec (void),
+ cm_appendixsubsec (void);
+
+/* Level 1. */
+extern void cm_subsubsection (void),
+ cm_unnumberedsubsubsec (void),
+ cm_appendixsubsubsec (void);
+
+/* Headings. */
+extern void cm_heading (void),
+ cm_chapheading (void),
+ cm_subheading (void),
+ cm_subsubheading (void),
+ cm_majorheading (void);
+
+extern void cm_raisesections (void),
+ cm_lowersections (void),
+ cm_ideprecated (int arg, int start, int end);
extern void
- sectioning_underscore (), insert_and_underscore ();
-
-extern int what_section ();
-
-
+ sectioning_underscore (char *cmd),
+ insert_and_underscore (int level, char *cmd);
-/* is needed in node.c */
-extern int set_top_section_level ();
+/* needed in node.c */
+extern int set_top_section_level (int level);
-extern void sectioning_html ();
-extern int what_section ();
+extern void sectioning_html (int level, char *cmd);
+extern int what_section (char *text, char **secname);
+extern char *current_chapter_number (void),
+ *current_sectioning_number (void),
+ *current_sectioning_name (void);
/* The argument of @settitle, used for HTML. */
extern char *title;
diff --git a/contrib/texinfo/makeinfo/toc.c b/contrib/texinfo/makeinfo/toc.c
index 394a480..fa3d8e0 100644
--- a/contrib/texinfo/makeinfo/toc.c
+++ b/contrib/texinfo/makeinfo/toc.c
@@ -1,7 +1,7 @@
/* toc.c -- table of contents handling.
- $Id: toc.c,v 1.3 2002/11/07 16:13:59 karl Exp $
+ $Id: toc.c,v 1.6 2004/04/11 17:56:47 karl Exp $
- Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -30,36 +30,20 @@
#include "makeinfo.h"
#include "sectioning.h"
#include "toc.h"
+#include "xml.h"
-
-
/* array of toc entries */
static TOC_ENTRY_ELT **toc_entry_alist = NULL;
/* toc_counter start from 0 ... n for every @chapter, @section ... */
static int toc_counter = 0;
-
-/* the file where we found the @contents directive */
-char *contents_filename;
-
-/* the file where we found the @shortcontents directive */
-char *shortcontents_filename;
-
-static const char contents_placebo[] = "\n...Table of Contents...\n";
-static const char shortcontents_placebo[] = "\n...Short Contents...\n";
-static const char lots_of_stars[] =
-"***************************************************************************";
-
/* Routine to add an entry to the table of contents */
int
-toc_add_entry (tocname, level, node_name, anchor)
- char *tocname;
- int level;
- char *node_name;
- char *anchor;
+toc_add_entry (char *tocname, int level, char *node_name, char *anchor)
{
- char *tocname_and_node, *expanded_node, *s, *d;
+ char *tocname_and_node, *expanded_node, *d;
+ char *s = NULL;
char *filename = NULL;
if (!node_name)
@@ -107,14 +91,11 @@ toc_add_entry (tocname, level, node_name, anchor)
{
for (; *s; s++)
{
- if (*s == '&')
- {
- strcpy (d, "&amp;");
- d += 5;
- }
+ if (cr_or_whitespace (*s))
+ *d++ = '-';
else if (! URL_SAFE_CHAR (*s))
{
- sprintf (d, "%%%x", (unsigned char) *s);
+ sprintf (d, "_00%x", (unsigned char) *s);
/* do this manually since sprintf returns char * on
SunOS 4 and other old systems. */
while (*d)
@@ -165,8 +146,7 @@ toc_add_entry (tocname, level, node_name, anchor)
more than a single chapter structioning command in a node,
or if they have a node without any structuring commands. */
char *
-toc_find_section_of_node (node)
- char *node;
+toc_find_section_of_node (char *node)
{
int i;
@@ -181,7 +161,7 @@ toc_find_section_of_node (node)
/* free up memory used by toc entries */
void
-toc_free ()
+toc_free (void)
{
int i;
@@ -199,13 +179,11 @@ toc_free ()
toc_counter = 0; /* to be absolutley sure ;-) */
}
}
-
/* Print table of contents in HTML. */
static void
-contents_update_html (fp)
- FILE *fp;
+contents_update_html (void)
{
int i;
int k;
@@ -216,9 +194,7 @@ contents_update_html (fp)
/* no, so return to sender ;-) */
return;
- flush_output (); /* in case we are writing stdout */
-
- fprintf (fp, "\n<div class=\"contents\">\n<h2>%s</h2>\n<ul>\n", _("Table of Contents"));
+ add_html_block_elt_args ("\n<div class=\"contents\">\n<h2>%s</h2>\n<ul>\n", _("Table of Contents"));
last_level = toc_entry_alist[0]->level;
@@ -230,14 +206,14 @@ contents_update_html (fp)
@chapter ...
@subsubsection ... ? */
for (k = 0; k < (toc_entry_alist[i]->level-last_level); k++)
- fputs ("<ul>\n", fp);
+ add_html_block_elt ("<ul>\n");
}
else if (toc_entry_alist[i]->level < last_level)
{
/* @subsubsection ...
@chapter ... this IS usual.*/
for (k = 0; k < (last_level-toc_entry_alist[i]->level); k++)
- fputs ("</li></ul>\n", fp);
+ add_word ("</li></ul>\n");
}
/* No double entries in TOC. */
@@ -245,11 +221,11 @@ contents_update_html (fp)
toc_entry_alist[i-1]->name) == 0))
{
/* each toc entry is a list item. */
- fputs ("<li>", fp);
+ add_word ("<li>");
/* Insert link -- to an external file if splitting, or
within the current document if not splitting. */
- fprintf (fp, "<a ");
+ add_word ("<a ");
/* For chapters (only), insert an anchor that the short contents
will link to. */
if (toc_entry_alist[i]->level == 0)
@@ -262,10 +238,10 @@ contents_update_html (fp)
ends, and use that in toc_FOO. */
while (*p && *p != '"')
p++;
- fprintf (fp, "name=\"toc_%.*s\" ",
+ add_word_args ("name=\"toc_%.*s\" ",
p - toc_entry_alist[i]->name, toc_entry_alist[i]->name);
}
- fprintf (fp, "href=\"%s#%s</a>\n",
+ add_word_args ("href=\"%s#%s</a>\n",
splitting ? toc_entry_alist[i]->html_file : "",
toc_entry_alist[i]->name);
}
@@ -276,16 +252,15 @@ contents_update_html (fp)
/* Go back to start level. */
if (toc_entry_alist[0]->level < last_level)
for (k = 0; k < (last_level-toc_entry_alist[0]->level); k++)
- fputs ("</li></ul>\n", fp);
+ add_word ("</li></ul>\n");
- fputs ("</li></ul>\n</div>\n\n", fp);
+ add_word ("</li></ul>\n</div>\n\n");
}
/* print table of contents in ASCII (--no-headers)
May be we should create a new command line switch --ascii ? */
static void
-contents_update_info (fp)
- FILE *fp;
+contents_update_info (void)
{
int i;
int k;
@@ -293,41 +268,40 @@ contents_update_info (fp)
if (!toc_counter)
return;
- flush_output (); /* in case we are writing stdout */
-
- fprintf (fp, "%s\n%.*s\n\n", _("Table of Contents"),
- (int) strlen (_("Table of Contents")), lots_of_stars);
+ insert_string ((char *) _("Table of Contents"));
+ insert ('\n');
+ for (i = 0; i < strlen (_("Table of Contents")); i++)
+ insert ('*');
+ insert_string ("\n\n");
for (i = 0; i < toc_counter; i++)
{
if (toc_entry_alist[i]->level == 0)
- fputs ("\n", fp);
+ add_char ('\n');
/* indention with two spaces per level, should this
changed? */
for (k = 0; k < toc_entry_alist[i]->level; k++)
- fputs (" ", fp);
+ insert_string (" ");
- fprintf (fp, "%s\n", toc_entry_alist[i]->name);
+ insert_string (toc_entry_alist[i]->name);
+ insert ('\n');
}
- fputs ("\n\n", fp);
+ insert_string ("\n\n");
}
/* shortcontents in HTML; Should this produce a standalone file? */
static void
-shortcontents_update_html (fp)
- FILE *fp;
+shortcontents_update_html (char *contents_filename)
{
int i;
- char *toc_file;
+ char *toc_file = NULL;
/* does exist any toc? */
if (!toc_counter)
return;
- flush_output (); /* in case we are writing stdout */
-
- fprintf (fp, "\n<div class=\"shortcontents\">\n<h2>%s</h2>\n<ul>\n", _("Short Contents"));
+ add_html_block_elt_args ("\n<div class=\"shortcontents\">\n<h2>%s</h2>\n<ul>\n", _("Short Contents"));
if (contents_filename)
toc_file = filename_part (contents_filename);
@@ -339,194 +313,76 @@ shortcontents_update_html (fp)
if (toc_entry_alist[i]->level == 0)
{
if (contents_filename)
- fprintf (fp, "<li><a href=\"%s#toc_%s</a></li>\n",
+ add_word_args ("<li><a href=\"%s#toc_%s</a></li>\n",
splitting ? toc_file : "", name);
else
- fprintf (fp, "<a href=\"%s#%s</a>\n",
+ add_word_args ("<a href=\"%s#%s</a>\n",
splitting ? toc_entry_alist[i]->html_file : "", name);
}
}
- fputs ("</ul>\n</div>\n\n", fp);
+ add_word ("</ul>\n</div>\n\n");
if (contents_filename)
free (toc_file);
}
/* short contents in ASCII (--no-headers). */
static void
-shortcontents_update_info (fp)
- FILE *fp;
+shortcontents_update_info (void)
{
int i;
if (!toc_counter)
return;
- flush_output (); /* in case we are writing stdout */
-
- fprintf (fp, "%s\n%.*s\n\n", _("Short Contents"),
- (int) strlen (_("Short Contents")), lots_of_stars);
+ insert_string ((char *) _("Short Contents"));
+ insert ('\n');
+ for (i = 0; i < strlen (_("Short Contents")); i++)
+ insert ('*');
+ insert_string ("\n\n");
for (i = 0; i < toc_counter; i++)
{
if (toc_entry_alist[i]->level == 0)
- fprintf (fp, "%s\n", toc_entry_alist[i]->name);
- }
- fputs ("\n\n", fp);
-}
-
-
-static FILE *toc_fp;
-static char *toc_buf;
-
-static int
-rewrite_top (fname, placebo)
- const char *fname, *placebo;
-{
- int idx;
-
- /* Can't rewrite standard output or the null device. No point in
- complaining. */
- if (STREQ (fname, "-")
- || FILENAME_CMP (fname, NULL_DEVICE) == 0
- || FILENAME_CMP (fname, ALSO_NULL_DEVICE) == 0)
- return -1;
-
- toc_buf = find_and_load (fname);
-
- if (!toc_buf)
- {
- fs_error (fname);
- return -1;
- }
-
- idx = search_forward (placebo, 0);
-
- if (idx < 0)
- {
- error (_("%s: TOC should be here, but it was not found"), fname);
- return -1;
- }
-
- toc_fp = fopen (fname, "w");
- if (!toc_fp)
- {
- fs_error (fname);
- return -1;
- }
-
- if (fwrite (toc_buf, 1, idx, toc_fp) != idx)
- {
- fs_error (fname);
- return -1;
+ {
+ insert_string (toc_entry_alist[i]->name);
+ insert ('\n');
+ }
}
-
- return idx + strlen (placebo);
-}
-
-static void
-contents_update ()
-{
- int cont_idx = rewrite_top (contents_filename, contents_placebo);
-
- if (cont_idx < 0)
- return;
-
- if (html)
- contents_update_html (toc_fp);
- else
- contents_update_info (toc_fp);
-
- if (fwrite (toc_buf + cont_idx, 1, input_text_length - cont_idx, toc_fp)
- != input_text_length - cont_idx
- || fclose (toc_fp) != 0)
- fs_error (contents_filename);
-}
-
-static void
-shortcontents_update ()
-{
- int cont_idx = rewrite_top (shortcontents_filename, shortcontents_placebo);
-
- if (cont_idx < 0)
- return;
-
- if (html)
- shortcontents_update_html (toc_fp);
- else
- shortcontents_update_info (toc_fp);
-
- if (fwrite (toc_buf + cont_idx, 1, input_text_length - cont_idx - 1, toc_fp)
- != input_text_length - cont_idx - 1
- || fclose (toc_fp) != 0)
- fs_error (shortcontents_filename);
+ insert_string ("\n\n");
}
void
-toc_update ()
+cm_contents (int arg)
{
- if (!html && !no_headers)
- return;
-
- if (contents_filename)
- contents_update ();
- if (shortcontents_filename)
- shortcontents_update ();
-}
+ /* the file where we found the @contents directive */
+ static char *contents_filename;
-void
-cm_contents (arg)
- int arg;
-{
- if ((html || no_headers) && arg == START)
+ /* No need to mess with delayed stuff for XML and Docbook. */
+ if (xml)
{
- if (contents_filename)
- {
- free (contents_filename);
- contents_filename = NULL;
- }
-
- if (contents_filename && STREQ (contents_filename, "-"))
+ if (arg == START)
{
- if (html)
- contents_update_html (stdout);
- else
- contents_update_info (stdout);
- }
- else
- {
- if (!executing_string && html)
- html_output_head ();
- contents_filename = xstrdup (current_output_filename);
- insert_string (contents_placebo); /* just mark it, for now */
+ int elt = STREQ (command, "contents") ? CONTENTS : SHORTCONTENTS;
+ xml_insert_element (elt, START);
+ xml_insert_element (elt, END);
}
}
-}
-
-void
-cm_shortcontents (arg)
- int arg;
-{
- if ((html || no_headers) && arg == START)
+ else if (!handling_delayed_writes)
{
- if (shortcontents_filename)
- {
- free (shortcontents_filename);
- shortcontents_filename = NULL;
- }
+ register_delayed_write (STREQ (command, "contents")
+ ? "@contents" : "@shortcontents");
- if (shortcontents_filename && STREQ (shortcontents_filename, "-"))
+ if (html && STREQ (command, "contents"))
{
- if (html)
- shortcontents_update_html (stdout);
- else
- shortcontents_update_info (stdout);
- }
- else
- {
- if (!executing_string && html)
- html_output_head ();
- shortcontents_filename = xstrdup (current_output_filename);
- insert_string (shortcontents_placebo); /* just mark it, for now */
+ if (contents_filename)
+ free (contents_filename);
+ contents_filename = xstrdup (current_output_filename);
}
}
+ else if (html)
+ STREQ (command, "contents")
+ ? contents_update_html () : shortcontents_update_html (contents_filename);
+ else if (no_headers)
+ STREQ (command, "contents")
+ ? contents_update_info () : shortcontents_update_info ();
}
diff --git a/contrib/texinfo/makeinfo/toc.h b/contrib/texinfo/makeinfo/toc.h
index 0d3e417..854f6fc 100644
--- a/contrib/texinfo/makeinfo/toc.h
+++ b/contrib/texinfo/makeinfo/toc.h
@@ -1,5 +1,5 @@
/* toc.h -- table of contents handling.
- $Id: toc.h,v 1.1 2002/08/25 23:38:39 karl Exp $
+ $Id: toc.h,v 1.2 2004/04/11 17:56:47 karl Exp $
Copyright (C) 1999 Free Software Foundation, Inc.
@@ -22,12 +22,6 @@
#ifndef TOC_H
#define TOC_H
-/* the file where we found the @contents directive */
-extern char *contents_filename;
-
-/* the file where we found the @shortcontents directive */
-extern char *shortcontents_filename;
-
/* Structure to hold one entry for the toc. */
typedef struct toc_entry_elt {
char *name;
@@ -41,10 +35,11 @@ typedef struct toc_entry_elt {
/* all routines which have relationship with TOC should start with
toc_ (this is a kind of name-space) */
-extern int toc_add_entry (); /* return the number for the toc-entry */
-extern void toc_free ();
-extern char *toc_find_section_of_node ();
+extern int toc_add_entry (char *tocname, int level,
+ char *node_name, char *anchor); /* return the number for the toc-entry */
+extern void toc_free (void);
+extern char *toc_find_section_of_node (char *node);
-extern void cm_contents (), cm_shortcontents ();
+extern void cm_contents (int arg);
#endif /* not TOC_H */
diff --git a/contrib/texinfo/makeinfo/xml.c b/contrib/texinfo/makeinfo/xml.c
index 83c8b56..cdbec1f 100644
--- a/contrib/texinfo/makeinfo/xml.c
+++ b/contrib/texinfo/makeinfo/xml.c
@@ -1,7 +1,7 @@
/* xml.c -- xml output.
- $Id: xml.c,v 1.19 2003/05/13 16:37:54 karl Exp $
+ $Id: xml.c,v 1.52 2004/12/19 17:02:23 karl Exp $
- Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -22,6 +22,8 @@
#include "system.h"
#include "makeinfo.h"
#include "insertion.h"
+#include "files.h"
+#include "float.h"
#include "macro.h"
#include "cmds.h"
#include "lang.h"
@@ -31,294 +33,436 @@
/* Options */
int xml_index_divisions = 1;
-
-void xml_close_sections (/* int level */);
-
typedef struct _element
{
char name[32];
int contains_para;
int contained_in_para;
+ int keep_space;
} element;
element texinfoml_element_list [] = {
- { "texinfo", 1, 0 },
- { "setfilename", 0, 0 },
- { "titlefont", 0, 0 },
- { "settitle", 0, 0 },
-
- { "node", 1, 0 },
- { "nodenext", 0, 0 },
- { "nodeprev", 0, 0 },
- { "nodeup", 0, 0 },
-
- { "chapter", 1, 0 },
- { "section", 1, 0 },
- { "subsection", 1, 0 },
- { "subsubsection", 1, 0 },
-
- { "top", 1, 0 },
- { "unnumbered", 1, 0 },
- { "unnumberedsec", 1, 0 },
- { "unnumberedsubsec", 1, 0 },
- { "unnumberedsubsubsec", 1, 0 },
-
- { "appendix", 1, 0 },
- { "appendixsec", 1, 0 },
- { "appendixsubsec", 1, 0 },
- { "appendixsubsubsec", 1, 0 },
-
- { "majorheading", 1, 0 },
- { "chapheading", 1, 0 },
- { "heading", 1, 0 },
- { "subheading", 1, 0 },
- { "subsubheading", 1, 0 },
-
- { "menu", 1, 0 },
- { "menuentry", 1, 0 },
- { "menutitle", 0, 0 },
- { "menucomment", 1, 0 },
- { "menunode", 0, 0 },
- { "nodename", 0, 0 },
-
- { "acronym", 0, 1 },
- { "tt", 0, 1 },
- { "code", 0, 1 },
- { "kbd", 0, 1 },
- { "url", 0, 1 },
- { "key", 0, 1 },
- { "var", 0, 1 },
- { "sc", 0, 1 },
- { "dfn", 0, 1 },
- { "emph", 0, 1 },
- { "strong", 0, 1 },
- { "cite", 0, 1 },
- { "notfixedwidth", 0, 1 },
- { "i", 0, 1 },
- { "b", 0, 1 },
- { "r", 0, 1 },
-
- { "title", 0, 0 },
- { "ifinfo", 1, 0 },
- { "sp", 0, 0 },
- { "center", 1, 0 },
- { "dircategory", 0, 0 },
- { "quotation", 0, 0 },
- { "example", 0, 0 },
- { "smallexample", 0, 0 },
- { "lisp", 0, 0 },
- { "smalllisp", 0, 0 },
- { "cartouche", 1, 0 },
- { "copying", 1, 0 },
- { "format", 0, 0 },
- { "smallformat", 0, 0 },
- { "display", 0, 0 },
- { "smalldisplay", 0, 0 },
- { "footnote", 0, 1 },
-
- { "itemize", 0, 0 },
- { "itemfunction", 0, 0 },
- { "item", 1, 0 },
- { "enumerate", 0, 0 },
- { "table", 0, 0 },
- { "tableitem", 0, 0 }, /* not used */ /* TABLEITEM */
- { "tableterm", 0, 0 }, /* not used */ /* TABLETERM */
-
- { "indexterm", 0, 1 },
-
- { "xref", 0, 1 },
- { "xrefnodename", 0, 1 },
- { "xrefinfoname", 0, 1 },
- { "xrefprinteddesc", 0, 1 },
- { "xrefinfofile", 0, 1 },
- { "xrefprintedname", 0, 1 },
-
- { "inforef", 0, 1 },
- { "inforefnodename", 0, 1 },
- { "inforefrefname", 0, 1 },
- { "inforefinfoname", 0, 1 },
-
- { "uref", 0, 1 },
- { "urefurl", 0, 1 },
- { "urefdesc", 0, 1 },
- { "urefreplacement", 0, 1 },
-
- { "email", 0, 1 },
- { "emailaddress", 0, 1 },
- { "emailname", 0, 1 },
-
- { "group", 0, 0 },
-
- { "printindex", 0, 0 },
- { "anchor", 0, 1 },
- { "image", 0, 1 },
- { "", 0, 1 }, /* PRIMARY (docbook) */
- { "", 0, 1 }, /* SECONDARY (docbook) */
- { "", 0, 0 }, /* INFORMALFIGURE (docbook) */
- { "", 0, 0 }, /* MEDIAOBJECT (docbook) */
- { "", 0, 0 }, /* IMAGEOBJECT (docbook) */
- { "", 0, 0 }, /* IMAGEDATA (docbook) */
- { "", 0, 0 }, /* TEXTOBJECT (docbook) */
- { "", 0, 0 }, /* INDEXENTRY (docbook) */
- { "", 0, 0 }, /* PRIMARYIE (docbook) */
- { "", 0, 0 }, /* SECONDARYIE (docbook) */
- { "", 0, 0 }, /* INDEXDIV (docbook) */
- { "multitable", 0, 0 },
- { "", 0, 0 }, /* TGROUP (docbook) */
- { "columnfraction", 0, 0 },
- { "", 0, 0 }, /* TBODY (docbook) */
- { "entry", 0, 0 }, /* ENTRY (docbook) */
- { "row", 0, 0 }, /* ROW (docbook) */
- { "", 0, 0 }, /* BOOKINFO (docbook) */
- { "", 0, 0 }, /* ABSTRACT (docbook) */
- { "", 0, 0 }, /* REPLACEABLE (docbook) */
- { "", 0, 0 }, /* ENVAR (docbook) */
- { "", 0, 0 }, /* COMMENT (docbook) */
- { "", 0, 0 }, /* FUNCTION (docbook) */
- { "", 0, 0 }, /* LEGALNOTICE (docbook) */
-
- { "para", 0, 0 } /* Must be last */
- /* name / contains para / contained in para */
+ { "texinfo", 1, 0, 0 },
+ { "setfilename", 0, 0, 0 },
+ { "titlefont", 0, 0, 0 },
+ { "settitle", 0, 0, 0 },
+ { "documentdescription", 1, 0, 0 },
+
+ { "node", 1, 0, 0 },
+ { "nodenext", 0, 0, 0 },
+ { "nodeprev", 0, 0, 0 },
+ { "nodeup", 0, 0, 0 },
+
+ { "chapter", 1, 0, 0 },
+ { "section", 1, 0, 0 },
+ { "subsection", 1, 0, 0 },
+ { "subsubsection", 1, 0, 0 },
+
+ { "top", 1, 0, 0 },
+ { "unnumbered", 1, 0, 0 },
+ { "unnumberedsec", 1, 0, 0 },
+ { "unnumberedsubsec", 1, 0, 0 },
+ { "unnumberedsubsubsec", 1, 0, 0 },
+
+ { "appendix", 1, 0, 0 },
+ { "appendixsec", 1, 0, 0 },
+ { "appendixsubsec", 1, 0, 0 },
+ { "appendixsubsubsec", 1, 0, 0 },
+
+ { "majorheading", 0, 0, 0 },
+ { "chapheading", 0, 0, 0 },
+ { "heading", 0, 0, 0 },
+ { "subheading", 0, 0, 0 },
+ { "subsubheading", 0, 0, 0 },
+
+ { "titlepage", 1, 0, 0 },
+ { "author", 0, 0, 0 },
+ { "booktitle", 0, 0, 0 },
+ { "booksubtitle", 0, 0, 0 },
+
+ { "menu", 1, 0, 0 },
+ { "detailmenu", 1, 0, 0 },
+ { "menuentry", 0, 0, 0 },
+ { "menutitle", 0, 0, 0 },
+ { "menucomment", 0, 0, 0 },
+ { "menunode", 0, 0, 0 },
+ { "nodename", 0, 0, 0 },
+
+ { "acronym", 0, 1, 0 },
+ { "acronymword", 0, 1, 0 },
+ { "acronymdesc", 0, 1, 0 },
+
+ { "abbrev", 0, 1, 0 },
+ { "abbrevword", 0, 1, 0 },
+ { "abbrevdesc", 0, 1, 0 },
+
+ { "tt", 0, 1, 0 },
+ { "code", 0, 1, 0 },
+ { "command", 0, 1, 0 },
+ { "env", 0, 1, 0 },
+ { "file", 0, 1, 0 },
+ { "option", 0, 1, 0 },
+ { "samp", 0, 1, 0 },
+ { "kbd", 0, 1, 0 },
+ { "url", 0, 1, 0 },
+ { "key", 0, 1, 0 },
+ { "var", 0, 1, 0 },
+ { "sc", 0, 1, 0 },
+ { "dfn", 0, 1, 0 },
+ { "emph", 0, 1, 0 },
+ { "strong", 0, 1, 0 },
+ { "cite", 0, 1, 0 },
+ { "notfixedwidth", 0, 1, 0 },
+ { "i", 0, 1, 0 },
+ { "b", 0, 1, 0 },
+ { "r", 0, 1, 0 },
+ { "slanted", 0, 1, 0 },
+ { "sansserif", 0, 1, 0 },
+
+ { "exdent", 0, 0, 0 },
+
+ { "title", 0, 0, 0 },
+ { "ifinfo", 1, 0, 0 },
+ { "sp", 0, 0, 0 },
+ { "center", 1, 0, 0 },
+ { "dircategory", 0, 0, 0 },
+ { "quotation", 1, 0, 0 },
+ { "example", 0, 0, 1 },
+ { "smallexample", 0, 0, 1 },
+ { "lisp", 0, 0, 1 },
+ { "smalllisp", 0, 0, 1 },
+ { "cartouche", 1, 0, 0 },
+ { "copying", 1, 0, 0 },
+ { "format", 0, 0, 1 },
+ { "smallformat", 0, 0, 1 },
+ { "display", 0, 0, 1 },
+ { "smalldisplay", 0, 0, 1 },
+ { "verbatim", 0, 0, 1 },
+ { "footnote", 0, 1, 0 },
+ { "", 0, 1, 0 }, /* LINEANNOTATION (docbook) */
+
+ { "", 1, 0, 0 }, /* TIP (docbook) */
+ { "", 1, 0, 0 }, /* NOTE (docbook) */
+ { "", 1, 0, 0 }, /* IMPORTANT (docbook) */
+ { "", 1, 0, 0 }, /* WARNING (docbook) */
+ { "", 1, 0, 0 }, /* CAUTION (docbook) */
+
+ { "itemize", 0, 0, 0 },
+ { "itemfunction", 0, 0, 0 },
+ { "item", 1, 0, 0 },
+ { "enumerate", 0, 0, 0 },
+ { "table", 0, 0, 0 },
+ { "tableitem", 0, 0, 0 },
+ { "tableterm", 0, 0, 0 },
+
+ { "indexterm", 0, 1, 0 },
+
+ { "math", 0, 1, 0 },
+
+ { "dmn", 0, 1, 0 },
+
+ { "xref", 0, 1, 0 },
+ { "xrefnodename", 0, 1, 0 },
+ { "xrefinfoname", 0, 1, 0 },
+ { "xrefprinteddesc", 0, 1, 0 },
+ { "xrefinfofile", 0, 1, 0 },
+ { "xrefprintedname", 0, 1, 0 },
+
+ { "inforef", 0, 1, 0 },
+ { "inforefnodename", 0, 1, 0 },
+ { "inforefrefname", 0, 1, 0 },
+ { "inforefinfoname", 0, 1, 0 },
+
+ { "uref", 0, 1, 0 },
+ { "urefurl", 0, 1, 0 },
+ { "urefdesc", 0, 1, 0 },
+ { "urefreplacement", 0, 1, 0 },
+
+ { "email", 0, 1, 0 },
+ { "emailaddress", 0, 1, 0 },
+ { "emailname", 0, 1, 0 },
+
+ { "group", 0, 0, 0 },
+ { "float", 1, 0, 0 },
+ { "floattype", 0, 0, 0 },
+ { "floatpos", 0, 0, 0 },
+ { "caption", 0, 0, 0 },
+ { "shortcaption", 0, 0, 0 },
+
+ { "", 0, 0, 0 }, /* TABLE (docbook) */
+ { "", 0, 0, 0 }, /* FIGURE (docbook) */
+ { "", 0, 0, 0 }, /* EXAMPLE (docbook) */
+ { "", 1, 0, 0 }, /* SIDEBAR (docbook) */
+
+ { "printindex", 0, 0, 0 },
+ { "listoffloats", 0, 0, 0 },
+ { "anchor", 0, 1, 0 },
+
+ { "image", 0, 0, 0 },
+ { "inlineimage", 0, 1, 0 },
+ { "alttext", 0, 1, 0 },
+
+ { "", 0, 1, 0 }, /* PRIMARY (docbook) */
+ { "", 0, 1, 0 }, /* SECONDARY (docbook) */
+ { "", 0, 0, 0 }, /* INFORMALFIGURE (docbook) */
+ { "", 0, 0, 0 }, /* MEDIAOBJECT (docbook) */
+ { "", 0, 0, 0 }, /* IMAGEOBJECT (docbook) */
+ { "", 0, 0, 0 }, /* IMAGEDATA (docbook) */
+ { "", 0, 0, 0 }, /* TEXTOBJECT (docbook) */
+ { "", 0, 0, 0 }, /* INDEXENTRY (docbook) */
+ { "", 0, 0, 0 }, /* PRIMARYIE (docbook) */
+ { "", 0, 0, 0 }, /* SECONDARYIE (docbook) */
+ { "", 0, 0, 0 }, /* INDEXDIV (docbook) */
+ { "multitable", 0, 0, 0 },
+ { "", 0, 0, 0 }, /* TGROUP (docbook) */
+ { "columnfraction", 0, 0, 0 },
+ { "thead", 0, 0, 0 },
+ { "tbody", 0, 0, 0 },
+ { "entry", 0, 0, 0 },
+ { "row", 0, 0, 0 },
+ { "", 0, 0, 0 }, /* BOOKINFO (docbook) */
+ { "", 0, 0, 0 }, /* ABSTRACT (docbook) */
+ { "", 0, 0, 0 }, /* REPLACEABLE (docbook) */
+ { "", 0, 0, 0 }, /* ENVAR (docbook) */
+ { "", 0, 0, 0 }, /* COMMENT (docbook) */
+ { "", 0, 0, 0 }, /* FUNCTION (docbook) */
+ { "", 0, 0, 0 }, /* LEGALNOTICE (docbook) */
+
+ { "contents", 0, 0, 0 },
+ { "shortcontents", 0, 0, 0 },
+ { "documentlanguage", 0, 0, 0 },
+
+ { "setvalue", 0, 0, 0 },
+ { "clearvalue", 0, 0, 0 },
+
+ { "definition", 0, 0, 0 },
+ { "definitionterm", 0, 0, 0 },
+ { "definitionitem", 1, 0, 0 },
+ { "defcategory", 0, 0, 0 },
+ { "deffunction", 0, 0, 0 },
+ { "defvariable", 0, 0, 0 },
+ { "defparam", 0, 0, 0 },
+ { "defdelimiter", 0, 0, 0 },
+ { "deftype", 0, 0, 0 },
+ { "defparamtype", 0, 0, 0 },
+ { "defdatatype", 0, 0, 0 },
+ { "defclass", 0, 0, 0 },
+ { "defclassvar", 0, 0, 0 },
+ { "defoperation", 0, 0, 0 },
+
+ { "para", 0, 0, 0 } /* Must be last */
+ /* name / contains para / contained in para / preserve space */
};
element docbook_element_list [] = {
- { "book", 0, 0 }, /* TEXINFO */
- { "", 0, 0 }, /* SETFILENAME */
- { "", 0, 0 }, /* TITLEINFO */
- { "title", 0, 0 }, /* SETTITLE */
-
- { "", 1, 0 }, /* NODE */
- { "", 0, 0 }, /* NODENEXT */
- { "", 0, 0 }, /* NODEPREV */
- { "", 0, 0 }, /* NODEUP */
-
- { "chapter", 1, 0 },
- { "sect1", 1, 0 }, /* SECTION */
- { "sect2", 1, 0 }, /* SUBSECTION */
- { "sect3", 1, 0 }, /* SUBSUBSECTION */
-
- { "chapter", 1, 0 }, /* TOP */
- { "chapter", 1, 0 }, /* UNNUMBERED */
- { "sect1", 1, 0 }, /* UNNUMBEREDSEC */
- { "sect2", 1, 0 }, /* UNNUMBEREDSUBSEC */
- { "sect3", 1, 0 }, /* UNNUMBEREDSUBSUBSEC */
-
- { "appendix", 1, 0 },
- { "sect1", 1, 0 }, /* APPENDIXSEC */
- { "sect2", 1, 0 }, /* APPENDIXSUBSEC */
- { "sect3", 1, 0 }, /* APPENDIXSUBSUBSEC */
-
- { "chapter", 1, 0 }, /* MAJORHEADING */
- { "chapter", 1, 0 }, /* CHAPHEADING */
- { "sect1", 1, 0 }, /* HEADING */
- { "sect2", 1, 0 }, /* SUBHEADING */
- { "simplesect", 1, 0 }, /* SUBSUBHEADING */
-
- { "", 1, 0 }, /* MENU */
- { "", 1, 0 }, /* MENUENTRY */
- { "", 0, 0 }, /* MENUTITLE */
- { "", 1, 0 }, /* MENUCOMMENT */
- { "", 0, 0 }, /* MENUNODE */
- { "anchor", 0, 0 }, /* NODENAME */
-
- { "acronym", 0, 1 },
- { "wordasword", 0, 1 }, /* TT */
- { "command", 0, 1 }, /* CODE */
- { "userinput", 0, 1 }, /* KBD */
- { "wordasword", 0, 1 }, /* URL */
- { "keycap", 0, 1 }, /* KEY */
- { "varname", 0, 1 }, /* VAR */
- { "", 0, 1 }, /* SC */
- { "firstterm", 0, 1 }, /* DFN */
- { "emphasis", 0, 1 }, /* EMPH */
- { "emphasis", 0, 1 }, /* STRONG */
- { "citation", 0, 1 }, /* CITE */
- { "", 0, 1 }, /* NOTFIXEDWIDTH */
- { "wordasword", 0, 1 }, /* I */
- { "wordasword", 0, 1 }, /* B */
- { "", 0, 1 }, /* R */
-
- { "title", 0, 0 },
- { "", 1, 0 }, /* IFINFO */
- { "", 0, 0 }, /* SP */
- { "", 1, 0 }, /* CENTER */
- { "", 0, 0 }, /* DIRCATEGORY */
- { "blockquote", 1, 0 }, /* QUOTATION */
- { "screen", 0, 1 },
- { "screen", 0, 1 }, /* SMALLEXAMPLE */
- { "screen", 0, 1 }, /* LISP */
- { "screen", 0, 1 }, /* SMALLLISP */
- { "", 1, 0 }, /* CARTOUCHE */
- { "", 1, 0 }, /* COPYING */
- { "screen", 0, 1 }, /* FORMAT */
- { "screen", 0, 1 }, /* SMALLFORMAT */
- { "screen", 0, 1 }, /* DISPLAY */
- { "screen", 0, 1 }, /* SMALLDISPLAY */
- { "footnote", 0, 1 },
-
- { "itemizedlist", 0, 0 }, /* ITEMIZE */
- { "", 0, 0 }, /* ITEMFUNCTION */
- { "listitem", 1, 0 }, /* ITEM */
- { "orderedlist", 0, 0 }, /* ENUMERATE */
- { "variablelist", 0, 0 }, /* TABLE */
- { "varlistentry", 0, 0 }, /* TABLEITEM */
- { "term", 0, 0 }, /* TABLETERM */
-
- { "indexterm", 0, 1 }, /* INDEXTERM */
-
- { "xref", 0, 1 }, /* XREF */
- { "link", 0, 1 }, /* XREFNODENAME */
- { "", 0, 1 }, /* XREFINFONAME */
- { "", 0, 1 }, /* XREFPRINTEDDESC */
- { "", 0, 1 }, /* XREFINFOFILE */
- { "", 0, 1 }, /* XREFPRINTEDNAME */
-
- { "", 0, 1 }, /* INFOREF */
- { "", 0, 1 }, /* INFOREFNODENAME */
- { "", 0, 1 }, /* INFOREFREFNAME */
- { "", 0, 1 }, /* INFOREFINFONAME */
-
- { "", 0, 1 }, /* UREF */
- { "", 0, 1 }, /* UREFURL */
- { "", 0, 1 }, /* UREFDESC */
- { "", 0, 1 }, /* UREFREPLACEMENT */
-
- { "ulink", 0, 1 }, /* EMAIL */
- { "", 0, 1 }, /* EMAILADDRESS */
- { "", 0, 1 }, /* EMAILNAME */
-
- { "", 0, 0 }, /* GROUP */
-
- { "index", 0, 1 }, /* PRINTINDEX */
- { "", 0, 1 }, /* ANCHOR */
- { "", 0, 1 }, /* IMAGE */
- { "primary", 0, 1 }, /* PRIMARY */
- { "secondary", 0, 1 },
- { "informalfigure", 0, 0 },
- { "mediaobject", 0, 0 },
- { "imageobject", 0, 0 },
- { "imagedata", 0, 0 },
- { "textobject", 0, 0 },
- { "indexentry", 0, 0 },
- { "primaryie", 0, 0 },
- { "secondaryie", 0, 0 },
- { "indexdiv", 0, 0 },
- { "informaltable", 0, 0 },
- { "tgroup", 0, 0 },
- { "colspec", 0, 0 },
- { "tbody", 0, 0 },
- { "entry", 0, 0 },
- { "row", 0, 0 },
- { "bookinfo", 0, 0 },
- { "abstract", 1, 0 },
- { "replaceable", 0, 0 },
- { "envar", 0, 1 },
- { "comment", 0, 0 },
- { "function", 0, 1 },
- { "legalnotice", 1, 0 },
-
- { "para", 0, 0 } /* Must be last */
- /* name / contains para / contained in para */
+ { "book", 0, 0, 0 }, /* TEXINFO */
+ { "", 0, 0, 0 }, /* SETFILENAME */
+ { "", 0, 0, 0 }, /* TITLEINFO */
+ { "title", 0, 0, 0 }, /* SETTITLE */
+ { "", 1, 0, 0 }, /* DOCUMENTDESCRIPTION (?) */
+
+ { "", 1, 0, 0 }, /* NODE */
+ { "", 0, 0, 0 }, /* NODENEXT */
+ { "", 0, 0, 0 }, /* NODEPREV */
+ { "", 0, 0, 0 }, /* NODEUP */
+
+ { "chapter", 1, 0, 0 },
+ { "sect1", 1, 0, 0 }, /* SECTION */
+ { "sect2", 1, 0, 0 }, /* SUBSECTION */
+ { "sect3", 1, 0, 0 }, /* SUBSUBSECTION */
+
+ { "chapter", 1, 0, 0 }, /* TOP */
+ { "chapter", 1, 0, 0 }, /* UNNUMBERED */
+ { "sect1", 1, 0, 0 }, /* UNNUMBEREDSEC */
+ { "sect2", 1, 0, 0 }, /* UNNUMBEREDSUBSEC */
+ { "sect3", 1, 0, 0 }, /* UNNUMBEREDSUBSUBSEC */
+
+ { "appendix", 1, 0, 0 },
+ { "sect1", 1, 0, 0 }, /* APPENDIXSEC */
+ { "sect2", 1, 0, 0 }, /* APPENDIXSUBSEC */
+ { "sect3", 1, 0, 0 }, /* APPENDIXSUBSUBSEC */
+
+ { "bridgehead", 0, 0, 0 }, /* MAJORHEADING */
+ { "bridgehead", 0, 0, 0 }, /* CHAPHEADING */
+ { "bridgehead", 0, 0, 0 }, /* HEADING */
+ { "bridgehead", 0, 0, 0 }, /* SUBHEADING */
+ { "bridgehead", 0, 0, 0 }, /* SUBSUBHEADING */
+
+ { "", 0, 0, 0 }, /* TITLEPAGE */
+ { "", 0, 0, 0 }, /* AUTHOR */
+ { "", 0, 0, 0 }, /* BOOKTITLE */
+ { "", 0, 0, 0 }, /* BOOKSUBTITLE */
+
+ { "", 1, 0, 0 }, /* MENU */
+ { "", 1, 0, 0 }, /* DETAILMENU */
+ { "", 1, 0, 0 }, /* MENUENTRY */
+ { "", 0, 0, 0 }, /* MENUTITLE */
+ { "", 1, 0, 0 }, /* MENUCOMMENT */
+ { "", 0, 0, 0 }, /* MENUNODE */
+ { "anchor", 0, 0, 0 }, /* NODENAME */
+
+ { "acronym", 0, 1, 0 },
+ { "", 0, 1, 0 }, /* ACRONYMWORD */
+ { "", 0, 1, 0 }, /* ACRONYMDESC */
+
+ { "abbrev", 0, 1, 0 },
+ { "", 0, 1, 0 }, /* ABBREVWORD */
+ { "", 0, 1, 0 }, /* ABBREVDESC */
+
+ { "literal", 0, 1, 0 }, /* TT */
+ { "literal", 0, 1, 0 }, /* CODE */
+ { "command", 0, 1, 0 }, /* COMMAND */
+ { "envar", 0, 1, 0 }, /* ENV */
+ { "filename", 0, 1, 0 }, /* FILE */
+ { "option", 0, 1, 0 }, /* OPTION */
+ { "literal", 0, 1, 0 }, /* SAMP */
+ { "userinput", 0, 1, 0 }, /* KBD */
+ { "wordasword", 0, 1, 0 }, /* URL */
+ { "keycap", 0, 1, 0 }, /* KEY */
+ { "replaceable", 0, 1, 0 }, /* VAR */
+ { "", 0, 1, 0 }, /* SC */
+ { "firstterm", 0, 1, 0 }, /* DFN */
+ { "emphasis", 0, 1, 0 }, /* EMPH */
+ { "emphasis", 0, 1, 0 }, /* STRONG */
+ { "citetitle", 0, 1, 0 }, /* CITE */
+ { "", 0, 1, 0 }, /* NOTFIXEDWIDTH */
+ { "wordasword", 0, 1, 0 }, /* I */
+ { "emphasis", 0, 1, 0 }, /* B */
+ { "", 0, 1, 0 }, /* R */
+
+ { "", 0, 0, 0 }, /* EXDENT */
+
+ { "title", 0, 0, 0 },
+ { "", 1, 0, 0 }, /* IFINFO */
+ { "", 0, 0, 0 }, /* SP */
+ { "", 1, 0, 0 }, /* CENTER */
+ { "", 0, 0, 0 }, /* DIRCATEGORY */
+ { "blockquote", 1, 0, 0 }, /* QUOTATION */
+ { "screen", 0, 0, 1 }, /* EXAMPLE */
+ { "screen", 0, 0, 1 }, /* SMALLEXAMPLE */
+ { "programlisting", 0, 0, 1 }, /* LISP */
+ { "programlisting", 0, 0, 1 }, /* SMALLLISP */
+ { "", 1, 0, 0 }, /* CARTOUCHE */
+ { "", 1, 0, 0 }, /* COPYING */
+ { "screen", 0, 1, 1 }, /* FORMAT */
+ { "screen", 0, 1, 1 }, /* SMALLFORMAT */
+ { "literallayout", 0, 1, 1 }, /* DISPLAY */
+ { "literallayout", 0, 1, 1 }, /* SMALLDISPLAY */
+ { "screen", 0, 0, 1 }, /* VERBATIM */
+ { "footnote", 0, 1, 0 },
+ { "lineannotation", 0, 1, 0 },
+
+ { "tip", 1, 0, 0 },
+ { "note", 1, 0, 0 },
+ { "important", 1, 0, 0 },
+ { "warning", 1, 0, 0 },
+ { "caution", 1, 0, 0 },
+
+ { "itemizedlist", 0, 0, 0 }, /* ITEMIZE */
+ { "", 0, 0, 0 }, /* ITEMFUNCTION */
+ { "listitem", 1, 0, 0 }, /* ITEM */
+ { "orderedlist", 0, 0, 0 }, /* ENUMERATE */
+ { "variablelist", 0, 0, 0 }, /* TABLE */
+ { "varlistentry", 0, 0, 0 }, /* TABLEITEM */
+ { "term", 0, 0, 0 }, /* TABLETERM */
+
+ { "indexterm", 0, 1, 0 }, /* INDEXTERM */
+
+ { "", 0, 1, 0 }, /* MATH */
+
+ { "", 0, 1, 0 }, /* DIMENSION */
+
+ { "xref", 0, 1, 0 }, /* XREF */
+ { "link", 0, 1, 0 }, /* XREFNODENAME */
+ { "", 0, 1, 0 }, /* XREFINFONAME */
+ { "", 0, 1, 0 }, /* XREFPRINTEDDESC */
+ { "", 0, 1, 0 }, /* XREFINFOFILE */
+ { "", 0, 1, 0 }, /* XREFPRINTEDNAME */
+
+ { "", 0, 1, 0 }, /* INFOREF */
+ { "", 0, 1, 0 }, /* INFOREFNODENAME */
+ { "", 0, 1, 0 }, /* INFOREFREFNAME */
+ { "", 0, 1, 0 }, /* INFOREFINFONAME */
+
+ { "ulink", 0, 1, 0 }, /* UREF */
+ { "", 0, 1, 0 }, /* UREFURL */
+ { "", 0, 1, 0 }, /* UREFDESC */
+ { "", 0, 1, 0 }, /* UREFREPLACEMENT */
+
+ { "ulink", 0, 1, 0 }, /* EMAIL */
+ { "", 0, 1, 0 }, /* EMAILADDRESS */
+ { "", 0, 1, 0 }, /* EMAILNAME */
+
+ { "", 0, 0, 0 }, /* GROUP */
+ { "", 1, 0, 0 }, /* FLOAT */
+ { "", 0, 0, 0 }, /* FLOATTYPE */
+ { "", 0, 0, 0 }, /* FLOATPOS */
+ { "", 0, 0, 0 }, /* CAPTION */
+ { "", 0, 0, 0 }, /* SHORTCAPTION */
+
+ { "table", 0, 1, 0 },
+ { "figure", 0, 1, 0 },
+ { "example", 1, 1, 0 },
+ { "sidebar", 1, 0, 0 },
+
+ { "index", 0, 1, 0 }, /* PRINTINDEX */
+ { "", 0, 1, 0 }, /* LISTOFFLOATS */
+ { "", 0, 1, 0 }, /* ANCHOR */
+
+ { "", 0, 0, 0 }, /* IMAGE */
+ { "inlinemediaobject", 0, 1, 0 }, /* INLINEIMAGE */
+ { "", 0, 0, 0 }, /* IMAGEALTTEXT */
+
+ { "primary", 0, 1, 0 }, /* PRIMARY */
+ { "secondary", 0, 1, 0 },
+ { "informalfigure", 0, 0, 0 },
+ { "mediaobject", 0, 0, 0 },
+ { "imageobject", 0, 1, 0 },
+ { "imagedata", 0, 1, 0 },
+ { "textobject", 0, 1, 0 },
+ { "indexentry", 0, 0, 0 },
+ { "primaryie", 0, 0, 0 },
+ { "secondaryie", 0, 0, 0 },
+ { "indexdiv", 0, 0, 0 },
+ { "informaltable", 0, 0, 0 },
+ { "tgroup", 0, 0, 0 },
+ { "colspec", 0, 0, 0 },
+ { "thead", 0, 0, 0 },
+ { "tbody", 0, 0, 0 },
+ { "entry", 0, 0, 0 },
+ { "row", 0, 0, 0 },
+ { "bookinfo", 0, 0, 0 },
+ { "abstract", 1, 0, 0 },
+ { "replaceable", 0, 0, 0 },
+ { "envar", 0, 1, 0 },
+ { "comment", 0, 0, 0 },
+ { "function", 0, 1, 0 },
+ { "legalnotice", 1, 0, 0 },
+
+ { "", 0, 0, 0 }, /* CONTENTS (xml) */
+ { "", 0, 0, 0 }, /* SHORTCONTENTS (xml) */
+ { "", 0, 0, 0 }, /* DOCUMENT LANGUAGE (xml) */
+
+ { "", 0, 0, 0 }, /* SETVALUE (xml) */
+ { "", 0, 0, 0 }, /* CLEARVALUE (xml) */
+
+ { "blockquote", 1, 0, 0 }, /* DEFINITION */
+ { "screen", 0, 0, 1 }, /* DEFINITIONTERM */
+ { "", 0, 0, 0 }, /* DEFINITIONITEM (xml) */
+ { "", 0, 0, 0 }, /* DEFCATEGORY (xml) */
+ { "function", 0, 0, 0 }, /* DEFFUNCTION */
+ { "varname", 0, 0, 0 }, /* DEFVARIABLE */
+ { "varname", 0, 0, 0 }, /* DEFPARAM */
+ { "", 0, 0, 0 }, /* DEFDELIMITER (xml) */
+ { "returnvalue", 0, 0, 0 }, /* DEFTYPE */
+ { "type", 0, 0, 0 }, /* DEFPARAMTYPE */
+ { "structname", 0, 0, 0 }, /* DEFDATATYPE */
+ { "classname", 0, 0, 0 }, /* DEFCLASS */
+ { "property", 0, 0, 0 }, /* DEFCLASSVAR */
+ { "methodname", 0, 0, 0 }, /* DEFOPERATION */
+
+ { "para", 0, 0, 0 } /* Must be last */
+ /* name / contains para / contained in para / preserve space */
};
element *xml_element_list = NULL;
@@ -352,8 +496,19 @@ replace_element replace_elements [] = {
{ VAR, B, EMPH},
{ B, CODE, ENVAR},
{ CODE, I, EMPH},
+ { SAMP, VAR, -1 },
{ FORMAT, BOOKINFO, ABSTRACT },
{ QUOTATION, ABSTRACT, -1},
+ { LINEANNOTATION, LINEANNOTATION, -1 },
+ { LEGALNOTICE, ABSTRACT, -1 },
+ { QUOTATION, QUOTATION, -1 },
+ /* Formal versions of table and image elements. */
+ { MULTITABLE, FLOAT, FLOATTABLE },
+ { INFORMALFIGURE, FLOAT, FLOATFIGURE },
+ { CARTOUCHE, FLOAT, FLOATCARTOUCHE },
+ /* Unnecessary markup in @defun blocks. */
+ { VAR, DEFPARAM, -1 },
+ { CODE, DEFTYPE, -1 },
/* Add your elements to replace here */
{-1, 0, 0}
};
@@ -364,6 +519,9 @@ int xml_node_open = 0;
int xml_node_level = -1;
int xml_in_para = 0;
int xml_just_after_element = 0;
+int xml_keep_space = 0;
+
+int xml_no_indent = 0;
int xml_no_para = 0;
char *xml_node_id = NULL;
@@ -374,50 +532,55 @@ int xml_in_bookinfo = 0;
int xml_in_book_title = 0;
int xml_in_abstract = 0;
+/* Non-zero if we are handling an element that can appear between
+ @item and @itemx, @deffn and @deffnx. */
+int xml_dont_touch_items_defs = 0;
+
+/* We need to keep footnote state, because elements inside footnote may try
+ to close the previous parent para. */
+static int xml_in_footnote = 0;
+
static int xml_after_table_term = 0;
static int book_started = 0;
static int first_section_opened = 0;
+static int xml_in_tableitem[256];
static int xml_in_item[256];
static int xml_table_level = 0;
+static int xml_in_def_item[256];
+static int xml_definition_level = 0;
+int xml_after_def_term = 0;
+
static int in_table_title = 0;
static int in_indexentry = 0;
static int in_secondary = 0;
static int in_indexterm = 0;
-
-static int xml_current_element ();
-
-void
-#if defined (VA_FPRINTF) && __STDC__
-xml_insert_element_with_attribute (int elt, int arg, char *format, ...);
-#else
-xml_insert_element_with_attribute ();
-#endif
-
+
char *
-xml_id (id)
- char *id;
+xml_id (char *id)
{
char *tem = xmalloc (strlen (id) + 1);
char *p = tem;
strcpy (tem, id);
while (*p)
- {
- if (strchr ("~ &/+^;?()%<>\"'$¿", *p))
+ { /* Check if a character is allowed in ID attributes. This list differs
+ slightly from XML specs that it doesn't contain underscores.
+ See http://xml.coverpages.org/sgmlsyn/sgmlsyn.htm, ``9.3 Name'' */
+ if (!strchr ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.", *p))
*p = '-';
p++;
}
p = tem;
- if (*p == '-')
+ /* First character can only be a letter. */
+ if (!strchr ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", *p))
*p = 'i';
return tem;
}
int
-xml_element (name)
- char *name;
+xml_element (char *name)
{
int i;
for (i=0; i<=PARA; i++)
@@ -430,30 +593,55 @@ xml_element (name)
}
void
-xml_begin_document (output_filename)
- char *output_filename;
+xml_begin_document (char *output_filename)
{
if (book_started)
return;
book_started = 1;
+
+ /* Make sure this is the very first string of the output document. */
+ output_paragraph_offset = 0;
+
+ insert_string ("<?xml version=\"1.0\"");
+
+ /* At this point, we register a delayed writing for document encoding,
+ so in the end, proper encoding attribute will be inserted here.
+ Since the user is unaware that we are implicitly executing this
+ command, we should disable warnings temporarily, in order to avoid
+ possible confusion. (ie. if the output is not seekable,
+ register_delayed_write issues a warning.) */
+ {
+ extern int print_warnings;
+ int save_print_warnings = print_warnings;
+ print_warnings = 0;
+ register_delayed_write ("@documentencoding");
+ print_warnings = save_print_warnings;
+ }
+
+ insert_string ("?>\n");
+
if (docbook)
{
- insert_string ("<!DOCTYPE Book PUBLIC \"-//OASIS//DTD DocBook V3.1//EN\">");
+ insert_string ("<!DOCTYPE book PUBLIC \"-//OASIS//DTD DocBook XML V4.2//EN\" \"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd\" [\n <!ENTITY tex \"TeX\">\n <!ENTITY latex \"LaTeX\">\n]>");
xml_element_list = docbook_element_list;
}
else
{
- insert_string ("<!DOCTYPE texinfo SYSTEM \"texinfo.dtd\">");
+ insert_string ("<!DOCTYPE texinfo PUBLIC \"-//GNU//DTD TexinfoML V");
+ insert_string (VERSION);
+ insert_string ("//EN\" \"http://www.gnu.org/software/texinfo/dtd/");
+ insert_string (VERSION);
+ insert_string ("/texinfo.dtd\">");
xml_element_list = texinfoml_element_list;
}
- if (docbook)
+ if (language_code != last_language_code)
{
- if (language_code != last_language_code)
+ if (docbook)
xml_insert_element_with_attribute (TEXINFO, START, "lang=\"%s\"", language_table[language_code].abbrev);
+ else
+ xml_insert_element_with_attribute (TEXINFO, START, "xml:lang=\"%s\"", language_table[language_code].abbrev);
}
- else
- xml_insert_element (TEXINFO, START);
if (!docbook)
{
xml_insert_element (SETFILENAME, START);
@@ -466,9 +654,14 @@ xml_begin_document (output_filename)
static int element_stack[256];
static int element_stack_index = 0;
+static int
+xml_current_element (void)
+{
+ return element_stack[element_stack_index-1];
+}
+
static void
-xml_push_current_element (elt)
- int elt;
+xml_push_current_element (int elt)
{
element_stack[element_stack_index++] = elt;
if (element_stack_index > 200)
@@ -477,8 +670,8 @@ xml_push_current_element (elt)
xml_element_list[elt].name);
}
-void
-xml_pop_current_element ()
+static void
+xml_pop_current_element (void)
{
element_stack_index--;
if (element_stack_index < 0)
@@ -487,31 +680,67 @@ xml_pop_current_element ()
xml_current_element());
}
-static int
-xml_current_element ()
+int
+xml_current_stack_index (void)
{
- return element_stack[element_stack_index-1];
+ return element_stack_index;
}
-static void
-xml_indent ()
+void
+xml_end_current_element (void)
{
- int i;
- insert ('\n');
- for (i = 0; i < element_stack_index; i++)
- insert (' ');
+ xml_insert_element (xml_current_element (), END);
}
static void
-xml_indent_end_para ()
+xml_indent (void)
{
- int i;
- for (i = 0; i < element_stack_index; i++)
- insert (' ');
+ if (xml_indentation_increment > 0)
+ {
+ int i;
+ if (output_paragraph[output_paragraph_offset-1] != '\n')
+ insert ('\n');
+ for (i = 0; i < element_stack_index * xml_indentation_increment; i++)
+ insert (' ');
+ }
+}
+
+void
+xml_start_para (void)
+{
+ if (xml_in_para || xml_in_footnote
+ || !xml_element_list[xml_current_element()].contains_para)
+ return;
+
+ while (output_paragraph[output_paragraph_offset-1] == '\n')
+ output_paragraph_offset--;
+ xml_indent ();
+
+ insert_string ("<para");
+ if (xml_no_indent)
+ insert_string (" role=\"continues\"");
+ insert_string (">");
+ xml_no_indent = 0;
+ xml_in_para = 1;
}
void
-xml_end_document ()
+xml_end_para (void)
+{
+ if (!xml_in_para || xml_in_footnote)
+ return;
+
+ while (cr_or_whitespace(output_paragraph[output_paragraph_offset-1]))
+ output_paragraph_offset--;
+
+ insert_string ("</para>");
+ if (xml_indentation_increment > 0)
+ insert ('\n');
+ xml_in_para = 0;
+}
+
+void
+xml_end_document (void)
{
if (xml_node_open)
{
@@ -526,7 +755,8 @@ xml_end_document ()
xml_close_sections (xml_node_level);
xml_insert_element (TEXINFO, END);
- insert_string ("\n");
+ if (xml_indentation_increment == 0)
+ insert ('\n');
insert_string ("<!-- Keep this comment at the end of the file\n\
Local variables:\n\
mode: sgml\n\
@@ -590,51 +820,72 @@ xml_insert_element_with_attribute (elt, arg, format, va_alist)
}
if (!book_started)
- return;
+ return;
- if (xml_after_table_term && elt != TABLETERM)
+ if (!xml_dont_touch_items_defs && arg == START)
{
- xml_after_table_term = 0;
- xml_insert_element (ITEM, START);
+ if (xml_after_table_term && elt != TABLETERM && xml_table_level
+ && !xml_in_item[xml_table_level])
+ {
+ xml_after_table_term = 0;
+ xml_insert_element (ITEM, START);
+ xml_in_item[xml_table_level] = 1;
+ }
+ else if (xml_after_def_term && elt != DEFINITIONTERM)
+ {
+ xml_after_def_term = 0;
+ xml_insert_element (DEFINITIONITEM, START);
+ xml_in_def_item[xml_definition_level] = 1;
+ }
}
if (docbook && !only_macro_expansion && (in_menu || in_detailmenu))
return;
- if (!xml_element_list[elt].name || !strlen (xml_element_list[elt].name))
+ if (executing_string && arg == END)
+ switch (elt)
+ {
+ case TABLEITEM:
+ xml_in_tableitem[xml_table_level] = 0;
+ break;
+ case ITEM:
+ xml_in_item[xml_table_level] = 0;
+ break;
+ case DEFINITIONTERM:
+ xml_in_def_item[xml_definition_level] = 0;
+ break;
+ }
+
+ /* We are special-casing FIGURE element for docbook. It does appear in
+ the tag stack, but not in the output. This is to make element replacement
+ work beautifully. */
+ if (docbook && elt == FLOAT)
{
- /*printf ("Warning: Inserting empty element %d\n", elt);*/
+ if (arg == START)
+ xml_push_current_element (elt);
+ else
+ xml_pop_current_element ();
return;
}
- if (arg == START && !xml_in_para && !xml_no_para
- && xml_element_list[elt].contained_in_para
- && xml_element_list[xml_current_element()].contains_para )
+ if (!xml_element_list[elt].name || !strlen (xml_element_list[elt].name))
{
- xml_indent ();
- insert_string ("<para>");
- xml_in_para = 1;
+ /*printf ("Warning: Inserting empty element %d\n", elt);*/
+ return;
}
+ if (arg == START && !xml_in_para && !xml_no_para
+ && xml_element_list[elt].contained_in_para)
+ xml_start_para ();
if (arg == START && xml_in_para && !xml_element_list[elt].contained_in_para)
- {
- xml_indent_end_para ();
- insert_string ("</para>");
- xml_in_para = 0;
- }
+ xml_end_para ();
if (arg == END && xml_in_para && !xml_element_list[elt].contained_in_para)
- {
- xml_indent_end_para ();
- insert_string ("</para>");
- xml_in_para = 0;
- }
-
- if (arg == START && !xml_in_para && !xml_element_list[elt].contained_in_para)
- xml_indent ();
+ xml_end_para ();
- if (docbook && xml_table_level && !xml_in_item[xml_table_level] && !in_table_title
+ if (docbook && xml_table_level && !in_table_title
+ && !xml_in_tableitem[xml_table_level] && !xml_in_item[xml_table_level]
&& arg == START && elt != TABLEITEM && elt != TABLETERM
&& !in_indexterm && xml_current_element() == TABLE)
{
@@ -642,12 +893,40 @@ xml_insert_element_with_attribute (elt, arg, format, va_alist)
xml_insert_element (TITLE, START);
}
+ if (arg == START && !xml_in_para && !xml_keep_space
+ && !xml_element_list[elt].contained_in_para)
+ xml_indent ();
if (arg == START)
xml_push_current_element (elt);
else
xml_pop_current_element ();
+ /* Eat one newline before </example> and the like. */
+ if (!docbook && arg == END
+ && (xml_element_list[elt].keep_space || elt == GROUP)
+ && output_paragraph[output_paragraph_offset-1] == '\n')
+ output_paragraph_offset--;
+
+ /* And eat whitespace before </entry> in @multitables. */
+ if (arg == END && elt == ENTRY)
+ while (cr_or_whitespace(output_paragraph[output_paragraph_offset-1]))
+ output_paragraph_offset--;
+
+ /* Indent elements that can contain <para>. */
+ if (arg == END && !xml_in_para && !xml_keep_space
+ && xml_element_list[elt].contains_para)
+ xml_indent ();
+
+ /* Here are the elements we want indented. These do not contain <para>
+ directly. */
+ if (arg == END && (elt == MENUENTRY || elt == ITEMIZE || elt == ENUMERATE
+ || elt == TABLEITEM || elt == TABLE
+ || elt == MULTITABLE || elt == TGROUP || elt == THEAD || elt == TBODY
+ || elt == ROW || elt == INFORMALFIGURE
+ || (!docbook && (elt == DEFINITION || elt == DEFINITIONTERM))))
+ xml_indent ();
+
insert ('<');
if (arg == END)
insert ('/');
@@ -677,13 +956,29 @@ xml_insert_element_with_attribute (elt, arg, format, va_alist)
{
insert_string (" id=\"");
insert_string (xml_node_id);
- insert_string ("\"");
+ insert ('"');
free (xml_node_id);
xml_node_id = NULL;
}
+ if (xml_element_list[elt].keep_space)
+ {
+ if (arg == START)
+ {
+ if (!docbook)
+ insert_string (" xml:space=\"preserve\"");
+ xml_keep_space++;
+ }
+ else
+ xml_keep_space--;
+ }
+
insert ('>');
+ if (!xml_in_para && !xml_element_list[elt].contained_in_para
+ && xml_element_list[elt].contains_para && xml_indentation_increment > 0)
+ insert ('\n');
+
xml_just_after_element = 1;
}
@@ -708,15 +1003,13 @@ xml_insert_entity (char *entity_name)
if (!xml_in_para && !xml_no_para && !only_macro_expansion
&& xml_element_list[xml_current_element ()].contains_para
&& !in_fixed_width_font)
- {
- insert_string ("<para>");
- xml_in_para = 1;
- }
+ xml_start_para ();
+
escape_html = 0;
- insert ('&');
+ add_char ('&');
escape_html = saved_escape_html;
insert_string (entity_name);
- insert (';');
+ add_char (';');
}
typedef struct _xml_section xml_section;
@@ -729,7 +1022,7 @@ struct _xml_section {
xml_section *last_section = NULL;
void
-xml_begin_node ()
+xml_begin_node (void)
{
first_section_opened = 1;
if (xml_in_abstract)
@@ -756,8 +1049,7 @@ xml_begin_node ()
}
void
-xml_close_sections (level)
- int level;
+xml_close_sections (int level)
{
if (!first_section_opened)
{
@@ -786,9 +1078,7 @@ xml_close_sections (level)
}
void
-xml_open_section (level, name)
- int level;
- char *name;
+xml_open_section (int level, char *name)
{
xml_section *sect = (xml_section *) xmalloc (sizeof (xml_section));
@@ -803,8 +1093,7 @@ xml_open_section (level, name)
}
void
-xml_start_menu_entry (tem)
- char *tem;
+xml_start_menu_entry (char *tem)
{
char *string;
discard_until ("* ");
@@ -849,12 +1138,13 @@ xml_start_menu_entry (tem)
free (string);
}
input_text_offset++; /* discard the second colon or the period */
+ skip_whitespace_and_newlines();
xml_insert_element (MENUCOMMENT, START);
xml_in_menu_entry_comment ++;
}
void
-xml_end_menu ()
+xml_end_menu (void)
{
if (xml_in_menu_entry)
{
@@ -872,15 +1162,15 @@ xml_end_menu ()
static int xml_last_character;
void
-xml_add_char (character)
- int character;
+xml_add_char (int character)
{
if (!book_started)
return;
if (docbook && !only_macro_expansion && (in_menu || in_detailmenu))
return;
- if (docbook && xml_table_level && !xml_in_item[xml_table_level] && !in_table_title
+ if (docbook && xml_table_level && !in_table_title
+ && !xml_in_item[xml_table_level] && !xml_in_tableitem[xml_table_level]
&& !cr_or_whitespace (character) && !in_indexterm)
{
in_table_title = 1;
@@ -888,7 +1178,8 @@ xml_add_char (character)
}
if (!first_section_opened && !xml_in_abstract && !xml_in_book_title
- && !xml_no_para && character != '\r' && character != '\n' && character != ' ')
+ && !xml_no_para && character != '\r' && character != '\n'
+ && character != ' ' && !is_in_insertion_of_type (copying))
{
if (!xml_in_bookinfo)
{
@@ -899,10 +1190,21 @@ xml_add_char (character)
xml_in_abstract = 1;
}
- if (xml_after_table_term && !xml_sort_index && !xml_in_xref_token)
+ if (!xml_sort_index && !xml_in_xref_token && !xml_dont_touch_items_defs)
{
- xml_after_table_term = 0;
- xml_insert_element (ITEM, START);
+ if (xml_after_table_term && xml_table_level
+ && !xml_in_item[xml_table_level])
+ {
+ xml_after_table_term = 0;
+ xml_insert_element (ITEM, START);
+ xml_in_item[xml_table_level] = 1;
+ }
+ else if (xml_after_def_term)
+ {
+ xml_after_def_term = 0;
+ xml_insert_element (DEFINITIONITEM, START);
+ xml_in_def_item[xml_definition_level] = 1;
+ }
}
if (xml_just_after_element && !xml_in_para && !inhibit_paragraph_indentation)
@@ -915,34 +1217,29 @@ xml_add_char (character)
if (xml_element_list[xml_current_element()].contains_para
&& !xml_in_para && !only_macro_expansion && !xml_no_para
&& !cr_or_whitespace (character) && !in_fixed_width_font)
+ xml_start_para ();
+
+ if (xml_in_para && character == '\n' && xml_last_character == '\n'
+ && !only_macro_expansion && !xml_no_para
+ && xml_element_list[xml_current_element()].contains_para )
{
- xml_indent ();
- insert_string ("<para>\n");
- xml_in_para = 1;
+ xml_end_para ();
+ xml_just_after_element = 1;
+ return;
}
- if (xml_in_para)
+ if (xml_in_menu_entry_comment && character == '\n' && xml_last_character == '\n')
{
- if (character == '\n')
- {
- if (xml_last_character == '\n' && !only_macro_expansion && !xml_no_para
- && xml_element_list[xml_current_element()].contains_para )
- {
- xml_indent_end_para ();
- insert_string ("</para>");
- xml_in_para = 0;
- xml_just_after_element = 1;
- if (xml_in_menu_entry_comment)
- {
- xml_insert_element (MENUCOMMENT, END);
- xml_in_menu_entry_comment = 0;
- xml_insert_element (MENUENTRY, END);
- xml_in_menu_entry = 0;
- }
- }
- }
+ xml_insert_element (MENUCOMMENT, END);
+ xml_in_menu_entry_comment = 0;
+ xml_insert_element (MENUENTRY, END);
+ xml_in_menu_entry = 0;
}
+ if (xml_in_menu_entry_comment && whitespace(character)
+ && cr_or_whitespace(xml_last_character))
+ return;
+
if (character == '\n' && !xml_in_para && !inhibit_paragraph_indentation)
return;
@@ -952,6 +1249,13 @@ xml_add_char (character)
insert_string ("&amp;");
else if (character == '<' && escape_html)
insert_string ("&lt;");
+ else if (character == '\n' && !xml_keep_space)
+ {
+ if (!xml_in_para && xml_just_after_element && !multitable_active)
+ return;
+ else
+ insert (docbook ? '\n' : ' ');
+ }
else
insert (character);
@@ -959,24 +1263,125 @@ xml_add_char (character)
}
void
-xml_insert_footnote (note)
- char *note;
+xml_insert_footnote (char *note)
{
+ if (!xml_in_para)
+ xml_start_para ();
+
+ xml_in_footnote = 1;
xml_insert_element (FOOTNOTE, START);
insert_string ("<para>");
execute_string ("%s", note);
insert_string ("</para>");
xml_insert_element (FOOTNOTE, END);
+ xml_in_footnote = 0;
}
+/* We need to keep the quotation stack ourself, because insertion_stack
+ loses item_function when we are closing the block, so we don't know
+ what to close then. */
+typedef struct quotation_elt
+{
+ struct quotation_elt *next;
+ char *type;
+} QUOTATION_ELT;
+
+static QUOTATION_ELT *quotation_stack = NULL;
+
+void
+xml_insert_quotation (char *type, int arg)
+{
+ int quotation_started = 0;
+
+ if (arg == START)
+ {
+ QUOTATION_ELT *new = xmalloc (sizeof (QUOTATION_ELT));
+ new->type = xstrdup (type);
+ new->next = quotation_stack;
+ quotation_stack = new;
+ }
+ else
+ type = quotation_stack->type;
+
+ /* Make use of special quotation styles of Docbook if we can. */
+ if (docbook && strlen(type))
+ {
+ /* Let's assume it started. */
+ quotation_started = 1;
+
+ if (strcasecmp (type, "tip") == 0)
+ xml_insert_element (TIP, arg);
+ else if (strcasecmp (type, "note") == 0)
+ xml_insert_element (NOTE, arg);
+ else if (strcasecmp (type, "important") == 0)
+ xml_insert_element (IMPORTANT, arg);
+ else if (strcasecmp (type, "warning") == 0)
+ xml_insert_element (WARNING, arg);
+ else if (strcasecmp (type, "caution") == 0)
+ xml_insert_element (CAUTION, arg);
+ else
+ /* Didn't find a known quotation type :\ */
+ quotation_started = 0;
+ }
+
+ if (!quotation_started)
+ {
+ xml_insert_element (QUOTATION, arg);
+ if (strlen(type) && arg == START)
+ execute_string ("@b{%s:} ", type);
+ }
+
+ if (arg == END)
+ {
+ QUOTATION_ELT *temp = quotation_stack;
+ if (temp == NULL)
+ return;
+ quotation_stack = quotation_stack->next;
+ free(temp->type);
+ free(temp);
+ }
+}
+
+/* Starting generic docbook floats. Just starts elt with correct label
+ and id attributes, and inserts title. */
+void
+xml_begin_docbook_float (int elt)
+{
+ if (current_float_used_title ()) /* in a nested float */
+ {
+ xml_insert_element (elt, START); /* just insert the tag */
+ return;
+ }
+
+
+ /* OK, need the title, tag, etc. */
+ if (elt == CARTOUCHE) /* no labels on <sidebar> */
+ {
+ if (strlen (current_float_id ()) == 0)
+ xml_insert_element (elt, START);
+ else
+ xml_insert_element_with_attribute (elt, START,
+ "id=\"%s\"", xml_id (current_float_id ()));
+ }
+ else if (strlen (current_float_id ()) == 0)
+ xml_insert_element_with_attribute (elt, START, "label=\"\"");
+ else
+ xml_insert_element_with_attribute (elt, START,
+ "id=\"%s\" label=\"%s\"", xml_id (current_float_id ()),
+ current_float_number ());
+
+ xml_insert_element (TITLE, START);
+ execute_string ("%s", current_float_title ());
+ xml_insert_element (TITLE, END);
+
+ current_float_set_title_used (); /* mark this title, tag, etc used */
+}
/*
* Lists and Tables
*/
void
-xml_begin_table (type, item_function)
- enum insertion_type type;
- char *item_function;
+xml_begin_table (int type, char *item_function)
{
switch (type)
{
@@ -987,7 +1392,9 @@ xml_begin_table (type, item_function)
{
xml_insert_element (TABLE, START);
xml_table_level ++;
+ xml_in_tableitem[xml_table_level] = 0;
xml_in_item[xml_table_level] = 0;
+ xml_after_table_term = 0;
}
break;
case itemize:
@@ -1019,25 +1426,27 @@ xml_begin_table (type, item_function)
}
void
-xml_end_table (type)
- enum insertion_type type;
+xml_end_table (int type)
{
switch (type)
{
case ftable:
case vtable:
case table:
- /* if (docbook)*/ /* 05-08 */
+ if (xml_in_item[xml_table_level])
{
- if (xml_in_item[xml_table_level])
- {
- xml_insert_element (ITEM, END);
- xml_insert_element (TABLEITEM, END);
- xml_in_item[xml_table_level] = 0;
- }
- xml_insert_element (TABLE, END);
- xml_table_level --;
+ xml_insert_element (ITEM, END);
+ xml_in_item[xml_table_level] = 0;
}
+ if (xml_in_tableitem[xml_table_level])
+ {
+ xml_insert_element (TABLEITEM, END);
+ xml_in_tableitem[xml_table_level] = 0;
+ }
+ xml_insert_element (TABLE, END);
+ xml_after_table_term = 0;
+ xml_table_level --;
+
break;
case itemize:
if (xml_in_item[xml_table_level])
@@ -1058,7 +1467,7 @@ xml_end_table (type)
}
void
-xml_begin_item ()
+xml_begin_item (void)
{
if (xml_in_item[xml_table_level])
xml_insert_element (ITEM, END);
@@ -1068,15 +1477,15 @@ xml_begin_item ()
}
void
-xml_begin_table_item ()
+xml_begin_table_item (void)
{
if (!xml_after_table_term)
{
if (xml_in_item[xml_table_level])
- {
- xml_insert_element (ITEM, END);
- xml_insert_element (TABLEITEM, END);
- }
+ xml_insert_element (ITEM, END);
+ if (xml_in_tableitem[xml_table_level])
+ xml_insert_element (TABLEITEM, END);
+
if (in_table_title)
{
in_table_title = 0;
@@ -1085,51 +1494,58 @@ xml_begin_table_item ()
xml_insert_element (TABLEITEM, START);
}
xml_insert_element (TABLETERM, START);
- xml_in_item[xml_table_level] = 1;
+ xml_in_tableitem[xml_table_level] = 1;
+ xml_in_item[xml_table_level] = 0;
xml_after_table_term = 0;
}
void
-xml_continue_table_item ()
+xml_continue_table_item (void)
{
xml_insert_element (TABLETERM, END);
xml_after_table_term = 1;
+ xml_in_item[xml_table_level] = 0;
}
void
-xml_begin_enumerate (enum_arg)
- char *enum_arg;
+xml_begin_enumerate (char *enum_arg)
{
if (!docbook)
xml_insert_element_with_attribute (ENUMERATE, START, "first=\"%s\"", enum_arg);
else
{
if (isdigit (*enum_arg))
- {
- if (enum_arg[0] == '1')
- xml_insert_element_with_attribute (ENUMERATE, START,
- "numeration=\"arabic\"", NULL);
- else
- xml_insert_element_with_attribute (ENUMERATE, START,
- "continuation=\"continues\" numeration=\"arabic\"", NULL);
- }
+ {
+ int enum_val = atoi (enum_arg);
+
+ /* Have to check the value, not just the first digit. */
+ if (enum_val == 0)
+ xml_insert_element_with_attribute (ENUMERATE, START,
+ "numeration=\"arabic\" role=\"0\"", NULL);
+ else if (enum_val == 1)
+ xml_insert_element_with_attribute (ENUMERATE, START,
+ "numeration=\"arabic\"", NULL);
+ else
+ xml_insert_element_with_attribute (ENUMERATE, START,
+ "continuation=\"continues\" numeration=\"arabic\"", NULL);
+ }
else if (isupper (*enum_arg))
{
- if (enum_arg[0] == 'A')
- xml_insert_element_with_attribute (ENUMERATE, START,
- "numeration=\"upperalpha\"", NULL);
- else
- xml_insert_element_with_attribute (ENUMERATE, START,
- "continuation=\"continues\" numeration=\"upperalpha\"", NULL);
- }
+ if (enum_arg[0] == 'A')
+ xml_insert_element_with_attribute (ENUMERATE, START,
+ "numeration=\"upperalpha\"", NULL);
+ else
+ xml_insert_element_with_attribute (ENUMERATE, START,
+ "continuation=\"continues\" numeration=\"upperalpha\"", NULL);
+ }
else
{
if (enum_arg[0] == 'a')
- xml_insert_element_with_attribute (ENUMERATE, START,
- "numeration=\"loweralpha\"", NULL);
- else
- xml_insert_element_with_attribute (ENUMERATE, START,
- "continuation=\"continues\" numeration=\"loweralpha\"", NULL);
+ xml_insert_element_with_attribute (ENUMERATE, START,
+ "numeration=\"loweralpha\"", NULL);
+ else
+ xml_insert_element_with_attribute (ENUMERATE, START,
+ "continuation=\"continues\" numeration=\"loweralpha\"", NULL);
}
}
xml_table_level ++;
@@ -1137,7 +1553,7 @@ xml_begin_enumerate (enum_arg)
}
void
-xml_end_enumerate ()
+xml_end_enumerate (void)
{
if (xml_in_item[xml_table_level])
{
@@ -1149,8 +1565,7 @@ xml_end_enumerate ()
}
static void
-xml_insert_text_file (name_arg)
- char *name_arg;
+xml_insert_text_file (char *name_arg)
{
char *fullname = xmalloc (strlen (name_arg) + 4 + 1);
FILE *image_file;
@@ -1193,31 +1608,78 @@ xml_insert_text_file (name_arg)
free (fullname);
}
-void
-xml_insert_docbook_image (name_arg)
- char *name_arg;
-{
- xml_insert_element (INFORMALFIGURE, START);
- xml_insert_element (MEDIAOBJECT, START);
+/* If NAME.EXT is accessible or FORCE is nonzero, insert a docbook
+ imagedata element for FMT. Return 1 if inserted something, 0 else. */
- xml_insert_element (IMAGEOBJECT, START);
- xml_insert_element_with_attribute (IMAGEDATA, START, "fileref=\"%s.eps\" format=\"eps\"", name_arg);
- xml_pop_current_element ();
- xml_insert_element (IMAGEOBJECT, END);
+static int
+try_docbook_image (const char *name, const char *ext, const char *fmt,
+ int force)
+{
+ int used = 0;
+ char *fullname = xmalloc (strlen (name) + 1 + strlen (ext) + 1);
+ sprintf (fullname, "%s.%s", name, ext);
+
+ if (force || access (fullname, R_OK) == 0)
+ {
+ xml_insert_element (IMAGEOBJECT, START);
+ xml_insert_element_with_attribute (IMAGEDATA, START,
+ "fileref=\"%s\" format=\"%s\"", fullname, fmt);
+ xml_insert_element (IMAGEDATA, END);
+ xml_insert_element (IMAGEOBJECT, END);
+ used = 1;
+ }
+
+ free (fullname);
+ return used;
+}
- xml_insert_element (IMAGEOBJECT, START);
- xml_insert_element_with_attribute (IMAGEDATA, START, "fileref=\"%s.jpg\" format=\"jpg\"", name_arg);
- xml_pop_current_element ();
- xml_insert_element (IMAGEOBJECT, END);
+void
+xml_insert_docbook_image (char *name_arg)
+{
+ int found = 0;
+ int elt = xml_in_para ? INLINEIMAGE : MEDIAOBJECT;
+
+ if (is_in_insertion_of_type (floatenv))
+ xml_begin_docbook_float (INFORMALFIGURE);
+ else if (!xml_in_para)
+ xml_insert_element (INFORMALFIGURE, START);
+
+ xml_no_para++;
+
+ xml_insert_element (elt, START);
+
+ /* A selected few from http://docbook.org/tdg/en/html/imagedata.html. */
+ if (try_docbook_image (name_arg, "eps", "EPS", 0))
+ found++;
+ if (try_docbook_image (name_arg, "gif", "GIF", 0))
+ found++;
+ if (try_docbook_image (name_arg, "jpg", "JPG", 0))
+ found++;
+ if (try_docbook_image (name_arg, "jpeg", "JPEG", 0))
+ found++;
+ if (try_docbook_image (name_arg, "pdf", "PDF", 0))
+ found++;
+ if (try_docbook_image (name_arg, "png", "PNG", 0))
+ found++;
+ if (try_docbook_image (name_arg, "svg", "SVG", 0))
+ found++;
+
+ /* If no luck so far, just assume we'll eventually have a jpg. */
+ if (!found)
+ try_docbook_image (name_arg, "jpg", "JPG", 1);
+
xml_insert_text_file (name_arg);
+ xml_insert_element (elt, END);
+
+ xml_no_para--;
- xml_insert_element (MEDIAOBJECT, END);
- xml_insert_element (INFORMALFIGURE, END);
+ if (elt == MEDIAOBJECT)
+ xml_insert_element (INFORMALFIGURE, END);
}
void
-xml_asterisk ()
+xml_asterisk (void)
{
}
@@ -1229,22 +1691,40 @@ xml_asterisk ()
to have real multilivel indexing support, not just string analysis. */
#define INDEX_SEP "@this string will never appear@" /* was , */
+typedef struct
+{
+ char *from;
+ char *to;
+} XML_SYNONYM;
+
+static XML_SYNONYM **xml_synonyms = NULL;
+static int xml_synonyms_count = 0;
+
void
-xml_insert_indexterm (indexterm, index)
- char *indexterm;
- char *index;
+xml_insert_indexterm (char *indexterm, char *index)
{
+ /* @index commands can appear between @item and @itemx, @deffn and @deffnx. */
if (!docbook)
{
+ /* Check to see if we need to do index redirection per @synindex. */
+ int i;
+ for (i = 0; i < xml_synonyms_count; i++)
+ {
+ if (STREQ (xml_synonyms[i]->from, index))
+ index = xstrdup (xml_synonyms[i]->to);
+ }
+
+ xml_dont_touch_items_defs++;
xml_insert_element_with_attribute (INDEXTERM, START, "index=\"%s\"", index);
in_indexterm = 1;
execute_string ("%s", indexterm);
xml_insert_element (INDEXTERM, END);
in_indexterm = 0;
+ xml_dont_touch_items_defs--;
}
else
{
- char *primary = NULL, *secondary;
+ char *primary = NULL, *secondary = NULL;
if (strstr (indexterm+1, INDEX_SEP))
{
primary = xmalloc (strlen (indexterm) + 1);
@@ -1257,14 +1737,14 @@ xml_insert_indexterm (indexterm, index)
in_indexterm = 1;
xml_insert_element (PRIMARY, START);
if (primary)
- execute_string (primary);
+ execute_string ("%s", primary);
else
- execute_string (indexterm);
+ execute_string ("%s", indexterm);
xml_insert_element (PRIMARY, END);
if (primary)
{
xml_insert_element (SECONDARY, START);
- execute_string (secondary);
+ execute_string ("%s", secondary);
xml_insert_element (SECONDARY, END);
}
xml_insert_element (INDEXTERM, END);
@@ -1279,7 +1759,7 @@ static char index_primary[2000]; /** xx no fixed limit */
static int indexdivempty = 0;
static void
-xml_close_indexentry ()
+xml_close_indexentry (void)
{
if (!in_indexentry)
return;
@@ -1291,58 +1771,92 @@ xml_close_indexentry ()
}
void
-xml_begin_index ()
+xml_begin_index (void)
{
- /*
- We assume that we just opened a section, and so that the last output is
- <SECTION ID="node-name"><TITLE>Title</TITLE>
- where SECTION can be CHAPTER, ...
- */
-
- xml_section *temp = last_section;
-
- int l = output_paragraph_offset-xml_last_section_output_position;
- char *tmp = xmalloc (l+1);
- char *p = tmp;
- strncpy (tmp, output_paragraph, l);
-
- /* We remove <SECTION */
- tmp[l] = '\0';
- while (*p != '<')
- p++;
- while (*p != ' ')
- p++;
-
- output_paragraph_offset = xml_last_section_output_position;
- xml_last_section_output_position = 0;
-
- xml_pop_current_element (); /* remove section element from elements stack */
-
- if (last_section)
- last_section = last_section->prev; /* remove section from sections stack */
- if (temp)
- {
- free (temp->name);
- free (temp);
- }
+ typedef struct xml_index_title {
+ struct xml_index_title *next;
+ char *title;
+ } XML_INDEX_TITLE;
- /* We put <INDEX> */
- xml_insert_element (PRINTINDEX, START);
- /* Remove the final > */
- output_paragraph_offset--;
+ static XML_INDEX_TITLE *xml_index_titles = NULL;
- /* and put ID="node-name"><TITLE>Title</TITLE> */
- insert_string (p);
+ if (!handling_delayed_writes)
+ { /* We assume that we just opened a section, and so that the last output is
+ <SECTION ID="node-name"><TITLE>Title</TITLE>
+ where SECTION can be CHAPTER, ... */
- if (xml_index_divisions)
+ XML_INDEX_TITLE *new = xmalloc (sizeof (XML_INDEX_TITLE));
+ xml_section *temp = last_section;
+
+ int l = output_paragraph_offset-xml_last_section_output_position;
+ char *tmp = xmalloc (l+1);
+ char *p = tmp;
+ strncpy (tmp, (char *) output_paragraph, l);
+
+ /* We remove <SECTION */
+ tmp[l] = '\0';
+ while (*p != '<')
+ p++;
+ while (*p != ' ')
+ p++;
+ /* ... and its label attribute. */
+ if (strncmp (p, " label=", 7) == 0)
+ {
+ p++;
+ while (*p != ' ')
+ p++;
+ }
+
+ output_paragraph_offset = xml_last_section_output_position;
+ xml_last_section_output_position = 0;
+
+ xml_pop_current_element (); /* remove section element from elements stack */
+
+ if (last_section)
+ last_section = last_section->prev; /* remove section from sections stack */
+ if (temp)
+ {
+ free (temp->name);
+ free (temp);
+ }
+
+ new->title = xstrdup (p);
+ new->next = xml_index_titles;
+ xml_index_titles = new;
+ }
+ else
{
- xml_insert_element (INDEXDIV, START);
- indexdivempty = 1;
+ static int xml_index_titles_reversed = 0;
+
+ if (!xml_index_titles_reversed)
+ {
+ xml_index_titles = (XML_INDEX_TITLE *) reverse_list
+ ((GENERIC_LIST *) xml_index_titles);
+ xml_index_titles_reversed = 1;
+ }
+
+ /* We put <INDEX> */
+ xml_insert_element (PRINTINDEX, START);
+ if (xml_index_titles)
+ {
+ /* Remove the final > */
+ output_paragraph_offset--;
+ /* and put ID="node-name"><TITLE>Title</TITLE> */
+ insert_string (xml_index_titles->title);
+ free (xml_index_titles->title);
+ xml_index_titles = xml_index_titles->next;
+ }
+
+ if (xml_index_divisions)
+ {
+ xml_insert_element (INDEXDIV, START);
+ indexdivempty = 1;
+ }
}
}
void
-xml_end_index ()
+xml_end_index (void)
{
xml_close_indexentry ();
if (xml_index_divisions)
@@ -1350,9 +1864,8 @@ xml_end_index ()
xml_insert_element (PRINTINDEX, END);
}
-void
-xml_index_divide (entry)
- char *entry;
+static void
+xml_index_divide (char *entry)
{
char c;
if (strlen (entry) > (strlen (xml_element_list[CODE].name) + 2) &&
@@ -1376,9 +1889,7 @@ xml_index_divide (entry)
}
void
-xml_insert_indexentry (entry, node)
- char *entry;
- char *node;
+xml_insert_indexentry (char *entry, char *node)
{
char *primary = NULL, *secondary;
if (xml_index_divisions)
@@ -1397,7 +1908,7 @@ xml_insert_indexentry (entry, node)
{
xml_insert_element (SECONDARYIE, END);
xml_insert_element (SECONDARYIE, START);
- execute_string (secondary);
+ execute_string ("%s", secondary);
}
else
{
@@ -1405,10 +1916,10 @@ xml_insert_indexentry (entry, node)
xml_insert_element (INDEXENTRY, START);
in_indexentry = 1;
xml_insert_element (PRIMARYIE, START);
- execute_string (primary);
+ execute_string ("%s", primary);
xml_insert_element (PRIMARYIE, END);
xml_insert_element (SECONDARYIE, START);
- execute_string (secondary);
+ execute_string ("%s", secondary);
in_secondary = 1;
}
}
@@ -1418,11 +1929,20 @@ xml_insert_indexentry (entry, node)
xml_insert_element (INDEXENTRY, START);
in_indexentry = 1;
xml_insert_element (PRIMARYIE, START);
- execute_string (entry);
+ execute_string ("%s", entry);
}
- add_word_args (", %s", _("see "));
- xml_insert_element_with_attribute (XREF, START, "linkend=\"%s\"", xml_id (node));
- xml_pop_current_element ();
+ add_word (", ");
+
+ /* Don't link to @unnumbered sections directly.
+ We are disabling warnings temporarily, otherwise these xrefs
+ will cause bogus warnings about missing punctuation. */
+ {
+ extern int print_warnings;
+ int save_print_warnings = print_warnings;
+ print_warnings = 0;
+ execute_string ("%cxref{%s}", COMMAND_PREFIX, xstrdup (node));
+ print_warnings = save_print_warnings;
+ }
if (primary)
{
@@ -1437,25 +1957,56 @@ xml_insert_indexentry (entry, node)
/* xml_insert_element (INDEXENTRY, END); */
}
+void
+xml_synindex (char *from, char *to)
+{
+ int i, slot;
+
+ slot = -1;
+ for (i = 0; i < xml_synonyms_count; i++)
+ if (!xml_synonyms[i])
+ {
+ slot = i;
+ break;
+ }
+
+ if (slot < 0)
+ {
+ slot = xml_synonyms_count;
+ xml_synonyms_count++;
+
+ xml_synonyms = (XML_SYNONYM **) xrealloc (xml_synonyms,
+ (xml_synonyms_count + 1) * sizeof (XML_SYNONYM *));
+ }
+
+ xml_synonyms[slot] = xmalloc (sizeof (XML_SYNONYM));
+ xml_synonyms[slot]->from = xstrdup (from);
+ xml_synonyms[slot]->to = xstrdup (to);
+}
+
/*
* MULTITABLE
*/
+
+static int multitable_columns_count;
+static int *multitable_column_widths;
+
void
-xml_begin_multitable (ncolumns, column_widths)
- int ncolumns;
- int *column_widths;
+xml_begin_multitable (int ncolumns, int *column_widths)
{
int i;
if (docbook)
{
- xml_insert_element (MULTITABLE, START);
- xml_insert_element_with_attribute (TGROUP, START, "cols=\"%d\"", ncolumns);
- for (i=0; i<ncolumns; i++)
- {
- xml_insert_element_with_attribute (COLSPEC, START, "colwidth=\"%d*\"", column_widths[i]);
- xml_pop_current_element ();
- }
- xml_insert_element (TBODY, START);
+ if (is_in_insertion_of_type (floatenv))
+ xml_begin_docbook_float (MULTITABLE);
+ else
+ xml_insert_element (MULTITABLE, START);
+
+ multitable_columns_count = ncolumns;
+ multitable_column_widths = xmalloc (sizeof (int) * ncolumns);
+ memcpy (multitable_column_widths, column_widths,
+ sizeof (int) * ncolumns);
+
xml_no_para = 1;
}
else
@@ -1471,43 +2022,307 @@ xml_begin_multitable (ncolumns, column_widths)
}
}
+static void
+xml_begin_multitable_group (void)
+{
+ int i;
+
+ xml_insert_element_with_attribute (TGROUP, START, "cols=\"%d\"",
+ multitable_columns_count);
+
+ for (i=0; i < multitable_columns_count; i++)
+ {
+ xml_insert_element_with_attribute (COLSPEC, START,
+ "colwidth=\"%d*\"", multitable_column_widths[i]);
+ xml_insert_element (COLSPEC, END);
+ }
+}
+
void
-xml_end_multitable_row (first_row)
- int first_row;
+xml_end_multitable_row (int first_row)
{
if (!first_row)
{
xml_insert_element (ENTRY, END);
xml_insert_element (ROW, END);
}
+
+ if (headitem_flag)
+ {
+ if (!first_row)
+ {
+ if (after_headitem)
+ xml_insert_element (THEAD, END);
+ else
+ xml_insert_element (TBODY, END);
+ xml_insert_element (TGROUP, END);
+ }
+
+ xml_begin_multitable_group ();
+ xml_insert_element (THEAD, START);
+ }
+ else if (first_row)
+ {
+ xml_begin_multitable_group ();
+ xml_insert_element (TBODY, START);
+ }
+ else if (after_headitem)
+ {
+ xml_insert_element (THEAD, END);
+ xml_insert_element (TBODY, START);
+ }
+ else if (first_row)
+ xml_insert_element (TBODY, START);
+
xml_insert_element (ROW, START);
xml_insert_element (ENTRY, START);
}
void
-xml_end_multitable_column ()
+xml_end_multitable_column (void)
{
xml_insert_element (ENTRY, END);
xml_insert_element (ENTRY, START);
}
void
-xml_end_multitable ()
+xml_end_multitable (void)
{
- if (docbook)
+ xml_insert_element (ENTRY, END);
+ xml_insert_element (ROW, END);
+
+ if (after_headitem)
{
- xml_insert_element (ENTRY, END);
- xml_insert_element (ROW, END);
- xml_insert_element (TBODY, END);
- xml_insert_element (TGROUP, END);
- xml_insert_element (MULTITABLE, END);
- xml_no_para = 0;
+ if (docbook)
+ warning (_("@headitem as the last item of @multitable produces invalid Docbook documents"));
+ xml_insert_element (THEAD, END);
}
else
+ xml_insert_element (TBODY, END);
+
+ if (docbook)
+ xml_insert_element (TGROUP, END);
+
+ xml_insert_element (MULTITABLE, END);
+ xml_no_para = 0;
+}
+
+/*
+ * Parameters in @def definitions
+ */
+
+#define DEFUN_SELF_DELIMITING(c) \
+ ((c) == '(' || (c) == ')' || (c) == '[' || (c) == ']')
+
+void
+xml_process_defun_args (char **defun_args, int auto_var_p)
+{
+ int pending_space = 0;
+ int just_after_paramtype = 0;
+
+ for (;;)
{
- xml_insert_element (ENTRY, END);
- xml_insert_element (ROW, END);
- xml_insert_element (MULTITABLE, END);
- xml_no_para = 0;
+ char *defun_arg = *defun_args++;
+
+ if (defun_arg == NULL)
+ break;
+
+ if (defun_arg[0] == ' ')
+ {
+ pending_space = 1;
+ continue;
+ }
+
+ if (pending_space)
+ {
+ add_char (' ');
+ pending_space = 0;
+ }
+
+ if (DEFUN_SELF_DELIMITING (defun_arg[0]))
+ {
+ xml_insert_element (DEFDELIMITER, START);
+ add_char (defun_arg[0]);
+ xml_insert_element (DEFDELIMITER, END);
+ just_after_paramtype = 0;
+ }
+ else if (defun_arg[0] == '&')
+ {
+ xml_insert_element (DEFPARAM, START);
+ add_word (defun_arg);
+ xml_insert_element (DEFPARAM, END);
+ just_after_paramtype = 0;
+ }
+ else if (defun_arg[0] == COMMAND_PREFIX || just_after_paramtype)
+ {
+ xml_insert_element (DEFPARAM, START);
+ execute_string ("%s", defun_arg);
+ xml_insert_element (DEFPARAM, END);
+ just_after_paramtype = 0;
+ }
+ else if (defun_arg[0] == ',' || defun_arg[0] == ';')
+ {
+ xml_insert_element (DEFDELIMITER, START);
+ add_word (defun_arg);
+ xml_insert_element (DEFDELIMITER, END);
+ just_after_paramtype = 0;
+ }
+ else if (auto_var_p)
+ {
+ xml_insert_element (DEFPARAM, START);
+ add_word (defun_arg);
+ xml_insert_element (DEFPARAM, END);
+ just_after_paramtype = 0;
+ }
+ else
+ {
+ xml_insert_element (DEFPARAMTYPE, START);
+ add_word (defun_arg);
+ xml_insert_element (DEFPARAMTYPE, END);
+ just_after_paramtype = 1;
+ }
}
}
+
+void
+xml_begin_definition (void)
+{
+ xml_insert_element (DEFINITION, START);
+ xml_definition_level ++;
+ xml_in_def_item[xml_definition_level] = 0;
+}
+
+void
+xml_end_definition (void)
+{
+ if (xml_in_def_item[xml_definition_level])
+ {
+ xml_insert_element (DEFINITIONITEM, END);
+ xml_in_def_item[xml_definition_level] = 0;
+ }
+ xml_after_def_term = 0;
+ xml_insert_element (DEFINITION, END);
+ xml_definition_level --;
+}
+
+void
+xml_begin_def_term (int base_type, const char *category,
+ char *defined_name, char *type_name, char *type_name2)
+{
+ xml_after_def_term = 0;
+ xml_insert_element (DEFINITIONTERM, START);
+
+ /* Index entry */
+ switch (base_type)
+ {
+ case deffn:
+ case deftypefn:
+ execute_string ("@findex %s\n", defined_name);
+ break;
+ case defvr:
+ case deftypevr:
+ case defcv:
+ execute_string ("@vindex %s\n", defined_name);
+ break;
+ case deftypecv:
+ case deftypeivar:
+ execute_string ("@vindex %s %s %s\n", defined_name, _("of"), type_name);
+ break;
+ case deftypemethod:
+ case defop:
+ case deftypeop:
+ execute_string ("@findex %s %s %s\n", defined_name, _("on"), type_name);
+ break;
+ case deftp:
+ execute_string ("@tindex %s\n", defined_name);
+ break;
+ }
+
+ /* Start with category. */
+ xml_insert_element (DEFCATEGORY, START);
+ execute_string (docbook ? "--- %s:" : "%s", category);
+ xml_insert_element (DEFCATEGORY, END);
+ add_char(' ');
+
+ /* Output type name first for typed definitions. */
+ switch (base_type)
+ {
+ case deffn:
+ case defvr:
+ case deftp:
+ break;
+
+ case deftypefn:
+ case deftypevr:
+ xml_insert_element (DEFTYPE, START);
+ execute_string ("%s", type_name);
+ xml_insert_element (DEFTYPE, END);
+ add_char (' ');
+ break;
+
+ case deftypecv:
+ case deftypeivar:
+ case deftypemethod:
+ case deftypeop:
+ xml_insert_element (DEFTYPE, START);
+ execute_string ("%s", type_name2);
+ xml_insert_element (DEFTYPE, END);
+ add_char (' ');
+ break;
+
+ default:
+ xml_insert_element (DEFCLASS, START);
+ execute_string ("%s", type_name);
+ xml_insert_element (DEFCLASS, END);
+ add_char (' ');
+ break;
+ }
+
+ /* Categorize rest of the definitions. */
+ switch (base_type)
+ {
+ case deffn:
+ case deftypefn:
+ xml_insert_element (DEFFUNCTION, START);
+ execute_string ("%s", defined_name);
+ xml_insert_element (DEFFUNCTION, END);
+ break;
+
+ case defvr:
+ case deftypevr:
+ xml_insert_element (DEFVARIABLE, START);
+ execute_string ("%s", defined_name);
+ xml_insert_element (DEFVARIABLE, END);
+ break;
+
+ case deftp:
+ xml_insert_element (DEFDATATYPE, START);
+ execute_string ("%s", defined_name);
+ xml_insert_element (DEFDATATYPE, END);
+ break;
+
+ case defcv:
+ case deftypecv:
+ case deftypeivar:
+ xml_insert_element (DEFCLASSVAR, START);
+ execute_string ("%s", defined_name);
+ xml_insert_element (DEFCLASSVAR, END);
+ break;
+
+ case defop:
+ case deftypeop:
+ case deftypemethod:
+ /* Operation / Method */
+ xml_insert_element (DEFOPERATION, START);
+ execute_string ("%s", defined_name);
+ xml_insert_element (DEFOPERATION, END);
+ break;
+ }
+}
+
+void
+xml_end_def_term (void)
+{
+ xml_insert_element (DEFINITIONTERM, END);
+ xml_after_def_term = 1;
+}
diff --git a/contrib/texinfo/makeinfo/xml.h b/contrib/texinfo/makeinfo/xml.h
index 35be066..f82b483 100644
--- a/contrib/texinfo/makeinfo/xml.h
+++ b/contrib/texinfo/makeinfo/xml.h
@@ -1,7 +1,7 @@
/* xml.h -- xml output declarations.
- $Id: xml.h,v 1.6 2002/11/11 12:37:34 feloy Exp $
+ $Id: xml.h,v 1.24 2004/11/26 00:48:35 karl Exp $
- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- Written by Philippe Martin <feloy@free.fr>. */
+ Originally written by Philippe Martin <feloy@free.fr>. */
#ifndef XML_H
#define XML_H
@@ -28,6 +28,8 @@
extern int xml_index_divisions;
extern int xml_sort_index;
+extern int xml_no_indent;
+
extern int xml_node_open;
extern int xml_no_para;
extern char *xml_node_id;
@@ -38,49 +40,120 @@ extern int xml_in_bookinfo;
extern int xml_in_book_title;
extern int xml_in_abstract;
+/* Non-zero if we are handling an element that can appear between
+ @item and @itemx, @deffn and @deffnx. */
+extern int xml_dont_touch_items_defs;
+
+/* Non-zero if whitespace in the source document should be kept as-is. */
+extern int xml_keep_space;
+
enum xml_element
{
- TEXINFO=0, SETFILENAME, TITLEFONT, SETTITLE,
+ TEXINFO=0, SETFILENAME, TITLEFONT, SETTITLE, DOCUMENTDESCRIPTION,
/* Node */
- NODE /* 4 */, NODENEXT, NODEPREV, NODEUP,
+ NODE, NODENEXT, NODEPREV, NODEUP,
/* Structuring */
- CHAPTER /* 8 */, SECTION, SUBSECTION, SUBSUBSECTION,
- TOP /* 12 */, UNNUMBERED, UNNUMBEREDSEC, UNNUMBEREDSUBSEC,
+ CHAPTER, SECTION, SUBSECTION, SUBSUBSECTION,
+ TOP, UNNUMBERED, UNNUMBEREDSEC, UNNUMBEREDSUBSEC,
UNNUMBEREDSUBSUBSEC,
- APPENDIX /* 17 */, APPENDIXSEC, APPENDIXSUBSEC, APPENDIXSUBSUBSEC,
- MAJORHEADING /* 21 */, CHAPHEADING, HEADING, SUBHEADING, SUBSUBHEADING,
+ APPENDIX, APPENDIXSEC, APPENDIXSUBSEC, APPENDIXSUBSUBSEC,
+ MAJORHEADING, CHAPHEADING, HEADING, SUBHEADING, SUBSUBHEADING,
+ /* Titlepage */
+ TITLEPAGE, AUTHOR, BOOKTITLE, BOOKSUBTITLE,
/* Menu */
- MENU /* 26 */, MENUENTRY, MENUTITLE, MENUCOMMENT, MENUNODE, NODENAME,
+ MENU, DETAILMENU, MENUENTRY, MENUTITLE, MENUCOMMENT, MENUNODE,
+ NODENAME,
/* -- */
- ACRONYM/* 32 */, TT, CODE, KBD, URL, KEY, VAR, SC, DFN, EMPH, STRONG,
- CITE, NOTFIXEDWIDTH, I, B, R,
+ ACRONYM, ACRONYMWORD, ACRONYMDESC,
+ ABBREV, ABBREVWORD, ABBREVDESC,
+ TT, CODE, COMMAND_TAG, ENV, FILE_TAG, OPTION, SAMP, KBD, URL, KEY,
+ VAR, SC, DFN, EMPH, STRONG, CITE, NOTFIXEDWIDTH, I, B, R, SLANTED, SANSSERIF,
+ EXDENT,
TITLE,
IFINFO,
SP, CENTER,
DIRCATEGORY,
QUOTATION, EXAMPLE, SMALLEXAMPLE, LISP, SMALLLISP, CARTOUCHE,
- COPYING, FORMAT, SMALLFORMAT, DISPLAY, SMALLDISPLAY,
- FOOTNOTE,
+ COPYING, FORMAT, SMALLFORMAT, DISPLAY, SMALLDISPLAY, VERBATIM,
+ FOOTNOTE, LINEANNOTATION,
+ TIP, NOTE, IMPORTANT, WARNING, CAUTION,
ITEMIZE, ITEMFUNCTION, ITEM, ENUMERATE, TABLE, TABLEITEM, TABLETERM,
INDEXTERM,
+ MATH, DIMENSION,
XREF, XREFNODENAME, XREFINFONAME, XREFPRINTEDDESC, XREFINFOFILE,
XREFPRINTEDNAME,
INFOREF, INFOREFNODENAME, INFOREFREFNAME, INFOREFINFONAME,
UREF, UREFURL, UREFDESC, UREFREPLACEMENT,
EMAIL, EMAILADDRESS, EMAILNAME,
- GROUP,
- PRINTINDEX,
+ GROUP, FLOAT, FLOATTYPE, FLOATPOS, CAPTION, SHORTCAPTION,
+ FLOATTABLE, FLOATFIGURE, FLOATEXAMPLE, FLOATCARTOUCHE,
+ PRINTINDEX, LISTOFFLOATS,
ANCHOR,
- IMAGE,
+ IMAGE, INLINEIMAGE, IMAGEALTTEXT,
PRIMARY, SECONDARY, INFORMALFIGURE, MEDIAOBJECT, IMAGEOBJECT,
IMAGEDATA, TEXTOBJECT,
INDEXENTRY, PRIMARYIE, SECONDARYIE, INDEXDIV,
- MULTITABLE, TGROUP, COLSPEC, TBODY, ENTRY, ROW,
+ MULTITABLE, TGROUP, COLSPEC, THEAD, TBODY, ENTRY, ROW,
BOOKINFO, ABSTRACT, REPLACEABLE, ENVAR, COMMENT, FUNCTION, LEGALNOTICE,
+ CONTENTS, SHORTCONTENTS, DOCUMENTLANGUAGE,
+ SETVALUE, CLEARVALUE,
+ DEFINITION, DEFINITIONTERM, DEFINITIONITEM,
+ DEFCATEGORY, DEFFUNCTION, DEFVARIABLE, DEFPARAM, DEFDELIMITER, DEFTYPE,
+ DEFPARAMTYPE, DEFDATATYPE, DEFCLASS, DEFCLASSVAR, DEFOPERATION,
PARA
};
-extern void xml_insert_element (/* int name, int arg */);
-extern char *xml_id (/* char *id */);
+extern void xml_add_char (int character),
+ xml_asterisk (void),
+ xml_insert_element (int elt, int arg),
+ xml_insert_entity (char *entity_name),
+ xml_insert_footnote (char *note),
+ xml_insert_quotation (char *type, int arg),
+ xml_insert_indexentry (char *entry, char *node),
+ xml_insert_indexterm (char *indexterm, char *index),
+ xml_insert_docbook_image (char *name_arg),
+ xml_synindex (char *from, char *to),
+ xml_start_para (void),
+ xml_end_para (void),
+ xml_begin_document (char *output_filename),
+ xml_end_document (void),
+ xml_start_menu_entry (char *tem),
+ xml_end_menu (void),
+ xml_end_current_element (void),
+ xml_open_section (int level, char *name),
+ xml_close_sections (int level),
+ xml_begin_node (void),
+ xml_begin_index (void),
+ xml_end_index (void),
+ xml_begin_multitable (int ncolumns, int *column_widths),
+ xml_end_multitable (void),
+ xml_end_multitable_row (int first_row),
+ xml_end_multitable_column (void),
+ xml_begin_table (int type, char *item_function),
+ xml_end_table (int type),
+ xml_begin_item (void),
+ xml_begin_table_item (void),
+ xml_continue_table_item (void),
+ xml_begin_enumerate (char *enum_arg),
+ xml_end_enumerate (void),
+ xml_begin_docbook_float (int elt);
+
+extern char *xml_id (char *id);
+
+extern void xml_begin_definition (void),
+ xml_end_definition (void),
+ xml_process_defun_args (char **defun_args, int auto_var_p),
+ xml_begin_def_term (int base_type, const char *category,
+ char *defined_name, char *type_name, char *type_name2),
+ xml_end_def_term (void);
+
+extern int xml_current_stack_index (void),
+ xml_element (char *name);
+
+#if defined (VA_FPRINTF) && __STDC__
+void xml_insert_element_with_attribute (int elt, int arg, char *format, ...);
+#else
+void xml_insert_element_with_attribute ();
+#endif
#endif /* XML_H */
diff --git a/contrib/texinfo/makeinfo/xref.c b/contrib/texinfo/makeinfo/xref.c
new file mode 100644
index 0000000..314d4a0
--- /dev/null
+++ b/contrib/texinfo/makeinfo/xref.c
@@ -0,0 +1,620 @@
+/* xref.c -- cross references for Texinfo.
+ $Id: xref.c,v 1.4 2004/12/21 17:28:35 karl Exp $
+
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "system.h"
+#include "cmds.h"
+#include "float.h"
+#include "html.h"
+#include "index.h"
+#include "macro.h"
+#include "makeinfo.h"
+#include "node.h"
+#include "xml.h"
+#include "xref.h"
+
+/* Flags which control initial output string for xrefs. */
+int px_ref_flag = 0;
+int ref_flag = 0;
+
+/* Called in the multiple-argument case to make sure we generate a valid
+ Info reference. In the single-argument case, the :: we output
+ suffices for the Info readers to find the end of the reference. */
+static void
+add_xref_punctuation (void)
+{
+ if (px_ref_flag || ref_flag) /* user inserts punct after @xref */
+ {
+ /* Check if there's already punctuation. */
+ int next_char = next_nonwhitespace_character ();
+
+ if (next_char == -1)
+ /* EOF while looking for punctuation, let's
+ insert a period instead of crying. */
+ add_char ('.');
+ else if (next_char != ',' && next_char != '.')
+ /* period and comma terminate xrefs, and nothing else. Instead
+ of generating an Info reference that can't be followed,
+ though, just insert a period. Not pretty, but functional. */
+ add_char ('.');
+ }
+}
+
+/* Return next comma-delimited argument, but do not cross a close-brace
+ boundary. Clean up whitespace, too. If EXPAND is nonzero, replace
+ the entire brace-delimited argument list with its expansion before
+ looking for the next comma. */
+char *
+get_xref_token (int expand)
+{
+ char *string = 0;
+
+ if (docbook)
+ xml_in_xref_token = 1;
+
+ if (expand)
+ {
+ int old_offset = input_text_offset;
+ int old_lineno = line_number;
+
+ get_until_in_braces ("}", &string);
+ if (curchar () == '}') /* as opposed to end of text */
+ input_text_offset++;
+ if (input_text_offset > old_offset)
+ {
+ int limit = input_text_offset;
+
+ input_text_offset = old_offset;
+ line_number = old_lineno;
+ only_macro_expansion++;
+ replace_with_expansion (input_text_offset, &limit);
+ only_macro_expansion--;
+ }
+ free (string);
+ }
+
+ get_until_in_braces (",", &string);
+ if (curchar () == ',')
+ input_text_offset++;
+ fix_whitespace (string);
+
+ if (docbook)
+ xml_in_xref_token = 0;
+
+ return string;
+}
+
+
+/* NOTE: If you wonder why the HTML output is produced with such a
+ peculiar mix of calls to add_word and execute_string, here's the
+ reason. get_xref_token (1) expands all macros in a reference, but
+ any other commands, like @value, @@, etc., are left intact. To
+ expand them, we need to run the arguments through execute_string.
+ However, characters like <, &, > and others cannot be let into
+ execute_string, because they will be escaped. See the mess? */
+
+/* Make a cross reference. */
+void
+cm_xref (int arg)
+{
+ if (arg == START)
+ {
+ char *arg1 = get_xref_token (1); /* expands all macros in xref */
+ char *arg2 = get_xref_token (0);
+ char *arg3 = get_xref_token (0);
+ char *arg4 = get_xref_token (0);
+ char *arg5 = get_xref_token (0);
+ char *tem;
+
+ /* "@xref{,Foo,, Bar, Baz} is not valid usage of @xref. The
+ first argument must never be blank." --rms.
+ We hereby comply by disallowing such constructs. */
+ if (!*arg1)
+ line_error (_("First argument to cross-reference may not be empty"));
+
+ if (docbook)
+ {
+ if (!ref_flag)
+ add_word (px_ref_flag || printing_index
+ ? (char *) _("see ") : (char *) _("See "));
+
+ if (!*arg4 && !*arg5)
+ {
+ char *arg1_id = xml_id (arg1);
+
+ if (*arg2 || *arg3)
+ {
+ xml_insert_element_with_attribute (XREFNODENAME, START,
+ "linkend=\"%s\"", arg1_id);
+ free (arg1_id);
+ execute_string ("%s", *arg3 ? arg3 : arg2);
+ xml_insert_element (XREFNODENAME, END);
+ }
+ else
+ {
+ xml_insert_element_with_attribute (XREF, START,
+ "linkend=\"%s\"", arg1_id);
+ xml_insert_element (XREF, END);
+ free (arg1_id);
+ }
+ }
+ else if (*arg5)
+ {
+ add_word_args (_("See section ``%s'' in "), *arg3 ? arg3 : arg1);
+ xml_insert_element (CITE, START);
+ add_word (arg5);
+ xml_insert_element (CITE, END);
+ }
+ else if (*arg4)
+ {
+ /* Very sad, we are losing xrefs made to ``info only'' books. */
+ }
+ }
+ else if (xml)
+ {
+ if (!ref_flag)
+ add_word_args ("%s", px_ref_flag ? _("see ") : _("See "));
+
+ xml_insert_element (XREF, START);
+ xml_insert_element (XREFNODENAME, START);
+ execute_string ("%s", arg1);
+ xml_insert_element (XREFNODENAME, END);
+ if (*arg2)
+ {
+ xml_insert_element (XREFINFONAME, START);
+ execute_string ("%s", arg2);
+ xml_insert_element (XREFINFONAME, END);
+ }
+ if (*arg3)
+ {
+ xml_insert_element (XREFPRINTEDDESC, START);
+ execute_string ("%s", arg3);
+ xml_insert_element (XREFPRINTEDDESC, END);
+ }
+ if (*arg4)
+ {
+ xml_insert_element (XREFINFOFILE, START);
+ execute_string ("%s", arg4);
+ xml_insert_element (XREFINFOFILE, END);
+ }
+ if (*arg5)
+ {
+ xml_insert_element (XREFPRINTEDNAME, START);
+ execute_string ("%s", arg5);
+ xml_insert_element (XREFPRINTEDNAME, END);
+ }
+ xml_insert_element (XREF, END);
+ }
+ else if (html)
+ {
+ if (!ref_flag)
+ add_word_args ("%s", px_ref_flag ? _("see ") : _("See "));
+ }
+ else
+ add_word_args ("%s", px_ref_flag ? "*note " : "*Note ");
+
+ if (!xml)
+ {
+ if (*arg5 || *arg4)
+ {
+ /* arg1 - node name
+ arg2 - reference name
+ arg3 - title or topic (and reference name if arg2 is NULL)
+ arg4 - info file name
+ arg5 - printed manual title */
+ char *ref_name;
+
+ if (!*arg2)
+ {
+ if (*arg3)
+ ref_name = arg3;
+ else
+ ref_name = arg1;
+ }
+ else
+ ref_name = arg2;
+
+ if (html)
+ { /* More to do eventually, down to Unicode
+ Normalization Form C. See the HTML Xref nodes in
+ the manual. */
+ char *file_arg = arg4;
+ add_html_elt ("<a href=");
+
+ {
+ /* If there's a directory part, ignore it. */
+ char *p = strrchr (file_arg, '/');
+ if (p)
+ file_arg = p + 1;
+
+ /* If there's a dot, make it a NULL terminator, so the
+ extension does not get into the way. */
+ p = strrchr (file_arg , '.');
+ if (p != NULL)
+ *p = 0;
+ }
+
+ if (! *file_arg)
+ warning (_("Empty file name for HTML cross reference in `%s'"),
+ arg4);
+
+ /* Note that if we are splitting, and the referenced
+ tag is an anchor rather than a node, we will
+ produce a reference to a file whose name is
+ derived from the anchor name. However, only
+ nodes create files, so we are referencing a
+ non-existent file. cm_anchor, which see, deals
+ with that problem. */
+ if (splitting)
+ execute_string ("\"../%s/", file_arg);
+ else
+ execute_string ("\"%s.html", file_arg);
+ /* Do not collapse -- to -, etc., in references. */
+ in_fixed_width_font++;
+ tem = expansion (arg1, 0); /* expand @-commands in node */
+ in_fixed_width_font--;
+ add_anchor_name (tem, 1);
+ free (tem);
+ add_word ("\">");
+ execute_string ("%s",ref_name);
+ add_word ("</a>");
+ }
+ else
+ {
+ execute_string ("%s:", ref_name);
+ in_fixed_width_font++;
+ execute_string (" (%s)%s", arg4, arg1);
+ add_xref_punctuation ();
+ in_fixed_width_font--;
+ }
+
+ /* Free all of the arguments found. */
+ if (arg1) free (arg1);
+ if (arg2) free (arg2);
+ if (arg3) free (arg3);
+ if (arg4) free (arg4);
+ if (arg5) free (arg5);
+ return;
+ }
+ else
+ remember_node_reference (arg1, line_number, followed_reference);
+
+ if (*arg3)
+ {
+ if (html)
+ {
+ add_html_elt ("<a href=\"");
+ in_fixed_width_font++;
+ tem = expansion (arg1, 0);
+ in_fixed_width_font--;
+ add_anchor_name (tem, 1);
+ free (tem);
+ add_word ("\">");
+ execute_string ("%s", *arg2 ? arg2 : arg3);
+ add_word ("</a>");
+ }
+ else
+ {
+ execute_string ("%s:", *arg2 ? arg2 : arg3);
+ in_fixed_width_font++;
+ execute_string (" %s", arg1);
+ add_xref_punctuation ();
+ in_fixed_width_font--;
+ }
+ }
+ else
+ {
+ if (html)
+ {
+ add_html_elt ("<a href=\"");
+ in_fixed_width_font++;
+ tem = expansion (arg1, 0);
+ in_fixed_width_font--;
+ add_anchor_name (tem, 1);
+ free (tem);
+ add_word ("\">");
+ if (*arg2)
+ execute_string ("%s", arg2);
+ else
+ {
+ char *fref = get_float_ref (arg1);
+ execute_string ("%s", fref ? fref : arg1);
+ free (fref);
+ }
+ add_word ("</a>");
+ }
+ else
+ {
+ if (*arg2)
+ {
+ execute_string ("%s:", arg2);
+ in_fixed_width_font++;
+ execute_string (" %s", arg1);
+ add_xref_punctuation ();
+ in_fixed_width_font--;
+ }
+ else
+ {
+ char *fref = get_float_ref (arg1);
+ if (fref)
+ { /* Reference is being made to a float. */
+ execute_string ("%s:", fref);
+ in_fixed_width_font++;
+ execute_string (" %s", arg1);
+ add_xref_punctuation ();
+ in_fixed_width_font--;
+ }
+ else
+ {
+ in_fixed_width_font++;
+ execute_string ("%s::", arg1);
+ in_fixed_width_font--;
+ }
+ }
+ }
+ }
+ }
+ /* Free all of the arguments found. */
+ if (arg1) free (arg1);
+ if (arg2) free (arg2);
+ if (arg3) free (arg3);
+ if (arg4) free (arg4);
+ if (arg5) free (arg5);
+ }
+ else
+ { /* Check that the next non-whitespace character is valid to follow
+ an xref (so Info readers can find the node names).
+ `input_text_offset' is pointing at the "}" which ended the xref
+ command. This is not used for @pxref or @ref, since we insert
+ the necessary punctuation above, if needed. */
+ int temp = next_nonwhitespace_character ();
+
+ if (temp == -1)
+ warning (_("End of file reached while looking for `.' or `,'"));
+ else if (temp != '.' && temp != ',')
+ warning (_("`.' or `,' must follow @%s, not `%c'"), command, temp);
+ }
+}
+
+void
+cm_pxref (int arg)
+{
+ if (arg == START)
+ {
+ px_ref_flag++;
+ cm_xref (arg);
+ px_ref_flag--;
+ }
+ /* cm_xref isn't called with arg == END, which disables the code near
+ the end of cm_xref that checks for `.' or `,' after the
+ cross-reference. This is because cm_xref generates the required
+ character itself (when needed) if px_ref_flag is set. */
+}
+
+void
+cm_ref (int arg)
+{
+ /* See the comments in cm_pxref about the checks for punctuation. */
+ if (arg == START)
+ {
+ ref_flag++;
+ cm_xref (arg);
+ ref_flag--;
+ }
+}
+
+void
+cm_inforef (int arg)
+{
+ if (arg == START)
+ {
+ char *node = get_xref_token (1); /* expands all macros in inforef */
+ char *pname = get_xref_token (0);
+ char *file = get_xref_token (0);
+
+ /* (see comments at cm_xref). */
+ if (!*node)
+ line_error (_("First argument to @inforef may not be empty"));
+
+ if (xml && !docbook)
+ {
+ xml_insert_element (INFOREF, START);
+ xml_insert_element (INFOREFNODENAME, START);
+ execute_string ("%s", node);
+ xml_insert_element (INFOREFNODENAME, END);
+ if (*pname)
+ {
+ xml_insert_element (INFOREFREFNAME, START);
+ execute_string ("%s", pname);
+ xml_insert_element (INFOREFREFNAME, END);
+ }
+ xml_insert_element (INFOREFINFONAME, START);
+ execute_string ("%s", file);
+ xml_insert_element (INFOREFINFONAME, END);
+
+ xml_insert_element (INFOREF, END);
+ }
+ else if (html)
+ {
+ char *tem;
+
+ add_word ((char *) _("see "));
+ /* html fixxme: revisit this */
+ add_html_elt ("<a href=");
+ if (splitting)
+ execute_string ("\"../%s/", file);
+ else
+ execute_string ("\"%s.html", file);
+ tem = expansion (node, 0);
+ add_anchor_name (tem, 1);
+ add_word ("\">");
+ execute_string ("%s", *pname ? pname : tem);
+ add_word ("</a>");
+ free (tem);
+ }
+ else
+ {
+ if (*pname)
+ execute_string ("*note %s: (%s)%s", pname, file, node);
+ else
+ execute_string ("*note (%s)%s::", file, node);
+ }
+
+ free (node);
+ free (pname);
+ free (file);
+ }
+}
+
+/* A URL reference. */
+void
+cm_uref (int arg)
+{
+ if (arg == START)
+ {
+ extern int printing_index;
+ char *url = get_xref_token (1); /* expands all macros in uref */
+ char *desc = get_xref_token (0);
+ char *replacement = get_xref_token (0);
+
+ if (docbook)
+ {
+ xml_insert_element_with_attribute (UREF, START, "url=\"%s\"",
+ text_expansion (url));
+ if (*replacement)
+ execute_string ("%s", replacement);
+ else if (*desc)
+ execute_string ("%s", desc);
+ else
+ execute_string ("%s", url);
+ xml_insert_element (UREF, END);
+ }
+ else if (xml)
+ {
+ xml_insert_element (UREF, START);
+ xml_insert_element (UREFURL, START);
+ execute_string ("%s", url);
+ xml_insert_element (UREFURL, END);
+ if (*desc)
+ {
+ xml_insert_element (UREFDESC, START);
+ execute_string ("%s", desc);
+ xml_insert_element (UREFDESC, END);
+ }
+ if (*replacement)
+ {
+ xml_insert_element (UREFREPLACEMENT, START);
+ execute_string ("%s", replacement);
+ xml_insert_element (UREFREPLACEMENT, END);
+ }
+ xml_insert_element (UREF, END);
+ }
+ else if (html)
+ { /* never need to show the url */
+ add_html_elt ("<a href=");
+ /* don't collapse `--' etc. in the url */
+ in_fixed_width_font++;
+ execute_string ("\"%s\"", url);
+ in_fixed_width_font--;
+ add_word (">");
+ execute_string ("%s", *replacement ? replacement
+ : (*desc ? desc : url));
+ add_word ("</a>");
+ }
+ else if (*replacement) /* do not show the url */
+ execute_string ("%s", replacement);
+ else if (*desc) /* show both text and url */
+ {
+ execute_string ("%s ", desc);
+ in_fixed_width_font++;
+ execute_string ("(%s)", url);
+ in_fixed_width_font--;
+ }
+ else /* no text at all, so have the url to show */
+ {
+ in_fixed_width_font++;
+ execute_string ("%s%s%s",
+ printing_index ? "" : "`",
+ url,
+ printing_index ? "" : "'");
+ in_fixed_width_font--;
+ }
+ if (url)
+ free (url);
+ if (desc)
+ free (desc);
+ if (replacement)
+ free (replacement);
+ }
+}
+
+/* An email reference. */
+void
+cm_email (int arg)
+{
+ if (arg == START)
+ {
+ char *addr = get_xref_token (1); /* expands all macros in email */
+ char *name = get_xref_token (0);
+
+ if (xml && docbook)
+ {
+ xml_insert_element_with_attribute (EMAIL, START, "url=\"mailto:%s\"", addr);
+ if (*name)
+ execute_string ("%s", name);
+ xml_insert_element (EMAIL, END);
+ }
+ else if (xml)
+ {
+ xml_insert_element (EMAIL, START);
+ xml_insert_element (EMAILADDRESS, START);
+ execute_string ("%s", addr);
+ xml_insert_element (EMAILADDRESS, END);
+ if (*name)
+ {
+ xml_insert_element (EMAILNAME, START);
+ execute_string ("%s", name);
+ xml_insert_element (EMAILNAME, END);
+ }
+ xml_insert_element (EMAIL, END);
+ }
+ else if (html)
+ {
+ add_html_elt ("<a href=");
+ /* don't collapse `--' etc. in the address */
+ in_fixed_width_font++;
+ execute_string ("\"mailto:%s\"", addr);
+ in_fixed_width_font--;
+ add_word (">");
+ execute_string ("%s", *name ? name : addr);
+ add_word ("</a>");
+ }
+ else
+ {
+ execute_string ("%s%s", name, *name ? " " : "");
+ in_fixed_width_font++;
+ execute_string ("<%s>", addr);
+ in_fixed_width_font--;
+ }
+
+ if (addr)
+ free (addr);
+ if (name)
+ free (name);
+ }
+}
diff --git a/contrib/texinfo/makeinfo/xref.h b/contrib/texinfo/makeinfo/xref.h
new file mode 100644
index 0000000..8f2711b
--- /dev/null
+++ b/contrib/texinfo/makeinfo/xref.h
@@ -0,0 +1,30 @@
+/* xref.h -- declarations for the cross references.
+ $Id: xref.h,v 1.1 2004/04/11 17:56:47 karl Exp $
+
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifndef XREF_H
+#define XREF_H
+
+enum reftype
+{
+ menu_reference, followed_reference
+};
+
+extern char *get_xref_token (int expand);
+
+#endif /* not XREF_H */
diff --git a/contrib/texinfo/util/README b/contrib/texinfo/util/README
index d3f8a75..5354c35 100644
--- a/contrib/texinfo/util/README
+++ b/contrib/texinfo/util/README
@@ -1,4 +1,4 @@
-$Id: README,v 1.4 2002/12/29 17:47:20 karl Exp $
+$Id: README,v 1.5 2004/04/11 17:56:47 karl Exp $
texinfo/util/README
Copyright (C) 2002 Free Software Foundation, Inc.
diff --git a/contrib/texinfo/util/install-info.c b/contrib/texinfo/util/install-info.c
index d346fb7..bbc7a8c 100644
--- a/contrib/texinfo/util/install-info.c
+++ b/contrib/texinfo/util/install-info.c
@@ -1,7 +1,7 @@
/* install-info -- create Info directory entry(ies) for an Info file.
- $Id: install-info.c,v 1.9 2003/05/19 13:10:59 karl Exp $
+ $Id: install-info.c,v 1.12 2004/04/11 17:56:47 karl Exp $
- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -23,11 +23,14 @@
static char *progname = "install-info";
-struct line_data *findlines ();
-void insert_entry_here ();
-int compare_section_names (), compare_entries_text ();
-
struct spec_entry;
+struct spec_section;
+
+struct line_data *findlines (char *data, int size, int *nlinesp);
+void insert_entry_here (struct spec_entry *entry, int line_number,
+ struct line_data *dir_lines, int n_entries);
+int compare_section_names (const void *s1, const void *s2);
+int compare_entries_text (const void *e1, const void *e2);
/* Data structures. */
@@ -137,8 +140,7 @@ struct option longopts[] =
/* VARARGS1 */
void
-error (s1, s2, s3)
- char *s1, *s2, *s3;
+error (const char *s1, const char *s2, const char *s3)
{
fprintf (stderr, "%s: ", progname);
fprintf (stderr, s1, s2, s3);
@@ -147,8 +149,7 @@ error (s1, s2, s3)
/* VARARGS1 */
void
-warning (s1, s2, s3)
- char *s1, *s2, *s3;
+warning (const char *s1, const char *s2, const char *s3)
{
fprintf (stderr, _("%s: warning: "), progname);
fprintf (stderr, s1, s2, s3);
@@ -158,8 +159,7 @@ warning (s1, s2, s3)
/* Print error message and exit. */
void
-fatal (s1, s2, s3)
- char *s1, *s2, *s3;
+fatal (const char *s1, const char *s2, const char *s3)
{
error (s1, s2, s3);
xexit (1);
@@ -168,8 +168,7 @@ fatal (s1, s2, s3)
/* Return a newly-allocated string
whose contents concatenate those of S1, S2, S3. */
char *
-concat (s1, s2, s3)
- char *s1, *s2, *s3;
+concat (const char *s1, const char *s2, const char *s3)
{
int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3);
char *result = (char *) xmalloc (len1 + len2 + len3 + 1);
@@ -186,9 +185,7 @@ concat (s1, s2, s3)
copied from starting at STRING. */
char *
-copy_string (string, size)
- char *string;
- int size;
+copy_string (const char *string, int size)
{
int i;
char *copy = (char *) xmalloc (size + 1);
@@ -201,19 +198,71 @@ copy_string (string, size)
/* Print fatal error message based on errno, with file name NAME. */
void
-pfatal_with_name (name)
- char *name;
+pfatal_with_name (const char *name)
{
char *s = concat ("", strerror (errno), _(" for %s"));
fatal (s, name, 0);
}
+/* Compare the menu item names in LINE1 (line length LEN1)
+ and LINE2 (line length LEN2). Return 1 if the item name
+ in LINE1 is less, 0 otherwise. */
+
+static int
+menu_line_lessp (char *line1, int len1, char *line2, int len2)
+{
+ int minlen = (len1 < len2 ? len1 : len2);
+ int i;
+
+ for (i = 0; i < minlen; i++)
+ {
+ /* If one item name is a prefix of the other,
+ the former one is less. */
+ if (line1[i] == ':' && line2[i] != ':')
+ return 1;
+ if (line2[i] == ':' && line1[i] != ':')
+ return 0;
+ /* If they both continue and differ, one is less. */
+ if (line1[i] < line2[i])
+ return 1;
+ if (line1[i] > line2[i])
+ return 0;
+ }
+ /* With a properly formatted dir file,
+ we can only get here if the item names are equal. */
+ return 0;
+}
+
+/* Compare the menu item names in LINE1 (line length LEN1)
+ and LINE2 (line length LEN2). Return 1 if the item names are equal,
+ 0 otherwise. */
+
+static int
+menu_line_equal (char *line1, int len1, char *line2, int len2)
+{
+ int minlen = (len1 < len2 ? len1 : len2);
+ int i;
+
+ for (i = 0; i < minlen; i++)
+ {
+ /* If both item names end here, they are equal. */
+ if (line1[i] == ':' && line2[i] == ':')
+ return 1;
+ /* If they both continue and differ, one is less. */
+ if (line1[i] != line2[i])
+ return 0;
+ }
+ /* With a properly formatted dir file,
+ we can only get here if the item names are equal. */
+ return 1;
+}
+
+
/* Given the full text of a menu entry, null terminated,
return just the menu item name (copied). */
char *
-extract_menu_item_name (item_text)
- char *item_text;
+extract_menu_item_name (char *item_text)
{
char *p;
@@ -231,8 +280,7 @@ extract_menu_item_name (item_text)
return just the menu item file (copied). */
char *
-extract_menu_file_name (item_text)
- char *item_text;
+extract_menu_file_name (char *item_text)
{
char *p = item_text;
@@ -275,8 +323,7 @@ extract_menu_file_name (item_text)
/* Return FNAME with any [.info][.gz] suffix removed. */
static char *
-strip_info_suffix (fname)
- char *fname;
+strip_info_suffix (char *fname)
{
char *ret = xstrdup (fname);
unsigned len = strlen (ret);
@@ -320,14 +367,32 @@ strip_info_suffix (fname)
TERM_CHAR) and still match. */
static int
-menu_item_equal (item, term_char, name)
- char *item;
- char term_char;
- char *name;
+menu_item_equal (const char *item, char term_char, const char *name)
{
+ int ret;
+ const char *item_basename = item;
unsigned name_len = strlen (name);
+
+ /* We must compare the basename in ITEM, since we are passed the
+ basename of the original info file. Otherwise, a new entry like
+ "lilypond/lilypond" won't match "lilypond".
+
+ Actually, it seems to me that we should really compare the whole
+ name, and not just the basename. Couldn't there be dir1/foo.info
+ and dir2/foo.info? Also, it seems like we should be using the
+ filename from the new dir entries, not the filename on the command
+ line. Not worrying about those things right now, though. --karl,
+ 26mar04. */
+ while (*item_basename && !IS_SLASH (*item_basename)
+ && *item_basename != term_char)
+ item_basename++;
+ if (! *item_basename || *item_basename == term_char)
+ item_basename = item; /* no /, use original */
+ else
+ item_basename++; /* have /, move past it */
+
/* First, ITEM must actually match NAME (usually it won't). */
- int ret = strncasecmp (item, name, name_len) == 0;
+ ret = strncasecmp (item_basename, name, name_len) == 0;
if (ret)
{
/* Then, `foobar' doesn't match `foo', so be sure we've got all of
@@ -345,8 +410,8 @@ menu_item_equal (item, term_char, name)
{
char *suffix = suffixes[i];
unsigned suffix_len = strlen (suffix);
- ret = strncasecmp (item + name_len, suffix, suffix_len) == 0
- && item[name_len + suffix_len] == term_char;
+ ret = strncasecmp (item_basename + name_len, suffix, suffix_len) == 0
+ && item_basename[name_len + suffix_len] == term_char;
}
}
@@ -356,7 +421,7 @@ menu_item_equal (item, term_char, name)
void
-suggest_asking_for_help ()
+suggest_asking_for_help (void)
{
fprintf (stderr, _("\tTry `%s --help' for a complete list of options.\n"),
progname);
@@ -364,7 +429,7 @@ suggest_asking_for_help ()
}
void
-print_help ()
+print_help (void)
{
printf (_("Usage: %s [OPTION]... [INFO-FILE [DIR-FILE]]\n\
\n\
@@ -409,8 +474,7 @@ Texinfo home page: http://www.gnu.org/software/texinfo/"));
already exists, do nothing. */
void
-ensure_dirfile_exists (dirfile)
- char *dirfile;
+ensure_dirfile_exists (char *dirfile)
{
int desc = open (dirfile, O_RDONLY);
if (desc < 0 && errno == ENOENT)
@@ -424,7 +488,7 @@ ensure_dirfile_exists (dirfile)
fprintf (f, _("This is the file .../info/dir, which contains the\n\
topmost node of the Info hierarchy, called (dir)Top.\n\
The first time you invoke Info you start off looking at this node.\n\
-\n\
+\x1f\n\
%s\tThis is the top of the INFO tree\n\
\n\
This (the Directory node) gives a menu of major topics.\n\
@@ -466,13 +530,9 @@ The first time you invoke Info you start off looking at this node.\n\
magic number, not the filename. */
FILE *
-open_possibly_compressed_file (filename, create_callback,
- opened_filename, compression_program, is_pipe)
- char *filename;
- void (*create_callback) ();
- char **opened_filename;
- char **compression_program;
- int *is_pipe;
+open_possibly_compressed_file (char *filename,
+ void (*create_callback) (char *),
+ char **opened_filename, char **compression_program, int *is_pipe)
{
char *local_opened_filename, *local_compression_program;
int nread;
@@ -602,13 +662,9 @@ open_possibly_compressed_file (filename, create_callback,
a fatal error. */
char *
-readfile (filename, sizep, create_callback,
- opened_filename, compression_program)
- char *filename;
- int *sizep;
- void (*create_callback) ();
- char **opened_filename;
- char **compression_program;
+readfile (char *filename, int *sizep,
+ void (*create_callback) (char *), char **opened_filename,
+ char **compression_program)
{
char *real_name;
FILE *f;
@@ -659,16 +715,9 @@ readfile (filename, sizep, create_callback,
we'll write dir.gz on output. */
static void
-output_dirfile (dirfile, dir_nlines, dir_lines,
- n_entries_to_add, entries_to_add, input_sections,
- compression_program)
- char *dirfile;
- int dir_nlines;
- struct line_data *dir_lines;
- int n_entries_to_add;
- struct spec_entry *entries_to_add;
- struct spec_section *input_sections;
- char *compression_program;
+output_dirfile (char *dirfile, int dir_nlines, struct line_data *dir_lines,
+ int n_entries_to_add, struct spec_entry *entries_to_add,
+ struct spec_section *input_sections, char *compression_program)
{
int i;
FILE *output;
@@ -797,11 +846,8 @@ output_dirfile (dirfile, dir_nlines, dir_lines,
/* Parse the input to find the section names and the entry names it
specifies. Return the number of entries to add from this file. */
int
-parse_input (lines, nlines, sections, entries)
- const struct line_data *lines;
- int nlines;
- struct spec_section **sections;
- struct spec_entry **entries;
+parse_input (const struct line_data *lines, int nlines,
+ struct spec_section **sections, struct spec_entry **entries)
{
int n_entries = 0;
int prefix_length = strlen ("INFO-DIR-SECTION ");
@@ -927,11 +973,8 @@ parse_input (lines, nlines, sections, entries)
/* Parse the dir file whose basename is BASE_NAME. Find all the
nodes, and their menus, and the sections of their menus. */
int
-parse_dir_file (lines, nlines, nodes, base_name)
- struct line_data *lines;
- int nlines;
- struct node **nodes;
- const char *base_name;
+parse_dir_file (struct line_data *lines, int nlines, struct node **nodes,
+ const char *base_name)
{
int node_header_flag = 0;
int something_deleted = 0;
@@ -1081,15 +1124,12 @@ parse_dir_file (lines, nlines, nodes, base_name)
}
int
-main (argc, argv)
- int argc;
- char **argv;
+main (int argc, char **argv)
{
char *opened_dirfilename;
char *compression_program;
char *infile_sans_info;
char *infile = 0, *dirfile = 0;
- unsigned infilelen_sans_info;
/* Record the text of the Info file, as a sequence of characters
and as a sequence of lines. */
@@ -1148,8 +1188,8 @@ main (argc, argv)
case 'd':
if (dirfile)
{
- fprintf (stderr, _("%s: Specify the Info directory only once.\n"),
- progname);
+ fprintf (stderr, _("%s: already have dir file: %s\n"),
+ progname, dirfile);
suggest_asking_for_help ();
}
dirfile = optarg;
@@ -1158,8 +1198,8 @@ main (argc, argv)
case 'D':
if (dirfile)
{
- fprintf (stderr, _("%s: Specify the Info directory only once.\n"),
- progname);
+ fprintf (stderr, _("%s: already have dir file: %s\n"),
+ progname, dirfile);
suggest_asking_for_help ();
}
dirfile = concat (optarg, "", "/dir");
@@ -1222,11 +1262,10 @@ main (argc, argv)
case 'V':
printf ("install-info (GNU %s) %s\n", PACKAGE, VERSION);
puts ("");
- printf (_("Copyright (C) %s Free Software Foundation, Inc.\n\
-There is NO warranty. You may redistribute this software\n\
+ puts ("Copyright (C) 2004 Free Software Foundation, Inc.");
+ printf (_("There is NO warranty. You may redistribute this software\n\
under the terms of the GNU General Public License.\n\
-For more information about these matters, see the files named COPYING.\n"),
- "2003");
+For more information about these matters, see the files named COPYING.\n"));
xexit (0);
default:
@@ -1320,7 +1359,6 @@ For more information about these matters, see the files named COPYING.\n"),
infile_basename--;
infile_sans_info = strip_info_suffix (infile_basename);
- infilelen_sans_info = strlen (infile_sans_info);
}
something_deleted
@@ -1330,7 +1368,6 @@ For more information about these matters, see the files named COPYING.\n"),
Find the menu sections to add them in.
In each section, find the proper alphabetical place to add
each of the entries. */
-
if (!delete_flag)
{
struct node *node;
@@ -1423,10 +1460,7 @@ For more information about these matters, see the files named COPYING.\n"),
Store the length of that vector into *NLINESP. */
struct line_data *
-findlines (data, size, nlinesp)
- char *data;
- int size;
- int *nlinesp;
+findlines (char *data, int size, int *nlinesp)
{
int i;
int lineflag = 1;
@@ -1471,75 +1505,16 @@ findlines (data, size, nlinesp)
return lines;
}
-/* Compare the menu item names in LINE1 (line length LEN1)
- and LINE2 (line length LEN2). Return 1 if the item name
- in LINE1 is less, 0 otherwise. */
-
-int
-menu_line_lessp (line1, len1, line2, len2)
- char *line1;
- int len1;
- char *line2;
- int len2;
-{
- int minlen = (len1 < len2 ? len1 : len2);
- int i;
-
- for (i = 0; i < minlen; i++)
- {
- /* If one item name is a prefix of the other,
- the former one is less. */
- if (line1[i] == ':' && line2[i] != ':')
- return 1;
- if (line2[i] == ':' && line1[i] != ':')
- return 0;
- /* If they both continue and differ, one is less. */
- if (line1[i] < line2[i])
- return 1;
- if (line1[i] > line2[i])
- return 0;
- }
- /* With a properly formatted dir file,
- we can only get here if the item names are equal. */
- return 0;
-}
-
-/* Compare the menu item names in LINE1 (line length LEN1)
- and LINE2 (line length LEN2). Return 1 if the item names are equal,
- 0 otherwise. */
-
-int
-menu_line_equal (line1, len1, line2, len2)
- char *line1;
- int len1;
- char *line2;
- int len2;
-{
- int minlen = (len1 < len2 ? len1 : len2);
- int i;
-
- for (i = 0; i < minlen; i++)
- {
- /* If both item names end here, they are equal. */
- if (line1[i] == ':' && line2[i] == ':')
- return 1;
- /* If they both continue and differ, one is less. */
- if (line1[i] != line2[i])
- return 0;
- }
- /* With a properly formatted dir file,
- we can only get here if the item names are equal. */
- return 1;
-}
-
-/* This is the comparison function for qsort
- for a vector of pointers to struct spec_section.
+/* This is the comparison function for qsort for a vector of pointers to
+ struct spec_section. (Have to use const void * as the parameter type
+ to avoid incompatible-with-qsort warnings.)
Compare the section names. */
int
-compare_section_names (sec1, sec2)
- struct spec_section **sec1, **sec2;
+compare_section_names (const void *p1, const void *p2)
{
+ struct spec_section **sec1 = (struct spec_section **) p1;
+ struct spec_section **sec2 = (struct spec_section **) p2;
char *name1 = (*sec1)->name;
char *name2 = (*sec2)->name;
return strcmp (name1, name2);
@@ -1550,9 +1525,10 @@ compare_section_names (sec1, sec2)
Compare the entries' text. */
int
-compare_entries_text (entry1, entry2)
- struct spec_entry **entry1, **entry2;
+compare_entries_text (const void *p1, const void *p2)
{
+ struct spec_entry **entry1 = (struct spec_entry **) p1;
+ struct spec_entry **entry2 = (struct spec_entry **) p2;
char *text1 = (*entry1)->text;
char *text2 = (*entry2)->text;
char *colon1 = strchr (text1, ':');
@@ -1576,11 +1552,8 @@ compare_entries_text (entry1, entry2)
in main. */
void
-insert_entry_here (entry, line_number, dir_lines, n_entries)
- struct spec_entry *entry;
- int line_number;
- struct line_data *dir_lines;
- int n_entries;
+insert_entry_here (struct spec_entry *entry, int line_number,
+ struct line_data *dir_lines, int n_entries)
{
int i, j;
diff --git a/contrib/texinfo/util/texindex.c b/contrib/texinfo/util/texindex.c
index f63fdb5..569f877 100644
--- a/contrib/texinfo/util/texindex.c
+++ b/contrib/texinfo/util/texindex.c
@@ -1,8 +1,8 @@
/* texindex -- sort TeX index dribble output into an actual index.
- $Id: texindex.c,v 1.9 2003/05/19 13:10:59 karl Exp $
+ $Id: texindex.c,v 1.11 2004/04/11 17:56:47 karl Exp $
Copyright (C) 1987, 1991, 1992, 1996, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003 Free Software Foundation, Inc.
+ 2002, 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -37,7 +37,7 @@ static char *program_name = "texindex";
#define memset(ptr, ignore, count) bzero (ptr, count)
#endif
-char *mktemp ();
+char *mktemp (char *);
#if !defined (SEEK_SET)
# define SEEK_SET 0
@@ -45,6 +45,8 @@ char *mktemp ();
# define SEEK_END 2
#endif /* !SEEK_SET */
+struct linebuffer;
+
/* When sorting in core, this structure describes one line
and the position and length of its first keyfield. */
struct lineinfo
@@ -121,34 +123,34 @@ char first_initial;
int keep_tempfiles;
/* Forward declarations of functions in this file. */
-void decode_command ();
-void sort_in_core ();
-void sort_offline ();
-char **parsefile ();
-char *find_field ();
-char *find_pos ();
-long find_value ();
-char *find_braced_pos ();
-char *find_braced_end ();
-void writelines ();
-int compare_field ();
-int compare_full ();
-long readline ();
-int merge_files ();
-int merge_direct ();
-void pfatal_with_name ();
-void fatal ();
-void error ();
+void decode_command (int argc, char **argv);
+void sort_in_core (char *infile, int total, char *outfile);
+void sort_offline (char *infile, off_t total, char *outfile);
+char **parsefile (char *filename, char **nextline, char *data, long int size);
+char *find_field (struct keyfield *keyfield, char *str, long int *lengthptr);
+char *find_pos (char *str, int words, int chars, int ignore_blanks);
+long find_value (char *start, long int length);
+char *find_braced_pos (char *str, int words, int chars, int ignore_blanks);
+char *find_braced_end (char *str);
+void writelines (char **linearray, int nlines, FILE *ostream);
+int compare_field (struct keyfield *keyfield, char *start1,
+ long int length1, long int pos1, char *start2,
+ long int length2, long int pos2);
+int compare_full (const void *, const void *);
+long readline (struct linebuffer *linebuffer, FILE *stream);
+int merge_files (char **infiles, int nfiles, char *outfile);
+int merge_direct (char **infiles, int nfiles, char *outfile);
+void pfatal_with_name (const char *name);
+void fatal (const char *format, const char *arg);
+void error (const char *format, const char *arg);
void *xmalloc (), *xrealloc ();
-char *concat ();
-void flush_tempfiles ();
+char *concat (char *s1, char *s2);
+void flush_tempfiles (int to_count);
#define MAX_IN_CORE_SORT 500000
int
-main (argc, argv)
- int argc;
- char **argv;
+main (int argc, char **argv)
{
int i;
@@ -260,8 +262,7 @@ TEXINDEX_OPTION texindex_options[] = {
};
void
-usage (result_value)
- int result_value;
+usage (int result_value)
{
register int i;
FILE *f = result_value ? stderr : stdout;
@@ -301,9 +302,7 @@ Texinfo home page: http://www.gnu.org/software/texinfo/"), f);
and set up the vector of keyfields and the vector of input files. */
void
-decode_command (argc, argv)
- int argc;
- char **argv;
+decode_command (int argc, char **argv)
{
int arg_index = 1;
char **ip;
@@ -340,11 +339,10 @@ decode_command (argc, argv)
{
printf ("texindex (GNU %s) %s\n", PACKAGE, VERSION);
puts ("");
- printf (_("Copyright (C) %s Free Software Foundation, Inc.\n\
-There is NO warranty. You may redistribute this software\n\
+ puts ("Copyright (C) 2004 Free Software Foundation, Inc.");
+ printf (_("There is NO warranty. You may redistribute this software\n\
under the terms of the GNU General Public License.\n\
-For more information about these matters, see the files named COPYING.\n"),
- "2003");
+For more information about these matters, see the files named COPYING.\n"));
xexit (0);
}
else if ((strcmp (arg, "--keep") == 0) ||
@@ -389,8 +387,7 @@ For more information about these matters, see the files named COPYING.\n"),
/* Return a name for temporary file COUNT. */
static char *
-maketempname (count)
- int count;
+maketempname (int count)
{
static char *tempbase = NULL;
char tempsuffix[10];
@@ -413,8 +410,7 @@ maketempname (count)
/* Delete all temporary files up to TO_COUNT. */
void
-flush_tempfiles (to_count)
- int to_count;
+flush_tempfiles (int to_count)
{
if (keep_tempfiles)
return;
@@ -426,9 +422,10 @@ flush_tempfiles (to_count)
/* Compare LINE1 and LINE2 according to the specified set of keyfields. */
int
-compare_full (line1, line2)
- char **line1, **line2;
+compare_full (const void *p1, const void *p2)
{
+ char **line1 = (char **) p1;
+ char **line2 = (char **) p2;
int i;
/* Compare using the first keyfield;
@@ -440,7 +437,8 @@ compare_full (line1, line2)
long length1, length2;
char *start1 = find_field (&keyfields[i], *line1, &length1);
char *start2 = find_field (&keyfields[i], *line2, &length2);
- int tem = compare_field (&keyfields[i], start1, length1, *line1 - text_base,
+ int tem = compare_field (&keyfields[i], start1, length1,
+ *line1 - text_base,
start2, length2, *line2 - text_base);
if (tem)
{
@@ -457,11 +455,11 @@ compare_full (line1, line2)
in which the first keyfield is identified in advance.
For positional sorting, assumes that the order of the lines in core
reflects their nominal order. */
-
int
-compare_prepared (line1, line2)
- struct lineinfo *line1, *line2;
+compare_prepared (const void *p1, const void *p2)
{
+ struct lineinfo *line1 = (struct lineinfo *) p1;
+ struct lineinfo *line2 = (struct lineinfo *) p2;
int i;
int tem;
char *text1, *text2;
@@ -498,7 +496,8 @@ compare_prepared (line1, line2)
long length1, length2;
char *start1 = find_field (&keyfields[i], text1, &length1);
char *start2 = find_field (&keyfields[i], text2, &length2);
- int tem = compare_field (&keyfields[i], start1, length1, text1 - text_base,
+ int tem = compare_field (&keyfields[i], start1, length1,
+ text1 - text_base,
start2, length2, text2 - text_base);
if (tem)
{
@@ -517,10 +516,7 @@ compare_prepared (line1, line2)
the two lines in the input. */
int
-compare_general (str1, str2, pos1, pos2, use_keyfields)
- char *str1, *str2;
- long pos1, pos2;
- int use_keyfields;
+compare_general (char *str1, char *str2, long int pos1, long int pos2, int use_keyfields)
{
int i;
@@ -551,10 +547,7 @@ compare_general (str1, str2, pos1, pos2, use_keyfields)
is stored into the int that LENGTHPTR points to. */
char *
-find_field (keyfield, str, lengthptr)
- struct keyfield *keyfield;
- char *str;
- long *lengthptr;
+find_field (struct keyfield *keyfield, char *str, long int *lengthptr)
{
char *start;
char *end;
@@ -594,10 +587,7 @@ find_field (keyfield, str, lengthptr)
after finding the specified word. */
char *
-find_pos (str, words, chars, ignore_blanks)
- char *str;
- int words, chars;
- int ignore_blanks;
+find_pos (char *str, int words, int chars, int ignore_blanks)
{
int i;
char *p = str;
@@ -630,10 +620,7 @@ find_pos (str, words, chars, ignore_blanks)
and that braces within fields are balanced. */
char *
-find_braced_pos (str, words, chars, ignore_blanks)
- char *str;
- int words, chars;
- int ignore_blanks;
+find_braced_pos (char *str, int words, int chars, int ignore_blanks)
{
int i;
int bracelevel;
@@ -682,8 +669,7 @@ find_braced_pos (str, words, chars, ignore_blanks)
The position returned is just before the closing brace. */
char *
-find_braced_end (str)
- char *str;
+find_braced_end (char *str)
{
int bracelevel;
char *p = str;
@@ -704,9 +690,7 @@ find_braced_end (str)
}
long
-find_value (start, length)
- char *start;
- long length;
+find_value (char *start, long int length)
{
while (length != 0L)
{
@@ -724,7 +708,7 @@ find_value (start, length)
int char_order[256];
void
-init_char_order ()
+init_char_order (void)
{
int i;
for (i = 1; i < 256; i++)
@@ -745,14 +729,8 @@ init_char_order ()
The sign of the value reports the relation between the fields. */
int
-compare_field (keyfield, start1, length1, pos1, start2, length2, pos2)
- struct keyfield *keyfield;
- char *start1;
- long length1;
- long pos1;
- char *start2;
- long length2;
- long pos2;
+compare_field (struct keyfield *keyfield, char *start1, long int length1,
+ long int pos1, char *start2, long int length2, long int pos2)
{
if (keyfields->positional)
{
@@ -836,8 +814,7 @@ struct linebuffer
/* Initialize LINEBUFFER for use. */
void
-initbuffer (linebuffer)
- struct linebuffer *linebuffer;
+initbuffer (struct linebuffer *linebuffer)
{
linebuffer->size = 200;
linebuffer->buffer = (char *) xmalloc (200);
@@ -847,9 +824,7 @@ initbuffer (linebuffer)
Return the length of the line. */
long
-readline (linebuffer, stream)
- struct linebuffer *linebuffer;
- FILE *stream;
+readline (struct linebuffer *linebuffer, FILE *stream)
{
char *buffer = linebuffer->buffer;
char *p = linebuffer->buffer;
@@ -879,10 +854,7 @@ readline (linebuffer, stream)
/* Sort an input file too big to sort in core. */
void
-sort_offline (infile, total, outfile)
- char *infile;
- off_t total;
- char *outfile;
+sort_offline (char *infile, off_t total, char *outfile)
{
/* More than enough. */
int ntemps = 2 * (total + MAX_IN_CORE_SORT - 1) / MAX_IN_CORE_SORT;
@@ -978,10 +950,7 @@ fail:
then indexify it and send the output to OUTFILE (or to stdout). */
void
-sort_in_core (infile, total, outfile)
- char *infile;
- int total;
- char *outfile;
+sort_in_core (char *infile, int total, char *outfile)
{
char **nextline;
char *data = (char *) xmalloc (total + 1);
@@ -1049,7 +1018,7 @@ sort_in_core (infile, total, outfile)
Make a `struct lineinfo' for each line, which records the keyfield
as well as the line, and sort them. */
- lineinfo = (struct lineinfo *) malloc ((nextline - linearray) * sizeof (struct lineinfo));
+ lineinfo = malloc ((nextline - linearray) * sizeof (struct lineinfo));
if (lineinfo)
{
@@ -1099,11 +1068,7 @@ sort_in_core (infile, total, outfile)
Value 0 means input file contents are invalid. */
char **
-parsefile (filename, nextline, data, size)
- char *filename;
- char **nextline;
- char *data;
- long size;
+parsefile (char *filename, char **nextline, char *data, long int size)
{
char *p, *end;
char **line = nextline;
@@ -1144,7 +1109,7 @@ parsefile (filename, nextline, data, size)
if (line == linearray + nlines)
{
char **old = linearray;
- linearray = (char **) xrealloc (linearray, sizeof (char *) * (nlines *= 4));
+ linearray = xrealloc (linearray, sizeof (char *) * (nlines *= 4));
line += linearray - old;
}
}
@@ -1200,7 +1165,7 @@ char lastinitial1[2];
/* Initialize static storage for writing an index. */
void
-init_index ()
+init_index (void)
{
pending = 0;
lastinitial = lastinitial1;
@@ -1219,9 +1184,7 @@ init_index ()
insert headers for each initial character, etc. */
void
-indexify (line, ostream)
- char *line;
- FILE *ostream;
+indexify (char *line, FILE *ostream)
{
char *primary, *secondary, *pagenumber;
int primarylength, secondarylength = 0, pagelength;
@@ -1321,7 +1284,8 @@ indexify (line, ostream)
lastsecondary[0] = 0;
}
- /* Should not have an entry with no subtopic following one with a subtopic. */
+ /* Should not have an entry with no subtopic following one with a
+ subtopic. */
if (nosecondary && *lastsecondary)
error (_("entry %s follows an entry with a secondary name"), line);
@@ -1354,15 +1318,14 @@ indexify (line, ostream)
/* Here to add one more page number to the current entry. */
if (pending++ != 1)
- fputs (", ", ostream); /* Punctuate first, if this is not the first. */
+ fputs (", ", ostream); /* Punctuate first, if this is not the first. */
fwrite (pagenumber, pagelength, 1, ostream);
}
/* Close out any unfinished output entry. */
void
-finish_index (ostream)
- FILE *ostream;
+finish_index (FILE *ostream)
{
if (pending)
fputs ("}\n", ostream);
@@ -1374,10 +1337,7 @@ finish_index (ostream)
Each line is copied out of the input file it was found in. */
void
-writelines (linearray, nlines, ostream)
- char **linearray;
- int nlines;
- FILE *ostream;
+writelines (char **linearray, int nlines, FILE *ostream)
{
char **stop_line = linearray + nlines;
char **next_line;
@@ -1388,11 +1348,13 @@ writelines (linearray, nlines, ostream)
for (next_line = linearray; next_line != stop_line; next_line++)
{
- /* If -u was specified, output the line only if distinct from previous one. */
+ /* If -u was specified, output the line only if distinct from
+ previous one. */
if (next_line == linearray
/* Compare previous line with this one, using only the
explicitly specd keyfields. */
- || compare_general (*(next_line - 1), *next_line, 0L, 0L, num_keyfields - 1))
+ || compare_general (*(next_line - 1), *next_line, 0L, 0L,
+ num_keyfields - 1))
{
char *p = *next_line;
char c;
@@ -1417,10 +1379,7 @@ writelines (linearray, nlines, ostream)
#define MAX_DIRECT_MERGE 10
int
-merge_files (infiles, nfiles, outfile)
- char **infiles;
- int nfiles;
- char *outfile;
+merge_files (char **infiles, int nfiles, char *outfile)
{
char **tempfiles;
int ntemps;
@@ -1468,10 +1427,7 @@ merge_files (infiles, nfiles, outfile)
use it only with a bounded number of input files. */
int
-merge_direct (infiles, nfiles, outfile)
- char **infiles;
- int nfiles;
- char *outfile;
+merge_direct (char **infiles, int nfiles, char *outfile)
{
struct linebuffer *lb1, *lb2;
struct linebuffer **thisline, **prevline;
@@ -1499,20 +1455,20 @@ merge_direct (infiles, nfiles, outfile)
return 0;
}
- /* For each file, make two line buffers.
- Also, for each file, there is an element of `thisline'
- which points at any time to one of the file's two buffers,
- and an element of `prevline' which points to the other buffer.
- `thisline' is supposed to point to the next available line from the file,
- while `prevline' holds the last file line used,
- which is remembered so that we can verify that the file is properly sorted. */
+ /* For each file, make two line buffers. Also, for each file, there
+ is an element of `thisline' which points at any time to one of the
+ file's two buffers, and an element of `prevline' which points to
+ the other buffer. `thisline' is supposed to point to the next
+ available line from the file, while `prevline' holds the last file
+ line used, which is remembered so that we can verify that the file
+ is properly sorted. */
/* lb1 and lb2 contain one buffer each per file. */
lb1 = (struct linebuffer *) xmalloc (nfiles * sizeof (struct linebuffer));
lb2 = (struct linebuffer *) xmalloc (nfiles * sizeof (struct linebuffer));
- /* thisline[i] points to the linebuffer holding the next available line in file i,
- or is zero if there are no lines left in that file. */
+ /* thisline[i] points to the linebuffer holding the next available
+ line in file i, or is zero if there are no lines left in that file. */
thisline = (struct linebuffer **)
xmalloc (nfiles * sizeof (struct linebuffer *));
/* prevline[i] points to the linebuffer holding the last used line
@@ -1625,8 +1581,7 @@ merge_direct (infiles, nfiles, outfile)
/* Print error message and exit. */
void
-fatal (format, arg)
- char *format, *arg;
+fatal (const char *format, const char *arg)
{
error (format, arg);
xexit (1);
@@ -1634,8 +1589,7 @@ fatal (format, arg)
/* Print error message. FORMAT is printf control string, ARG is arg for it. */
void
-error (format, arg)
- char *format, *arg;
+error (const char *format, const char *arg)
{
printf ("%s: ", program_name);
printf (format, arg);
@@ -1644,16 +1598,14 @@ error (format, arg)
}
void
-perror_with_name (name)
- char *name;
+perror_with_name (const char *name)
{
fprintf (stderr, "%s: ", program_name);
perror (name);
}
void
-pfatal_with_name (name)
- char *name;
+pfatal_with_name (const char *name)
{
perror_with_name (name);
xexit (1);
@@ -1663,8 +1615,7 @@ pfatal_with_name (name)
/* Return a newly-allocated string concatenating S1 and S2. */
char *
-concat (s1, s2)
- char *s1, *s2;
+concat (char *s1, char *s2)
{
int len1 = strlen (s1), len2 = strlen (s2);
char *result = (char *) xmalloc (len1 + len2 + 1);
@@ -1675,19 +1626,3 @@ concat (s1, s2)
return result;
}
-
-#if !defined (HAVE_STRCHR)
-char *
-strrchr (string, character)
- char *string;
- int character;
-{
- register int i;
-
- for (i = strlen (string) - 1; i > -1; i--)
- if (string[i] == character)
- return (string + i);
-
- return ((char *)NULL);
-}
-#endif /* HAVE_STRCHR */
OpenPOWER on IntegriCloud