2023-01-29  Gavin Smith <gavinsmith0123@gmail.com>

	Fix 'info (manual)slash/in/node'

	* info/info.c (main, get_initial_file): Move code checking for
	slash in argument to get_initial_file, and don't check for argument
	as a file if it begins with '('.
	(main): Move code adding user provided directory to INFOPATH
	after call to get_initial_code.
	(get_initial_file): Decrement argc as intended.

	Arash Esbati <arash@gnu.org> reported that
	"info '(latex2e)\indent & \noindent'" didn't work on Msys2.

2023-03-26  Gavin Smith <gavinsmith0123@gmail.com>

	7.0.3 release

2023-03-19  Gavin Smith <gavinsmith0123@gmail.com>

	pretest 7.0.2.90

	* NEWS: update
	* configure.ac: version

2023-02-12  Gavin Smith <gavinsmith0123@gmail.com>

	Non-XS optimizations

	* tp/Texinfo/Convert/ParagraphNonXS.pm (_add_next, add_text):
	Add /o flag to regexes using string interpolation, in order to
	only compile each regex once.
	* tp/Texinfo/Convert/Unicode.pm (string_width):
	Sometimes call 'length' on the string.  This makes a difference
	because string_width is now called from ParagraphNonXS.pm.

2023-02-12  Gavin Smith <gavinsmith0123@gmail.com>

	* tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line):
	Avoid use of goto statements to reduce program run time.

2022-12-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_beginning_of_line): Avoid freezing
	at beginning of a file when 'nodeline' is set to 'pointers' (the
	default).  Report from Justin Anthony LaPolla <justin.lapolla@hpe.com>.

2023-02-08  Gavin Smith <gavinsmith0123@gmail.com>

	Stop text disappearing in Info nodes with encoding conversion

	* info/util.c (text_buffer_iconv): Update text buffer length
	after error so that we do not write over the same output again.

2023-01-22  Gavin Smith  <gavinsmith0123@gmail.com>

	7.0.2 release

2023-01-16  Gavin Smith  <gavinsmith0123@gmail.com>

	pretest 7.0.1.90

	* NEWS: update
	* configure.ac: version

2023-01-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/Makefile.am:
	Call maintain/copy_change_file_name_encoding.pl to create files
	in built_input subdirectory.  This stops make program on
	OpenIndiana 11 gagging immediately in a UTF-8 locale.
	* tp/tests/run_parser_all.sh: Pass -I built_input to texi2any.

2023-01-04  Patrice Dumas  <pertusus@free.fr>

	* .gitignore: replace tp/tests/included_lat*n1.texi by
	tp/tests/built_input.

2023-01-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c (check_manpage_node):
	Disable this code if __sun is defined, to avoid clash with
	man program on Solaris, where -w means to update the whatis
	database.  Test failure on OpenSolaris 2022.10 reported by
	Bruno Haible.

2023-01-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* install-info/install-info.c (split_entry):
	Rewrite to silence obnoxious gcc warning about use of strncat.

2022-12-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi, doc/info-stnd.texi, doc/texi2any_api.texi:
	Adjust copyright notice slightly to match recommended wording.
	From Hilmar Preuße.

2022-12-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Makefile.am (dist-hook): Do not distribute architecture-
	dependent gettext_xs.o file.  Report from Hilmar Preuße.

2022-12-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/util.c (text_buffer_iconv): Correctly update arguments
	for iconv in loop.  Crash for "info groff" reported by Jakub Wilk
	via Hilmar Preuße <hille42@web.de>.

2022-12-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* install-info/install-info.c (error): Declare as static to
	avoid clash with error function from glibc, called from gnulib.
	Report from Sam James <sam@gentoo.org> and suggested solution
	from Arsen Arsenović <arsen@aarsen.me>.

2022-11-30  Gavin Smith  <gavinsmith0123@gmail.com>

	7.0.1 release

2022-11-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac (AM_INIT_AUTOMAKE): Remove 'readme-alpha' option,
	as we are using three-part version numbers that do not signify
	alpha releases.

2022-11-19  Patrice Dumas  <pertusus@free.fr>

	Add Pod/Simple/Texinfo.pm HTML output to wwwdoc

	* doc/Makefile.am (wwwdoc-build, wwwdoc-install): add
	Pod/Simple/Texinfo.pm HTML output, link Pod/Simple/Texinfo.pm and call
	pod2html such that a relative link to Pod/Simple/Texinfo.html is
	actually output.

2022-11-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/Makefile.am (wwwdoc-build): Pass --quiet flag to pod2html.

2022-11-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/gendocs.chapter/gendocs_template: New file.
	* doc/Makefile.am (wwwdoc-build): Use it for texi2any_internals
	manual, as default template does not handle chapter-split
	manuals.

2022-11-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/refcard/txirefcard.tex: 7.0.1.

2022-11-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* js/yarn.lock, js/server.js: Remove files.

2022-11-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Add 7.0.1 news.

2022-11-20  Gavin Smith  <gavinsmith0123@gmail.com>

	info.js improvements

	* js/info.css: No underlining for sidebar links.
	* js/info.js: Remove "Hide sidebar" text as it takes up too much
	space.

2022-11-30  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix info.js for release branch.

	* js/info.js (cache_index_links),
	(init_iframe) <on_load>:
	Change how 'printindex-index-entry' and 'printindex-index-section'
	links are found to match structure of HTML in index, which
	has been changed on the master branch.

2022-11-27  Per Bothner  <per@bothner.com>

	* js/info.js (set_current)url): Don't set parameter default.
	It's not needed, and it triggers an eslint complaint,
	because parameter default values were new in EcmaScript 6 (2015).

2022-11-29  Per Bothner  <per@bothner.com>

	* js/info.css (cache_index_links): Fix index entry processing.
	Also implement subentry handling.
	(init_iframe - on_load): Change search and call of cache_index_links.

2022-11-29  Per Bothner  <per@bothner.com>

	* js/info.css (.tex-input): Make input element a bit wider.
	This works better for longer index or menu names.

2022-11-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): correctly use
	_leading_spaces_arg return in case there is no space after @end
	command line and something else on the line.

2022-11-22  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (command_text, _convert_xref_commands)
	(_initialize_output_state): add 'referred_command_stack' to put
	commands that can be referred to being expanded, to catch if an @*ref
	refers to that command during the expansion, leading to an infinite
	recursion.  In that case, use the node instead of the section, as with
	nodes only it is not possible to construct a an infinite recursion
	as the node must both be a reference target and refer to a specific
	target at the same time, which is not possible.  Report from David
	Bacon.

2022-11-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* js/info.js (on_load): Update version number.

2022-11-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* js/info.js (add_header): Check for h1.top after h1.settitle
	for text to put at top of sidebar.

2022-11-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* js/info.js (init_iframe): Change selector for index entries
	to match new HTML output.  From Per and Patrice.

2022-11-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/util.c (text_buffer_iconv): Avoid infinite loop
	by updating space left argument passed to iconv, and by
	continually expanding the allocated space in the output buffer
	if iconv continues to return E2BIG.
	Hang on UTF-8 encoded file with LC_ALL=C reported by
	Hilmar Preuße <hille42@web.de>.


2022-11-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%preamble_commands): fix typo on direntry
	command name.

2022-11-12  Patrice Dumas  <pertusus@free.fr>

	* util/htmlxref.cnf: add manuals, in particular mono manuals
	and fix some issues with existing manuals. Report from Tzvetelin
	Katchov.
	Rename mairix manual as mairix-el, and smalltalk* manuals as
	gst*.

2022-11-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (_convert): avoid formatting when
	contents is not set.

	* tp/Texinfo/Convert/Converter.pm (table_item_content_tree):
	explicitely handle undef $contents argument.

2022-11-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl: Call _encode_message on messages passed to
	"die" to avoid "Wide character in die" warning.  Report from
	Werner.

2022-11-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/TexinfoMarkup.pm,
	tp/Texinfo/Convert/Utils.pm: convert only if contents are defined,
	initialize contents if needed.

2022-11-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/TexinfoMarkup.pm,
	tp/Texinfo/Convert/Utils.pm: convert only if contents are defined,
	initialize contents if needed.

2022-11-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_prepare_conversion, _title_font)
	(_convert): convert only if contents are defined.

2022-11-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm: avoid formatting when contents
	is not set, avoiding a crash with empty @titlefont as title.

	* tp/Texinfo/Convert/Plaintext.pm (_convert): do not format
	author if there is no contents, this cannot happen for now but is more
	robust.

2022-11-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Info.pm (_convert): avoid crashes in case
	of empty arguments.

2022-11-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Info.pm (format_image): avoid crash on empty
	@image extension.  Report from Werner Lemberg.

2022-11-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Generating HTML): Correct name of
	texi2any_api manual.  (Already done on master branch.)

2022-11-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/htmlxref.cnf (texi2any_internals): Remove node line
	to prefer split-by-chapter.

2022-11-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/htmlxref.cnf (texi2any_internals): Add split-by-chapter
	line.  Report from Patrice.

2022-11-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Adding Output Formats): Update name of
	texi2any_internals manual.
	* util/htmlxref.cnf: Add texi2any_api, texi2any_internals.

2022-11-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/Makefile.am (wwwdoc-build): Split texi2any_internals
	by chapter.  Report from Patrice.  Suppress Info node name
	warnings for texi2any_api and texi2any_internals.

2022-11-12  Gavin Smith  <gavinsmith0123@gmail.com>

	Bump version for bug-fix release

	* configure.ac, NEWS, util/texi2dvi, util/texi2pdf: 7.0.1.

2022-11-07  Gavin Smith  <gavinsmith0123@gmail.com>

	7.0

	* configure.ac, NEWS, util/texi2dvi, util/texi2pdf: version

2022-11-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: reorder official releases tasks

2022-11-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/Makefile.am (wwwdoc-build, wwwdoc-install): handle
	new manuals texi2any_api and texi2any_internals

2022-11-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: not making diffs any more

2022-11-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: final edit

2022-11-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\mtadjustprotcode): Use new count \countC
	instead of reusing \countB which appears to clash with \pdfgettoks,
	leading to an error "pdfTeX warning (dest): name{} has 
        been referenced but does not exist, replaced by a fixed one" always
	being output.

2022-11-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi
	(Cross Reference Parts, Other Customization Variables):
	Reword to avoid underful and overful hboxes.

2022-11-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\doindexsegment):
	Issue warning on empty sort key.  Suggestion from Werner.

2022-11-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Indexing Commands):
	Advice on empty index sort keys.  Report from Werner.

2022-11-01  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Internationalization of Document Strings):
	Describe use of us-ascii as a "special use" as it does not
	follow usual gettext conventions.

2022-11-01  Patrice Dumas  <pertusus@free.fr>, and
            Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@documentencoding): Mention possibility
	of ASCII transliteration.  Don't say "UTF-8 character in
	the output encoding", as this can only mean one encoding (UTF-8).
	Reorder to say "8-bit character in the output encoding".

	(Internationalization of Document Strings): State accent commands
	have to be used in us-ascii translations, but that these may
	be inconvenient.

2022-10-29  Gavin Smith  <gavinsmith0123@gmail.com>

	pretest 6.8.91

	* configure.ac: version

2020-10-28  Vincent Lefevre <vincent@vinc17.net>  (tiny change)

	* doc/texinfo.texi (Writing a Node, Conditional Commands):
	Fix typos.

2022-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/paragraph.t: use intended formatter in tests

2022-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Line.pm: remove
	* tp/t/paragraph.t: copy line formatter constructor from Line.pm

2022-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/UnFilled.pm: remove unused module.

2022-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (process_printindex): Reuse
	line formatter for all index entries in an index.

2022-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_convert) <node name quoting>:
	Optimise for the usual case where the node name is simple text,
	in which case avoid calling convert_line.

2022-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (new_formatter): Access 'conf'
	hash directly for efficiency, rather than calling get_conf.

2022-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: more on Devel::NYTProf

2022-10-25  Patrice Dumas  <pertusus@free.fr>

	Use \[..\] for @displaymath in LaTeX output

	* tp/Texinfo/Convert/LaTeX.pm (_convert): use \[..\] instead of $$..$$
	as it is better to use \[ in LaTeX, $$ being a TeX primitive.  Report
	from Vincent Lefèvre.

2022-10-25  Patrice Dumas  <pertusus@free.fr>

	Use \[..\] for @displaymath for LaTeX in tex4ht and latex2html

	* tp/ext/latex2html.pm (l2h_process), tp/ext/tex4ht.pm
	(tex4ht_prepare): use \[..\] instead of $$..$$ as it is better to
	use \[ in LaTeX, $$ being a TeX primitive.  Report from Vincent
	Lefèvre.

2022-10-25  Patrice Dumas  <pertusus@free.fr>

	* tp/maintain/copy_change_file_name_encoding.pl: change the character
	appearing in the test of 8bit encoded include file, as it may be
	special on Windows.  Report from Gavin.

2022-10-25  Patrice Dumas  <pertusus@free.fr>

	* tp/maintain/copy_change_file_name_encoding.pl: use a character
	appearing in more 8bit encodings in the test of 8bit encoded
	include file.  Eli Zaretskii idea.

2022-10-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/test_utils.pl (filter_tree_keys): Do not output 'parent'
	keys in tree.  This makes the output files much smaller and also
	makes the tests a bit faster.

2022-10-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@minus): Do not state that '-' always produces
	a hyphen in fixed-width fonts, as this may not be true.
	Report from Vincent Lefèvre.

2022-10-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Makefile.am (distlean-local, CLEANFILES, DISTCLEANFILES):
	Remove references to blib, pm_to_blib and Makefile.old files
	and directories.  These are relics of an old Perl build system
	that is no longer present.  Remove reference to 'texi2any-perl'
	file, not present anywhere.

2022-10-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* Makefile.am, README, README-hacking: Do not distribute the
	contrib/ subdirectory.  This shrinks the .tar.xz file to
	5.2 MB.

2022-10-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* js/Makefile.am (EXTRA_DIST): Do not distribute 'examples'
	directory.  This shrinks .tar.xz file from 5.9 MB to 5.5 MB.

2022-10-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/formatting/an_ïmage.png: Shrink image to reduce
	use of space.

2022-10-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/scan.c (scan_node_contents): Free node contents if
	N_WasRewritten flag is set.  This avoids a memory leak in
	the t/index-search.sh test.

2022-10-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: advice on valgrind

2022-10-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@minus): Do not state that '-' produces
	a minus sign inside @math as results differ for different output
	formats.  Report from Vincent Lefèvre.

2022-10-25  Gavin Smith  <gavinsmith0123@gmail.com>

	awk check

	* configure.ac: Rewrite awk check to use
	AC_PATH_PROGS_FEATURE_CHECK.  Check for user-defined functions.
	Suggestion from Bruno Haible.  Check for "awk" before trying other
	program names.

2022-10-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Limit references to the XML output, as
	it is not likely to be useful.  Eliminate references to
	"TexinfoXML" or "Texinfo-XML".
	(Overview): Do not mention PostScript format.  Mention EPUB 3 and
	LaTeX.  Do not say that using Emacs is "especially convenient".
	(Output Formats) <XML>: Edit.  Make it more prominent that the XML
	format is not usable.

2022-10-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Translations.pm (gdt): replace argument variable name
	$context with $replaced_substrings, as it could be confused with
	message context.

2022-10-25  Patrice Dumas  <pertusus@free.fr>

	* po/Makevars (XGETTEXT_OPTIONS): add -k__p:1c,2 for __p() in perl.

2022-10-24  Patrice Dumas  <pertusus@free.fr>

	Fix/add @direntry for texi2any_api and texi2any_internals

	* doc/texi2any_api.texi, doc/tp_api/Makefile.am (EXTRA_DIST),
	texi2any_internals_preamble.texi: fix the texi2any_api @direntry
	to refer to texi2any_api.
	Add a @dircategory/@direntry to texi2any_internals by putting the
	preamble in texi2any_internals_preamble.texi and setting the
	preamble argument of pod2texi.
	Report from Andreas Schwab.

2022-10-24  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/pod2texi.pl, doc/tp_api/Makefile.am:
	no @setfilename output if --setfilename is not given in argument
	of pod2texi.pl.
	Remove --setfilename from the rule generating texi2any_internals.texi.

2022-10-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_convert_menu_entry_type):
	Initialize a variable.

	This avoids error "Use of uninitialized value $href in string ne..."
	when running the test suite.

2022-10-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Cross Reference Parts, Marking Text, @set @value)
	(Command List, Tips): Change "formatters" to "processors" in some
	places where we are not clearly talking about formatting a visual
	layout.

2022-10-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (HTML Xref): Do not describe the "details"
	as "unfortunately complex".

2022-10-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac (TI_AWK): Reorder to check for awk after gawk.

2022-10-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Conditional Nesting): Edit.  Do not
	vaguely describe the subject as "tricky".  Ignore some
	text.

2022-10-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Reporting Bugs): Mention 'git diff'.  Do
	not encourage sending large input files in bug reports.
	(Output Formats): Remove useless word "brief".
	(@enumerate): Remove "brief" and some self-referential text.
	(@set @clear @value): Edit and shorten.
	(HTML CSS): Edit.  Remove @ignore'd text.

2022-10-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Prefer "texi2any" to "makeinfo" throughout.

2022-10-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Add agendum for next release
	* README: Revise - https for URL's, mention LaTeX and EPUB 3 output,
	info.texi not part of Texinfo distribution, prefer "texi2any" to
	"makeinfo".

2022-10-23  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/prove.sh: remove -w from prove arguments for old
	prove.  Report from Eli Zaretskii.

2022-10-23  Patrice Dumas  <pertusus@free.fr>

	* tp/tests/run_parser_all.sh (check_need_command_line_unicode),
	tp/tests/many_input_files/*non_ascii*.sh: skip tests needing
	UTF-8 encoded non-ASCII characters on the command line on Windows,
	as the shell may interpret those characters to be encoded in the
	current user codeset and pass them incorrectly to the programs.
	Report from Eli Zaretskii.

2022-10-23  Patrice Dumas  <pertusus@free.fr>

	* tp/tests/run_parser_all.sh,
	tp/maintain/copy_change_file_name_encoding.pl: consider that
	recoding of file name to Latin1 as needed by some tests is not
	reliable on Windows, as the non-ASCII character may be stored
	in the filesystem as an Unicode point using the current codepage
	to convert, and not the Latin1 encoding expected from the Perl code.
	Add comments to explain that.  Report from Eli Zaretskii.

2022-10-23  Patrice Dumas  <pertusus@free.fr>

	* configure.ac (HOST_IS_WINDOWS_VARIABLE), tp/defs.in: add variable
	set to yes if host is Windows.

2022-10-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac (TI_AWK): Check for "nawk" before awk, as
	plain awk on Solaris 11.4 is an archaic version lacking features
	we need, like user-defined functions.  Report from Bruno Haible.

2022-10-23  Bruno Haible  <bruno@clisp.org>

	Fix install-info tests on mingw

	 * install-info/tests/defs.in [mingw]: Set diff to
	'diff --strip-trailing-cr'.
	 * install-info/tests: Use ${diff} in all tests.

2022-10-23  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid calling Perl version of 'free'

	* tp/Texinfo/XS/parsetexi/api.c (reset_parser):
	Do not call 'free' - do everything via functions in other files.

	* tp/Texinfo/XS/parsetexi/api.c
	(set_input_file_name_encoding, conf_set_input_file_name_encoding)
	(set_locale_encoding, conf_set_locale_encoding)
	(set_documentlanguage_override, conf_set_documentlanguage_override):
	Provide wrappers with names starting with 'conf_', and move the
	implementations to other files.

	* tp/Texinfo/XS/parsetexi/input.c
	(set_input_file_name_encoding, set_locale_encoding): Add.  Allow
	null arguments.
	* tp/Texinfo/XS/parsetexi/parser.c
	(set_documentlanguage_override): Add.  Allow null argument.
	(set_documentlanguage):  Allow null argument.

	Report from Eli, who got "Free to wrong pool" error.

2022-10-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* install-info/tests/README: Complete list of tests (not
	updated since 2014).
	* install-info/tests/ii-0054-test: Remove commented-out code.
	* install-info/tests/ii-0056-test: Correct test number and update
	reference results.

2022-10-23  Patrice Dumas  <pertusus@free.fr>

	* tp/ext/epub3.pm (epub_setup): use / as file separator for
	INFO_JS_DIR, which is used both for HTML paths, requiring / and
	paths to files on the filesystem, for which / may not be native,
	but works for Unix and Windows paths.  Report from Eli Zaretskii.

2022-10-23  Patrice Dumas  <pertusus@free.fr>

	Avoid UTF-8 encoded file name in make rule prerequisite

	* tp/maintain/copy_change_file_name_encoding.pl, tp/tests/Makefile.am:
	convert to latin1 from plain ASCII filename, substituting accented
	letters in tp/maintain/copy_change_file_name_encoding.pl.  Report from
	Eli Zaretskii.

2022-10-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/where-dir-file.sh: Remove $ from argument to grep,
	as this causes problems on mingw-w64 where ginfo outputs
	lines with CRLF line endings but the grep program does not
	handle them specially.  Report from Bruno Haible.

2022-10-23  Eli Zaretskii  <eliz@gnu.org>, and
            Gavin Smith    <gavinsmith0123@gmail.com>

	* tp/texi2any.pl [MS-Windows]: If loading I18N::Langinfo doesn't
	work, then get codepage with GetACP() using Win32::API module.

2022-10-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/XSParagraph.xs,
	* tp/Texinfo/XS/parsetexi/api.c
	[defined _WIN32 && !defined __CYGWIN__]:
	'#undef free' after including "perl.h" (which includes stdlib.h
	from Gnulib) and before including "XSUB.h" to avoid warnings
	about redefining symbols in Perl headers that Gnulib already
	redefined.  From Eli.

2022-10-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/configure.ac: Attempt to disable gnulib
	definitions for fdopen, mktemp and putenv on MS-Windows by
	setting variables with GL_GNULIB_MDA_ prefixes.

2022-10-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Minimum): Minor grammar fix.

2022-10-22  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_parse_line_command_args): set
	definfoenclose defined command nesting.

2022-10-22  Eli Zaretskii  <eliz@gnu.org>

	* tp/Texinfo/XS/parsetexi/api.c
	(reset_parser, set_documentlanguage_override)
	(set_input_file_name_encoding, set_locale_encoding): Add dTHX.

2022-10-22  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm, tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting): set @*heading
	heading customization variables as contain_simple_text.  Modify perl
	Parser to handle in_heading_spec_commands similarly as XS parser.

2022-10-22  Patrice Dumas  <pertusus@free.fr>

	* tp/ext/tex4ht.pm (tex4ht_process): sort formats for processing order
	to get a more reproducible output and messages order.

2022-10-22  Patrice Dumas  <pertusus@free.fr>

	Full coverage of contain_plain_text and contain_simple_text

	* tp/Texinfo/XS/parsetexi/command_data.txt, tp/Texinfo/ParserNonXS.pm,
	tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting): add explicit
	contain_plain_text and contain_simple_text flags to all commands
	instead of using conditionals.  Use contain_plain_text instead of
	contain_simple_text for LINE_text and LINE_specific.

2022-10-21  Gavin Smith  <gavinsmith0123@gmail.com>

	Save and restore LC_MESSAGES

	* tp/Texinfo/Translations.pm (gdt):
	Save and restore LC_MESSAGES rather than LC_ALL, as this seems
	safer than switching LC_ALL and not switching it back (see change
	on 2022-10-20).  Don't do this on MS-Windows where there were
	problems before with LC_MESSAGES (see change on 2021-02-27).

2022-10-21  Patrice Dumas  <pertusus@free.fr>

	* doc/refcard/txicmdcheck (read_refidx): filter out @sortas.

2022-10-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Inserting a Backslash):
	Add function index entries for @\.

2022-10-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Inserting an Ampersand):
	Add function index entries for @&.

2022-10-21  Patrice Dumas  <pertusus@free.fr>

	Update refcard to match manual

	* doc/refcard/txirefcard.tex: changes all over to match better
	with the evolution of the language and the Texinfo manual and other
	output formats than TeX and Info.

2022-10-20  Patrice Dumas  <pertusus@free.fr>

	Add @subentry, @seealso, @seeentry and @thissection* to refcard

	* doc/refcard/txirefcard.tex (Indices, Page headers and footers):
	add information on @subentry, @seealso, @seeentry and @thissection*.

2022-10-20  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Predefined Indices): add findex entries for
	index entry commands based on two letter index names, such as
	@cpindex.  Add a sentence to explain that index entry commands
	based on two letter index names are valid.

2022-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Command List): Add @thissection,
	@thissectionname, @thissectionnum.  From Patrice.

2022-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/refcard/txicmdcheck (read_tp):
	Filter out @tpindex, etc., as we document @tindex etc. instead.
	From Patrice.

2022-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Advanced Indexing): Index @subentry
	without its leading @.
	(Command List): Add @seealso, @seeentry, @subentry.  From Patrice.

2022-10-20  Patrice Dumas  <pertusus@free.fr>

	* doc/refcard/txicmdcheck (read_tp): filter out obsolete @refill.

2022-10-20  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Debugging with @TeX{}): remove obsolete @refill in
	example.

2022-10-20  Patrice Dumas  <pertusus@free.fr>

	* doc/refcard/txicmdcheck: minor, use directly hashes in some cases.

2022-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	Do not restore LC_ALL

	* tp/Texinfo/Translations.pm (gdt):
	Do not restore LC_ALL as this appears to override LC_CTYPE, at
	least on DragonFlyBSD 5.9, and LC_CTYPE needs to be set correctly for
	correct iteration over UTF-8 strings by mbrtowc in the XS paragraph
	formatting module.

	* doc/Makefile.am (Texinfo/Commands.pm): Add $(srcdir) to rule.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/Makefile.am (Texinfo/Commands.pm): Avoid $< as it is not
	supposed to be as portable
	* NEWS: edit

2022-10-19  Patrice Dumas  <pertusus@free.fr>

	* doc/refcard/txicmdcheck: use strict, explicit scalar.

2022-10-19  Patrice Dumas  <pertusus@free.fr>

	Better cutomization variables coverage by checking separately commands

	* doc/refcard/txivarcheck (main, read_refman), tp/Texinfo/Common.pm,
	util/txicustomvars: compare manual and lists from code and output
	separately Texinfo @-commands as customization variables and other
	customization variables.  Add --commands option to txicustomvars
	to show the global commands with a customization variable only.

	* doc/texinfo.texi (Customization Variables for @@-Commands):
	add missing customization variables for @-commands.

2022-10-19  Patrice Dumas  <pertusus@free.fr>

	* tp/ext/tex4ht.pm (tex4ht_prepare): fix typo in error messages.

2022-10-19  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (@command{texi2html}): add customization that
	should be used for the former texi2html --short-ext option.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: minor corrections

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	pretest 6.8.90

	* configure.ac: version
	(AM_INIT_AUTOMAKE): Add dist-xz
	* info/info.c, install-info/install-info.c, tp/texi2any.pl,
	util/texi2dvi, util/texi2pdf: version, 2022.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix compiler warnings

	* tp/Texinfo/XS/parsetexi/end_line.c
	(end_line_misc_line): Initialise a variable to make it clearer
	that it is not used uninitialised.
	* tp/Texinfo/XS/parsetexi/parser.c (isolate_last_space_internal):
	Move a declaration to the start of a block.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix compiler warnings

	* tp/Texinfo/XS/parsetexi/context_stack.c
	(current_context, current_region),
	* tp/Texinfo/XS/parsetexi/end_line.c
	(end_line_starting_block, end_line_misc_line, end_line),
	* tp/Texinfo/XS/parsetexi/handle_commands.c
	(handle_other_command, handle_line_command),
	* tp/Texinfo/XS/parsetexi/input.c
	(convert_to_utf8, input_push_file)
	* tp/Texinfo/XS/parsetexi/parser.c:
	(isolate_last_space_internal, process_remaining_on_line):

	Fix warnings re declaration before statement, unused variables,
	unused labels.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	Address some compiler warnings

	* info/infopath.c (infopath_add),
	* info/session.c (menu_digit, forward_move_node_structure):
	Add brackets around assignment in condition.
	* info/man.c (check_manpage_node): Remove unused variables.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: update advice on configuring for compiler warnings

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (@variable_string_settables):
	Remove obsolete NODE_FILE_EXTENSION, SHORTEXTN.
	* doc/texinfo.texi (texi2html): Remove reference to SHORTEXTN.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (@variable_string_settables):
	Remove unused and undocumented FILE_NAMES_ENCODING_NAME.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (@variable_string_settables):
	Declare with "our" rather than "my" to allow "make vcheck"
	to work under doc/refcard/.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/refcard/txirefcard.tex: 2022, 7.0.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Macros): Add @page to allow
	test to be checked properly.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	refcard updates

	* doc/refcard/txicmdcheck: Remove exceptions for obsolete and removed
	commands.
	* doc/refcard/txirefcard.tex: Default encoding is UTF-8, not US-ASCII.
	Add @iflatex, @latex, @microtype.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@-Command List): Add @latex.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/refcard/txicmdcheck: Change "refman" to "appendix" to
	make it easier to find where command is missing from.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Raw Formatter Commands):
	Add index entries for @docbook.

2022-10-19  Patrice Dumas  <pertusus@free.fr>

	* tp/init/book.pm (book_element_file_name): explicit return value
	for the second return value of the function.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* configue.ac (TEXINFO_DTD_VERSION): Make this 7.0.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Acronyms): Minor edits.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Edit instructions on util/srclist-txi

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/srclist-txi, util/srclist.txt: Remove handing of
	automake files as "autoreconf" should take care of this.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Edit instructions on gnulib upgrade.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/tp_api/Makefile.am (AUTOMAKE_OPTIONS): Remove
	'no-installinfo' flag to build and install texinfo_internals.info.

2022-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/Makefile.am: Update for Chinese translation files.

2022-10-19  Wu XiangCheng  <bobwxc@yeah.net>

	* NEWS: Fix typo
	* doc/txi-zh.tex: Fix a space.

2022-10-19  Patrice Dumas  <pertusus@free.fr>

	* doc/texi2any_api.texi: update manual names in links to
	texi2any_internals.

2022-10-19  Patrice Dumas  <pertusus@free.fr>

	Rename texi2any modules and API manuals and distribute API manual

	* doc/Makefile.am (AM_MAKEINFOFLAGS, info_TEXINFOS, DISTCLEANFILES),
	doc/texi2any_api.texi: rename customization_api.texi as
	texi2any_api.texi.  Gavin suggestion.  Build and distribute
	texi2any_api manual.  Use AM_MAKEINFOFLAGS to set
	INFO_SPECIAL_CHARS_WARNING=0 since links to texi2any_internals
	manual produce many warnings.

	* doc/tp_api/Makefile.am (info_TEXINFOS), autogen.sh: rename
	tp_api.texi as texi2any_internals.texi.  Gavin suggestion.

2022-10-18  Wu XiangCheng  <bobwxc@yeah.net>

	* doc/txi-zh.tex (\Ynumbered): Override.

2022-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	Page ref hook

	* doc/texinfo.tex (\xrefX, \putpageref): Split out
	macro to print "page NUMBER".
	* doc/txi-zh.tex: Use to reverse the word order.
	From Wu XiangCheng.

2022-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/txi-zh.tex: Override \thischapterAppendix,
	\thischapterChapter, \thissectionDef.  From Wu XiangCheng.

2022-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	Translation hooks for chapter/section title

	* doc/texinfo.tex
	(\chapmacro, \thischapterAppendix, \thischapterChapter):
	Separate out definitions for \thischapter to allow them to
	be overridden in Chinese, where the word order is different.
	(\sectionheading, \thissectionDef): Likewise.

2022-10-18  Wu XiangCheng  <bobwxc@yeah.net>

	texinfo-zh.tex

	* doc/texinfo-zh.tex, doc/txi-zh.tex: New files, partially
	based on doc/texinfo-ja.tex and txi-ja.tex.

	* doc/short-sample-zh.tex: New file.

	* NEWS: Mention.

2022-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	More efficient subnode dumping

	* info/session.c (dump_node_to_stream): Take a FILE_BUFFER *
	argument rather than a filename.  Only get nodes from this file
	buffer, using info_get_node_of_file_buffer.  This avoids looking
	for the file for every node when dumping subnodes.
	(dump_nodes_to_file): Call info_find_file before calling
	dump_node_to_stream.

	Hilmar Preusse reported that "info python3.8 >/dev/null" had
	extremely high memory usage.  python3.8.info.gz was over 4MB
	in size, and had more than 4500 nodes.

2022-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/filesys.c (info_find_fullpath): Change a comment.

2022-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c (check_manpage_node):
	Call get_manpage_node if exit status from man -w PAGE was 2.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@quotation): Do not state that
	HTML uses <blockquote>.  From Patrice.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@quotation): Reinstate
	Patrice's new text as it is better.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Inserting an Ampersand): Edit.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Printing Indices & Menus):
	Remove recently added word "currently".

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Indexing Commands):
	Remove apparently useless sentence.  Change @code font
	to typewriter font.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Inserting Quotation Marks):
	Make discussion generic across output formats.  Account
	for fact that Info output is not pure ASCII any more
	so `` and '' do not necessarily become ".

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Inserting a Backslash): Revert
	recent change.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Indices): Remove word "typically".

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Footnote Commands): Revert recent change.
	Change "printed manual or book" to "printed output formats".

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Image Syntax): Remove word "usually".

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@listoffloats): Edit.  Move output-format
	specific text to end of node.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@table): Edit and condense discussion
	of blank lines.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@minus): Remove duplicate text about
	@minus in a fixed width font.  Do not discuss @minus as an
	@itemize argument as this is already covered at the relevant node.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@w) <$Id$>: Be clearer that the issue
	may be with output files.
	(@ifset @ifclear): Minor grammar fix "in output" -> "in the output".

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@raggedright): Minor edits.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@exdent): Grammar/style change.  State
	that font style changes depend on output format.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@kbd): State that font style change depends
	on output format.
	(@abbr, Block Enclosing Commands) Remove useless and confusing word
	"usually".  If it isn't true in some cases we should say or
	at least hint what those cases are.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@code): Move treatment of Info/plaintext
	output together and reinstate some removed text.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Defining New Texinfo Commands):
	State that @definfoenclose is deprecated.  Do not
	self-congratulatorily describe @alias as "convenient".

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@cartouche): Partially revert changes.
	Be explicit about the effect of @group.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Raw Formatter Commands):
	Remove @ignore'd block completely.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Footnote Styles): Revert changes.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@lisp): Revert change to "@example lisp"
	because this node is specifically about @lisp.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@quotation): Revert recent changes to
	avoid needless equivocation.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Reversions

	* doc/texinfo.texi (@cite, @code, @dfn, @acronym)
	(@email, @emph @strong, Smallcaps, Fonts):
	Revert recent changes that removed clear and useful
	information on the output of Texinfo commands in various
	output formats.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Raise/lower sections): Discuss effect
	on menus in a single paragraph and move test elsewhere.

2022-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@key): Remove text with convention for GNU
	manuals as that doesn't belong here, but rather in a GNU
	standards document.

2022-10-17  Patrice Dumas  <pertusus@free.fr>

	Add TODO items, index commands in HTML, @titlepage, metadata...

2022-10-16  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (@code{@@unnumberedsubsec @@appendixsubsec
	@@subheading}, @code{@@cite}, Indicating, Quotations and Examples)
	(Lists and Tables, @code{@@listoffloats}, Inserting Images)
	(Footnote Commands, Footnote Styles, Indices, Special Insertions)
	(@code{@@- @@hyphenation}, @code{@@w})
	(@code{@@ifset @@ifclear}, Defining New Texinfo Commands):
	remove too detailed information on formatting.  Changed the
	text to highlight that the format is not fixed.  Avoid being
	unneedingly precise on the formatting of each output format, try
	instead to group types of formatting together.

	* doc/texinfo.texi (@node Raise/lower sections): constraint
	on menu only if not automatic menus.

	* doc/texinfo.texi (@code{@@cartouche}): use 'Highlighting Blocks'
	in section name to emphasize the semantic meaning.

	* doc/texinfo.texi (@code{@@lisp}, Glyphs for Programming): use
	@example list instead of @lisp.

	* doc/texinfo.texi (Inserting an Ampersand): describe the bold
	formatting as formatting and not has having a semantic meaning.

	* doc/texinfo.texi (Inserting Math): ref to tex4ht customization,
	\mathopsup not in LaTeX.

	* doc/texinfo.texi (Raw Formatter Commands): the description of other
	raw formats in Texinfo XML is incorrect, put it in an @ignore block.

	* tp/Texinfo/Convert/LaTeX.pm (%LaTeX_no_arg_brace_commands): use
	'\mathtt{\backslash{}}' for backslashchar to be in line with the
	Texinfo manual.

2022-10-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Inserting Math): Do not state that
	LaTeX commands can be used inside @math/@displaymath.
	Use @ not \ for Texinfo commands.  Reference
	T4H_MATH_CONVERSION for LaTeX output.

2022-10-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c (check_manpage_node, get_manpage_from_formatter):
	Apply ! operator to result of freopen, to silence obnoxious gcc
	warning.

2022-10-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* system.h (ALSO_NULL_DEVICE): Remove unused.

2022-10-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Check for man page with 'man -w'

	* info/man.c (check_manpage_node): New function, to check if
	man page exists with 'man -w'.  This is much faster for large
	man pages.
	(find_man_formatter): Cache return value.
	* info/info.c (get_initial_file): Use check_manpage_node instead
	of get_manpage_node.

	'info -w ffmpeg-all' was reported to be slow by Hilmar Preusse.
	'ffmpeg-all' is an especially long man page, so takes a longer time
	for nroff to format.

2022-10-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (main) <--output>: Exit with status of 1, not 0,
	if there was an error.  Report from Hilmar Preusse <hille42@web.de>.

2022-10-15  Jakub Wilk  <jwilk@jwilk.net>  (tiny change)

	* doc/texinfo.texi (Info Format Cross Reference): Fix punctuation.

2022-10-15  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix cartouche right edge 

	* doc/texinfo.tex (\cartouche): Reduce \cartinner and \cartouter
	to line up right edge with the text block.  Report from Werner
	3rd September.

2022-10-15  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (@node HTML Customization Variables): in the
	HTML_MATH entry, refer to the specific t4h options.  Also state that
	CONVERT_TO_LATEX_IN_MATH is set if HTML_MATH is set.

2022-10-15  Patrice Dumas  <pertusus@free.fr>

	* tp/texi2any.pl (GetOptions): add --iflatex.

	* tp/ext/tex4ht.pm (tex4ht_prepare): use \documentclass instead of
	\documentstyle, for latex type conversion.

2022-10-15  Patrice Dumas  <pertusus@free.fr>

	* tp/ext/latex2html.pm (l2h_process, l2h_convert_command),
	tp/ext/tex4ht.pm (tex4ht_prepare, tex4ht_convert_command): register
	formatting of latex block.
	Do not output any message nor any file for blocks that are
	not expanded.

2022-10-15  Patrice Dumas  <pertusus@free.fr>

	add @latex to l2h and use CONVERT_TO_LATEX_IN_MATH

	* doc/texinfo.texi (@command{latex2html} Customization Variables),
	tp/ext/latex2html.pm (l2h_process): select @latex blocks too.  If
	CONVERT_TO_LATEX_IN_MATH is set, convert input tree element content to
	LaTeX instead of Texinfo.

	* tp/ext/tex4ht.pm (tex4ht_prepare): actually output latex blocks.

2022-10-15  Patrice Dumas  <pertusus@free.fr>

	* tp/ext/tex4ht.pm (tex4ht_process_format): remove leading and
	trailing spaces in case of @math.  Report from Vincent Lefèvre.

2022-10-15  Patrice Dumas  <pertusus@free.fr>

	add @latex to t4h and some customization

	* doc/texinfo.texi (@command{tex4ht} Customization Variables),
	tp/Texinfo/Common.pm (@variable_string_settables), tp/ext/tex4ht.pm
	(tex4ht_prepare): add T4H_MATH_CONVERSION, T4H_TEX_CONVERSION and
	T4H_LATEX_CONVERSION as customization variables to select which
	type of conversion to use for math commands, @tex and @latex.

	* tp/ext/tex4ht.pm (tex4ht_prepare): if CONVERT_TO_LATEX_IN_MATH
	is set, and conversion type is latex, convert input tree element
	content to LaTeX instead of Texinfo.

2022-10-14  Patrice Dumas  <pertusus@free.fr>

	Use explicit \mathit for slates @-commands in math

	* tp/Texinfo/Convert/LaTeX.pm: for slanted indicatric commands,
	such as @var in math use \mathit instead of no command, as
	the space between the letters in argument can be important for some
	letters (such as ff), corresponding to letters being multiplied
	rather than to words, which is a better interpretation for
	@-command arguments.  Report from Vincent Lefèvre.

2022-10-14  Patrice Dumas  <pertusus@free.fr>

	Add simple customization of accent commands formatting in HTML

	* doc/customization_api.texi, tp/Texinfo/Config.pm
	($GNUT_accent_command_formatting_info)
	(texinfo_register_accent_command_formatting)
	(GNUT_get_accent_command_formatting), tp/Texinfo/Convert/Converter.pm
	(xml_numeric_entity_accent), tp/Texinfo/Convert/HTML.pm
	(_accent_entities_html_accent)
	(_accent_entities_numeric_entities_accent, _convert_accent_command)
	(converter_initialize), tp/init/html32.pm: add
	texinfo_register_accent_command_formatting and
	GNUT_get_accent_command_formatting to register simple accent
	formatting information.  Rename Texinfo::Convert::Converter
	_format_numeric_entities_accent as xml_numeric_entity_accent.
	Add _accent_entities_html_accent() and
	_accent_entities_numeric_entities_accent() functions in
	HTML.pm called by _convert_accent_command that are similar with
	XML accent formatting functions in Texinfo::Convert::Converter, but
	use the simple accent formatting information registered by the user.

2022-10-14  Patrice Dumas  <pertusus@free.fr>

	Format @*ref node out of main document to determine if quoted

	* tp/Texinfo/Convert/Info.pm (converter_line_warn)
	(converter_line_error), tp/Texinfo/Convert/Plaintext.pm
	(converter_line_warn, converter_line_error, _convert):
	add converter_line_warn and converter_line_error to intercept calls
	to line_warn and line_error in case a silent conversion is needed,
	with 'silent' set for converter.
	Convert the @*ref commands node outside of the main document
	formatting before converting the node normally, to determine if it
	needs to be quoted.

	* tp/Texinfo/Convert/Info.pm (add_text_to_count),
	tp/Texinfo/Convert/Plaintext.pm(add_text_to_count): rename
	add_text_count to add_text_to_count.

2022-10-13  Patrice Dumas  <pertusus@free.fr>

	* tp/init/html32.pm: do not use &minus;, protect with
	html32_format_protect_text to avoid &quot;.

2022-10-13  Patrice Dumas  <pertusus@free.fr>

	Use &minus; for @minus{} in HTML output

	* tp/Texinfo/Convert/Converter.pm
	(%xml_text_entity_no_arg_commands_formatting): use &minus; for
	@minus{}.  Report from Vincent Lefèvre.

2022-10-12  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm: setup %description_command_format in
	one loop.  Changes in comments.

2022-10-12  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_push_new_context): initialize
	all the possible keys.  Changes in comments.

2022-10-12  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Inserting Math): do not described twice the
	output for HTML.  Report from Vincent Lefèvre.

2022-10-12  Patrice Dumas  <pertusus@free.fr>

	Document that microtype is off in the default case in LaTeX output

	* doc/texinfo.texi (Microtypography): explain that LaTeX font may not
	be scalable, that microtypography is off in the default case, how to
	turn it on and get scalable fonts.

2022-10-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (%ignored_commands, _convert):
	explicitly ignore errormsg.  Recognize an empty string as conversion
	of %LaTeX_in_heading_commands_formatting commands.

2022-10-11  Patrice Dumas  <pertusus@free.fr>

	* util/htmlxref.cnf: corrections reported by Tzvetelin Katchov.
	Remove old reftex, fix coreutils, cpio, diffutils and gtypist mono
	urls, fix mono type of emacs-muse.

2022-10-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (_normalize_filename_case)
	(set_tree_unit_file, set_file_path, _set_tree_units_files),
	tp/Texinfo/Convert/HTML.pm (_html_set_pages_files): split set_file_path
	out of set_tree_unit_file to set file path for each file name,
	which should be done for each file name, and therefore with a
	different function than set_tree_unit_file, which is called for each
	tree unit element.  Add _normalize_filename_case to be used in both
	set_tree_unit_file and set_file_path.

2022-10-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_set_root_commands_targets_node_files):
	handle undef returned by user defined node_file_name by reusing
	the default file name.

	* tp/Texinfo/Convert/HTML.pm (_html_set_pages_files): always use
	targets node_filename to determine a node file name.

	* tp/Texinfo/Convert/Converter.pm (_set_tree_units_files): use
	a variable in code for clarity.

2022-10-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm: add code (not active) to check
	that settable commands are contained in global commands.

	* tp/Texinfo/ParserNonXS.pm: set %global_multiple_commands
	and %global_unique_commands using the corresponding Texinfo::Commands
	hashes.

2022-10-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_html_set_pages_files): call
	set_tree_unit_file only once per tree unit, gather file names and
	file paths in a hash.

	* tp/Texinfo/Convert/HTML.pm (tree_unit_file_name), tp/init/book.pm:
	allow to customize both the file name and the file path.

2022-10-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_html_set_pages_files)
	(_prepare_special_elements, output): do not call set_tree_unit_file
	in _prepare_special_elements, it will be called in
	_html_set_pages_files if needed.  Initialize file counters in
	_html_set_pages_files.  If $document_name is not set in
	_prepare_special_elements, do not try to set a separate special
	element file name.

2022-10-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/Text.pm
	(brace_no_arg_command, _convert), tp/Texinfo/Convert/Unicode.pm,
	tp/Texinfo/Convert/Utils.pm: avoid autovivification if not needed.
	Only put @def* name element in contents to be converted if defined.

2022-10-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/TexinfoMarkup.pm:
	avoid autovivification if not needed.

2022-10-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_prepare_conversion): avoid
	autovivification if not needed.  Better initialization of conversion
	state in _prepare_conversion().

2022-10-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Plaintext.pm (convert_tree, convert): avoid
	autovivification if not needed.  Better initialization of conversion
	state.

2022-10-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_initialize_output_state): avoid
	autovivification if not needed.  Add _initialize_output_state
	to initialize conversion state for a document output.

2022-10-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (initialize_tree_units_files)
	(set_tree_unit_file, _set_tree_units_files, table_item_content_tree),
	tp/Texinfo/Convert/HTML.pm (_html_set_pages_files, output):
	add a function, initialize_tree_units_files to initialize hashes used
	in set_tree_unit_file and 'file_counters'.  Add a file path argument
	to set_tree_unit_file and use the function to set file path when non
	split too.  Initialize structures more explicitly.

	* tp/Texinfo/Convert/Converter.pm (output): use a hash directly,
	renamed as %files_filehandle from %files to associate filehandles.

2022-10-09  Patrice Dumas  <pertusus@free.fr>

	* tp/ext/*.pm, tp/init/*.pm: check that there is no incorrect
	autovivification, initialize explicitly.

	* tp/init/highlight_syntax.pm: update to match with changes in
	default example formatting.

	* tp/Texinfo/Convert/HTML.pm, tp/init/highlight_syntax.pm:
	reindent.

	Correct spelling of explicitly in different files.

2022-10-08  Patrice Dumas  <pertusus@free.fr>

	* util/htmlxref.cnf: corrections reported by Tzvetelin Katchov.
	Replace dmd by shepherd, remove pages not found, update some urls.

2022-10-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/LaTeX.pm: Change \GNUTexinfo- prefix
	to \Texinfo- throughout, both for brevity and to make it
	easier for others to make their own non-GNU version of Texinfo.

2022-10-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Generic Translator texi2any):
	Change @table @asis to @display to compress vertical spacing
	in LaTeX output.

2022-10-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/LaTeX.pm (_index_entry): Always output
	a sort key for cases like '@cindex @code{aaa} bbb' where the
	index text uses \commands.

2022-10-08  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm
	(_texinfo_handle_element_end): set explanation to the third argument
	of @ref and not the second such that it is used for all the output
	formats.

2022-10-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/LaTeX.pm (_latex_header) <indices>:
	Avoid extra heading before indices.

2022-10-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/LaTeX.pm (_protect_index_text):
	Protect \ before ", so @"a outputs as "\""a.
	(_protect_text): Do not call _protect_index_text.
	(_index_entry): Call _protect_index_test as needed.

2022-10-08  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm
	(_texinfo_handle_element_start, _prepend_internal_section_manual)
	(_convert_pod_simple_tree): add _convert_pod_simple_tree to convert a
	Pod::Simple::SimpleTree, or Pod::Simple::LinkSection trees to Texinfo
	using the same functions as the pull parser.  Use that function
	to convert L manual and L section to Texinfo code.  Add an argument to
	_prepend_internal_section_manual to avoid protection in case manual
	argument is already Texinfo.

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm (_convert_pod_tokens):
	rename _convert_pod as _convert_pod_tokens.

2022-10-08  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm
	(_texinfo_handle_element_start, _texinfo_handle_text)
	(_texinfo_handle_element_end): use handle functions similar to
	those used in Pod::Simple to be able to use the different Pod::Simple
	parser styles more easily.  Put @accumulated_output
	in $self->{'texinfo_accumulated'} and @format_stack in
	$self->{'texinfo_stack'}.  Replace token modification after <X>
	to remove a leading space by setting
	$self->{'texinfo_ignore_leading_spaces'}.

2022-10-08  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm,
	Pod-Simple-Texinfo/pod2texi.pl: add comments to explain the issue with
	formatting section in L.  Also add code in comment to show the
	Pod::Simple tree.

2022-10-05  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm, tp/Texinfo/Commands.pod,
	doc/tp_api/Makefile.am (tp_api_dependencies, dist_modules_DATA),
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h: move Pod documentation on
	hashes in Texinfo::Commands out of tp/Texinfo/Common.pm to
	tp/Texinfo/Commands.pod. Add more information in
	tp/Texinfo/XS/parsetexi/command_data.txt and
	tp/Texinfo/XS/parsetexi/commands.h.

2022-10-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (decide_aux_files_method): Change an error
	message to be less confusing.

2022-10-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm, tp/Texinfo/ParserNonXS.pm,
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.c (close_preformatted_command),
	tp/Texinfo/XS/parsetexi/commands.h, tp/Texinfo/XS/parsetexi/parser.c
	(begin_paragraph, process_remaining_on_line): add close_paragraph
	flag in command_data.txt.  Remove %close_paragraph_commands from
	Texinfo::Common.  Remove the close_paragraph_command function.

2022-10-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm, tp/Texinfo/Convert/DocBook.pm,
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/LaTeX.pm,
	tp/Texinfo/Convert/NodeNameNormalization.pm,
	tp/Texinfo/Convert/Plaintext.pm,tp/Texinfo/Convert/Text.pm,
	tp/Texinfo/XS/parsetexi/command_data.txt: set letter_no_arg flag
	in command_data.txt and remove %letter_no_arg_commands from
	Common.pm.

2022-10-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm, tp/Texinfo/Convert/DocBook.pm,
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/TexinfoMarkup.pm,
	tp/Texinfo/ParserNonXS.pm: remove %context_brace_commands, instead
	check if brace_commands type is set to context.

2022-10-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm, tp/Texinfo/ParserNonXS.pm,
	tp/maintain/regenerate_commands_perl_info.pl: generate
	%commands_args_number in regenerate_commands_perl_info.pl, remove
	from Texinfo::Common.

2022-10-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm, tp/Texinfo/Convert/*.pm,
	tp/Texinfo/Structuring.pm, tp/Texinfo/Transformations.pm,
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h, tp/init/book.pm,
	tp/init/highlight_syntax.pm: use information from Texinfo::Commands,
	remove the corresponding hashes from Texinfo::Common.  Move comments
	from Common.pm to command_data.txt and commands.h.

2022-10-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm, tp/Texinfo/Convert/Utils.pm
	(definition_category_tree), tp/Texinfo/ParserNonXS.pm
	(_process_remaining_on_line),
	tp/maintain/regenerate_commands_perl_info.pl: define %command_index
	in ParserNonXS.pm, not in Common.pm.  Update
	definition_category_tree() to use directly the command names.
	Remove %deprecated_commands from Common.pm, do not use values
	of %deprecated_commands, only the keys.  Generate %index_names
	in regenerate_commands_perl_info.pl and output code that adds
	default index commands to %line_commands.

	* util/txixml2texi.pl, tp/Texinfo/ParserNonXS.pm: use information
	from Texinfo::Commands.

2022-10-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Makefile.am, maintain/regenerate_commands_perl_info.pl:
	hardcode output file name in regenerate_commands_perl_info.pl, to
	avoid emptying the result file because of the redirection if the
	command failed completely.

2022-10-02  Patrice Dumas  <pertusus@free.fr>

	* NEWS, tp/Texinfo/ParserNonXS.pm,
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h, tp/Texinfo/XS/parsetexi/parser.c
	(check_valid_nesting): add contain_simple_text flag.  Set @w to be
	contain_simple_text, plain text is too restrictive, there are many
	uses of indicatric commands in @w in the Texinfo manual.

2022-10-02  Patrice Dumas  <pertusus@free.fr>

	* maintain/regenerate_commands_perl_info.pl, Makefile.am: rename
	maintain/regenerate_perl_command_infos.pl as
	maintain/regenerate_commands_perl_info.pl.  Distribute the script.
	Remove _LINE in item_LINE.

2022-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/LaTeX.pm (index_entry): Strip | from
	sort key as otherwise there can be manged output in the .idx
	file with a "hyperindexformat" string that appears to be added
	by the hyperref package.
	* tp/t/latex_tests.t (vbar_in_index): New test.

2022-10-02  Patrice Dumas  <pertusus@free.fr>

	Generate automatically perl commands information hashes

	* maintain/regenerate_perl_command_infos.pl, Makefile.am: generate
	automatically Texinfo/Commands.pm using the information from
	tp/Texinfo/XS/parsetexi/command_data.txt.

2022-10-02  Patrice Dumas  <pertusus@free.fr>

	Warn if @-commands other than accent, glyphs and symbols appear in @w

	* tp/Texinfo/Common.pm (%contain_plain_text_commands),
	tp/Texinfo/XS/parsetexi/command_data.txt, NEWS: add w to contain_plain_text.

	* tp/Texinfo/Common.pm (%variadic_commands),
	tp/Texinfo/ParserNonXS.pm: use the %variadic_commands hash for
	variadic commands instead of setting %commands_args_number to
	variadic.

2022-10-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%contain_plain_text_commands),
	tp/Texinfo/ParserNonXS.pm (%plain_text_commands),
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h, tp/Texinfo/XS/parsetexi/parser.c
	(check_valid_nesting): add a contain_plain_text flag/hash to warn
	if 'dmn', 'key', 'hyphenation', 'sortas' contain anything else
	than accent and glyph commands (similar as accent commands).

2022-10-02  Patrice Dumas  <pertusus@free.fr>

	 * tp/Texinfo/XS/parsetexi/command_data.txt,
	 tp/Texinfo/XS/parsetexi/commands.h: add BLOCK_preformatted and
	 BLOCK_math for consistency with perl parser.

2022-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/LaTeX.pm (_convert) <@\>: Output as \backslash{}
	in math context.

2022-10-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%def_alias_commands),
	tp/Texinfo/ParserNonXS.pm (_parse_def): add %def_alias_commands
	and use for consistency with XS parser.

	* tp/Texinfo/Common.pm, tp/Texinfo/Convert/HTML.pm
	(%HTML_align_commands), tp/Texinfo/ParserNonXS.pm: remove
	%region_commands and %align_commands.  Set %HTML_align_commands in
	HTML.pm as the set of align commands choosen is not generic.

	* tp/Texinfo/Common.pm (%block_commands): set align and other
	block commands to type 'other'.

	* tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h: add BLOCK_def for consistency
	with perl parser.

	* tp/Texinfo/ParserNonXS.pm (_pop_block_command_contexts)
	(_close_brace_command, _close_all_style_commands, _end_paragraph)
	(_end_preformatted, _close_current, _close_commands),
	tp/Texinfo/XS/parsetexi/close.c (pop_block_command_contexts)
	(close_brace_command, close_all_style_commands, close_current)
	(close_commands), tp/Texinfo/XS/parsetexi/parser.c (end_paragraph)
	(end_preformatted): add pop_block_command_contexts to pop block
	commands context when closing block commands.  Change variable names
	to closed_block_command to show that the argument can only be a block
	command.

2022-10-02  Patrice Dumas  <pertusus@free.fr>

	Warn if @| appears out of a heading specification

	* tp/Texinfo/Common.pm (%in_heading_spec_commands),
	tp/Texinfo/Convert/LaTeX.pm (_convert)
	%LaTeX_in_heading_commands_formatting),
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h,
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_other_command),
	tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting): rename
	in_heading as in_heading_spec in XS parser to match perl.  Set @| to
	be in in_heading_spec.  In LaTeX.pm, rename
	%LaTeX_in_heading_spec_commands as
	%LaTeX_in_heading_commands_formatting and use that source of
	information to select the corresponding commands to format.

2022-10-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): collect trailing
	spaces in @def* bracketed content.

	* util/txixml2texi.pl: output leading spaces for bracketed container
	and trailing spaces at the right place for the different types of
	commands.

2022-10-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): on block command
	lines, output empty elements for all the variadic elements, including
	the last non variadic element, which has the same name as the variadic
	element, to have a correct count on elements, as the element name
	appearing last cannot be used to add commas for empty elements.
	Keep the last non-variadic empty argument to be able to prepend it to
	be able to reconstitute trailing empty arguments in the original
	Texinfo code.

2022-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/LaTeX.pm (_latex_header):
	Redefine \_ so to allow line breaking at underscore.  Update TODO
	agendum.

2022-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Contents): State that @shortcontents
	is not implemented for LaTeX output.  From Patrice.

2022-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Do not warn for @shortcontents in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (convert) <@shortcontents>:
	Do not issue a warning for @shortcontents or @summarycontents.
	From Patrice.

2022-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	LaTeX disable hyphenation on def line

	* tp/Texinfo/Convert/LaTeX.on (_convert) <def line>:
	Set \hyphenpenalty to 10000.

2022-10-01  Patrice Dumas  <pertusus@free.fr>

	Do not add empty isolated trailing spaces

	* tp/Texinfo/ParserNonXS.pm (_isolate_trailing_space)
	(_isolate_last_space, _process_remaining_on_line),
	tp/Texinfo/XS/parsetexi/parser.c (isolate_trailing_space):
	only add element when isolating trailing spaces if there
	are indeed spaces to isolate.  Modify perl parser code to
	be more like XS parser code.

2022-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Warn for @shortcontents in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (convert) <@shortcontents>:
	Issue a warning if @shortcontents or @summarycontents
	is used.  Add a comment in TODO section saying that we may
	not have to implement it.

2022-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/api.c: Initialize a variable that
	we check is non-null.

2022-10-01  Patrice Dumas  <pertusus@free.fr>

	* util/txixml2texi.pl: handle variadic commands.  Disambiguate markup
	argument elements with command name as the a markup argument element
	can be associated to more than one @-command.

2022-10-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Plaintext.pm (process_printindex): use scalar()
	on hash keys, not on hash to detect if empty.

2022-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: note that gettextize can downgrade files

2022-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: more advice on gnulib-tool --add-import

2022-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Update gnulib.

	* (top-level), tp/Texinfo/XS: Run gnulib-tool --add-import.

2022-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\image): Add more space around @center @image.

2022-10-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): keep the last empty
	argument of a brace command to be able to reconstitute trailing empty
	arguments in the original Texinfo code.

2022-10-01  Patrice Dumas  <pertusus@free.fr>

	* util/texinfo.dtd: update for change in spaces attributes.

2022-10-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): set leading spaces
	for columnfraction.

2022-10-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): collect index
	entry end line spaces, which is important to get space before
	@subentry.

2022-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/LaTeX.pm (_latex_header): Load microtype package
	only if "@microtype" command was used in document.

2022-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	@center @image spacing

	* doc/texinfo.tex (\image): Separate out the code for
	@center @image more.  Attempt to fix spacing before @center
	@image.  Report from Werner.

2022-10-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), util/texinfo.dtd,
	util/txixml2texi.pl: if the default command as argument for itemize
	is inserted, put it in a formattingcommand, with an automatic
	attribute set to on.  Use that information in txixml2texi.

	* util/txixml2texi.pl: handle rmacro.

2022-10-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): add spaces attribute
	for 'specific' line commands.

2022-10-01  Patrice Dumas  <pertusus@free.fr>

	* util/txixml2texi.pl: output spaces explicitly.  Output user-defined
	index entry command name.

2022-10-01  Patrice Dumas  <pertusus@free.fr>

	* util/txixml2texi.pl: separate accent formatting.  Always output the
	braces and the spaces right after command if they are specified for
	an accent.

2022-10-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%formatted_line_commands)
	(%formatted_nobrace_commands, %formattable_line_commands)
	(_informative_command_value), tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/LaTeX.pm,
	tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/Convert/TexinfoMarkup.pm
	(_convert), tp/Texinfo/Convert/Text.pm,
	tp/Texinfo/Convert/TextContent.pm, util/txixml2texi.pl: remove
	%other_commands and %misc_commands.  Split %formatted_misc_commands as
	%formatted_line_commands and %formatted_nobrace_commands. Rename
	%formattable_misc_commands as %formattable_line_commands.  Rename
	similarly other variables in converters.

	* util/txixml2texi.pl: update %no_arg_commands_formatting handling
	for changes in markup attributes.

2022-09-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (_convert): format separately
	nobrace and line commands.  Do not use the type of line command to
	format line commands.

2022-09-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%nobrace_symbol_text, %nobrace_commands),
	tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line),
	tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/DocBook.pm,
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/LaTeX.pm,
	tp/Texinfo/Convert/NodeNameNormalization.pm,
	tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/Convert/TexinfoMarkup.pm,
	tp/Texinfo/Convert/Text.pm, tp/Texinfo/Convert/TextContent.pm: rename
	former %nobrace_commands as %nobrace_symbol_text.  Set
	%nobrace_commands according to
	tp/Texinfo/XS/parsetexi/command_data.txt.  Handle all the
	%nobrace_commands together.

2022-09-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_other_command),
	tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting)
	(process_remaining_on_line): merge commands with CF_other flag with
	commands with CF_nobrace flag.  Add NOBRACE_symbol type for symbols
	without brace.  Rename OTHER_skipspace as NOBRACE_skipspace.  Rename
	OTHER_noarg as NOBRACE_other.  Handle all the CF_nobrace commands in
	handle_other_command, which means moving the handling of
	NOBRACE_symbol commands from process_remaining_on_line to
	handle_other_command.

	* tp/Texinfo/XS/parsetexi/close.c (close_commands),
	tp/Texinfo/XS/parsetexi/context_stack.c
	(in_preformatted_context_not_menu), tp/Texinfo/XS/parsetexi/parser.c
	(check_valid_nesting, parse_texi): check CF_* in addition to .data in
	some places to be sure that the value is for the right type of
	command.

2022-09-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm, tp/Texinfo/Convert/DocBook.pm,
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/LaTeX.pm,
	tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/Convert/TexinfoMarkup.pm,
	tp/Texinfo/Convert/Text.pm, tp/Texinfo/ParserNonXS.pm
	(_process_remaining_on_line),
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h, tp/Texinfo/XS/parsetexi/parser.c
	(check_valid_nesting), tp/Texinfo/XS/parsetexi/separator.c
	(handle_open_brace, handle_close_brace, handle_comma): replace
	%inline_commands/CF_inline with the brace command inline type/BRACE_inline.

2022-09-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%in_heading_spec_commands),
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/ParserNonXS.pm: rename
	%in_heading_commands as %in_heading_spec_commands.

	* tp/Texinfo/Convert/HTML.pm (converter_initialize): value is now
	in brace commands.

	* tp/Texinfo/ParserNonXS.pm: rename %in_*commands hashes and
	associated commands hashes.

2022-09-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm, tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h: use BRACE_special for
	special commands with braces, instead of BRACE_other with is
	now used for brance commands in which leading and trailing spaces
	are kept, and used for @dmn and @titlefont.  Set @indicateurl and @key
	as BRACE_style_code commands.

2022-09-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking, tp/Texinfo/XS/parsetexi/README:
	valgrind --leak-check for parsetexi.

2022-09-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_printindex_command):
	pop document context when there is no output.

2022-09-29  Patrice Dumas  <pertusus@free.fr>

	Gather @seealso and @seeentry index entries with other entries

	* tp/Texinfo/ParserNonXS.pm (_enter_index_entry),
	tp/Texinfo/XS/parsetexi/api.c (build_single_index_data),
	tp/Texinfo/Convert/HTML.pm (_convert_printindex_command)
	(_prepare_index_entries, output_internal_links),
	tp/Texinfo/Convert/Plaintext.pm (process_printindex),
	tp/init/chm.pm: keep index entries with @seealso or @seeentry
	with other index entries in 'index_names' index 'index_entries'.
	Ignore these index entries, if needed, in converters.

	* tp/Texinfo/Convert/Plaintext.pm (process_printindex): do not
	output the index header if all the index entries are ignored.

2022-09-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_enter_index_entry),
	tp/Texinfo/XS/parsetexi/api.c (build_single_index_data),
	tp/Texinfo/Convert/*.pm, tp/Texinfo/Common.pm,
	tp/Texinfo/Structuring.pm, tp/Texinfo/Transformations.pm,
	tp/Texinfo/Translations.pm, tp/init/chm.pm: change index structure key
	names to have more specific names.

2022-09-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_enter_index_entry): initialize 'index_entries'
	to an empty array for the index even if the entry being processed has
	seeentry or seealso and won't be pushed on the 'index_entries' array.

2022-09-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Transformations.pm (_protect_hashchar_at_line_beginning)
	(protect_hashchar_at_line_beginning): use a hash to mark elements that
	should be protected instead of modifying the tree by putting an
	temporary internal key in 'extra'.

	* tp/Texinfo/Transformations.pm (_print_down_menus): avoid unneeded
	autovivification.

2022-09-28   Charles Reilly  <git.2022@charlesreilly.com>  (tiny change)

	* info/indices (index_offset, info_index_search)
	(info_next_index_match, create_virtual_index): Initialize
	index_offset to -1 rather than 0 to avoid missing the first
	index entry.

2022-09-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm: avoid unneeded autovivification.

2022-09-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Config.pm: initialize hashes and determine valid keys by
	looking directly at the initialized hashes.

	* tp/Texinfo/Config.pm (texinfo_get_conf): abort if
	GNUT_initialize_config() has not been called before texinfo_get_conf()
	is called.

	* tp/t/test_utils.pl (test): call Texinfo::Config::GNUT_initialize_config
	before calling Texinfo::Config files.

2022-09-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (output_files_initialize),
	tp/Texinfo/Convert/Converter.pm (converter),
	tp/Texinfo/Convert/Text.pm (output), tp/texi2any.pl: add
	output_files_initialize() to initialize the structures of the output
	files API.

	* tp/Texinfo/Common.pm (parse_node_manual, set_global_document_command)
	(set_output_encodings, modify_tree): avoid erroneous autovivification,
	initialize more cleanly.

2022-09-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Transformations.pm (set_menus_node_directions): handle
	simple menus.

	* tp/t/test_utils.pl: rename $result as $tree.  Order the different
	steps to match what is done in the main program.  Add tree
	transformations to tests.

2022-09-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Transformations.pm (menu_to_simple_menu): avoid a
	undefined value message.

2022-09-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm: check that autovivification does not
	create unexpected structures, and hides missing initializations.

2022-09-27  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.p (_convert_pod): fix
	Texinfo::Common::code_style_commands to be the modified
	Texinfo::Common::brace_code_commands.

2022-09-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%brace_commands, %internal_commands),
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h: put value in brace commands.
	Put internal commands (currently only txiinternalvalue) in
	specific hash, and use specific flag/data.

	* tp/Texinfo/XS/parsetexi/commands.c (item_line_command):
	use BLOCK_item_line.

2022-09-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%commands_args_number): merge
	%brace_commands_args_number and %block_commands_args_number in
	%commands_args_number, and add the number of arguments of node too,
	matching the XS parser.

	* tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line),
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command):
	Use the number of arguments of node more like other commands
	both in the perl and the XS parser.

2022-09-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%heading_spec_commands),
	tp/Texinfo/ParserNonXS.pm, tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h,
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_other_command),
	tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting): rename
	%headings_specification_commands as %heading_spec_commands to match XS
	Parser.  Replace LINE_heading_spec data in XS parser to heading_spec
	flag, and and add math flag, to match with perl Parser.

2022-09-26  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm, tp/Texinfo/Convert/DocBook.pm
	(converter_initialize, _convert), tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm
	(_convert), tp/Texinfo/Convert/TexinfoMarkup.pm,
	tp/Texinfo/ParserNonXS.pm (_close_current, _end_line)
	(_process_remaining_on_line, _parse_texi),
	tp/Texinfo/XS/parsetexi/close.c (close_current, close_commands),
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.c (close_paragraph_command),
	tp/Texinfo/XS/parsetexi/commands.h, tp/Texinfo/XS/parsetexi/end_line.c
	(end_line_starting_block), tp/Texinfo/XS/parsetexi/handle_commands.c
	(handle_block_command), tp/Texinfo/XS/parsetexi/parser.c
	(check_valid_nesting, process_remaining_on_line):
	remove %raw_commands and %format_raw_commands, use %block_commands
	values instead, adding 'format_raw'.  In XS Parser, set and use
	BLOCK_format_raw instead of the flag CF_format_raw.  In some
	converters, set %format_raw_commands locally.

2022-09-26  Werner Lemberg  <wl@gnu.org>

	* doc/texinfo.tex: Add character protrusion support for XeTeX.

	(top-level, \microtypeON, \microtypeOFF): Do it.

2022-09-26  Werner Lemberg  <wl@gnu.org>

	* doc/texinfo.tex: Fix character protrusion in `@microtype`.

	First of all, character protrusion wasn't activated at all. 
	Additionally, the code from the original `protcode.tex` was added
	incompletely, causing far too large protrusion values.

	* doc/texinfo.tex (\countB): New counter.
	(\mtadjustprotcode, \mtadjustcp): New macros.
	(\mtsetprotcode): Call `\mtadjustprotcode` to scale protrusion
	values correctly.
	(\microtypeON, \microtypeOFF): Switch on or off character
	protrusion.

2022-09-26  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%nobrace_commands),
	tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm,
	tp/Texinfo/Convert/NodeNameNormalization.pm,
	tp/Texinfo/Convert/Text.pm, tp/Texinfo/Convert/TextContent.pm,
	tp/Texinfo/ParserNonXS.pm: rename %no_brace_commands as
	%nobrace_commands to be more in line with XS parser.

	* tp/Texinfo/Common.pm, tp/Texinfo/Convert/DocBook.pm
	(@all_style_commands, _convert), tp/Texinfo/Convert/HTML.pm
	(@all_style_commands, _convert), tp/Texinfo/Convert/Plaintext.pm
	(_convert), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): remove
	%style_commands and %regular_font_style_commands, use %brace_commands
	values instead.

	* tp/Texinfo/Common.pm (%brace_code_commands),
	tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm,
	tp/Texinfo/Convert/Text.pm: rename %code_style_commands as
	%brace_code_commands.

	* tp/Texinfo/Convert/NodeNameNormalization.pm: change in spacing.

2022-09-26  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%blockitem_commands),
	tp/Texinfo/Convert/TextContent.pm, tp/Texinfo/ParserNonXS.pm: rename
	%block_item_commands as %blockitem_commands to be more consistent with
	XS parser.

	* tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.c (close_paragraph_command),
	tp/Texinfo/XS/parsetexi/commands.h,
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command),
	tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting): rename
	CF_sectioning as CF_sectioning_heading to be more consistent with Perl
	parser.

	* tp/Texinfo/Common.pm, tp/Texinfo/Convert/DocBook.pm,
	tp/Texinfo/Convert/LaTeX.pm (_convert),
	tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/ParserNonXS.pm
	(_close_command_cleanup, _item_container_parent, _item_line_parent)
	(_end_line, _parent_of_command_as_argument,
	_process_remaining_on_line), tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h, util/txixml2texi.pl: use item_line
	and item_container as types for block commands, instead of
	%item_container_command and %item_line_commands. Remove
	%item_container_command and %item_line_commands.

	* tp/Texinfo/Convert/HTML.pm: remove useless code.

2022-09-26  Patrice Dumas  <pertusus@free.fr>

	Document Microtypography in LaTeX output

	* doc/texinfo.texi (Microtypography): document that cm-super
	fonts package is needed for microtypography and that there will
	be errors with the default fonts.

2022-09-26  Patrice Dumas  <pertusus@free.fr>

	Microtype in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (%LaTeX_fixed_width_environments)
	(_latex_header, _convert): implement microytpe in LaTeX output.

2022-09-26  Patrice Dumas  <pertusus@free.fr>

	* TODO: user-defined macros as argument to @table and @itemize

	* doc/texinfo.texi (Defining Macros): say that Texinfo commands
	should not be redefined as macro earlier, and make it part of the
	design of user defined macros.

2022-09-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm, tp/Texinfo/Convert/DocBook.pm (_convert),
	tp/Texinfo/Convert/HTML.pm (in_preformatted),
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm,
	tp/Texinfo/ParserNonXS.pm, tp/Texinfo/Transformations.pm
	(menu_to_simple_menu): use $block_commands{$command} eq 'menu'
	instead of %menu_commands. Remove %menu_commands.

	* tp/Texinfo/XS/parsetexi/close.c (close_current, close_commands),
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h,
	tp/Texinfo/XS/parsetexi/context_stack.c
	(in_preformatted_context_not_menu), tp/Texinfo/XS/parsetexi/end_line.c
	(end_line_starting_block, end_line_misc_line),
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command):
	use new BLOCK_menu command data instad of CF_menu flag.

	* tp/texi2any.pl: show the name of the module failing to load if the
	converter module require failed.

2022-09-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%block_commands, %block_commands_args_number),
	tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line),
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h,
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command):
	separate type of block command from number of arguments for
	perl too.  Set variadic to be a flag in the XS parser.

2022-09-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Microtypography), NEWS: Document @microtype.

2022-09-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%brace_commands, %brace_commands_args_number),
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm,
	tp/Texinfo/ParserNonXS.pm (_end_line, _process_remaining_on_line),
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h,
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_open_brace)
	(handle_close_brace):
	separate number of brace arguments in %brace_commands_args_number and
	%brace_commands types in perl too.  Use 'arguments'/BRACE_arguments
	for the brace commands types that were selected by a positive number
	of arguments previously.  Use noarg/BRACE_noarg.

2022-09-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%line_commands), tp/Texinfo/Convert/DocBook.pm
	(_convert), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert),
	tp/Texinfo/ParserNonXS.pm (_end_line),
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line),
	tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting): use
	a new type for command line, 'specific' for line @-commands with
	specific args, such as @printindex, @alias... that had previously
	a positive number as type.

	* tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command):
	use args_number.
	
	* tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block),
	tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting):
	use BRACE_noarg instead of 0.

	* tp/Texinfo/XS/parsetexi/commands.c (add_texinfo_command),
	tp/Texinfo/XS/parsetexi/end_line.c (parse_line_command_args): set
	args_number for user defined commands.

2022-09-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/parsetexi/command_data.awk,
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h (command_struct): separate the
	information on the number of arguments from the information on
	the type of command.

2022-09-25  Patrice Dumas  <pertusus@free.fr>

	microtype in texi2any parsers

	* tp/Texinfo/Common.pm (%document_settable_multiple_at_commands)
	(%line_commands), tp/Texinfo/ParserNonXS.pm
	(_parse_line_command_args), tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/end_line.c (parse_line_command_args),
	tp/Texinfo/XS/parsetexi/parser.c (register_global_command)
	(wipe_global_info), tp/Texinfo/XS/parsetexi/parser.h (GLOBAL_INFO):
	add @microtype to texi2any parsers.

2022-09-25  Patrice Dumas  <pertusus@free.fr>

	* TODO: mention the Emacs Info viewer bug on node name quoting.

	* doc/texinfo.texi (Macro Details): texi2any expands macros in
	@end lines except when macros are not expanded in the block command.

	* tp/Texinfo/ParserNonXS.pm: change in spacing.

2022-09-25  Gavin Smith  <gavinsmith0123@gmail.com>

	Faster font switching

	* doc/texinfo.tex (\assignfonts, \defineassignfonts):
	\defineassignfonts creates control sequences which are used
	to switch to particular font sizes.  This avoids using \csname
	to define all font styles each time the font size changes.

2022-09-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\frenchspacing): Only change \sfcode if
	setting is changing, by using a conditional.

2022-09-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Menu Example): Change menu marker from
	"* menu:" to "* Menu:" in example.

2022-09-25  Karl Berry  <karl@freefriends.org>, and
            Gavin Smith  <gavinsmith0123@gmail.com>

	microtype

	* doc/texinfo.tex (@microtype) [pdfTeX, LuaTeX]: For "@microtype on",
	use microtypographical features.  Set it on by default.

2022-09-25  Sam James  <sam@gentoo.org>  (tiny change)

	* install-info/install-info.c
	(strip_info_suffix, open_possibly_compressed_file):
	Recognize .zst file extension from the zstd compression tool.

	* info/filesys.c (compress_suffixes): Ditto.

2022-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\ifmonotype): Replace with \ifusingtt which
	is nearly identical.
	(\ifusingtt, \ifusingit): Move earlier in file.

2022-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Less Cluttered Menu Entry, Other Info Files):
	@set txicodevaristt to preserve vertical alignment.

2022-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/dir.c (dir_entry_of_infodir): Always allocate enough
	memory in argument to info_check_compressed.  Crash with
	hardened_malloc for "info -a arg" reported by Tommy Nguyen.

2022-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: git branch structure for after next release

2022-09-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\image): Begin \vtop with negative kern by
	approximate height of a line for better vertical positioning.
	Report for @image at top of page by Werner.

2022-09-20  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_end_line),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): use
	the same error message for superfluous argument to @end command
	after the command argument as for other cases of superfluous
	argument triggered by unexpected @-commands on @end ond other
	similar commands line.

2022-09-20  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_end_line),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): avoid
	a double error message when there are both superfluous arg and
	a bad @end argument.

2022-09-19  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_end_line): same error messages
	as the XS parser for @-commands in @end.  Change a variable name.

2022-09-18  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Transformations.pm (complete_node_menu): handle empty
	nodes.

	* tp/Texinfo/Structuring.pm (new_node_menu_entry): call confess if
	there are undef contents in node contents.

	* tp/Texinfo/ParserNonXS.pm (_parse_node_manual): remove useless
	condition.

2022-09-18  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (parse_node_manual): return directly undef
	if there is no contents.  Code stylistic and variable names changes.

2022-09-18  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/pod2texi.pl (_parsed_manual_tree): update/fix
	the code adding the manual name to added nodes with
	fill_gaps_in_sectioning, and simplify.

2022-09-18  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Transformations.pm (_new_node): build a tree
	for a node in line with the current nodes Texinfo tree.

2022-09-18  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm
	(_normalize_texinfo_name): 'contents' can now be undef in anchor
	argument.

2022-09-18  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/misc.c (xs_abort_empty_line): remove the contents key
	if contents are empty.

2022-09-18  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_register_command_as_argument)
	(_parent_of_command_as_argument, _process_remaining_on_line),
	tp/Texinfo/XS/parsetexi/parser.c (parent_of_command_as_argument)
	(register_command_as_argument, process_remaining_on_line),
	tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace):
	use a function to register a command_as_argument.  Rename
	command_with_command_as_argument as parent_of_command_as_argument.

	* tp/Texinfo/ParserNonXS.pm (_end_line): remove useless code and
	keys.

2022-09-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Hardcopy with TeX, Generic Translator texi2any):
	Shorten chapter titles so they fit in table of contents better.

2022-09-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Node Commands): Correct @pxref to @ref.

2022-09-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex [e-TeX]: Do not set \lastlinefit.  Karl
	reported that this led to many underful hbox warnings.

2022-09-17  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_pop_element_from_contents): use
	that function to remove the last element from contents and
	remove the contents key if contents are empty.

	* tp/Texinfo/ParserNonXS.pm (_parse_macro_command_line)
	(_gather_previous_item): do not add empty contents.

	* tp/Texinfo/ParserNonXS.pm (_begin_paragraph)
	(_parse_line_command_args): use the presence of 'contents' to
	mean a non-empty contents.

2022-09-17  Patrice Dumas  <pertusus@free.fr>

	Remove contents tree element keys if empty

	* tp/Texinfo/ParserNonXS.pm (parse_texi_line, _begin_paragraph)
	(_close_command_cleanup, _close_current, _abort_empty_line)
	(_isolate_last_space, _parse_node_manual, _parse_float_type)
	(_split_def_args, _parse_def, _convert_to_text, _end_line)
	(_register_extra_menu_entry_information, _enter_menu_entry_node)
	(_setup_document_root_and_before_node_section)
	(_process_remaining_on_line, _parse_line_command_args):
	do not add an explicit empty contents array reference.  If
	a contents is emptied, or an empty non-closed command or type appears
	at the end of the document, remove the key.  

	* p/Texinfo/XS/parsetexi/api.c (element_to_perl_hash): do not
	set 'contents' if empty.

	* tp/Texinfo/Common.pm (_add_preamble_before_content)
	(parse_node_manual), tp/Texinfo/Convert/DocBook.pm (_convert),
	tp/Texinfo/Convert/HTML.pm (command_text, _convert_row_type)
	(_convert), tp/Texinfo/Convert/Info.pm (format_image),
	tp/Texinfo/Convert/LaTeX.pm (_convert),
	tp/Texinfo/Convert/Plaintext.pm (image_formatted_text)
	(format_image, _convert), tp/Texinfo/Convert/Texinfo.pm
	(root_heading_command_to_texinfo),
	tp/Texinfo/Convert/TexinfoMarkup.pm (_convert),
	tp/Texinfo/Convert/Utils.pm (definition_arguments_content)
	(find_innermost_accent_contents), tp/Texinfo/Transformations.pm:
	handle non defined 'contents'.

	* tp/Texinfo/Common.pm (rearrange_tree_beginning): remove
	before_node_section contents if empty.

2022-09-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\frenchspacing): Save french spacing setting
	in \frenchspacingsetting.
	(\headline, \footline): Restore French spacing setting.
	(\output, \onepageout): Shorten some comments, including some
	about old code.

	Sentence spacing setting not always obeyed in header reported by
	Werner.

2022-09-16  Patrice Dumas  <pertusus@free.fr>

	Keep definfoenclose defined commands line numbers

	* tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line),
	tp/Texinfo/XS/parsetexi/api.c (element_to_perl_hash): keep
	source info information for definfoenclose commands.

	* tp/Texinfo/ParserNonXS.pm (%keep_line_nr_brace_commands):
	remove.

	* tp/Texinfo/ParserNonXS.pm (parser, simple_parser)
	(_parse_line_command_args): add a dynamic 'brace_commands'
	hash with brace commands and added definfoenclose commands.

2022-09-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_pop_context, _close_current)
	(_end_line, _process_remaining_on_line),
	tp/Texinfo/XS/parsetexi/close.c (close_current),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line),
	tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace):
	always check that the context and the closed command match
	and die if not.

	* tp/Texinfo/ParserNonXS.pm (_parse_texi, _init_context_stack):
	a non empty context stack at the end of parsing is a bug.
	Remove second argument of _init_context_stack().

2022-09-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\raggedbottom): Supply our own definition to
	avoid too small \topskip in table of contents.  Report from Werner.

2022-09-14  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line): initialize
	'items_count' in @itemize or @enumerate to be more similar to
	XS parser, and cleaner.

	* tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command):
	avoid a useless block, remove useless comments.

2022-09-14  Patrice Dumas  <pertusus@free.fr>

	Rename empty_* types, removing empty and adding if needed

	* tp/Texinfo/ParserNonXS.pm, tp/Texinfo/XS/misc.c,
	tp/Texinfo/XS/parsetexi/close.c,
	tp/Texinfo/XS/parsetexi/element_types.txt,
	tp/Texinfo/XS/parsetexi/indices.c,
	tp/Texinfo/XS/parsetexi/parser.c,
	tp/Texinfo/XS/parsetexi/separator.c,
	tp/Texinfo/Common.pm, tp/Texinfo/Convert/DocBook.pm,
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/LaTeX.pm,
	tp/Texinfo/Convert/NodeNameNormalization.pm,
	tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/Convert/Text.pm,
	tp/Texinfo/Convert/TextContent.pm:
	rename empty_line_after_command as ignorable_spaces_after_command,
	empty_spaces_before_paragraph as spaces_before_paragraph and
	empty_spaces_after_close_brace as spaces_after_close_brace.

2022-09-14  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm: more consistent export ok.  Do not
	export print_tree.  Rename print_tree() as debug_print_tree().
	Rename add_preamble_before_content as _add_preamble_before_content.
	Remove _collect_references, unused and doing something strange.

	* tp/Texinfo/Common.pm (texinfo_special_joint_transformation),
	tp/texi2any.pl: rename html_joint_transformation as
	texinfo_special_joint_transformation.

	* tp/Texinfo/Convert/Text.pm (text_heading),
	tp/Texinfo/Convert/Plaintext.pm: rename Texinfo::Convert::Text heading
	as text_heading.

	* tp/Texinfo/Convert/Text.pm: rename ascii_accents as _ascii_accents.

	* tp/Texinfo/Convert/Utils.pm (add_heading_number), tp/ext/epub3.pm,
	tp/init/chm.pm, tp/Texinfo/Convert/Text.pm: rename
	Texinfo::Convert::Utils numbered_heading as add_heading_number.  Do
	not chomp text in add_heading_number().

	* tp/Texinfo/ParserNonXS.pm: remove _print_tree(), unused.

2022-09-14  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (output_files_open_out): do not set
	explicitly the :utf8 layer with binmode  as it is documented that
	binmode puts :utf8 on top of :encoding.  Also do not set the
	:bytes layer, it is documented to be incorrect with :encoding.

	* tp/Texinfo/Common.pm, configure.ac: require perl above 5.8.1
	to have binmode documented as putting :utf8 on top of :encoding.

2022-09-14  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (locate_include_file): avoid a call to
	get_conf.  Reindent, change variable names.

2022-09-14  Gavin Smith  <gavinsmith0123@gmail.com>

	No italic correction for code @var

	* doc/texinfo.tex (\var) <@set txicodevaristt>:
	Call \smartslanted to avoid italic correction in fixed width font
	context.  Report from Vincent Lefèvre.

2022-09-13  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (encode_file_name),
	tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/Utils.pm,
	tp/Texinfo/ParserNonXS.pm, tp/texi2any.pl: remove encode_file_name()
	$customization_information argument, customization should be taken
	into account in caller.

	* tp/Texinfo/Common.pm (valid_customization_option),
	tp/Texinfo/Config.pm, tp/Texinfo/Convert/Converter.pm,
	tp/Texinfo/Convert/HTML.pm: rename valid_option() as
	valid_customization_option().

	* tp/Texinfo/Convert/NodeNameNormalization.pm (convert_to_normalized),
	tp/Texinfo/Convert/HTML.pm, tp/init/highlight_syntax.pm: rename
	convert() as convert_to_normalized().

	* tp/Texinfo/Common.pm, tp/texi2any.pl: inline warn_unknown_split() in
	main program.

	* tp/Texinfo/Common.pm, tp/Texinfo/ParserNonXS.pm: remove N__ it is
	not used anywhere.

	* tp/Texinfo/Common.pm: remove unused %customization_variable_classes.

2022-09-13  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): do not modify
	the tree when preparing a modified multitable prototype line.

	* tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/IXINSXML.pm, tp/Texinfo/Convert/LaTeX.pm,
	tp/Texinfo/Convert/PlainTexinfo.pm, tp/Texinfo/Convert/Plaintext.pm,
	tp/Texinfo/Convert/TexinfoSXML.pm, tp/Texinfo/Convert/TexinfoXML.pm:
	Remove 'OUTFILE' and 'SUBDIR' from converter %defaults if undef
	like the default.

	* tp/Texinfo/Convert/TexinfoMarkup.pm
	(_protect_in_spaces_attribute_text): rename _protect_in_spaces as
	_protect_in_spaces_attribute_text.

2022-09-12  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoMarkup.pm (txi_markup_convert_text),
	tp/Texinfo/Convert/TexinfoSXML.pm, tp/Texinfo/Convert/TexinfoXML.pm:
	rename txi_markup_text as txi_markup_convert_text.

	* tp/Texinfo/Convert/TexinfoMarkup.pm (txi_markup_header),
	tp/Texinfo/Convert/TexinfoSXML.pm, tp/Texinfo/Convert/TexinfoXML.pm:
	remove the txi_markup_header() arguments.

2022-09-12  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoMarkup.pm,
	tp/Texinfo/Convert/TexinfoSXML.pm, tp/Texinfo/Convert/TexinfoXML.pm:
	use txi_markup as prefix for the functions defined in modules
	subclassing Texinfo::Convert::TexinfoMarkup.

	* tp/Texinfo/Convert/TexinfoMarkup.pm,
	tp/Texinfo/Convert/TexinfoXML.pm (%special_xml_attributes,
	_xml_attributes): do not use xml: prefix for attribute
	names in Texinfo::Convert::TexinfoMarkup, set them in
	Texinfo::Convert::TexinfoXML.

	* tp/Texinfo/Convert/TexinfoMarkup.pm (in_monospace),
	tp/Texinfo/Convert/TexinfoSXML.pm (txi_markup_text),
	tp/Texinfo/Convert/TexinfoXML.pm (txi_markup_text): add in_monospace()
	to have this information in modules subclassing
	Texinfo::Convert::TexinfoMarkup.

2022-09-12  Patrice Dumas  <pertusus@free.fr>

	Separate generic Texinfo Markup from XML formatting

	* tp/Texinfo/Convert/TexinfoMarkup.pm,
	tp/Texinfo/Convert/TexinfoSXML.pm,
	tp/Texinfo/Convert/TexinfoXML.pm, util/txixml2texi.pl,
	doc/tp_api/Makefile.am (tp_api_dependencies),
	po/POTFILES.in, tp/Makefile.am (dist_converters_DATA):
	split TexinfoXML.pm in two, the generic Markup to
	Texinfo/Convert/TexinfoMarkup.pm, the specific XML formatting
	remaining in Texinfo/Convert/TexinfoXML.pm.

	* util/txixml2texi.pl: change in spacing.

2022-09-12  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/IXINSXML.pm (converter_initialize):
	reset 'converted_format' to be 'texinfosxml', as when called
	from the main program it is (rightly) set to 'ixinsxml'.

	* tp/Texinfo/Convert/IXINSXML.pm, tp/Texinfo/Convert/IXIN.pm,
	tp/texi2any.pl: add/update comments.

2022-09-12  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoSXML.pm (_sxml_attributes): rename
	sxml_attributes as _sxml_attributes, it is an internal function.

2022-09-12  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoXML.pm (format_header): revert
	previous change, the TexinfoML is not a typo, the 'X' of XML is
	replaced by 'Texinfo' on purpose to obtain TexinfoML.

2022-09-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%default_converter_customization),
	tp/Texinfo/Convert/TexinfoXML.pm (%defaults),
	tp/Texinfo/Convert/TexinfoSXML.pm (%defaults),
	tp/Texinfo/Convert/IXINSXML.pm (%defaults):
	set 'TEXINFO_DTD_VERSION' in tp/Texinfo/Common.pm.

	* tp/Texinfo/Convert/TexinfoXML.pm (format_header): correct
	typo in DOCTYPE.

2022-09-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/parsetexi/parser.c (is_end_current_command):
	remove spaces after @end argument, as it is not used anywhere
	anymore.

2022-09-11  Patrice Dumas  <pertusus@free.fr>

	Put non expanded @value flag name in extra flag

	* tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line),
	tp/Texinfo/XS/parsetexi/api.c (element_to_perl_hash),
	tp/Texinfo/XS/parsetexi/parser.c (merge_text)
	(process_remaining_on_line), tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm,
	tp/Texinfo/Convert/Texinfo.pm: use an extra flag for non
	expandeed @value flag name.

2022-09-11  Patrice Dumas  <pertusus@free.fr>

	Prepend internal_ to internal text containers names used only for parsing

	* tp/Texinfo/ParserNonXS.pm, tp/Texinfo/XS/misc.c,
	tp/Texinfo/XS/parsetexi/close.c,
	tp/Texinfo/XS/parsetexi/element_types.txt,
	tp/Texinfo/XS/parsetexi/indices.c, tp/Texinfo/XS/parsetexi/menus.c,
	tp/Texinfo/XS/parsetexi/parser.c, tp/Texinfo/XS/parsetexi/separator.c:
	prepend internal_ to type names of text containers used in the parsing
	only that do not show up in the tree.  Rename empty_spaces_before_argument
	as internal_spaces_before_argument.

2022-09-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm(_check_empty_expansion),
	tp/Texinfo/XS/parsetexi/parser.c (check_space_element):
	do not check especially space container types, they are
	unlikely to happen where expansion is checked and should only
	contain spaces anyway.

	* tp/Texinfo/ParserNonXS.pm (_abort_empty_line),
	tp/Texinfo/XS/misc.c (xs_abort_empty_line),
	tp/Texinfo/XS/parsetexi/parser.c (abort_empty_line):
	setup associated element where needed and simplify.

2022-09-10  Patrice Dumas  <pertusus@free.fr>

	Use array references on pairs [name, value] for attributes

	* tp/Texinfo/Convert/TexinfoXML.pm (_xml_attributes, _convert),
	tp/Texinfo/Convert/TexinfoSXML.pm (sxml_attributes):
	use array references on pairs [name, value] for attributes.

2022-09-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoXML.pm (_trailing_spaces_arg)
	(_leading_spaces_arg): simplify _trailing_spaces_arg,
	remove _collect_leading_trailing_spaces_arg.  Rename
	_leading_spaces_before_argument as _leading_spaces_arg.

2022-09-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line),
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command):
	use extra "spaces_after_argument" instead of type spaces_at_end
	for an equivalent command replacing a @set.

2022-09-10  Patrice Dumas  <pertusus@free.fr>

	Remove empty_spaces_after_command. Remove empty_spaces_before_argument
	from converters

	* tp/Texinfo/ParserNonXS.pm (_merge_text, _abort_empty_line),
	tp/Texinfo/XS/misc.c (xs_abort_empty_line, xs_merge_text),
	tp/Texinfo/XS/parsetexi/parser.c (merge_text, abort_empty_line),
	tp/Texinfo/XS/parsetexi/def.c,
	tp/Texinfo/XS/parsetexi/element_types.txt,
	tp/Texinfo/Transformations.pm (_new_node),
	tp/Texinfo/Common.pm (trim_spaces_comment_from_content)
	(move_index_entries_after_items),
	tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/LaTeX.pm,
	tp/Texinfo/Convert/NodeNameNormalization.pm,
	tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/Convert/TexinfoXML.pm,
	tp/Texinfo/Convert/Text.pm, tp/Texinfo/Convert/TextContent.pm:
	the container empty_spaces_after_command does not appear in the
	tree anymore, remove it and remove the now unreachable code
	that set it up.  Remove empty_spaces_before_argument from
	converters as it is internal to parsers.

	* tp/Texinfo/Convert/DocBook.pm (_convert): do not test for
	empty_line_after_command in a place where it can not happen.

	* tp/Texinfo/XS/misc.c b/tp/Texinfo/XS/misc.c (xs_abort_empty_line):
	use correct extra spaces_associated_command key.

2022-09-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_end_line),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line):
	remove reparenting of empty_line_after_command space container
	that cannot happen anymore as it is not left when at the end
	of the line.

2022-09-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_end_line),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block):
	remove code never used that is not relevant since there is no
	empty_line_after_command space container left in block command
	argument.

2022-09-10  Patrice Dumas  <pertusus@free.fr>

	Only use a specific space type container for skipspace commands

	* tp/Texinfo/Common.pm (move_index_entries_after_items),
	tp/Texinfo/ParserNonXS.pm (_merge_text, _abort_empty_line, _end_line)
	(_start_empty_line_after_command),
	tp/Texinfo/XS/misc.c (xs_abort_empty_line, xs_merge_text),
	tp/Texinfo/XS/parsetexi/element_types.txt,
	tp/Texinfo/XS/parsetexi/end_line.c (end_line),
	tp/Texinfo/XS/parsetexi/handle_commands.c,
	tp/Texinfo/XS/parsetexi/parser.c (merge_text, abort_empty_line)
	(start_empty_line_after_command):
	use internal_empty_line_after_command for the spaces containers
	that are to become extra space values, and empty_line_after_command
	for other spaces, in practice for skipspace commands.  Never
	use set an associated_missing_cmdname for empty_line_after_command,
	do not set associated_missing_cmdname either.  Set to 0/undef
	the third argument of start_empty_line_after_command() if called
	after a skipspace command.

2022-09-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_parse_texi, _process_remaining_on_line):
	add _process_remaining_on_line to match better with the XS parser.

2022-09-10  Patrice Dumas  <pertusus@free.fr>

	Remove last_raw_newline

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/element_types.txt,
	tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line)
	tp/Texinfo/Convert/Plaintext.pm (_convert): do not set
	last_raw_newline type.  It could probably have been removed earlier,
	when rawpreformatted was introduced.

2022-09-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoXML.pm (_convert): no empty_line_after_command
	nor last_raw_newline in raw format command/rawpreformatted anymore.

2022-09-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line):
	handle separately 'raw' verbatim, ignore, (r)macro commands
	and ignored block conditional.

2022-09-10  Patrice Dumas  <pertusus@free.fr>

	Handle @end macro, verbatim and ignore line like other block commands

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line):
	do not add explicitly an end command after a macro, verbatim or
	ignore @end, but let it be done by the code handling all the @end
	commands.

2022-09-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line):
	collect spaces at the beginning of the line to put in the last
	raw element, not at the end of the line.

2022-09-09  Patrice Dumas  <pertusus@free.fr>

	Parse ignored raw format line like other block commands

	* tp/Texinfo/ParserNonXS.pm (_end_line, _parse_texi),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block),
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command),
	tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line, parse_texi):
	do not process ignored format content when the command is
	found, instead do it after the line has been parsed.

2022-09-09  Patrice Dumas  <pertusus@free.fr>

	Handle macro, verbatim and ignore line like other block commands

	* tp/Texinfo/ParserNonXS.pm (_end_line, _parse_texi),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block),
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command),
	tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line):
	do not make any difference among brace commands for line parsing.
	Never start a preformatted after a 'raw' macro, verbatim and ignore
	command line.

2022-09-09  Patrice Dumas  <pertusus@free.fr>

	Handle indent and noindent like other commands for following spaces

	* tp/Texinfo/ParserNonXS.pm (_abort_empty_line),
	tp/Texinfo/XS/parsetexi/parser.c (abort_empty_line): do not treat
	especially @indent and @noindent, add following spaces in extra
	spaces key.

	* tp/Texinfo/ParserNonXS.pm (_start_empty_line_after_command),
	tp/Texinfo/XS/parsetexi/handle_commands.c
	(start_empty_line_after_command),
	tp/Texinfo/XS/parsetexi/parser.c (start_empty_line_after_command):
	add extra associated_missing_cmdname field for spaces after commands
	with a command that was removed because of an error.  Pass command
	name to start_empty_line_after_command.

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_other_command):
	remove a if redundant with a previous condition.

2022-09-08  Patrice Dumas  <pertusus@free.fr>

	After @end macro, verbatim and ignore like other block commands

	* tp/Texinfo/ParserNonXS.pm (_end_line, _parse_texi),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line),
	tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line):
	do not start an empty line after @end macro, verbatim or
	ignore, set the current element to the line_arg and push
	ct_line on context stack.  That way, everything after the
	@end and its argument is handled similarly than other block
	commands.
	do not warn for superfluous argument after @end macro, verbatim
	and ignore, it is done when the line is processed.

	* tp/Texinfo/XS/parsetexi/parser.c (parse_texi): call end_line()
	when there is no more content, even if no newline was seen.  Allows
	to get the same output as perl Parser.

2022-09-07  Patrice Dumas  <pertusus@free.fr>

	Add extra text_arg to macro, verbatim and ignore @-commands @end

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line):
	add command name in 'text_arg' extra @end command.

2022-09-07  Patrice Dumas  <pertusus@free.fr>

	Add @end element for macro, verbatim and ignore @-commands

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/parser.c (is_end_current_command)
	(process_remaining_on_line), tp/Texinfo/XS/parsetexi/handle_commands.c
	(handle_block_command):
	collect spaces after @end for 'raw' commands, verbatim,
	ignore, or (r)macro and add an element for the @end command.
	* tp/Texinfo/Convert/Texinfo.pm (convert_to_texinfo),
	tp/Texinfo/XS/parsetexi/convert.c (convert_to_texinfo_internal):
	do not add an @end command for 'raw' block commands.

2022-09-07  Patrice Dumas  <pertusus@free.fr>

	Remove end_command extra key

	* tp/Texinfo/ParserNonXS.pm (_end_line),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line),
	tp/Texinfo/Structuring.pm (new_block_command): do not set
	end_command extra key, the end command, if existing should
	always be the last content of the block command.

2022-09-07  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_close_command_cleanup),
	tp/Texinfo/XS/parsetexi/close.c (close_command_cleanup):
	detect @end as being the last content to reparent from
	before_item to parent command, instead of using extra key
	end_command.

2022-09-07  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoXML.pm (_convert): instead of
	extra key end_command, determine the end command of a block
	command as the last in contents.

2022-09-07  Patrice Dumas  <pertusus@free.fr>

	Remove command_argument extra key

	* tp/Texinfo/ParserNonXS.pm (_end_line), 
	tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line),
	tp/Texinfo/Structuring.pm (new_block_command): remove
	'command_argument' extra @end command element key, it is
	redundant.

2022-09-07  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (new_block_command): do a tree with
	spaces_after/before_argument instead of text space types.

2022-09-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\cartouche): Use \vtop instead of \vbox
	to get better spacing when cartouche appears at the top
	of a page.  Report from Werner.

2022-09-05  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_abort_empty_line, _parse_texi),
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_other_command),
	tp/Texinfo/XS/parsetexi/parser.c (abort_empty_line): do not handle
	especially @indent and @noindent, except that they are
	are never directly associated with following space.

2022-09-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Heading Format):
	Revise.  Mention that chapter pages might be different.

2022-09-04  Patrice Dumas  <pertusus@free.fr>

	Rename spaces type extra command as spaces_associated_command

	* tp/Texinfo/ParserNonXS.pm, tp/Texinfo/XS/parsetexi/parser.c:
	use 'spaces_associated_command' as 'extra' key for spaces
	of 'empty_spaces_before_argument' and 'empty_line_after_command'
	types.

2022-09-04  Patrice Dumas  <pertusus@free.fr>

	Abort empty line for empty @def* command line

	* tp/Texinfo/ParserNonXS.pm (_parse_def, _end_line),
	tp/Texinfo/XS/parsetexi/def.c (parse_def),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line): call
	abort_empty_line before parsing definition command line to
	collect space after command in case there are no arguments at all.

	* tp/Texinfo/Convert/TexinfoXML.pm (_convert): remove end of line
	from @def* leading spaces.

2022-09-04  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_end_line): no empty content in
	'bracketed_multitable_prototype'.

	* tp/Texinfo/ParserNonXS.pm: make clear that empty_spaces_before_argument
	is a transient internal type that should be replaced by
	extra spaces_before_argument.

2022-09-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Generating EPUB): Edit.

2022-09-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@verbatim): Use @example environment for
	examples rather than @exdent with @t.  Put actual tab characters
	in the output for the example as was shown.

2022-09-04  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Advanced Indexing): index entries should not
	be interrupted by index brace commands.

2022-09-04  Patrice Dumas  <pertusus@free.fr>

	Space before brace special index command is a regular space if
	followed by text

	* tp/Texinfo/ParserNonXS.pm
	(_set_non_ignored_space_in_index_before_command, _end_line)
	(_parse_texi), tp/Texinfo/XS/parsetexi/element_types.txt,
	tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line),
	tp/Texinfo/XS/parsetexi/indices.c
	(set_non_ignored_space_in_index_before_command),
	tp/Texinfo/XS/parsetexi/parser.c (check_space_element)
	(process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c
	(check_empty_expansion): use an internal temporary space
	type "spaces_before_brace_in_index" before index brace @-commands.
	After index command or subentry is done, call
	set_non_ignored_space_in_index_before_command to go through the
	index command or subentry contents and turn internal spaces
	before index brace @-commands (@sortas...) to
	regular text if followed by text after the brace command in
	set_non_ignored_space_in_index_before_command, or to
	"spaces_at_end" otherwise.
	Split check_space_element() out of check_empty_expansion().
	Do not process spaces before index brace @-commands is they are
	not in an index command nor in a @subentry.

2022-09-04  Gavin Smith  <gavinsmith0123@gmail.com>

	ttsl @var on def line for @set txicodevaristt

	* doc/texinfo.tex (\defargs) <@set txicodevartt>:
	Reinstate code using a ttsl font for @var.  This gives
	consistency for @var between @deffn and @deftypefn.  Report
	from Vincent Lefèvre <vincent@vinc17.net>.

2022-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	\GNUTexinfonopagebreakheading

	* tp/Texinfo/Convert/LaTeX.pm (%section_map): Only use
	\GNUTexinfonopagebreakheading for @chapheading and @majorheading.
	This macro can cause broken vertical spacing, evidently due to
	the grouping characters used, and it is not necessary for these
	commands.
	(_latex_header): Output \GNUTexinfonopagebreakheading definition
	on demand with $self->{'extra_definitions'} hash.  Reword a
	comment.

2022-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Structuring Command Types):
	Correct number of groups.

2022-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Structuring Command Types):
	Minor edits for grammar and concision.

2022-09-03  Patrice Dumas  <pertusus@free.fr>

	Use spaces_at_end for spaces before @-command in index entry

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line):
	use spaces_at_end type for space before @sortas, @subentry and
	similar @-command on index @-command lines.

2022-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\headitem): Do not call \checkenv as
	apparently this causes a row of the table to be started, and
	then \crcr creates extra vertical space.  Report from Werner.

2022-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Shorter LaTeX preamble

	* tp/Texinfo/Convert/LaTeX.pm (_latex_header):
	Do not redefine 'plain' page style.  Condense lines in some
	definitions.  Fix a spelling error.
	($titleps_preamble): Remove unused.

2022-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Shorter LaTeX preamble

	* tp/Texinfo/Convert/LaTeX.pm
	(_begin_document, %front_main_matter_definitions): Output commands 
	\mainmatter, \frontmatter directly using hash, rather than via
	\GNUTexinfomainmatter, \GNUTexinfofrontmatter macros.  Likewise
	for alternate 'report' definitions.
	(_latex_header): Update.

2022-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/LaTeX.pm (_latex_header): Fix incorrect grammar.

2022-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Shorter LaTeX preamble

	* tp/Texinfo/Convert/LaTeX.pm (_latex_header): Only output
	\newpagestyle for 'single' and 'double' on demand.
	(_set_headings): Record use of page style in $self->{'page_styles'}
	hash.

2022-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Shorter LaTeX preamble

	* tp/Texinfo/Convert/LaTeX.pm (_set_headings): Call \pagestyle
	directly, rather than via macros defined in preamble.

2022-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Keep blank lines in @example

	* tp/Texinfo/Convert/LaTeX.pm (_latex_header) <GNUTexinfopreformatted>:
	Use our own definition of active newline to add \null so that empty
	lines are kept in @examples.
	(_open_preformatted), (convert) <environment commands>:
	Supply % to comment out empty line after closing brace.  Add comment
	to note that @flushleft and @flushright are anomalous.

2022-09-02  Patrice Dumas  <pertusus@free.fr>

	* tp/t/converters_tests.t: warn file_* tests with output as text returned
	from the converter.  It is most probably wrong because the empty
	directories and files are compared instead of the test returned.
	Avoid files being overwritten with -o and warn.

2022-09-01  Patrice Dumas  <pertusus@free.fr>

	Replace empty_line_after_command by block command extra spaces_after_argument

	* tp/Texinfo/ParserNonXS.pm (_isolate_last_space),
	tp/Texinfo/XS/parsetexi/parser.c (isolate_last_space):
	put last space in extra spaces_after_argument for block
	command lines, not only line commands.
	* tp/Texinfo/Convert/TexinfoXML.pm (_convert_argument_and_end_line):
	return separately the end space and the end line to be able to
	use the end space for block line arg without adding an argument
	element.  Reindent.

	* tp/Texinfo/Convert/TextContent.pm (_convert): add spaces after
	block command arguments if the arguments line is not empty.

2022-09-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (@headings double): Put document title on all
	even-numbered pages, even chapter pages.  From Vincent Lefevre.

2022-08-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_end_line),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block):
	insert 'command_as_argument_inserted' in the proper
	'block_line_arg' type when default @bullet formatting command
	is added on an @itemize line.

2022-08-30  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (@code{@@caption @@shortcaption}): no multiple
	paragraph in @shortcaption, and document error in LaTeX with
	multi-paragraph @caption when there is no @shortcaption.

2022-08-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Plaintext.pm (_convert),
	doc/texinfo.texi (Conventions, in @ignore block):
	keep form feeds in empty_spaces_after_close_brace only among
	ignored spaces.

2022-08-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoXML.pm (_end_line_spaces): protect
	form feeds in spaces_after_argument.

2022-08-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line):
	remove a check on cmd != 0 and cmd set as cmd set implies != 0.

2022-08-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line):
	Add a comment.

2022-08-29  Patrice Dumas  <pertusus@free.fr>

	Hanle brace @-command before opening brace with another command

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line):
	close brace @-command if after the command name but before the
	brace, and anther @-command is seen before handling unknown
	@-command.

2022-08-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\outerhsize, \outervsize, \topandbottommargin):
	Remove unused.  From Werner.

2022-08-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex [e-TeX]: Set \lastlinefit to 500.

2022-08-28  Patrice Dumas  <pertusus@free.fr>

	Handle indicatric command on table line before unknown command

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line):
	associate indicatric command to the @*table before handling
	unknown command.

2022-08-28  Patrice Dumas  <pertusus@free.fr>

	Expand @value before processing the remaining of the line

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line):
	expand @value that is actually expanded earlier, where macros are
	expanded as it may modify the line.

2022-08-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@group): Revise.  Remove or comment out
	extraneous text.  Be clear that it cannot be used in filled
	contexts as this actually produces an error with texinfo.tex.
	* NEWS: EPUB3 -> EPUB 3.

2022-08-28  Gavin Smith  <gavinsmith0123@gmail.com>

	LaTeX list environment for indentation

	* tp/Texinfo/Convert/LaTeX.pm (_latex_header): Define
	environment using LaTeX list environment.
	(%LaTeX_environment_commands): Use this for @example, @lisp,
	@display to indent and control vertical spacing, including
	in nested environments.
	(_open_preformatted): Do not indent with \leftskip.
	(_convert) <@exdent>: No special implementation for preformatted
	context.
	<@group>: Remove implementation as it does not work any more.

2022-08-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_email_command): add also
	\s to the spaces regexp class, could be needed on solaris.

2022-08-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_convert): no output for Unhandled
	commands (but still a warning).

2022-08-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/parser.c(process_remaining_on_line):
	fix use of a pointer instead of value.

2022-08-27  Patrice Dumas  <pertusus@free.fr>

	Only ignore one end of line after a brace command before a brace

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/parser.c(process_remaining_on_line): only
	ignore one newline after a brace command before a brace.  Report
	from Gavin.

2022-08-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_parse_texi): remove comment on hack
	for difference with XS parser.  Add/modify debug messages.

2022-08-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line):
	really add new text after brace command.

2022-08-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/parser.c(process_remaining_on_line): avoid
	redundant code for brace commands and accent commands when not
	followed immediately by an opening brace.

2022-08-27  Patrice Dumas  <pertusus@free.fr>

	No special warning for accent command needing braces

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/parser.c(process_remaining_on_line): use the
	same error message for accent command requiring braces as for other
	brace commands.

2022-08-27  Patrice Dumas  <pertusus@free.fr>

	Handle different accent commands and brace commands more similarly

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/parser.c(process_remaining_on_line): handle
	accent commands more similarily to other brace commands, by treating
	them the same when on @itemize line and ignoring spaces similarly.
	Also treat accent commands with letters or one non letter character
	more similarly, since TeX treat them the same too.

2022-08-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_parse_texi): set $command based on
	$at_command and $single_letter_command earlier, apply alias earlier,
	to avoid code duplication and be more similar to the XS parser.

2022-08-27  Patrice Dumas  <pertusus@free.fr>

	Add spaces information for @-commands with braces followed by spaces

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): add spaces in extra
	for @-commands with braces followed by spaces.

	* tp/Texinfo/ParserNonXS.pm (_parse_texi): handle unknown @-commands
	earlier.

2022-08-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Text.pm (_convert): handle displaymath as a block
	command

2022-08-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\LaTeX): Smaller font for letter A in footnotes
	and indices.

2022-08-27  Gavin Smith  <gavinsmith0123@gmail.com>

	@set txicodevaristt by default, for now

	* doc/texinfo.tex: @set txicodevaristt by default
	* NEWS, doc/texinfo.texi (@var): update
	* README-hacking, TODO: note to turn this off after next release

2022-08-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: font change for @deftype*

2022-08-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@var): Add a footnote discussing fonts in
	TeX output and documenting @set txicodevaristt.

2022-08-26  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Conventions): separate ignore block on form feeds

2022-08-26  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (%ignorable_space_types): remove
	'empty_spaces_before_paragraph'.
	(_convert): replace form feeds by \par{} in empty_spaces_after_close_brace
	only among ignored spaces.

	* tp/Texinfo/Convert/HTML.pm (_convert_email_command): only space
	mail argument is considered empty.

2022-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: @set txicodevaristt.

2022-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (No Space After Definition Name),
	* NEWS: Document @set txidefnamenospace.

2022-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Conventions): Move statement about form
	feeds ending paragraph out of @ignore block.

2022-08-25  Patrice Dumas  <pertusus@free.fr>

	Replace form feeds in empty lines by \par{}

	* tp/Texinfo/Convert/LaTeX.pm (_convert): replace form feeds in
	empty_line type by \par{}.

	* doc/texinfo.texi (Conventions): form feeds end a paragraph in all
	the output formats.  Add effect in LaTeX.

2022-08-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_convert): remove unneeded \noindent
	in tabularx cell.

2022-08-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm: replace form feeds in ignorable
	spaces by \par{}.

2022-08-24  Patrice Dumas  <pertusus@free.fr>

	* tp/Makefile.am (dist_init_DATA): add init/documentation_examples.pm.

2022-08-24  Patrice Dumas  <pertusus@free.fr>

	When creating a node protect for all the contexts

	* tp/Texinfo/Transformations.pm (_new_node): protect in node tree
	for all the contexts, as the node name should be the same in the
	different contexts, even if some protections are not needed for the
	parsing.

2022-08-24  Patrice Dumas  <pertusus@free.fr>

	Add IGNORE_REF_TO_TOP_NODE_UP to ignore (dir), set for EPUB

	* doc/texinfo.texi(HTML Customization Variables), ../NEWS
	tp/Texinfo/Common.pm (@variable_string_settables),
	tp/Texinfo/Convert/HTML.pm (_external_node_href), tp/ext/epub3.pm:
	Add IGNORE_REF_TO_TOP_NODE_UP to ignore references to TOP_NODE_UP,
	in general (dir) if set.  For HTML.  Set for EPUB.

	* tp/Texinfo/Convert/HTML.pm
	(_default_panel_button_dynamic_direction): only output the
	node name and no <a> element if the href is an empty string.

2022-08-24  Patrice Dumas  <pertusus@free.fr>

	Pass source element command information to directions formatting

	* tp/Texinfo/Convert/HTML.pm (from_element_direction)
	(_default_panel_button_dynamic_direction*, _default_format_button)
	(_convert_tree_unit_type, _default_format_element_footer, _get_links):
	pass the command associated with the element source of the
	direction, to be able to format error messages with a line in the
	document, for now for CHECK_HTMLXREF.

	(_external_node_href): warn only once for htmlxref.cnf missing
	even if the line is known.

2022-08-23  Gavin Smith  <gavinsmith0123@gmail.com>

	 * doc/texinfo.texi: Grammar and style fixes.
	invokation -> invocation.  Associated to -> associated with.
	Provide @ after acronyms to end sentences.
	(Info Format FAQ): Note that "*note" may also be hidden for
	command-line info.

2022-08-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Format with texi2dvi or texi2pdf):
	Remove commentary on the difference between pdftex and pdfetex.
	(According to pdfTeX documentation, they have been synonymous
	since pdfTeX 1.40, released 2007).

2022-08-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Structuring Command Types): Grammar
	and style fixes.  Try to avoid confusion between type of DocBook
	element in abstract and the actual element that is output.
	Clarify that e.g. @sections would not contain following @chapters
	even if they were the last section of a chapter.

2022-08-23  Patrice Dumas  <pertusus@free.fr>

	Fix conditions on @kpdinputstyle example

	* tp/Texinfo/ParserNonXS.pm (_kbd_formatted_as_code),
	tp/Texinfo/XS/parsetexi/parser.c (kbd_formatted_as_code),
	tp/Texinfo/Convert/LaTeX.pm (_kbd_code_style): fix formatting
	of kbd in example, it does not depend on being in @code or not,
	only of being in @example or not and the condition is kbd as
	code outside of @example, not inside.

2022-08-23  Patrice Dumas  <pertusus@free.fr>

	In @r do not consider @kbd to be in code

	* tp/Texinfo/ParserNonXS.pm (_kbd_formatted_as_code),
	tp/Texinfo/XS/parsetexi/parser.c (kbd_formatted_as_code):
	if in a style_no_code brace commands, consider that kbd is not in
	code.  Use the same code in ParserNonXS as in the XS parser.

2022-08-23  Patrice Dumas  <pertusus@free.fr>

	Classify style brace commands as code/no_code/other directly

	* tp/Texinfo/Common.pm (%brace_commands), tp/Texinfo/ParserNonXS.pm
	(%full_text_commands, _in_code, _parse_line_command_args),
	tp/Texinfo/XS/parsetexi/api.c (element_to_perl_hash),
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h, tp/Texinfo/XS/parsetexi/end_line.c
	(parse_line_command_args), tp/Texinfo/XS/parsetexi/parser.c
	(kbd_formatted_as_code, check_valid_nesting): classify style brace
	commands as style_code, style_other and style_no_code directly in
	%brace_commands in perl and as command data in C.

2022-08-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\var): If 'txicodevaristt' is @set, then
	use \ttsl font if in monospaced font.

2022-08-22  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%regular_font_style_commands): only @r
	as regular_font_style_commands stopping code context.

2022-08-22  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm, tp/Texinfo/XS/parsetexi/command_data.txt:
	reorganize brace commands classifications.  Put hyphenation in
	brace commands with 1 argument.

2022-08-21  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Invoking @command{texi2any})
	(HTML Customization Variables, Invoking @command{pod2texi})
	(HTML Translation, @command{texi2any} in Emacs):
	misc edits.

	(@command{texi2any} Environment Variables): already explain
	that specific output formats can also be set with
	TEXINFO_OUTPUT_FORMAT.

	(Other Customization Variables): update information on tree
	transformations, adding relate_index_entries_to_table_entries.

	(Creating and Installing Info Files): more links on Info
	creation and on the Info format specification.

	(Info Format FAQ): explicit that in the question on the standalone
	Info reader, it is compared with the Emacs reader.  Explain the
	differences between the readers.  Precise that another questions
	is also on the Emacs Info reader.

2022-08-21  Patrice Dumas  <pertusus@free.fr>

	No separate node for PDF output from DVI output

	* doc/texinfo.texi
	(Format with @command{texi2dvi} or @command{texi2pdf}):
	rename 'Format with @command{texi2dvi}' as
	'Format with @command{texi2dvi} or @command{texi2pdf}'
	as it is what the node is about.
	remove the 'PDF Output' node, add it as an @anchor{} in
	'Format with @command{texi2dvi} or @command{texi2pdf}'
	instead, since all the relevant information in 'PDF Output'
	is already in 'Format with @command{texi2dvi}' and there is
	additional information.
	'Format with @command{texi2dvi}' can still be used when
	referring only to texi2dvi.
	Fix places were texi2dvi was used instead of texi2pdf.

	(Format with @command{tex}/@command{texindex}): add a sentence
	information on doing pdf formerly in 'PDF Output'.


2022-08-20  Patrice Dumas  <pertusus@free.fr>

	Update DTD to have headings in most environments

	* util/texinfo.dtd: put %heading.cmds in %block.
	Remove %global.option.cmds, put index definition commands in
	%multiple.option.cmds, and @-command definitions commands
	such as alias in the newly added %define.cmds.  Move macro, rmacro
	and unmacro to %define.cmds.
	Rename %titlepage.cmds as %intitlepage.cmds.
	Add %block.cmds containing the block commands.
	Add %toplevelonly.content for @-commands appearing only in
	toplevel content, move listoffloats, copying and titlepage to
	%toplevelonly.content.

	* doc/texinfo.texi (The Body of the Document): remove the comment
	about @*heading needing to appear in main text, as it is not what
	is documented.
	(@code{@@unnumberedsec @@appendixsec @@heading}): remove @titlepage
	from context where @heading is pathological, as it should not be
	particularly problematic.
	(@code{@@listoffloats}): move @listoffloats outside of @display
	as @listoffloats should only appear in the main text.

2022-08-20  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix texinfo.tex for XeTeX

	* doc/texinfo.tex (\DeclareUnicodeCharacterNative):
	Do not override any active definitions for ASCII characters.
	Broken output for hyphen reported by Werner.

2022-08-20  Patrice Dumas  <pertusus@free.fr>

	Describe formatting of chapter structuring commands only once

	* doc/texinfo.texi (Structuring Command Types, @code{@@chapter})
	(@code{@@section}, @code{@@subsection}, @code{@@subsubsection}):
	describe the formatting of all the chapter structuring commands
	in 'Structuring Command Types' and try to be somewhat less precise.

	(@code{@@subsubsection}): fix section title.

2022-08-20  Patrice Dumas  <pertusus@free.fr>

	Document that input and output file names should only be ASCII

	* doc/texinfo.texi (Minimum): state that input and output
	file names should only contain ASCII characters.  In a footnote
	precise that texi2any can handle non ASCII filenames, but that
	it will be problematic for output formats.

2022-08-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\need):
	End with a \penalty0 so that \safewhatsit and \dobreak do
	not remove negative skip, leading to excessive space before
	section heading.  Report from Werner Lemberg.

2022-08-20  Gavin Smith  <gavinsmith0123@gmail.com>

	@U for ASCII chars again

	* doc/texinfo.tex (\DeclareUnicodeCharacterNative):
	Do not touch the catcodes of ASCII characters.
	(\unicodechardefs): Reinstate ASCII definitions.

2022-08-20  Patrice Dumas  <pertusus@free.fr>

	Recommend UTF-8 only as encoding

	* doc/texinfo.texi (@code{@@documentencoding}): describe non
	UTF-8 encodings as being mainly for older manuals.
	(@code{@@documentencoding}, Info Format Regular Nodes): describe
	that cross-references between Info files with different character
	encodings with non-ASCII characters in node names fail in
	the '@code{@@documentencoding}' node.  Remove uneeded information
	from 'Info Format Regular Nodes'.
	Do not recommend using 7bit ASCII for portability, UTF-8 should
	be portable.
	(@code{@@euro}): remove information on the 8bit encoding since
	they should not be used anymore.

	(Internationalization of Document Strings): remove @ from
	documentlanguage and documentencoding, these are not @-commands
	in this context.

	(Other Customization Variables): update the description of defaults
	in Info for *_QUOTE_SYMBOL.

2022-08-20  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix texinfo.tex with XeTeX

	* doc/texinfo.tex (\unicodechardefs): Comment out declarations of
	ASCII characters with \DeclareUnicodeCharacter.  Supply a space after
	\char argument to terminate numbers in case code is ever used again.

	Werner Lemberg reported texinfo.tex would break with XeTeX.

2022-08-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/util.c (text_buffer_iconv): Handle E2BIG error here.
	* info/scan.c (copy_converting, scan_reference_label): Update.

2022-08-20  Gavin Smith  <gavinsmith0123@gmail.com>

	Character conversion for info reference labels

	* info/scan.c (scan_reference_label): Convert reference label
	using iconv conversion.
	(init_conversion, close_conversion): Set iconv object to (iconv_t) -1
	after calling iconv_close so we know not to use it.

	Patrice reported that index entries would not be converted and
	not found with info --apropros.

2022-08-19  Gavin Smith  <gavinsmith0123@gmail.com>

	\vtop for @group

	* tp/Texinfo/Convert/LaTeX.pm (_convert) <@group>:
	Use \vtop for the output, even though it is not perfect.

2022-08-19  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_css_string_accent)
	(_simplify_text_for_comparison, _default_format_element_footer):
	use Unicode properties and character classes that match non
	ascii letters and spaces when in regex where this is what is relevant
	and not ascii text only.

2022-08-19  Patrice Dumas  <pertusus@free.fr>

	Use gnulib wcwidth in tp/Texinfo/XS/xspara.c

	* tp/Texinfo/XS/xspara.c: remove wcwidth implementation.

	* tp/Texinfo/XS/gnulib: update and add wcwidth.

2022-08-19  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Node Line Requirements): add in comment that
	spaces from @-commands are collapsed too.

	* doc/texinfo.texi (Node Line Requirements, Menu Parts): add
	a FIXME in comment to remove the constraint on extra space in
	Info as both the standalone and Emacs Info reader handle multiple
	spaces right now.

	* doc/texinfo.texi (HTML Xref Node Name Expansion): newlines in
	node names are correctly handled in all the output formats, remove
	the parenthesis stating that it is not the case.

	* doc/texinfo.texi (Info Format Menu): add a precision that in menu
	there is * instead of * (N|n)ote in cross-references.

2022-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	@need

	* doc/texinfo.tex (\need): Implement with vertical skips
	and penalties only, not with \vtop or \kern.  This has more
	reliable results when followed by a section title.  It also
	may work better with footnotes.  Reports from Werner Lemberg.

2022-08-18  Patrice Dumas  <pertusus@free.fr>

	Consider non ascii spaces to be characters for node name normalization

	* tp/Texinfo/Convert/NodeNameNormalization.pm (_unicode_to_protected)
	(_unicode_to_file_name, _unicode_to_transliterate):
	use /a to consider non ascii spaces as characters.  Use /s as regex
	modifier to catch special spaces considered as newlines.

	* tp/Texinfo/Convert/NodeNameNormalization.pm: remove /o regex
	modifiers.

2022-08-18  Patrice Dumas  <pertusus@free.fr>

	Multiple consecutive space transformed to one in node normalization

	* tp/Texinfo/Convert/NodeNameNormalization.pm (_unicode_to_protected)
	(_unicode_to_file_name): transform multiple spaces to one.

2022-08-18  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/xspara.c (xspara__add_next),
	tp/Texinfo/Convert/ParagraphNonXS.pm (_add_next): use
	Texinfo::Convert::Unicode::string_width to get the word width in
	perl.  Re-apply Gavin change in xspara.c to use wcwidth to determine
	the width of characters.

2022-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (@afivepaper): Adjust horizontal location so as
	to balance left and right margins.  Report from Werner Lemberg.

2022-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: reminder to rename ChangeLog after next release

2022-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/xspara.c (xspara__add_next):
	If character has wcwidth 0 (e.g. combining accents), count this
	as 1 to match Perl results.

2022-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/xspara.c (xspara__add_next):
	Use wcwidth on each character, rather than assuming they
	all have display width 1.  Faulty line breaking for DEL characters
	reported by Patrice.

2022-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/plaintext_tests.t (del_quote_linebreaking):
	New test to track line breaking with DEL-quoting.

2022-08-17  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (parse_node_manual): do not set text type
	if undef.

2022-08-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix LaTeX chapter page breaks

	* tp/Texinfo/Convert/LaTeX.pm (_latex_header)
	<\GNUTexinfonopagebreakheading>:
	Wrap redefinitions in a group; otherwise, \clearpage etc.
	would be disabled for the rest of the document, leading to
	bad page breaks and excess vertical whitespace near chapter
	headings.

2022-08-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/scan.c (scan_reference_target) <menu entry>:
	Canonicalize whitespace in node name to avoid anomaly where texi2any
	would not warn about menu entry even though it didn't work.
	From Patrice.

2022-08-17  Patrice Dumas  <pertusus@free.fr>

	Transform @* to spaces in node and menu lines in Info

	* tp/Texinfo/Convert/Plaintext.pm (new_formatter)
	(process_printindex, _convert): add 'no_added_eol' as
	formatter status to have @* transformed to space instead
	of new line in @node and menu lines.

2022-08-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Recommendations on markup on @def* lines

	* doc/texinfo.texi (Marking Definition Arguments):
	Do not make its own node, including in previous node
	"Def Cmd Conventions".  Integrate with discussion of
	&keywords.  Mention the possibility of using a @macro
	but do not include any examples.  Do not promise what
	@slanted nested in @code does.

2022-08-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: url -> URL throughout.

2022-08-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Cross Reference Commands): @ref is output
	like @pxref in Info, not @xref.
	(Four and Five Arguments, @majorheading @chapheading, @pxref)
	(@inforef): Grammar fixes (inc. similar as -> similar to).

2022-08-17  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type): replace <br>
	by $self->get_info('line_break_element').

2022-08-17  Patrice Dumas  <pertusus@free.fr>

	Improve handling of dotless i and dotless j

	* tp/Texinfo/Convert/Converter.pm (%xml_accent_entities)
	(%xml_accent_text_with_entities, xml_accent),
	tp/Texinfo/Convert/TexinfoXML.pm, tp/Texinfo/Convert/Unicode.pm
	(%unicode_accented_letters, %transliterate_map, unicode_accent):
	add dotless command to the unicode accents map, and handle
	explicitly when needed. Handle @dotless j similarly with i.

2022-08-17  Patrice Dumas  <pertusus@free.fr>

	* util/texinfo.dtd: add indentedblock and smallindentedblock.

2022-08-17  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (@code{@@inforef}): remove examples.

2022-08-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_xref_commands): remove
	impossible case of inforef for internal reference, as it has been
	checked before.

2022-08-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (_convert): do not format @inforef
	especially, format similarly with @xref.

2022-08-16  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Cross Reference Parts): update text referring to
	constraints in node names to refer to 'Info Node Names Constraints'
	with all the information on that subject being there.

	(Cross Reference Commands, Cross Reference Parts)
	(Four and Five Arguments, @code{@@ref}, @code{@@pxref}, @code{@@url})
	(Xref Link Basics): avoid naming specific formats when not needed
	or incorrect.  Use specific format when needed.

	(Four and Five Arguments): add a sentence on HTML.
	Expand on the cases of only a fourth or only a fifth argument.

	(@code{@@inforef}): add that similar formatting can be obtained with
	@*ref with a fourth argument and no fifth argument.  Remove the
	sentence stating that the converse of @inforef is @cite as it is
	not exact, @cite would be the converse of @inforef with the third
	argument only.

2022-08-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Plaintext.pm (process_printindex): modify code
	slightly for xgettext parsing.

2022-08-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (_convert): do not use section in
	external references formatting if it is a node.

2022-08-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (_convert): reuse already converted
	section name in external references formatting.

2022-08-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (_convert): output something to refer
	to a manual without book title.

2022-08-16  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (@code{@@chapter}): use consistent chapter name
	in example.

	(@code{@@unnumbered @@appendix}): do not refer to the <title> DocBook
	element, it is not useful.

	(@code{@@majorheading @@chapheading}): do not refer to specific
	output format, but use a wording including all the remainaing
	output formats.

2022-08-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (%docbook_sections): use 'sect1'
	for majorheading and chapheading to be rendered as, as 'other'
	is rendered too small.

2022-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Inserting Math): Use a real formula.  State
	earlier that the argument is TeX.

2022-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Info Format Printindex): Reword to avoid
	saying "menu" too many times.

2022-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	@flushleft and @flushright for LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (%LaTeX_environment_commands):
	Used nested flushleft/GNUTexinfoprefomatted environment for
	@flushleft; likewise for @flushright.

2022-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/README: Advise "make -k check", which runs
	in subdirectories even if earlier tests fail.

2022-08-16  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Node Line Requirements, Menu Parts)
	(Two Arguments, Three Arguments, @code{@@anchor})
	(Info Format Regular Nodes): add an anchor for
	'Info Node Names Constraints'.  Refer to labels in addition to
	node names in the text in 'Node Line Requirements'.
	Update texts referring to constraints in node names to refer to
	that anchor for all the information on that subject.

	(Info Format Regular Nodes): do not refer to @@-commands, it is
	confusing in the context of the Info format.

	(Info Format Printindex): refer to the menu and not to the node.


2022-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Info Format Cross Reference):
	Avoid referring to entity that is no longer in node.  Do not
	go over examples of problematic characters in node names again.

2022-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Cross References Parts, Four and Five Arguments):
	Refer to manual argument as "manual name" rather than
	"Info file name".
	(Cross References Parts): Remove unnecessary text about
	required arguments for referring to another manual.
	(@pxref): Remove unnecessary example of using @pxref with two
	arguments.

2022-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Cross References, References, Tips):
	Merge initial node "References" into chapter introduction.
	Move advice on linear manual structure to "Tips".

2022-08-16  Patrice Dumas  <pertusus@free.fr>

	Protect node names with comma in node pointers

	* tp/Texinfo/Convert/Info.pm (format_node): protect node names
	with comma in node pointers, and warn about node name containing
	a comma only for external nodes, internal nodes should have been
	warned when defined with @node.

2022-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@xref): Raise level of subsections and
	move remainder of section before the sections for the other
	ref commands.

2022-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Correct quoting of nodename with manual part

	* tp/Texinfo/Convert/Plaintext.pm (_convert) <DEL quote>:
	When inserting pre-quote, use saved manual part as a prefix to
	avoid quote character appearing before the manual part.
	* tp/t/plaintext_tests.t (quote_node_names): Add examples.

2022-08-16  Patrice Dumas  <pertusus@free.fr>

	Quote problematic node names in Info in the default case

	* NEWS, doc/texinfo.texi (Node Line Requirements),
	tp/Texinfo/Convert/Info.pm (%defaults),
	doc/tp_api/Makefile.am (AM_MAKEINFOFLAGS): set INFO_SPECIAL_CHARS_QUOTE
	in the default case in Info to quote problematic node names.  In the Emacs
	Info reader and in old readers, DEL character will appear, but the node
	names are problematic in those readers, so it is not such an issue to have
	them marked that way.

2022-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Cross Reference Parts): Remove examples
	to make the cross-reference parts more visible in this node.
	(There are similar examples later on in the chapter.)

2022-08-15  Patrice Dumas  <pertusus@free.fr>

	Avoid node name quoting when not needed in menu with entry name

	* tp/Texinfo/Convert/Plaintext.pm (_convert): fix nesting of
	if to quote node only if the characters requiring quoting node name
	in menu with entry name are present.

2022-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	Info output for reference commands

	* tp/Texinfo/Convert/Plaintext.pm (_convert) <ref commands>:
	Combine code handling an xref with a separate label with code
	where the node name is the label.  Both blocks of code were
	very similar apart from different requirements for DEL-quoting.
	Check for following punctuation slightly differently
	and integrate better with DEL-quoting mechanism.

2022-08-15  Patrice Dumas  <pertusus@free.fr>

	Give recommendations on markup on @def* lines

	* doc/texinfo.texi (Marking Definition Arguments): explain why
	and how to define markup for definition arguments that fit with
	languages.

2022-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi
	(Info Format Regular Nodes, Info Format Printindex):
	Do not use @kbd for DEL.  From Patrice.

2022-08-15  Patrice Dumas  <pertusus@free.fr>

	Protect node in index entry if INFO_SPECIAL_CHARS_QUOTE is set

	* tp/Texinfo/Convert/Plaintext.pm (process_printindex): protect
	node name in index if INFO_SPECIAL_CHARS_QUOTE is set.  Protect
	characters that need to be protected in menu node entry after
	menu entry name and also :, as the Info readers should consider
	text up to : to be part of the index entry.

2022-08-15  Patrice Dumas  <pertusus@free.fr>

	Set INFO_SPECIAL_CHARS_WARNING in Info to 1

	* doc/texinfo.texi (Other Customization Variables),
	tp/Texinfo/Convert/Info.pm (%defaults): set
	INFO_SPECIAL_CHARS_WARNING to 1 in Info, instead of undefined.
	To be kept as 1 as long as the Emacs Info reader does not
	support node quoting in Info files.
	
	doc/tp_api/Makefile.am (AM_MAKEINFOFLAGS): add
	-c INFO_SPECIAL_CHARS_WARNING=0

2022-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Info Format Specification): Comment out
	part about * at the beginning of a line.  Move definition
	of <separator> and <del> out of appendix introduction.

2022-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Info Format Regular Nodes): Define
	<node-spec> including DEL-quoting so it can be used later
	on in the appendix.

	(Info Format Cross Reference, Info Format Regular Nodes):
	Do not say that support for quoting mechanism is "limited"
	but do say that it isn't supported everywhere.  Do not recommend
	against its use.
	(Node Line Requirements): Be more hopeful that DEL-quoting will be
	supported by removing word "ever".

2022-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Info Format Specification):
	Do not split into two sections "General Layout" and
	"Text Constructs" as this makes it harder to navigate.

2022-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	Index format documentation

	* doc/texinfo.texi (Other Customization Variables)
	<INDEX_SPECIAL_CHARS_WARNING>: Do not describe colons in
	menu entries as "invalid".
	(Info Format Printindex): State that most of the index entry
	should occur on a single line.  Say that colons may occur in
	the entry text, and explain how to read these.

2022-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* TODO: Remove part about allowing : in node names, as this
	is already allowed with INFO_SPECIAL_CHARS_QUOTE.  From Patrice.

2022-08-15  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Generating EPUB, EPUB Cross-References): add
	EPUB Cross-References on cross references to external manuals in
	EPUB.  More index entries.

2022-08-15  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (output): set output_init_conf after
	running the setup handler.

2022-08-15  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/pod2texi.pl: add @shorttitlepage to main manual
	preamble.

2022-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* TODO: Add tagging system for definitions.

2022-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	No \{, \} in sort key

	* tp/Texinfo/Convert/LaTeX.pm (_index_entry) <sortas>:
	Strip \{ and \} out of sort key.

2022-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl (makeinfo_help): Remove --commands-in-node-names
	and --output-indent from message.

2022-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl (makeinfo_help): EPUB3 -> EPUB 3

2022-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	@{, @} in index entry

	* tp/t/latex_tests.t (brace_in_index): New test.

2022-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	@{, @} in index entry

	* tp/Texinfo/Convert/LaTeX.pm (_convert) <@{, @}>:
	If in an index, use \lbrace or \rbrace in math, and
	\textbraceleft or \textbraceright otherwise.

2022-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Better output for "maintain/all_tests.sh generate"

	* tp/maintain/all_tests.sh: Print name of each test script.
	* tp/t/test_utils.pl: Do not dump test to stderr; only print
	the name.

2022-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Optional Arguments): State that this is
	"one convention" to leave open possibility that there may
	be others.

2022-08-14  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Typed Functions): add = in Perl Sub example.
	Gavin idea.

2022-08-14  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_convert): add \leavevmode{}
	for @exdent \\ to avoid an error.

2022-08-14  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm: do not use EmbracMakeKnown,
	as using it twice leads to an error.

2022-08-14  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm: simplify setting commands for
	use in table item.

	* tp/Texinfo/Convert/LaTeX.pm (_convert): convert @* as a space
	if in @def* line to avoid outputting a \\ in a tabularx line.  For
	this, set 'no_eol' on 'formatting_context'.
	rename $command_context as $command_format_context.


2022-08-14  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm: use specific strings with ctx_
	or cmd_ prepended instead of math, text and raw for text_context
	and command formatting context.

2022-08-13  Patrice Dumas  <pertusus@free.fr>

	Warn if no image file is found in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (_convert): warn if no image file
	is found, even though a file found does not modify the output.

2022-08-13  Patrice Dumas  <pertusus@free.fr>

	Do not set INDEX_SPECIAL_CHARS_WARNING with INFO_SPECIAL_CHARS_QUOTE

	* doc/texinfo.texi (Other Customization Variables),
	tp/Texinfo/Convert/Plaintext.pm (%defaults, converter_initialize):
	Set default of INFO_SPECIAL_CHARS_WARNING to be undef.  If undef,
	set if INFO_SPECIAL_CHARS_QUOTE is not set.

	* tp/Texinfo/Convert/Info.pm, tp/Texinfo/Convert/Plaintext.pm:
	cache get_conf call result of INDEX_SPECIAL_CHARS_WARNING and
	INFO_SPECIAL_CHARS_QUOTE.

2022-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/LaTeX.pm: Add unbalanced braces in
	index entry to TODO

2022-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Style commands, Definitions):
	Some tests of conditions.

2022-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\ifflagclear): New macro, to check if
	a flag has been @set or not.  Use throughout.

2022-08-13  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm (_protect_colon)
	(_prepare_anchor, _convert_pod): protect colons in node names
	and in references.

2022-08-13  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (new_node_menu_entry): do not
	protect colons in node name, but protect in section name used as
	menu entry name.

2022-08-13  Patrice Dumas  <pertusus@free.fr>

	Do not output node menus with pod2texi in the default case

	* Pod-Simple-Texinfo/pod2texi.pl (_fix_texinfo_tree)
	(_fix_texinfo_manual): do not output menus in the default
	case, except for the main file created to include the other files,
	for the master menu.  Add a corresponding argument to _fix_texinfo_tree
	and _fix_texinfo_manual.
	(_parsed_manual_tree): excerpt from _fix_texinfo_tree to be able to
	redo a tree with a different option for menus, to be able to create
	menus if $do_master_menu is set but menus are not created.

2022-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\smartitaliccorrection): Incorporate checking
	next token in definition so as to simplify use.

2022-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\defunargs): Remove special definition for \var.

2022-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	\sl for @var

	* doc/texinfo.tex (@var): Use slanted unconditionally, not
	slanted typewriter.  This is for consistency between def header
	lines and def bodies.  This change has been made already for LaTeX,
	on 2022-08-10.
	(\ttslanted): Remove unused.

2022-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Style commands):
	Test end of sentence spacing after @var and @dfn.

2022-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Optional Arguments):
	Revert change stating that use of square brackets for optional
	arguments is convenient, as this is presupposing users' experiences.

2022-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (\ttstylename): Remove unused.

2022-08-13  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Unicode.pm (unicode_point_decoded_in_encoding):
	check first if encoding is defined before calling lc().

2022-08-13  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Unicode.pm (encoded_accents)
	(unicode_point_decoded_in_encoding): lower case the encoding argument,
	in case if was directly specified with -c OUTPUT_ENCODING_NAME
	in upper case to match with the encodings in Texinfo input, as the
	encoding names used here are lower cased.

2022-08-13  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Sample Function Definition): move before
	or remove generic infomation from this node to focus on the example.

2022-08-13  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Optional Arguments): do not present the use of
	brackets, parentheses and ellipses presented here as the unique
	convention, but a convenient style.  Remove information on index,
	it is not the subject of this node.

	* doc/texinfo.texi (Typed Functions): in the example with named return
	variable, add an example of referring to a variable in the definition
	body.

2022-08-12  Patrice Dumas  <pertusus@free.fr>

	@deftype* as generic commands, @deffn with simple arguments

	* doc/texinfo.texi (Definition Commands, Object-Oriented Methods):
	describe @deffn and other @-command with the whole arguments
	formatted as @var as having simple arguments.
	(Typed Functions, Object-Oriented Methods): change wording to make
	clearer that the @deftypefn and @deftypeop are generic command,
	not only suitable for typed languages.
	(Typed Functions): remove a confusing precision for the Ada example.
	Add a Perl example with named variables as return value information.

	* doc/texinfo.texi (Def Cmd Conventions): remove 'with the following
	word', as the word is already marked.

2022-08-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_convert): deftypefnnewline with
	tabularx.

2022-08-11  Patrice Dumas  <pertusus@free.fr>

	Add commands handled by embrac before tabularx

	* tp/Texinfo/Convert/LaTeX.pm (_convert): convert the def line before
	prepending commands known to embrac to avoid doing it within the
	tabularx where it causes an error.

2022-08-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Definition Commands):
	Move "Typed Functions" node right after "Functions Commands"
	as these naturally go together.  Re-add "@end table", deleted
	by mistake.

2022-08-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Definition Commands):
	Remove several redundant "templates" for the definition
	commands and statements of which index is used.

2022-08-11  Gavin Smith  <gavinsmith0123@gmail.com>

	~ for @tie

	* tp/Texinfo/Convert/LaTeX.pm (LaTeX_no_arg_brace_commands):
	Use ~ for @tie.

2022-08-11  Gavin Smith  <gavinsmith0123@gmail.com>

	tabularx for @def

	* tp/Texinfo/Convert/LaTeX.pm (_convert) <def line>:
	Use tabularx package for definition line.
	(_latex_header): Load 'tabularx' if needed.
	* tp/Texinfo/Convert/LaTeX.pm: Remove todo item.

2022-08-11  Gavin Smith  <gavinsmith0123@gmail.com>

	Protect space at start of code

	* tp/Texinfo/Convert/LaTeX.pm (_protect_text) <code>:
	Escape an initial space in case it was preceded by punctuation
	from another element.  From Patrice.

2022-08-11  Patrice Dumas  <pertusus@free.fr>

	Handle kbd in LaTeX more like other similar commands

	* tp/Texinfo/Convert/LaTeX.pm (_xtable_description_command_format)
	(%LaTeX_style_brace_commands, _convert): register distinct style
	kbd formatting LaTeX macro in %LaTeX_style_brace_commands.  Use
	code @-command style to format kbd just before the formatting instead
	of using a specific processing for kbd.

2022-08-11  Patrice Dumas  <pertusus@free.fr>

	Remove empty lines in inter item when processing the inter_item

	* tp/Texinfo/Convert/LaTeX.pm (_convert): process directly the
	inter_item content and remove empty lines directly in that
	processing.

2022-08-11  Patrice Dumas  <pertusus@free.fr>

	Rename after_description_line type as after_menu_description_line

	* tp/Texinfo/ParserNonXS.pm (_end_line),
	tp/Texinfo/XS/parsetexi/element_types.txt,
	tp/Texinfo/XS/parsetexi/end_line.c(end_line): rename
	after_description_line as after_menu_description_line.

	* tp/Texinfo/Convert/LaTeX.pm (_convert): do not check
	after_menu_description_line, menus are already ignored.

2022-08-11  Patrice Dumas  <pertusus@free.fr>

	Avoid empty line in @*table inter item formatting

	* tp/Texinfo/Convert/LaTeX.pm (_convert): ignore empty
	lines if 'nr_table_items_context' is set, as the inter item
	is formatted in a parbox which cannot contain paragraphs
	and therefore cannot contain empty lines.

2022-08-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (output_files_open_out): return an
	error message based on $! if open failed, or undef.

2022-08-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_convert): only one empty line
	after @def*, resetting of embrac macros grouped with def line.

2022-08-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (%roman_style_commands, _convert):
	use %roman_style_commands for @-commands that stop code context.

2022-08-10  Gavin Smith  <gavinsmith0123@gmail.com>

	@def documentation

	* doc/texinfo.texi (Definition Commands): Edit.  Move advice
	on unique names to "Def Cmd Conventions".  Remove extraneous
	text.  State in chapter intro that we are describing @deffn
	first.  Move description of location of category out of chapter
	intro and do not talk about "both output formats".

2022-08-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm: always use a stack for code context

2022-08-10  Patrice Dumas  <pertusus@free.fr>

	@var roman slanted everywhere @code no explicit upright in def

	* tp/Texinfo/Convert/LaTeX.pm (_convert): use a macro to define
	@var similarly to @cite, with \normalfont.  Use it in text
	context.  Set the @cite formatting with \normalfont for text
	context too.  Remove codetext context, remove 'var_slant' context.

2022-08-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Typed Functions): Add output of Ada example and
	state that @deftypefn does not need to be used with a type, and give
	R example.

2022-08-10  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid extra space after punctuation in \texttt

	* tp/Texinfo/Convert/LaTeX.pm (_protect_text) <code>:
	Where punctuation appears before a space, change the
	space to "\ ", control space.

2022-08-10  Gavin Smith  <gavinsmith0123@gmail.com>

	No special output for @t in def args

	* tp/Texinfo/Convert/LaTeX.pm (%var_slant_commands):
	Remove @t.  From Patrice.

2022-08-10  Patrice Dumas  <pertusus@free.fr>

	No code environment for @var on @def lines

	* tp/Texinfo/Convert/LaTeX.pm (_convert) <style commands>:
	if in var_slant context, @var stops code context.

2022-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	Special output for @var, @code, @t in def args

	* tp/Texinfo/Convert/LaTeX.pm (%var_slant_commands): New hash,
	with output for some commands when used in def args.
	(_convert) <def args>: Add a 'var_slant' formatting context.
	(_convert) <style commands>: Check %var_slant_commands and
	formatting context.

2022-08-10  Patrice Dumas  <pertusus@free.fr>

	* tp/init/highlight_syntax.pm: null input file is valid.
	Improve error handling, avoid unneeded file lexicals.

2022-08-10  Patrice Dumas  <pertusus@free.fr>

	* tp/init/chm.pm: null input file is valid.  Minor changes.

2022-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	Bold typewriter for definition name in HTML

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type):
	Use <strong> instead of <code> for def name.
	(%css_element_class_styles) <strong.def-name>: Use monospace,
	bold, larger font.
	(_convert_def_line_type): Change 'def-meta-var-arguments' to
	'def-var-arguments'.

2022-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Inserting an Ampersand):
	Remove unnecessary @code from example.

2022-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\deftypevr, \defvr, \deftypecv, \defcv):
	Call \doind directly.  This simplifies the code path in the usual
	case when \dosubind was passed an empty subtopic.
	(\dosubind): Remove.

2022-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	@def* documentation

	* doc/texinfo.texi (Object-Oriented Variables): Remove needless
	@code from examples.
	(Inserting an Ampersand): Mark parameter with @var.

2022-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\deftypefn, \deftypeop):
	Simplify code by calling \doind directly rather than \dosubind,
	and eliminating shared code between the two commands.

2022-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	Typewriter for @deftype* line

	* doc/texinfo.tex (\defunargs): Use \tt font for @deftype*
	instead of \sl.  Remove code changing \hyphenchar for \sl font.
	Define @var to output in \sl instead of \ttsl.

2022-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\deffn, \defop):
	Simplify code by calling \doind directly rather than \dosubind,
	and eliminating shared code between the two commands.

2022-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	@def* documentation

	* doc/texinfo.tex (Def Cmds in Detail): Remove disclaimer
	that most of the examples are in Lisp.
	(Functions Commands): Edit treatment of fonts.
	(Typed Commands): State that a typewriter font is used by
	default.  Only recommend one method for distinguishing names
	of parameters.
	(Object-Oriented Variables): Add comment querying whether @code
	is necessary in the example.

2022-08-09  Patrice Dumas  <pertusus@free.fr>

	Abort above HANDLER_FATAL_ERROR_LEVEL level user handlers status 

	* tp/Texinfo/Common.pm (%default_main_program_customization_options)
	tp/Texinfo/Convert/HTML.pm (output), tp/ext/epub3.pm (epub_setup):
	if the status returned by a user defined function registered to be
	called at a specific stage is above HANDLER_FATAL_ERROR_LEVEL,
	or below -HANDLER_FATAL_ERROR_LEVEL stops the processing, otherwise
	do not stop.

2022-08-09  Patrice Dumas  <pertusus@free.fr>

	* tp/ext/tex4ht.pm (tex4ht_prepare): outputing to a null
	device is not an error.

	* tp/ext/tex4ht.pm (tex4ht_process): chdir to the processing
	directory only if there is some processing.  Add css import later,
	in tex4ht_process_format, if there was some processing.

	* tp/ext/tex4ht.pm (tex4ht_convert_command): output default
	formatting if the commands were not collected, or there is no
	result at all for a command, indicating a failure.

	* tp/ext/tex4ht.pm (tex4ht_process, tex4ht_convert_command):
	rename tex4ht_convert as tex4ht_process and tex4ht_do_tex
	as tex4ht_convert_command.

	* tp/ext/latex2html.pm (l2h_process, l2h_convert_command)
	(l2h_finish): outputing to a null device is not an error.
	Use $latex_commands_count undef to express that the commands
	were not collected.

2022-08-08  Gavin Smith  <gavinsmith0123@gmail.com>

	Block more ligatures in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (_protect_text):
	Block more ligatures in code and block several others everywhere.

2022-08-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	* tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line):
	Remove trailing full stop from warning message.

2022-08-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Image Syntax): Add missing comma.

2022-08-08  Gavin Smith  <gavinsmith0123@gmail.com>

	LaTeX header

	* tp/Texinfo/Convert/LaTeX.pm (_latex_header):
	Set \parindent and \parskip inside GNUTexinfopreformatted.
	Remove unneeded \begingroup and \endgroup as environments
	are automatically within a group.  Wrap more of the header
	with \makeatletter and \makeatother.

2022-08-08  Patrice Dumas  <pertusus@free.fr>

	Reorganization of latex2html.pm code

	* tp/ext/latex2html.pm (l2h_to_latex, l2h_process): reorganize
	l2h_process and l2h_to_latex to write to the latex file only
	in l2h_to_latex, and only if some conversion is needed.
	Integrate l2h_finish_to_latex in l2h_process.

	* tp/ext/latex2html.pm (l2h_convert_command): rename l2h_do_tex
	as l2h_convert_command.

	* tp/ext/latex2html.pm (l2h_process, l2h_convert_command, l2h_finish):
	instead of setting a global status, use counters and difference
	between counters to detect that a stage failed.

	* tp/ext/latex2html.pm: avoid global commands if not needed.
	Other code cleanups.

2022-08-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (run_stage_handlers):
	error message only if $status > 0.

2022-08-08  Gavin Smith  <gavinsmith0123@gmail.com>

	\newenvironment for preformatted

	* tp/Texinfo/Convert/LaTeX.pm (_latex_header): Define a new
	environment 'GNUTexinfopreformatted', with some of the code
	for preformatted environments.
	(_open_preformatted, _close_preformatted): Use it.  This
	makes the output a bit clearer for blocks like @example.

2022-08-08  Gavin Smith  <gavinsmith0123@gmail.com>

	@indentedblock for LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (%LaTeX_environment_commands):
	Use 'quote' environment for @indentedblock and  @smallindentedblock.
	Add comment stating that right margin is incorrect.

2022-08-08  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove vertical space after definition line

	* tp/Texinfo/Convert/LaTeX.pm (_convert) <def_item>:
	Avoid vertical space at beginning of 'quote' environment.

2022-08-07  Patrice Dumas  <pertusus@free.fr>

	Inverse meaning of handlers status. Re-add l2h cache

	* tp/Texinfo/Convert/HTML.pm (run_stage_handlers),
	tp/ext/epub3.pm, tp/ext/latex2html.pm, tp/ext/tex4ht.pm)
	(tp/init/book.pm, tp/init/chm.pm, tp/init/highlight_syntax.pm):
	inerse the meaning of handlers status, 0 means no error.

	* tp/ext/latex2html.pm (l2h_init_cache, l2h_store_cache):
	fix call to do and make %l2h_cache our such as it is available
	in the do.

	* tp/ext/latex2html.pm (l2h_finish_to_latex): do not call
	l2h_finish if $latex_count is 0, as it does nothing.

	* tp/texi2any.pl: add a comment.

2022-08-07  Patrice Dumas  <pertusus@free.fr>

	Init file loading errors and warning interface setup and use

	* tp/Texinfo/Config.pm (@init_file_loading_messages)
	(GNUT_load_init_file, texinfo_register_init_loading_error)
	(texinfo_register_init_loading_warning): replace
	texinfo_register_init_loading_failure by two functions,
	texinfo_register_init_loading_error and
	texinfo_register_init_loading_warning to be able to register
	errors and warnings.
	Use a stack, @init_file_loading_messages to be sure to separate
	each init file loading messages even if an init file loads another.

	* tp/init/highlight_syntax.pm: get the available languages upon
	loading and use texinfo_register_init_loading_error and
	texinfo_register_init_loading_warning for errors and warnings.

2022-08-07  Patrice Dumas  <pertusus@free.fr>

	Do not keep EPUB container directory in the default case

	* doc/texinfo.texi (Other Customization Variables)
	(Generating EPUB, Output File and Directory),
	tp/Texinfo/Common.pm (@variable_string_settables),
	tp/ext/epub3.pm (_epub_remove_container_folder)
	(epub_setup, epub_finish): remove the EPUB directory
	container unless EPUB_KEEP_CONTAINER_FOLDER is set.
	Set EPUB_KEEP_CONTAINER_FOLDER if undef and TEST or DEBUG.

	* tp/ext/epub3.pm (epub_setup): do not error out at loading
	if Archive::Zip could not be loaded, do it at the beginning
	of epub_setup() to be able to determine EPUB_CREATE_CONTAINER_FILE
	based on other customization variable.

2022-08-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Add a interface to register errors from init files

	* tp/Texinfo/Config.pm (GNUT_load_init_file)
	(texinfo_register_init_loading_failure): add
	texinfo_register_init_loading_failure() to register errors
	from init files.

	* tp/ext/epub3.pm: register an error if require Archive::Zip;
	fails.

2022-08-07  Patrice Dumas  <pertusus@free.fr>

	Use CSS for horizontal alignement in table cells

	* tp/Texinfo/Convert/HTML.pm (%css_element_class_styles)
	(_convert_printindex_command, _convert_menu_comment_type)
	(_convert_def_line_type, _default_format_special_body_about):
	use CSS with classes for horizontal alignement for menu
	commnet, printindex index entries header, @def* line in table
	About table.

2022-08-07  Patrice Dumas  <pertusus@free.fr>

	Use CSS for vertical alignement in table cells

	* tp/Texinfo/Convert/HTML.pm (%css_element_class_styles)
	(_convert_printindex_command, _convert_menu_entry_type):
	use CSS with classes for vertical alignment for menu entry
	and index entry formatting.

2022-08-07  Patrice Dumas  <pertusus@free.fr>

	Percent protect manual name in external manual URLs

	* tp/Texinfo/Convert/HTML.pm (_external_node_href):
	protect urf from htmlxref and file names when relative paths to
	external manuals are used.

2022-08-07  Patrice Dumas  <pertusus@free.fr>

	Use <abbr> for acronym in HTML

	* tp/Texinfo/Convert/HTML.pm (_convert_explained_command):
	use <abbr> for @acronym, it should lead to the same formatting
	and <acronym> has been removed from HTML5.

	* doc/texinfo.texi (@code{@@abbr}, @code{@@acronym})
	(Inserting Math): do not tell explicitly which tag is used when
	it does not add useful information.

2022-08-07  Patrice Dumas  <pertusus@free.fr>

	Use <code> for table term in preformatted code context

	* tp/Texinfo/Convert/HTML.pm (_convert_item_command): use <code>
	with a class instead of <tt> for a table term in preformatted code
	such as @example.

2022-08-07  Patrice Dumas  <pertusus@free.fr>

	HTML argument formatting context for url, with conversion to UTF-8

	* tp/Texinfo/Convert/HTML.pm (%default_commands_args)
	(_convert_email_command, _convert_uref_command, _convert):
	add a new argument formatting, 'url' that always used UTF-8
	as encoding for plain text, and is otherwise the same than
	monospacetext.  It is better for percent encodded urls.

2022-08-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Do not protect ] in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (_protect_text): Do nothing for ].
	Protecting it interfered with the operation of the embrac package.
	Report from Patrice.
	(_convert) <heading commands>: Wrap argument in extra layer of
	braces to avoid buggy treatment of square brackets in a section
	title.  The problems occur when the titleps package in is use.

2022-08-07  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%default_commands_args)
	(_convert_image_command): use monospacestring for
	the base image file formatted as a string instead of
	protecting plain text conversion.

2022-08-07  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%default_commands_args)
	(_convert_email_command, _convert_uref_command): use
	monospacestring for the url formatted as a string instead of
	protecting plain text conversion.

2022-08-07  Patrice Dumas  <pertusus@free.fr>

	If TEST is set, do not use system init file directories

	* tp/texi2any.pl: if TEST is set, do not use system (program) init
	directories to find init files, such that the init files are only
	found in source directory.  Report from Gavin.

2022-08-07  Patrice Dumas  <pertusus@free.fr>

	Ignore ENABLE_ENCODING for plain text in more output formats

	* tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/IXIN.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/TexinfoXML.pm,
	tp/ext/epub3.pm: set second optional argument of
	Texinfo::Convert::Text::copy_options_for_convert_text to ignore
	the ENABLE_ENCODING setting to determine how to convert accented
	letter @-commands in plain text. 

	* tp/Texinfo/Convert/LaTeX.pm: use more systematically
	$self->{'convert_text_options'}.

2022-08-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Protect ] in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (_protect_text): Output ] as {]} to
	avoid interaction with use of [, ] for optional LaTeX arguments.

	\subsection{\texttt{@float} [\textsl{type}][,\textsl{label}]}
	led to mangled output, even though the [ and ] were inside { and }.

2022-08-06  Patrice Dumas  <pertusus@free.fr>

	* tp/init/highlight_syntax.pm: encode/decode files.

2022-08-06  Patrice Dumas  <pertusus@free.fr>

	@url/@uref url independent of output encoding in HTML

	* tp/Texinfo/Convert/HTML.pm (_convert_uref_command):
	convert the url @uref/@url argument to raw text using UTF-8 encoding
	to get an url to be percent protected independent of the encoding
	and more in line with the underlying characters.

2022-08-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Indent def_item in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (_convert) <def_item>:
	Wrap body of definition with \begin{quote} and \end{quote}.

	(_open_preformatted): Also do not indent @smallformat environment.
	Remove extraneous {} from output.

2022-08-06  Gavin Smith  <gavinsmith0123@gmail.com>

	@exdent in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (_convert) <@exdent>:
	Output \noindent command or a negative kern depending on the context.

2022-08-06  Patrice Dumas  <pertusus@free.fr>

	Use encoded characters in plain text from HTML if not ascii

	* tp/Texinfo/Convert/Text.pm (copy_options_for_convert_text),
	tp/Texinfo/Convert/HTML.pm: add a second argument to
	Texinfo::Convert::Text::copy_options_for_convert_text
	to ignore ENABLE_ENCODING and set enabled_encoding if
	OUTPUT_ENCODING_NAME is not us-ascii.  Set from HTML,
	where ENABLE_ENCODING unset  does not mean that encoding
	is not supported, but that entities are preferred to encoded
	characters.

2022-08-06  Patrice Dumas  <pertusus@free.fr>

	Percent encode more characters in @image file name

	* tp/Texinfo/Convert/HTML.pm (url_protect_file_text)
	(_convert_image_command), tp/ext/epub3.pm
	(epub_convert_image_command): add url_protect_file_text()
	to protect file name in url, protecting everything that
	can be special in url except ~, / and : that could appear in
	file names.

	* tp/Texinfo/Convert/HTML.pm (url_protect_url_text):
	rename protect_url_text as url_protect_url_text.

2022-08-06  Patrice Dumas  <pertusus@free.fr>

	Percent encode href or src attributes that may need it

	* tp/Texinfo/Convert/HTML.pm (protect_url_text)
	(_protect_url), tp/ext/epub3.pm (epub_convert_image_command):
	function protect_url_text() used to protect urls, both percent
	protect and protect HTML special characters with entities.
	* tp/Texinfo/Convert/HTML.pm (%default_commands_args)
	(_convert_email_command, _convert_uref_command):
	convert @uref/@url and @email first argument as simple
	text instead of string or monospace normal output, to
	use protect_url_text().

2022-08-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Better environments in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (_open_preformatted):
	Set \parindent to 0pt to avoid excessive margin.  Set
	\leftskip to 0pt for @format.

2022-08-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\raggedleft, \raggedcenter):
	Remove, as these are not implemented in texi2any and not
	documented.

2022-08-05  Patrice Dumas  <pertusus@free.fr>

	Avoid alignment attributes in HTML when not needed

	* tp/Texinfo/Convert/HTML.pm: remove valign="middle" and
	align="left" from <td> as it is the default, except for @def*
	in table in which the align left is important.  Remove align=
	from tables with only one line, and valign= from tables with
	only one column.  Remove valign="top" from 'Jump to' in
	printindex summary letter as it is better without.

2022-08-05  Patrice Dumas  <pertusus@free.fr>

	* tp/ext/epub3.pm (epub_setup): properly reset variables.

2022-08-05  Patrice Dumas  <pertusus@free.fr>

	Set CHECK_HTMLXREF to get external manuals in EPUB

	* tp/ext/epub3.pm: external manuals need to be resolved to
	absolute URL, or the resource be present in the EPUB container
	which is not correct for another manual.  So set
	CHECK_HTMLXREF to have a warning if a manual has no absolute
	URL.
	Also set EXTERNAL_CROSSREF_EXTENSION to html.

2022-08-05  Patrice Dumas  <pertusus@free.fr>

	Replace HTMLXREF by HTMLXREF_FILE and add HTMLXREF_MODE

	* tp/Texinfo/Common.pm (@variable_string_settables),
	tp/Texinfo/Convert/HTML.pm (_parse_htmlxref_files), NEWS,
	infog/README, doc/texinfo.texi (HTML Customization Variables)
	(HTML Xref Configuration): add HTMLXREF_MODE.  Set to 'none'
	do not use of external information (useful for a collection of
	manuals), set to 'file' use the value of HTMLXREF_FILE, which
	could be useful for in source runs/tests.  HTMLXREF_FILE
	replaces HTMLXREF and is used even if TEST is not set.  If TEST
	is set and HTMLXREF_MODE is the default mode, HTMLXREF_FILE
	needs to be set to have some cross-reference information used.

2022-08-04  Patrice Dumas  <pertusus@free.fr>

	Use HTMLXREF customization variable information only if TEST

	* tp/Texinfo/Convert/HTML.pm (_load_htmlxref_files): use the
	HTMLXREF value for file name only if TEST is set.

2022-08-04  Patrice Dumas  <pertusus@free.fr>

	Remove KEEP_TOP_EXTERNAL_REF.

	* tp/Texinfo/Convert/HTML.pm (_convert_xref_commands),
	doc/texinfo.texi (HTML Customization Variables),
	tp/Texinfo/Common.pm (KEEP_TOP_EXTERNAL_REF): remove
	KEEP_TOP_EXTERNAL_REF there is no point in keeping backward
	compatibility for such an old change.

2022-08-04  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_printindex_command): output
	index summary header and footer only if there is more than one
	symbol.

2022-08-04  Patrice Dumas  <pertusus@free.fr>

	* tp/ext/epub3.pm: split at chapter, no mini_toc
	(epub_convert_tree_unit_type): add an output file only once.

2022-08-04  Patrice Dumas  <pertusus@free.fr>

	Always add a language information in EPUB

	* tp/ext/epub3.pm: add en language if there is no @documentlanguage,
	as mandated by the standard.

2022-08-03  Patrice Dumas  <pertusus@free.fr>

	Copy image files in subdirectories directly in EPUB images

	* tp/Texinfo/Convert/NodeNameNormalization.pm
	(transliterate_protect_file_name, _unicode_to_file_name):
	new function transliterate_protect_file_name() that can be
	used to transliterates non ascii letters and protect characters that
	should not appear on file names.  New function _unicode_to_file_name()
	for common code of transliterate_protect_file_name and
	_unicode_to_protected.

	* tp/ext/epub3.pm (epub_convert_image_command): normalize image file
	name using transliterate_protect_file_name(), prepend a counter to
	be sure that the file names are unique and copy directly in
	EPUB/images/ even if there is a subdirectory in @image.  Do the
	formatting directly in epub_convert_image_command() to be able to
	set the url to the copied image file name.
	Report by Kurt Hornik and idea partly by Gavin.


2022-08-03  Patrice Dumas  <pertusus@free.fr>

	* tp/ext/epub3.pm: remove spurious space. Indirect report
	by Kurt Hornik.

2022-08-02  Gavin Smith  <gavinsmith0123@gmail.com>

	Manual - make "info texinfo r" work

	* doc/texinfo.texi:  Supply extra index entries for @-command
	names without extra clarificatory text.  Output these for
	Info and HTML output.  Remove other clarifications where the
	command name is longer than a byte.

	This makes it easier to look up documentation of these
	commands in Info.  For example, "info texinfo r" would not
	go to the documentation of @r, because the index entry didn't
	match exactly: it was "r (roman font)", not "r".

2022-08-01  Patrice Dumas  <pertusus@free.fr>

	EPUB conformance: version and mimetype file

	* tp/ext/epub3.pm: use 3.0 as version, as said in the
	standard.  Report from Kurt Hornik.
	No end line in mimetype file.  Report from Kurt Hornik.
	mimetype file should not be compressed.

2022-08-01  Patrice Dumas  <pertusus@free.fr>

	HTML @def* argument in <var>, not like @r{@slanted{

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type):
	use <var> for @def* not @deftype argument.  Gavin idea.
	Replace double quotes with single quotes, reindent.

2022-08-01  Patrice Dumas  <pertusus@free.fr>

	Handle txidefnamenospace/omit_def_name_space in info/plaintext

	* tp/Texinfo/Convert/Plaintext.pm (_convert): add @def* line
	formatting cases without space between name and argument for
	the case of omit_def_name_space set.

2022-08-01  Patrice Dumas  <pertusus@free.fr>

	No omit_def_name_space in main def element

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command):
	do not add omit_def_name_space to @def* main command.

2022-08-01  Gavin Smith  <gavinsmith0123@gmail.com>

	@firstparagraphindent in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (_convert): Use idea from
	indentfirst LaTeX package to implement @firstparagraphindent.
	* tp/Texinfo/Convert/LaTeX.pm: Remove @firstparagraphindent
	from TODO list, as well as @indent, which was different in
	texinfo.tex due to @firstparagraphindent definition.

2022-08-01  Gavin Smith  <gavinsmith0123@gmail.com>

	@dmn in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (_convert): Implement @dmn with
	\thinspace, as in texinfo.tex.

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	Add omit_def_name_space to extra def_line too

	* tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command)
	(handle_block_command), tp/Texinfo/ParserNonXS.pm (_parse_texi):
	add omit_def_name_space to extra def_line based on txidefnamenospace
	value.

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type),
	tp/Texinfo/Convert/LaTeX.pm (_convert): use def_line
	omit_def_name_space.

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	Handle txidefnamenospace/omit_def_name_space in HTML

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type): handle
	omit_def_name_space as in LaTeX.

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type): with DEF_TABLE,
	use the same class as in the default case for the category.  Enclose
	category in brackets, to be more like TeX.

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	Use specific element classes for HTML @def* formatting

	* tp/Texinfo/Convert/HTML.pm (%css_element_class_styles)
	(_convert_def_line_type): use specific classes for HTML elements
	in @def* lines formatting.

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	Rename to Texinfo::Convert::Utils definition_category_tree and update

	* tp/Texinfo/Convert/Utils.pm (definition_category_tree),
	tp/Texinfo/Convert/HTML.pm (_convert_def_line_type),
	tp/Texinfo/Convert/LaTeX.pm (_convert): rename
	definition_category() as definition_category_tree().
	Use code for the formatting of the class name.
	Use it in LaTeX formatting.  Do not expand the category
	tree in code context in HTML.

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	Format DEF_TABLE @def* lines similarly with default case

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type): use the
	same def call for DEF_TABLE as in the default case.  Do
	not format empty arguments.

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	Use directly HTML code to format @def* line except for category

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type): direct
	HTML format equivalent with previously used Texinfo commands
	with gdt.

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	Common structure for non metasyntactic only argument def commands

	* tp/Texinfo/Common.pm (%def_no_var_arg_commands),
	tp/Texinfo/Convert/HTML.pm (_convert_def_line_type),
	tp/Texinfo/Convert/LaTeX.pm (_convert): setup %def_no_var_arg_commands
	for @def* commands with non metasyntactic variables only
	argument.

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type): remove
	common code cases.

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	HTML consistent @def* category formatting more similar with printed

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type): separate
	category formatting from function line formatting for all the
	cases.  Never format category in code context.

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_convert): analyse @anchor without
	section better and avoid debugging message if the @anchor is in
	'before_node_section'.

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	@def* line conversion in HTML similar with printed output

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type): convert @def*
	using the same formatting as for printed output, when possible.

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_convert): @def* not @deftype* argument in @r{@slanted{

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	@r resets the code context in LaTeX to have -- and --- as ligature

	* tp/Texinfo/Convert/LaTeX.pm (_push_new_context, _convert):
	turn 'code' context to an array, such that @r can reset the state
	by pushing on the array.

2022-07-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\r): Output -- and --- as ligature even if in code.

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	No @deftypefnnewline effect on typed variable definitions in Info

	* tp/Texinfo/Convert/Plaintext.pm (_convert): effect of
	@deftypefnnewline on for deftypefn and deftypeop only.

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	No @deftypefnnewline effect on typed variable definitions in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (_convert): effect of
	@deftypefnnewline on for deftypefn and deftypeop only.

2022-07-31  Patrice Dumas  <pertusus@free.fr>

	No @deftypefnnewline effect on typed variable definitions in HTML

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type): effect of
	@deftypefnnewline on for deftypefn and deftypeop only.

2022-07-30  Patrice Dumas  <pertusus@free.fr>

	Document EPUB_CREATE_CONTAINER_FILE

	* doc/texinfo.texi (Other Customization Variables): document
	EPUB_CREATE_CONTAINER_FILE.
	* doc/texinfo.texi (EPUB Output File and Directory, EPUB HTML):
	edit.

2022-07-30  Patrice Dumas  <pertusus@free.fr>

	Document EPUB in more details

	* doc/texinfo.texi (Generating EPUB, EPUB Output File and Directory)
	(EPUB HTML): document in more details the generation of EPUB.
	(Invoking @command{texi2any}): explain how --output directory is
	used in EPUB.

	* tp/Texinfo/Common.pm, tp/ext/epub3.pm: rename
	EPUB_CREATE_CONTAINER as EPUB_CREATE_CONTAINER_FILE.

	* doc/texinfo.texi (@code{@@documentdescription}): move
	before HTML Xref.

2022-07-30  Patrice Dumas  <pertusus@free.fr>

	Distinguish output and converted format, case of epub3/html

	* tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/DocBook.pm,
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/IXINSXML.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm,
	tp/Texinfo/Convert/TexinfoSXML.pm, tp/Texinfo/Convert/TexinfoXML.pm,
	tp/texi2any.pl b/tp/texi2any.pl (set_format, %formats_table):
	distinguish converted_format and output_format.  output_format
	is the format being output.  converted_format corresponds to the
	converter being used, it is the format of the conversion.  In the
	case of epub3, epub3 is the output_format and html is the
	converted_format.
	Change loading of epub3 to go through set_format, such that it may
	be loaded with TEXINFO_OUTPUT_FORMAT too.

	* tp/Texinfo/Common.pm (@variable_string_settables, tp/ext/epub3.pm):
	make EPUB_CREATE_CONTAINER a valid customization in any case, such
	that it can be set on the command line before the init file is loaded.

2022-07-30  Patrice Dumas  <pertusus@free.fr>

	Separate directory and loading function for init files used internally

	* tp/texi2any.pl (locate_and_load_extension_file), tp/Makefile.am
	(extensionsdir): use a different function to load init files used
	in texi2any, to search only in code directory.  Put those init
	files in tp/ext, installed in $(datadir)/texinfo/.  Use the directory
	last in user init files search such that the files can still be
	loaded with --init.  Call those init files 'extensions'.

2022-07-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\makedefun): Edit comment.  No functional change.

2022-07-30  Patrice Dumas  <pertusus@free.fr>

	Explicit data dir for modules in ModulePath

	* tp/texi2any.pl (BEGIN), tp/Texinfo/ModulePath.pm.in (init),
	tp/Texinfo/Convert/HTML.pm (output): add a third argument to
	ModulePath init() to be able to distinguish data dir from modules
	library dir and XS object files directory.  Do not use our for
	directory name variables that are not supposed to be reused in
	other code, but only used to add to @INC.  If uninstalled, do
	not add to @INC directories that are only needed when installed.
	use pkgdatadir for js $jssrcdir.

	* tp/texi2any.pl: changes in spacing.

2022-07-29  Patrice Dumas  <pertusus@free.fr>

	Document that &word should be marked explicitly on @def* lines

	* doc/texinfo.texi (Def Cmd Conventions, Sample Function Definition):
	document that &word should be marked explicitly on the @def*
	line if it is to be strongly emphasized.  It is only done
	automatically in TeX and this feature will be removed in the future.

2022-07-29  Patrice Dumas  <pertusus@free.fr>

	Only @r stops upright. Propagate upright in non slanted

	* tp/Texinfo/Convert/LaTeX.pm (%need_known_embrac, _convert):
	embrac is not propagated to \texttt and similar non slanted
	command.  We want to propagate, so use \EmbracMakeKnown{}.
	We do it locally because \textt redefinition, for example
	breaks \hyperref.  To do it more than once, we need to undefine
	symbols set by \EmbracMakeKnown{}.

2022-07-29  Gavin Smith  <gavinsmith0123@gmail.com>

	@r and @t in def line

	* doc/texinfo.tex (\r, \t): Cancel special definitions made
	for ( ) [ ] & on def line.
	* doc/texinfo-tex-test.texi (Definitions): Add example.

2022-07-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_convert): when ignoring
	Top node, generate @float and @anchor \label if in a
	paragraph in main document (or in a float).

2022-07-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_convert): when ignoring
	Top node, generate @float and @anchor \label if directly
	in main document.

2022-07-29  Patrice Dumas  <pertusus@free.fr>

	Fix NO_TOP_NODE_OUTPUT and title page formatting reference

	* tp/Texinfo/Convert/HTML.pm (register_footnote)
	(_convert_printindex_command): really skip footnotes and
	index entries in Top node when NO_TOP_NODE_OUTPUT is set.

	* tp/Texinfo/Convert/HTML.pm (_convert_printindex_command):
	do not output letters that have no index entries associated.

	* tp/Texinfo/Convert/HTML.pm (_default_format_title_titlepage):
	(%available_converter_info, output, convert): replace
	_print_title by format_title_titlepage formatting reference.
	Call format_title_titlepage after setting the
	current_filename, but before starting to format the document.  The
	title based on @titlepage or simpletitle formatted by
	format_title_titlepage is a new global info 'title_titlepage'.

2022-07-29  Gavin Smith  <gavinsmith0123@gmail.com>

	More isolation for @r

	* doc/texinfo.tex (\r):
	Cancel special definition of & used on def line.
	* doc/texinfo-tex-test.texi (Definitions): Add example.

	Patrice reported that input like @r{@b{&rest}} led to an error
	"Argument of & has an extra }", which was due to the need for a
	space to delimit the argument of &.

2022-07-28  Patrice Dumas  <pertusus@free.fr>

	LaTeX @deftype* not in slanted, only in code

	* tp/Texinfo/Convert/LaTeX.pm (%deftype_commands, _convert):
	put @deftype* command names in %deftype_commands.  Do not consider
	@deftype* arguments to be metasyntactic variables in code, but only
	code.

2022-07-28  Patrice Dumas  <pertusus@free.fr>

	LaTeX @def* in code, upright brackets and parentheses

	* tp/Texinfo/Convert/LaTeX.pm (_protect_text): do not protect
	brackets.  It is needed for embrac package to work, but it
	is also useless to protect brackets as we already protect \
	such that there cannot be a situation where [ ] can be interpreted
	as macro optional argument.
	* tp/Texinfo/Convert/LaTeX.pm (_latex_header, _stop_embrac)
	(_restart_embrac_if_needed, _convert): use the embrac package
	to format upright parentheses and brackets on @def* line.  Turn
	off embrac when opening a style commands.
	remove _only_slanted_no_code_contents and associated types.

2022-07-28  Patrice Dumas  <pertusus@free.fr>

	Have @r isolate formatting from surrounding text for fonts

	* tp/Texinfo/Convert/LaTeX.pm (%LaTeX_style_brace_commands),
	tp/Texinfo/Convert/HTML.pm (%css_element_class_styles):
	use \textnormal for @r in LaTeX, and add font-style: normal
	to @r CSS style in HTML.  This allows isolating @r argument
	formatting from surrounding text formatting.

2022-07-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_latex_header, _convert): protect
	only the most problematic characters in image file name.  Use
	\detokenize in argument of \fbox to be sure that the non escaped
	characters in image file name have no special meaning, when TEST
	is set.

2022-07-27  Gavin Smith  <gavinsmith0123@gmail.com>

	@set txidefnamenospace in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (_convert) <@def*>:
	Correct check for whether txidefnamenospace was in effect for
	block.

2022-07-27  Patrice Dumas  <pertusus@free.fr>

	Text for contents for @*ref in section title in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (_convert): if in a section heading
	formatting use \texorpdfstring to provide with a textual
	representation of @*ref, instead of \hyperref, which, understandably
	breaks the contents.

2022-07-27  Gavin Smith  <gavinsmith0123@gmail.com>

	Document EPUB

	* doc/texinfo.texi (Output Formats, Generic Translator texi2any)
	(Invoking texi2any): Document EPUB3 output.

2022-07-27  Patrice Dumas  <pertusus@free.fr>

	Output Top node label in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (_convert): process the command
	normally even if the Top node was seen in order to have the Top
	label added.

	* tp/Texinfo/Convert/LaTeX.pm: update TODO comment for definitions.

2022-07-27  Gavin Smith  <gavinsmith0123@gmail.com>

	texi2any --help

	* tp/texi2any.pl: Fix help message so that default settings
	(including the fill column) are interpolated correctly.

2022-07-27  Gavin Smith  <gavinsmith0123@gmail.com>

	texi2any --epub3

	* NEWS, TODO: Update.
	* tp/texi2any.pl: Add --epub3 to usage message.  Edit
	usage message for format selectors to remove "rather than Info".

2022-07-27  Gavin Smith  <gavinsmith0123@gmail.com>

	texi2any --epub3

	* tp/texi2any.pl: Add an option --epub3, which sets the output
	format to HTML and loads the 'epub3.pm' init file.

2022-07-27  Gavin Smith  <gavinsmith0123@gmail.com>

	@set txidefnamenospace in LaTeX

	* tp/Texinfo/Convert/LaTeX.pm (_convert) <@def*>:
	Implement txidefnamenospace flag to omit space between def
	name and arguments.  This rearranges and condenses the code,
	and uses gdt much less.

2022-07-27  Gavin Smith  <gavinsmith0123@gmail.com>

	Save txidefnamenospace

	* tp/Texinfo/ParserNonXS.pm (_parse_texi) <def command>,
	* tp/Texinfo/XS/parsetexi/handle_commands.c
	(handle_block_command) <def command>: If txidefnamenospace flag
	is set, set 'omit_def_name_space' extra value.
	* tp/t/19def.t (omit_def_space): New test.

2022-07-27  Gavin Smith  <gavinsmith0123@gmail.com>

	@set txidefnamenospace

	* doc/texinfo.tex (\defname):
	Use '@set txidefnamenospace' instead of '@clear txidefnamespace'
	to omit space.  This will ease implementation in the XS parser as
	it means we don't need to have flags set by default.

2022-07-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/LaTeX.pm (_convert) <@def*>:
	Combine code setting strings argument to gdt, for concision.

2022-07-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/LaTeX.pm (_convert) <deftypefnnewline>:
	Remove extra @* command at beginning of line.
	<@def*>: Use { and } for font change instead of \bgroup and \egroup.
	Reformat some code.

2022-07-26  Gavin Smith  <gavinsmith0123@gmail.com>

	@clear txidefnamespace

	* doc/texinfo.tex: Implement txidefnamespace conditional to
	allow omitting a space after a definition name.  This is important
	for m4 where the space is incorrect.  Report from Eric Blake.

2022-07-26  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Conventions): use 'Texinfo processors' instead
	of listing them.
	(@code{@@code}): use @command{texi2any} instead of 'Texinfo processors'
	as the customization variables are specific of texi2any.
	(Inserting Math): mandate the use of \ for math commands.
	(@samp{#line} and @TeX{}): use texi2any instead of makeinfo as there
	is already a reference to a node with texi2any in the reference node name.

	* doc/texinfo.texi: use @command instead of @code for commands.

2022-07-25  Patrice Dumas  <pertusus@free.fr>

	LaTeX cross-ref manual in slanted

	* tp/Texinfo/Convert/LaTeX.pm (_convert): use slanted for book
	argument of @*ref.

2022-07-25  Gavin Smith  <gavinsmith0123@gmail.com>

	Allow @{, @} in @copying block

	* doc/texinfo.tex (\macrobodyctxt): Move call to \usembodybackslash
	to sole calling site.
	(\copying): Call \macrobodyctxt instead of \scanctxt in order to
	change catcodes of { and }.  Use "other" space to find
	"@end copying" string.
	* doc/texinfo-tex-test.texi (Copying and captions): Test @{ and
	@} inside @copying.

2022-07-25  Gavin Smith  <gavinsmith0123@gmail.com>

	texinfo.tex scanning contexts

	* doc/texinfo.tex (\scanctxt):
	Set active backslash.  This means that active backslash is
	used instead of the "other" catcode when scanning arguments to
	@copying and @caption, but this appears not to make a difference
	as the arguments are not being expanded or executed straight away.
	(\scanargctxt): Remove this and replace calls with \scanctxt.

2022-07-25  Gavin Smith  <gavinsmith0123@gmail.com>

	texinfo.tex scanning contexts

	* doc/texinfo.tex (\scanctxt, \scanargctxt, \macrobodyctxt)
	(\macroargctxt, \macrolineargctxt): Simplify slightly by
	setting active newline in \scanctxt and "other" catcode for @,
	as \scanctxt is used by the other macros that need these changes.

	* doc/texinfo-tex-test.texi (Special characters in macro argument):
	New example, as this change may have affected braceless macro
	invocations.

2022-07-25  Patrice Dumas  <pertusus@free.fr>

	LaTeX @def* argument and category formated more like in TeX

	* tp/Texinfo/Convert/LaTeX.pm (_only_slanted_no_code_contents)
	(_convert): convert @def* line in code context, @def* category
	class to @code, and argument to slanted, not in code context,
	not in typewriter.

2022-07-25  Patrice Dumas  <pertusus@free.fr>

	Correct LaTeX output to be slanted when needed, and documentation

	* tp/Texinfo/Convert/LaTeX.pm (register_style_format_command)
	(%style_brace_format_command_new_commands)
	(%LaTeX_style_brace_commands, _latex_header, _convert):
	use slanted for @dfn, @var, as in texinfo.tex.  Also slanted
	for @cite, and, for @cite, not typewriter even in code context.

	* doc/texinfo.texi (@code{@@cite}, @code{@@dfn}): @dfn and
	@cite are slanted, not italic.

2022-07-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\unicodechardefs): Define the
	non-alphanumeric ASCII characters using \char TeX primitive.

2022-07-25  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.tex (\unicodechardefs): Provide definitions
	for many of the ASCII characters.
	(\DeclareUnicodeCharacter): Lower limit for definition
	from U+00A0 to U+0020.

2022-07-24  Patrice Dumas  <pertusus@free.fr>

	No @-commands in file names except for @@, @{ and @}

	* doc/texinfo.texi (@code{@@setfilename}, Using Include Files)
	(@code{@@verbatiminclude}): document that @value and @@, @{, @}
	and associated @-commands such as @atchar are the only @-commands
	allowed on @setfilename, @include and @verbatiminclude lines.

2022-07-24  Patrice Dumas  <pertusus@free.fr>

	* NEWS, tp/Texinfo/Convert/DocBook.pm (_convert),
	doc/texinfo.texi (@code{@@definfoenclose}): in DocBook,
	replace definfoenclose defined @-command by its argument
	as-is (as in LaTeX).  This is consistent with DocBook formatting
	in general, which matches better with printed output.

2022-07-24  Patrice Dumas  <pertusus@free.fr>

	Avoid Texinfo processor name when not needed, prefere texi2any

	* doc/texinfo.texi (Contents, Writing a Menu, Image Syntax)
	(Conditional Commands, Defining Macros, Invoking Macros)
	(Macro Details, HTML CSS, @code{@@documentdescription})
	(Command Contexts): do not name a Texinfo
	processor when features of the language or output expected from
	all the processors are described.
	(Macro Details): put information on @, in the by design limitations,
	not in TeX caveats, as it is also relevant for texi2any.
	(@code{@@alias}): use a similar wording with Macros for @alias
	identifiers.
	(Image Syntax): ignore text on compatibility for Info reader
	not compatible with a feature introduced in 2003.
	(@code{@@definfoenclose}): use @alias in TeX example, in order
	to use Texinfo @-commands and not TeX only commands.
	Remove the second definfoenclose example.
	(Formatting Partial Documents, Updating Nodes and Menus)
	(@command{texi2any} in Emacs, @code{texinfo-format} commands)
	(Texinfo Mode Summary, Running @code{Info-validate})
	(Info Format Indirect Table): use texi2any instead of makeinfo if
	there is already texi2any or a reference to a node with texi2any in
	the reference node name.  Use @command instead of @code for texi2any
	and makeinfo.  For some Emacs related nodes, use texi2any
	preferentially as those nodes are not often updated.
	(@command{texi2any} in Emacs, @command{texi2any} Preferred): prefer
	texi2any in node names.

2022-07-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: tab instead of spaces in git hook

2022-07-24  Gavin Smith  <gavinsmith0123@gmail.com>

	@def* in LaTeX

	* tp/Texinfo/Convert/LaTex.pm (_convert) <def_line>:
	Float category to end of line and typeset in typewriter font, as
	is done in texinfo.tex.

2022-07-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Update for variable renaming.

2022-07-24  Patrice Dumas  <pertusus@free.fr>

	Focus less on Info for Footnote Styles

	* doc/texinfo.texi (Footnote Styles): always use lower case end
	and separate styles names.  Focus less on Info, mix HTML information
	with Info information.
	(HTML Translation): remove the paragraph on Footnote styles, there
	is no reason to emphasize that feature here.  Remove an obsolete
	@ignore glock.
	(@code{@@settitle}): no need to refer to the Texinfo processor
	name.
	(Generating HTML, Escaping to HTML, HTML Splitting): use texi2any
	instead of makeinfo, if texi2any is already used or in a reference
	node name.

2022-07-24  Patrice Dumas  <pertusus@free.fr>

	Document LOCALE_ENCODING

	* doc/texinfo.texi (Other Customization Variables): add an entry
	for LOCALE_ENCODING.

2022-07-24  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi: fix the @detailmenu.

2022-07-23  Patrice Dumas  <pertusus@free.fr>

	Describe output file and encoding early. More semantic @title, etc.

	* doc/texinfo.texi (Minimum, @code{@@setfilename}): state the
	default output file name when the input file name extension is
	described, in 'Minimum'.
	texi2any does not need \input texinfo nor @bye, do not implicitly
	say that.
	(Minimum): give the information on the default encoding here, to
	have this information early in the manual.
	(Minimum, Texinfo File Header): treat @settitle as any other
	preamble @-command.
	(Texinfo File Header, @code{@@documentencoding}): use consistently
	'preamble' and not 'Texinfo preamble'.
	(@code{@@titlepage}, @code{@@title @@subtitle @@author}): insist
	less on the formatting of @title, @subtitle and @author, using wording
	less definitive on the formatting, as it is semantic and formatting
	could change over time or across formats.

2022-07-23  Gavin Smith  <gavinsmith0123@gmail.com>

	INPUT_FILE_NAME_ENCODING, OUTPUT_FILE_NAME_ENCODING documentation

	* doc/texinfo.texi (Other Customization Variables): Elaborate.

2022-07-23  Gavin Smith  <gavinsmith0123@gmail.com>

	INPUT_FILE_NAME_ENCODING, OUTPUT_FILE_NAME_ENCODING documentation

	* doc/texinfo.texi (Other Customization Variables): Update.

2022-07-23  Gavin Smith  <gavinsmith0123@gmail.com>

	Give INPUT_FILE_NAME_ENCODING, OUTPUT_FILE_NAME_ENCODING priority

	* tp/Texinfo/Common.pm (@variable_string_settables):
	Add LOCALE_ENCODING.
	* tp/texi2any.pl: Save locale in LOCALE_ENCODING configuration
	variable.  Do not set INPUT_FILE_NAME_ENCODING or
	OUTPUT_FILE_NAME_ENCODING.  Do not provide a UTF-8 default value
	for the locale encoding.

	* tp/Texinfo/Convert/Converter.pm (encoded_input_file_name),
	* tp/Texinfo/Convert/Utils.pm
	(expand_verbatiminclude, encoded_output_file_name),
	* tp/Texinfo/ParserNonXS.pm (_encode_file_name),
	* tp/Texinfo/XS/parsetexi/input.c (encode_file_name):
	First check INPUT_FILE_NAME_ENCODING, then the document encoding
	if DOC_ENCODING_FOR_INPUT_FILE_NAME is set, and thirdly the locale
	encoding saved in LOCALE_ENCODING.  Likewise for
	OUTPUT_FILE_NAME_ENCODING and DOC_ENCODING_FOR_OUTPUT_FILE_NAME.
	(Note that Texinfo::Common::encode_file_name can be called
	with an undefined encoding argument, so things will likely work
	even if LOCALE_ENCODING ends up being undefined.)

	* tp/Texinfo/XS/parsetexi/input.c (locale_encoding),
	* tp/Texinfo/XS/parsetexi/api.c, tp/Texinfo/XS/parsetexi/Parsetexi.xs
	(set_locale_encoding): New.
	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser):
	Propagate LOCALE_ENCODING setting.

	* tp/Texinfo/XS/parsetexi/input.c
	(locale_input_file_name_encoding, input_file_name_encoding),
	* tp/Texinfo/XS/parsetexi/api.c, tp/Texinfo/XS/parsetexi/Parsetexi.xs
	(set_locale_input_file_name_encoding, set_input_file_name_encoding):
	Rename.

	* tp/tests/formatting/list-of-tests
	(manual_include_accented_file_name_latin1_explicit_encoding)
	(manual_include_accented_file_name_latin1_use_locale_encoding):
	Remove now unnecessary -c DOC_ENCODING_FOR_INPUT_FILE_NAME=0
	setting.
	(non_ascii_test_epub, non_ascii_test_rawtext): Delete duplicate
	COMMAND_LINE_ENCODING setting.

2022-07-23  Patrice Dumas  <pertusus@free.fr>

	Separate information on formatting directly Info files

	* doc/texinfo.texi (Formatting Info files, Unsplit and Tagify):
	Add 'Formatting Info files' at the section level to contain
	information on direct processing of Info files with Emacs.  It
	contains 'Tagifying' and 'Splitting', keeping from 'Tagifying'
	only the part about Tagifying, not the part about Info file
	validation.  Merge 'Unsplit' and 'Tagifying' as 'Unsplit and Tagify'
	in 'Running @code{Info-validate}' keeping only the information
	relevant for Info file validation.

2022-07-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Rename LOCALE_INPUT_FILE_NAME_ENCODING

	* doc/texinfo.texi (Other Customization Variables):
	Rename LOCALE_INPUT_FILE_NAME_ENCODING and
	LOCALE_OUTPUT_FILE_NAME_ENCODING by removing LOCALE_ prefix.

2022-07-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Rename LOCALE_INPUT_FILE_NAME_ENCODING

	* tp/Texinfo/Common.pm (@variable_string_settables):
	Rename LOCALE_INPUT_FILE_NAME_ENCODING and
	LOCALE_OUTPUT_FILE_NAME_ENCODING by removing LOCALE_ prefix.
	All uses updated.

2022-07-22  Patrice Dumas  <pertusus@free.fr>

	Update Emacs related documentation, other changes

	* doc/texinfo.texi (Printing with Emacs, Emacs Shell Printing): add
	the 'Printing with Emacs', rename 'Within Emacs' as 'Emacs Shell
	Printing', and put 'Emacs Shell Printing', 'Texinfo Mode Printing'
	and 'Compile-Command' in 'Printing with Emacs'.
	(Tag and Split Files, Splitting): update based on changes in Emacs,
	thanks to Robert Pluim information, texinfo-format-buffer always create a
	tag table.
	(Splitting): move up to the same level of 'Catching Mistakes'.
	(Installing Dir Entries, GNU Sample Texts): inform that @dircategory
	specify a manual category in addition to being used in Info (dir).
	(Running @code{Info-validate}, @code{Info-validate}): describe the
	use of CHECK_NORMAL_MENU_STRUCTURE to make more checks with makeinfo,
	and that makeinfo never checks that a Next pointer corresponds to
	a Prev pointer.  Write explicitly that a Next pointer always
	corresponding to a Prev pointer is not a strict requirement, but
	for 'standard' documents.

	* doc/texinfo.texi: other minor changes.

2022-07-21  Patrice Dumas  <pertusus@free.fr>

	Move Emacs multiple file updates nodes to Emacs mode node

	* doc/texinfo.texi (Update Multiple Files, Include Files Requirements)
	(Include Files, Other Updating Commands):
	rename '@code{texinfo-multiple-files-update}' as 'Update Multiple
	Files'.  Move 'Update Multiple Files' and 'Include Files Requirements'
	out of 'Include Files' to 'Updating Nodes and Menus' in Emacs
	Texinfo mode description.
	Move information related to texinfo-multiple-files-update from
	'Other Updating Commands' to 'Update Multiple Files'.

	* doc/texinfo.texi (Sample Include File): update and simplify the
	example.

2022-07-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Texinfo Preamble): Rename to "Preamble" and edit.

2022-07-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi
	(@setfilename): "Tell the name" -> "Give the name" in menu entries
	leading to this node.  Do not separate sentences with commas.  Other
	edits for grammar.
	(Titlepage & Copyright Page): "similar with" -> "similar to"
	(small): Remove mention of Texinfo-XML transliteration as not much
	information is given here.

2022-07-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi
	(Nodes): No need to compare cross-references with the "document
	structure".
	(Node Line Requirements): Avoid obscure word "unicity".  Tweak
	reference to node name quoting support.
	(Cross Reference Parts): Consistent referencing to xref targets.

2022-07-20  Gavin Smith  <gavinsmith0123@gmail.com>

	Edit recent changes for grammar and style and make other minor edits.

	* doc/texinfo.texi (Reporting Bugs, Histroy, Minimum, @settitle)
	(Image Syntax, @dmn, Inserting Math, Inserting Unicode, Line Breaks)
	(@- @hyphenation, @w, @documentencoding, @need)
	(Defining New Texinfo Commands, @definfoenclose, Hardcopy with TeX)
	(Texinfo Mode Printing, Command List, Tips, @setchapternewpage)
	(@headings, Custom Headings, A4 Paper): Various fixes:

	- "Cause TeX to" was changed in some places to "Cause to" but the
	  result of this was ungrammatical in many places.
	- Do not use commas to separate sentences.
	- non printed -> non-printed

	(Hardcopy with TeX): Add anchor for old name.

	* NEWS: Remove entry about generating menus as this is not a
	new feature.

2022-07-20  Patrice Dumas  <pertusus@free.fr>

	Input/output encoding is used irrespective of @documentencoding

	* doc/texinfo.texi (@code{@@documentencoding}): the output of
	encoding information does not depends on @documentencoding being
	set.  Emphasize more than UTF-8 is the default encoding.
	Explain what --enable-encoding does for LaTeX.
	Correct the description for XML and DocBook, they are affected by
	@documentencoding and --enable-encoding.

	* doc/texinfo.texi (Invoking @command{texi2any}), tp/texi2any.pl:
	document what --enable-encoding does for HTML, TexinfoXML and DocBook.

2022-07-20  Patrice Dumas  <pertusus@free.fr>

	Describe @-commands roles in Command List, not formatting

	* doc/texinfo.texi (Command List): explain the role of the
	@-commands, not the formatting.  Avoid details on output
	format specificities when it is not crucial for the understanding
	of the @-command role.  Move or duplicate some information to the main
	nodes describing some @-commands.  Update some @-commands descriptions.
	(Command Contexts): explain @shortcaption context along with
	@caption.

2022-07-20  Patrice Dumas  <pertusus@free.fr>

	No HTML features list, explain how HTML evolves

	* doc/texinfo.texi (HTML Translation): do not list explicitly
	HTML features used, but rather explain how makeinfo implements
	latest standard features while trying to be backward compatible
	as best as possible too.

2022-07-20  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (@code{@@setfilename}): state clearly that
	@setfilename is optionnal, and give some example where it could
	still be relevant.  Add an @anchor{Setting the Output File Name}
	and use it everywhere the reference is to the output fine name set,
	be it from @setfilename or from the input file name, and not
	directly about the @setfilename @-command.
	(@code{@@settitle}): advertise NO_TOP_NODE_OUTPUT as the best way
	to get a title similar with printed manuals in HTML.
	(Node Line Requirements): readd a sentence on constraints on
	spaces in menu entry node names, after testing that what matters
	are the internal spaces.
	(Menu Location): remove obsolete @ignore'ed block text.
	(Floats, @code{@@float}, @code{@@listoffloats}): information on
	floats with LaTeX.
	(Inserting Accents): adapt for changes in default encoding.
	(HTML Customization Variables): move USE_TITLEPAGE_FOR_TITLE and
	SHORT_TOC_LINK_TO_TOC to HTML Customization Variables.
	Explain why INDEX_SPECIAL_CHARS_WARNING is set to false in
	INDEX_SPECIAL_CHARS_WARNING explanation, refer to
	INDEX_SPECIAL_CHARS_WARNING in INFO_SPECIAL_CHARS_WARNING.
	(Generating HTML): mention that initialization files can be used
	to customize even more the HTML output. Give example of such files
	in Texinfo.  Link to the draft customization_api manual.
	(HTML CSS): @ignore text about texinfo-bright-colors.css as it
	is not in Texinfo anymore.

	* doc/texinfo.texi: misc other changes, in particular remove
	information on Texinfo XML transliteration when it is simply said that
	a transliteration is produced.

2022-07-18  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi: add additional information on DocBook output.
	(Generating HTML): remove the sentence saying that DocBook and
	XML output are not described in detail, they are correctly described.

2022-07-18  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (@command{latex2html} Customization Variables):
	write only once that the customization variables are only relevant
	if using latex2html.

2022-07-18  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%default_main_program_command_line_options):
	add 'SILENT' for --silent for completeness.  It is not used anywhere.

2022-07-18  Patrice Dumas  <pertusus@free.fr>

	Simplify node names information, add more on explicit pointers

	* doc/texinfo.texi (Node Line Requirements): simplify information
	on node names requirements to match with current implementation
	and avoid implementation details.
	(First Node): Top Prev node is not set in the usual case.
	(Texinfo Document Structure, Node Menu Illustration): move the
	information from the Note in Node Menu Illustration to
	Texinfo Document Structure to explain better that Next and Prev
	at the same hierarchical level earlier.  Remove the Note as it
	is redundant with other explanations (before and after).
	Be more explicit in the examples on the differences between
	automatic and explicit node pointers.  Add a paragraph to explain
	that technically explicit node pointers can lead anywhere, but
	that it is a bad idea to use that feature.
	(Menus): be more explicit that menus need not to be written in
	a hierarchically organized manual with automatic pointers unless
	specific formatting is wanted.

2022-07-17  Patrice Dumas  <pertusus@free.fr>

	Document float labels and anchors are used like nodes, other changes

	* doc/texinfo.texi (Nodes, Node Line Requirements, References)
	(Cross Reference Parts, @code{@@anchor})
	(HTML Xref Node Name Expansion): document systematically
	that anchor and float labels are equivalent with
	node names and unicity is for all of those names usable
	as cross references locations.
	(Node Names): instead of telling never to change a node name,
	propose to replace by an anchor here too, as in the @anchor
	section.
	(Nodes, Writing a Node, Writing a Menu): recommend less
	prominently the usual structuring following the sectioning
	structure, as other structures such as guide/topic structure
	would be relevant.
	(Node Line Requirements): link to INFO_SPECIAL_CHARS_QUOTE
	to state that the limitation in node names will be removed some day.

2022-07-17  Patrice Dumas  <pertusus@free.fr>

	Documentation: LaTeX output, move Emacs related info, other changes

	* doc/texinfo.texi: edit to use printed output instead of @TeX{}
	if also relevant for LaTeX, and add specific informations
	for LaTeX output.
	(Hardcopy with @TeX{}): rename Hardcopy as Hardcopy with @TeX{}.
	(Minimum, Emacs Editing, Sample Include File)
	(Invoking @command{texi2any}): discourage using .tex as extension
	for Texinfo documents, encourage .texi.  Remove duplicate
	information on extensions in Emacs Editing node.
	(Texinfo File Header, Writing a Node, Texinfo Mode Printing)
	(Updating Commands, @code{@@smallbook}, Preferred): remove or
	move Emacs specific information.  Also recall that using automatic
	pointers and menus is possible and usually better.
	(Start of Header, End of Header): merge as Start and End of Header
	and put after Texinfo Preamble node.
	(Reporting Bugs): link to GNU Coding Standards
	instead of Emacs manual, and propose diff -u too.
	(Output Formats, Short Sample, The Top Node, Master Menu Parts)
	(Nodes, @code{@@top} Command, Fonts, PDF Output): remove some
	text with erroneous, redundant or useless information.
	(Adding Output Formats): link to tp_api.
	(History): update on Multilingual support, to take into account
	that there is now C again.  Add a sentence to describe that there
	was no back-end contribution.
	(Texinfo Document Structure, Node Menu Illustration): do not
	present the usual structuring following the sectioning structure
	as the only one recommended.  Other structures (for example the
	guide/topic structure of the Mallard language) would be equally
	relevant.

	* tp/texi2any.pl, doc/texinfo.texi (Invoking @command{texi2any}):
	add --iflatex and --no-iflatex.

	* doc/texinfo.texi (Menus), NEWS: document that a menu in Info output
	is automatically added if there is no @menu at all in a node with
	automatic directions.

2022-07-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/ParagraphNonXS.pm (set_space_protection),
	* tp/Texinfo/XS/xspara.c (xs_set_space_protection):
	Remove code making end of sentence up to two spaces as it is not
	clear that this is necessary or correct.

2022-06-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Change all Wikipedia links to use https.
	From Tzvetelin Katchov <katchov@gnu.org>.

2022-06-04  Patrice Dumas  <pertusus@free.fr>

	Document strict API use in comments when the API is not used

	* tp/Texinfo/Convert/HTML.pm: use # API info: comments to
	document what strict API use would have been when the API is not
	used for speed.

	* doc/customization_api.texi (Init File Basics, Basic Formatting
	Customization): document # API info: comments. Document that
	customized format_protect_text function may not be called everywhere.

2022-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	Cast for isalpha and isalnum arguments

	* Texinfo/XS/parsetexi/end_line.c (end_line_starting_block)
	(end_line_misc_line),
	* Texinfo/XS/parsetexi/parser.c (read_command_name):
	Cast arguments to isalnum and isalpha to unsigned char.

2022-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	New XS override

	* tp/Texinfo/Convert/HTML.pm (_convert_text, _entity_text):
	Split out _entity_text, used for USE_ISO.

	* tp/Texinfo/XS/MiscXS.xs,
	* tp/Texinfo/XS/misc.c (xs_entity_test): New function.
	* tp/Texinfo/Convert/HTML.pm: Override _entity_text
	with XS implementation.

2022-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	Joint tree transformation

	* tp/Texinfo/Common.pm (html_joint_transformation):
	Peform both the 'move_index_entries_after_items' and the
	'relate_index_entries_to_table_entries_in_tree' transformations
	together.
	* tp/texi2any.pl: Use this for HTML and also LaTeX.

	This is much faster because of the slowness of recursively
	traversing the parse tree with Perl subroutine calls.  It means
	we traverse the tree one fewer time.

2022-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_convert_text):
	Call _default_format_protect_text without method call syntax.

2022-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	texi2any --html performance improvements

	* tp/Texinfo/Convert/HTML.pm
	(html_attribute_class): Change a method call to a regular call.
	(_protect_class_name): Call _default_format_protect_text directly.
	(_default_format_navigation_panel):
	Access 'formatting_function' hash instead of calling
	'formatting_function' function.

2022-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (html_attribute_class):
	Hard-code access to 'conf' array rather than calling get_conf.

2022-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_conversion_contents):
	Simplify and inline at call sites.

2022-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	Inline some method calls

	* tp/Texinfo/Convert/HTML.pm (_convert_text):
	Inline calls to in_verbatim, in_raw, in_math, in_upper_case and
	in_non_breakable_space.

2022-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	Override _default_format_protect_text instead

	* tp/Texinfo/XS/misc.c, tp/Texinfo/XS/MiscXS.xs
	(xs_xml_protect_text, xs_default_format_protect_text): Rename and
	also handle form feeds.
	* tp/Texinfo/Convert/HTML.pm: Override _default_format_protect_text.
	* tp/Texinfo/Convert/Converter.pm: Do not override xml_protect_text.
	* tp/texi2any.pl: Call import method on dynamically loaded modules.

2022-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	texi2any --html performance improvement - XS override

	* tp/Texinfo/XS/MiscXS.xs,
	* tp/Texinfo/XS/misc.c (xs_xml_protect_text): New function.
	* tp/Texinfo/Convert/Converter.pm: Override xml_protect_text
	with XS implementation.

2022-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	texi2any --html performance improvement

	* tp/Texinfo/Convert/HTML.pm (_convert_text):
	Call _default_format_protect_text directly instead of via
	formatting_function, as this is a heavily used function.

	Note: init/html32.pm overrode this function so as not to
	use the &quot entity, so this likely is ineffectual now.

2022-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	texi2any --html performance improvement

	* tp/Texinfo/Convert/HTML.pm (_convert_text):
	Hard-code access to 'conf' array rather than calling
	get_conf method.  This is a heavily used function.
	Profiled with Devel::NYTProf.

2022-06-03  Gavin Smith  <gavinsmith0123@gmail.com>

	texi2any --html performance improvement

	* tp/Texinfo/Convert/HTML.pm (_convert): Cache debug flag
	as get_conf was being called many times.  Profiled with
	Devel::NYTProf.

2022-06-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (HTML Translation): Edit and trim.

2022-06-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Minor manual modernizations

	* doc/texinfo.texi
	(Output Formats): Remove list of browser names.
	(HTML Translation): Remove reference to Lynx, Emacs W3, and
	HTML 1.0.  (Tzvetelin Katchov suggested updating this list.)
	(Output Formats, PDF Output): Remove words "some years ago".
	(Invoking texi2any): Capitalize Cascading Style Sheets.

2022-06-03  Tzvetelin Katchov <katchov@gnu.org>  (tiny change)

	* doc/texinfo.texi (Formay with texi2dvi): remove extra space

2022-06-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Link updates in manual.

	* doc/texinfo.texi
	(Output Formats): Remove obsolete link to XHTML2 Working Group
	page on w3.org.
	(PDF Output): Update link to xpdf homepage.

	Reports from Tzvetelin Katchov <katchov@gnu.org>.

2022-06-01  Patrice Dumas  <pertusus@free.fr>

	Same empty expansion check in perl and XS parser

	* tp/Texinfo/ParserNonXS.pm (_check_empty_expansion, _parse_texi):
	new function _check_empty_expansion based on XS parser function.

2022-06-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Info.pm (output): add missing second
	argument of create_destination_directory().

2022-06-01  Patrice Dumas  <pertusus@free.fr>

	C locale for remaining tests

	* tp/init/tex4ht.pm (tex4ht_process_format): use already
	encoded file name on the command line.

	* tp/tests/many_input_files/input_dir_non_ascii.sh,
	tp/tests/many_input_files/output_dir_file_non_ascii.sh,
	tp/tests/many_input_files/output_dir_non_ascii.sh,
	tp/tests/many_input_files/tex_l2h_output_dir_non_ascii.sh,
	tp/tests/many_input_files/tex_t4ht_output_dir_non_ascii.sh:
	Set LC_ALL to C and LANG to en, both previously
	en_US.UTF-8 (last changed on 2022-02-14).  Set extra variables
	on tests to use UTF-8 encoding where required.
	* tp/tests/tex_html/list-of-tests: Set extra variables on
	tests to use UTF-8 encoding where required.

2022-05-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Documentation of whitespace

	* doc/texinfo.texi (Conventions): Consolidate treatment
	of whitespace characters expanding on ASCII vs. Unicode
	spaces and comment out some excessive detail about
	form feeds.

2022-05-31  Gavin Smith  <gavinsmith0123@gmail.com>

	C locale for some tests

	* tp/tests/run_parser_all.sh: Set LC_ALL to C and LANG to en,
	both previously en_US.UTF-8 (last changed on 2022-02-14).
	* tp/tests/formatting/list-of-tests: Set extra variables on
	tests to use UTF-8 encoding where required.

2022-05-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Consistent test results

	* tp/Texinfo/XS/parsetexi/api.c (element_to_perl_hash):
	Output empty contents array for ET_menu_entry_node, to
	be consistent with pure Perl module.

2022-05-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex: Give vertical tab the category code
	of a space.

2022-05-30  Patrice Dumas  <pertusus@free.fr>

	* tp/tests/many_input_files/tex_l2h_output_dir_non_ascii.sh,
	tests/many_input_files/tex_t4ht_output_dir_non_ascii.sh:
	Change LC_ALL and LANGUAGE from C.UTF-8 to en_US.UTF-8,
	Gavin idea.

2022-05-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Rename LOCALE_OUTPUT_ENCODING_NAME to MESSAGE_ENCODING. 

	* tp/Texinfo/Common.pm (@variable_string_settables):
	Rename LOCALE_OUTPUT_ENCODING_NAME to MESSAGE_ENCODING. 
	* NEWS, doc/texinfo.texi: Update.

2022-05-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Rename DATA_INPUT_ENCODING_NAME to COMMAND_LINE_ENCODING.

	* NEWS, doc/texinfo.texi: Do the needful.

2022-05-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Rename DATA_INPUT_ENCODING_NAME to COMMAND_LINE_ENCODING.

	* tp/Texinfo/Common.pm (@variable_string_settables):
	Rename DATA_INPUT_ENCODING_NAME to COMMAND_LINE_ENCODING.

2022-05-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Mention DATA_INPUT_ENCODING_NAME.

2022-05-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Remove link to old SVN repository in comment.

2022-05-08  Gavin Smith  <gavinsmith0123@gmail.com>

	Line breaking fix in test suite

	* tp/tests/coverage_macro.texi:
	Add blank line in attempt to get consistent line breaking
	decisions on Solaris, where wcwidth returns 2 for more characters.

2022-05-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/plaintext_tests.t (non_break_spaces):
	Skip test on older Perl.

2022-05-07  Gavin Smith  <gavinsmith0123@gmail.com>

	Reinstate empty contents

	Reverse the following change, from 2022-04-20.

	* tp/Texinfo/Common.pm (parse_node_manual), tp/Texinfo/ParserNonXS.pm
	(_isolate_last_space, _parse_node_manual, _end_line, _parse_texi):
	do not set contents for type 'menu_entry_name' and 'menu_entry_node'
	if empty.

	With this reversion, I have run the test suite to pass both under
	TEXINFO_XS=omit and TEXINFO_XS_PARSER=0.

	There were various test failures with TEXINFO_XS=omit and
	TEXINFO_XS_PARSER=0 due to inconsistent results.

	Where an element can have contents, it will be simplest if
	it always has the contents element, as in the C code there
	is no distinction between an empty contents array and no
	contents at all.

2022-05-07  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix segfault for empty contents

	* tp/Texinfo/XS/misc.c (xs_merge_text): Check if the
	contents array was defined.
	* tp/Texinfo/XS/end_line.c (parse_node_manual): Remove confusing
	comment.

	Since recent change, there could be a segfault under
	TEXINFO_XS_PARSER=0 due to the contents array not being defined.

2022-04-20  Patrice Dumas  <pertusus@free.fr>

	Fix both parsers to do the same tree with empty menu entry nodes

	* tp/Texinfo/XS/parsetexi/menus.c
	(register_extra_menu_entry_information): to determine that there
	is no node content returned by parse_node_manual(), check that
	manual_content and node_content fields are both null, as
	parsed_entry_node is never null.  parsed_entry_node cannot be null
	because the return of parse_node_manual() can be used in nodes_manuals
	which is null delimited.

	* tp/Texinfo/Common.pm (parse_node_manual), tp/Texinfo/ParserNonXS.pm
	(_isolate_last_space, _parse_node_manual, _end_line, _parse_texi):
	do not set contents for type 'menu_entry_name' and 'menu_entry_node'
	if empty.

	* tp/Texinfo/ParserNonXS.pm (_register_extra_menu_entry_information):
	do not call Texinfo::Convert::NodeNameNormalization::normalize_node
	to check if node is empty, simply check that it has contents as is
	done in the XS Parser.

2022-04-19  Gavin Smith  <gavinsmith0123@gmail.com>

	vertical tab

	* tp/Texinfo/XS/parsetexi/parser.c
	(whitespace_chars, whitespace_chars_except_newline):
	Add \v in order to be consistent with \s regex class in
	newer Perl.  From Patrice.

2022-04-18  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (associate_internal_references): check
	reference only if there is a 'node_content'.

2022-04-18  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove special treatment of \r in paragraph formatter

	* tp/Texinfo/Convert/ParagraphNonXS.pm (add_text),
	* tp/Texinfo/XS/xspara.c (xspara_add_text)
	<space not at end of sentence>: Remove special handling of
	carriage return.  The code is somewhat hard to follow and it
	should be unlikely that a carriage return makes it to this code.

2022-04-18  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (new_node_menu_entry)
	(new_complete_node_menu): handle node with {'extra'}->{'node_content'}
	undef, as happens for node with empty argument.

2022-04-18  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/ParagraphNonXS.pm (add_text): consider \r
	to end a line, as in the XS code.

2022-04-17  Patrice Dumas  <pertusus@free.fr>

	Avoid duplication in @detailmenu master menu output by pod2texi

	* Pod-Simple-Texinfo/pod2texi.pl (_fix_texinfo_tree): call
	Texinfo::Structuring::associate_internal_references() to have
	'normalized' keys set for menu entries.

	* tp/Texinfo/Transformations.pm
	(_normalized_entry_associated_internal_node): add a function for
	similar code.

	* tp/Texinfo/ParserNonXS.pm (_register_extra_menu_entry_information):
	no need to delete menu entry 'normalized' as it is not set.

	* tp/Texinfo/Structuring.pm, tp/Texinfo/ParserNonXS.pm: minor changes
	in code style, comments and POD.

2022-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	ASCII_PUNCTUATION for some tests

	* tp/tests/layout/list-of-tests
	(formatting_info, formatting_plaintext): Set ASCII_PUNCTUATION for
	these tests in an attempt to make line breaking decisions more
	consistent across platforms in the results.

2022-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Change locale for tp/tests

	* tp/tests/many_input_files/input_dir_non_ascii.sh,
	* tp/tests/many_input_files/output_dir_file_non_ascii.sh,
	* tp/tests/many_input_files/output_dir_non_ascii.sh:
	Change LC_ALL and LANGUAGE from C.UTF-8 to en_US.UTF-8.

2022-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Change locale for tp/tests

	* tp/tests/run_parser_all.sh: Change LC_ALL and LANGUAGE
	from C.UTF-8 to en_US.UTF-8.  This is an attempt to make the
	tests run on more systems.  On one system without a C.UTF-8
	locale, Perl printed:

	  perl: warning: Setting locale failed.
	  perl: warning: Please check that your locale settings:
	         LC_ALL = "C.UTF-8",
	         LC_COLLATE = "",
	         LC_CTYPE = "",
	         LC_MESSAGES = "",
	         LC_MONETARY = "",
	         LC_NUMERIC = "",
	         LC_TIME = "",
	         LANG = "en_US.UTF-8"
	      are supported and installed on your system.
	  perl: warning: Falling back to the standard locale ("C").

	The previous values were given on 2022-02-22 (not in ChangeLog).

2022-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Conditionally skip a test

	* tp/t/test_utils.pl (test): Check for 'skip' setting in options
	and skip test if it is set.
	* tp/t/21multitable.t (multitable_figure_space): Skip test
	for Perl older than 5.14.

2022-04-14  Patrice Dumas  <pertusus@free.fr>

	Improve test results optional output files

	* tp/Texinfo/Convert/HTML.pm (css_get_info): handle undef
	'css_rule_lines' and 'css_import_lines'.

	* tp/t/test_utils.pl: dynamic CSS in HTML preamble.  Other
	cleanups.

2022-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid divergent test results due to wcwidth

	* tp/t/plaintext_tests.t,
	* t/input_files/punctuation_small_case_accents_latin1.texi,
	* t/input_files/punctuation_small_case_accents_us_ascii.texi,
	* t/input_files/punctuation_small_case_accents_utf8.texi:
	Add extra blank lines to tests to avoid divergent line wrapping
	on Solaris due to use of en and em dashes in output.

2022-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid divergent test results due to wcwidth

	* tp/t/02coverage.t (commands),
	* tp/t/03coverage_braces.t (abbr_acronym):
	Add blank lines in test to avoid divergent line wrapping on Solaris,
	where wcwidth returns 2 instead of 1 for the UTF-8 en dash.  This
	sequence occurs more often in the test results than before since
	ASCII_PUNCTUATION changes on 2021-12-29.

2022-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	unsigned char for isspace

	* tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line),
	* tp/Texinfo/XS/xspara.c (xspara_add_text):
	Cast argument to isspace to unsigned char.  This avoids varying
	test results on Solaris 10 and 11.

2022-04-12  Gavin Smith  <gavinsmith0123@gmail.com>

	CONVERT_TO_LATEX_IN_MATH

	* tp/Texinfo/Common.pm (@variable_string_settables):
	Rename CONVERT_TEXINFO_MATH_TO_LATEX to CONVERT_TO_LATEX_IN_MATH.
	* NEWS, doc/texinfo.texi: Update.

2022-04-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* install-info/tests/defs.in, util/texi2dvi:
	Assign EGREP variable using quotes for better
	shell portability.

2022-04-11  Gavin Smith  <gavinsmith0123@gmail.com>

	grep instead of List::Util::any

	* tp/Texinfo/Transformations.pm (_reassociate_to_node):
	Use grep operator instead of List::Util::any in an attempt
	to be compatible with older Perls.  Reverses change on
	Mon Jan 3 21:15:21 2022 +0100 (not in ChangeLog).

2022-04-11  Gavin Smith  <gavinsmith0123@gmail.com>

	use re '/a';

	* tp/Texinfo/ParserNonXS.pm, tp/Texinfo/Convert/Plaintext.pm, 
	tp/Texinfo/Convert/ParagraphNonXS.pm, tp/Texinfo/Convert/HTML.pm:
	Add a use directive turning on /a flag for regexes.  Make it
	conditional on using at least Perl 5.14, when this flag was
	introduced. Remove /a flags from regexes throughout.
	* tp/Texinfo/Convert/HTML.pm (_convert_printindex_command):
	Use \p{Alpha} instead of [[:alpha:]].
	* tp/Texinfo/Convert/Plaintext.pm (_convert):
	Use \p{Upper} instead of [[:upper:]].

	This is intended to increase compatibility with older Perls.

2022-04-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (The Top Node):
	Avoid unnecessary non-ASCII quotes in Info index.

2022-04-11  Gavin Smith  <gavinsmith0123@gmail.com>

	wrapper for asprintf

	* info/util.c (xasprintf): New function to wrap asprintf and
	avoid compiler warnings due to unused return values.  Use everywhere.

2022-04-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi
	(HTML Customization Variables) <CONVERT_TEXINFO_MATH_TO_LATEX>:
	Elaborate slightly.

2022-04-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Invoking texi2any)
	(Customization Variables and Options, Other Customization Variables):
	Refer to the program consistently as texi2any rather than makeinfo
	throughout the chapter.

2022-04-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Texinfo Mode Summary): Remove text implying
	that makeinfo is written in C.

2022-04-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Using texinfo-show-structure):
	Remove duplicate index entry.

2022-04-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Using texinfo-show-structure, Using occur):
	Subordinate to Showing the Structure.
	(Catching Mistakes): Delete extraneous text.

2022-04-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Info Formatting): Remove documentation
	that is duplicated elsewhere.

2022-04-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Creating an Info File):
	Remove node.  Replace links to this node.
	(makeinfo in Emacs, texinfo-format commands):
	Subordinate to Info Formatting node in appendix.

2022-04-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Comment out credit for cover art, which
	is not included in this version of the manual.

2022-04-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Tag and Split Files): Move up a level.
	(Info Formatting): Remove an unnecessary cross-reference.

2022-04-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Catching Mistakes): Lower all section
	commands a level and remove use of @lowersections/@raisesections.

2022-04-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Batch Processing):
	Move node to Texinfo mode appendix.
	(Creating an Info File): Remove unnecessary cross-reference.

2022-04-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (makeinfo Advantages): Remove node.
	(Info Formatting): Move some text here.
	(Printing): Delete a useless comment.

2022-04-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex: Remove or disambiguate many duplicate
	index entries to ease lookup.
	(Invoking texi2any): List latex as a permissible value of
	TEXINFO_OUTPUT_FORMAT.

2022-04-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Add note to check for index duplicates.

2022-04-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Conditional Commands, Conditional Not Commands)
	(Raw Formatter Commands, Inline Conditionals):
	Document conditionals for LaTeX.
	(Raw Formatter Commands): Revise node.  Remove duplicate @ifhtml etc.
	index entries.

2022-04-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (@iflatex, @ifnotlatex, @latex): Implement.

2022-04-10  Gavin Smith  <gavinsmith0123@gmail.com>

	<code> for @verb

	* tp/Texinfo/Convert/HTML.pm (%style_attribute_commands):
	Output @verb with <code> instead of <tt>.
	* NEWS: Mention.

	@verb is a rarely used command and this was one of the last uses
	of non-HTML5 tags.

2022-04-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Fonts): More on possible uses for @t.
	Comment out rationale for longer command names.

2022-04-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Revise.
	* TODO: Remove entry about reference card creation as nobody is
	likely to ask about this.

2022-04-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (_convert), tp/Texinfo/Convert/HTML.pm
	(_convert_heading_command), tp/Texinfo/Convert/LaTeX.pm (output)
	(_convert): stop skipping node Top output at a @part.

	* tp/Texinfo/Convert/DocBook.pm (_convert): process non output commands
	when skipping Top node, in particular put the same lang on top of
	lang_stack.

2022-04-09  Gavin Smith  <gavinsmith0123@gmail.com>

	user- prefix for @example args

	* tp/Texinfo/Convert/HTML.pm (_convert_preformatted_command):
	Prefix HTML class name from @example arg with 'user-'.
	* doc/texinfo.texi (@example): Document.
	* NEWS: Edit and update.

2022-04-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\domultitable): Zero \rightskip but keep
	stretch.  This is intended to allow @multitable to be nested
	inside @quotation, the formatting of which was broken by change
	on 2022-04-04 for @raggedright.  Report from Werner.
	* doc/texinfo-tex-test.texi (@multitable): Add test case.

2022-04-08  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid undefined hash key access in get_file_information

	* tp/Texinfo/Convert/HTML.pm (get_file_information):
	Account for the possibility that there is no current filename.
	This is the case when node redirection pages are being output.
	Use filename argument as intended.

	Many errors were printed when "make -C doc wwwdoc-build" was done.

2022-04-08  Gavin Smith  <gavinsmith0123@gmail.com>

	Msys2 OS detection in texi2dvi

	* util/texi2dvi: Do not set MSYSTEM via OSTYPE environment
	variable before calling uname, as this is not working on
	Msys2.  Reverses change on 2015-09-23.  Instead, check the value of
	OSTYPE directly as well as calling uname.

	Report and testing by Tomas Kalibera <tomas.kalibera@gmail.com>.

2022-04-08  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix MathJax referencing in docs build.

	* doc/Makefile.am (wwwdoc-build): Set MATHJAX_SCRIPT and
	MATHJAX_SOURCE to absolute URLs rather than relative paths.
	This means that gendocs.sh produces working references in
	both split and non-split output.
	* README-hacking: Update.

2022-04-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Mention infog subdirectory.

2022-04-04  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix @multitable inside @raggedright

	* doc/texinfo.tex (\domultitable): Do not set \rightskip to 0pt
	as this interferes with the \rightskip setting in @raggedright.
	* doc/texinfo-tex-test.texi (@multitable): Add test case.

	Werner Lemberg reported that @multitable inside @raggedright led
	to 'Underful \hbox' warnings.

2022-04-04  Patrice Dumas  <pertusus@free.fr>

	Update po files

	* po/Makevars (XGETTEXT_OPTIONS): add --from-code=UTF-8 for
	tp/init/epub3.pm which has still an encoded character in a comment.

	* tp/init/epub3.pm: remove an encoded character in a comment.

2022-04-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* po/POTFILES.in: Update.

2022-03-20  Patrice Dumas  <pertusus@free.fr>

	@part without sectioning command associated with following node

	* tp/Texinfo/ParserNonXS.pm (_end_line),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line),
	tp/Texinfo/Convert/DocBook.pm (_convert), tp/Texinfo/Convert/HTML.pm
	(_convert_heading_command), tp/Texinfo/Convert/LaTeX.pm (output)
	(_convert), tp/Texinfo/Structuring.pm (split_by_node):
	Add extra key 'node_preceding_part' to a @part tree element
	followed directly by a node and 'part_following_node' to the node.
	When ignoring Top node content use part_following_node information
	to group a part before a node with the node.
	In split_by_node() associate a part with the following sectioning
	command or node tree unit.

2022-03-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* TODO.HTML: Update to state location where HTML files are
	sought.

2022-03-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (xref_file_p): Remove unused.

2022-03-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (list_dir_to_abs):
	Remove unused function (not used since the code was added
	in 2005-11-18.)

2022-03-18  Gavin Smith  <gavinsmith0123@gmail.com>

	Handle index entries beginning (

	* info/scan.c (scan_reference_label): If label is in an index, do
	not check for a bracketed filename.  This supports index entries
	beginning with a '(' character.  This should allow practically
	any character to appear anywhere in an index entry.
	* info/t/index-paren.sh: New test.
	* info/t/README: Edit.

2022-03-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Move functions between files

	* info/scan.c, info/util.c (ansi_escape, printed_representation):
	Move to util.c.

2022-03-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Rename info/info-utils.c

	* info/info-utils.c, info/scan.c: Rename file.

2022-03-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Split info/info-utils.c

	* info/info-utils.c, info/util.c:
	(file_buffer_of_window, node_printed_rep, filename_non_directory)
	(internal_info_node_p, name_internal_node, get_internal_info_window)
	(text_buffer_init, text_buffer_free, text_buffer_vprintf)
	(text_buffer_alloc, text_buffer_space_left, text_buffer_iconv)
	(text_buffer_add_string, text_buffer_fill, text_buffer_add_char)
	(text_buffer_printf, fncmp):
	New file util.c to hold some of the functions from info-utils.c.
	Include new header file where required.

2022-03-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Move functions

	* info/info-utils.c, info/session.c
	(struct info_namelist_entry, info_namelist_add, info_namelist_free):
	Move to session.c as this is the only place these are used.

2022-03-13  Gavin Smith  <gavinsmith0123@gmail.com>

	Top node ends at @part.

	* doc/texinfo.tex (\ignorenode): Stop ignoring Top node at a
	@part line, in case one immediately follows the Top node.  Report
	from Patrice.

2022-03-13  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (convert, output): call convert_tree()
	instead of convert_document_sections().

2022-03-13  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (_convert): start a sectioning
	command associated with both a part and a node with the first
	appearing.  Do not add partinfo if the part is associated with a
	sectioning command, the content of the part will be at the beginning
	of the sectioning command.  This is erroneous to have non empty part
	anyway.

2022-03-12  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (_convert): open the @path associated
	to a sectioning command right before opening the sectioning command.

2022-03-12  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (convert, output, _convert): close
	sectioning command where the tree element is closed, not based on
	the unit element, in order to have the top level elements processed
	in the right order.
	Fix and simplify the code related to in_skipped_node_top, to not
	output Top node.

2022-03-12  Patrice Dumas  <pertusus@free.fr>

	Do not output Top node in DocBook

	* NEWS, doc/texinfo.texi (The Top Node, HTML Customization Variables)
	(Other Customization Variables), tp/Texinfo/Convert/DocBook.pm
	(%defaults, _convert): do not output Top node in DocBook.  If
	NO_TOP_NODE_OUTPUT is set to false, the Top node is output.  This
	possibility may be temporary.

2022-03-11  Patrice Dumas  <pertusus@free.fr>

	Do not output text before node or sections in DocBook

	* NEWS, doc/texinfo.texi (First Node), tp/Texinfo/Convert/DocBook.pm
	(_convert): do not output text before the first @node or sectioning
	command, in 'before_node_section' element type.

2022-03-11  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi @code{@@settitle}): no title in the
	document anymore in the default case in HTML.

2022-03-11  Patrice Dumas  <pertusus@free.fr>

	* NEWS, doc/texinfo.texi (HTML Customization Variables)
	(Other Customization Variables), tp/Texinfo/Convert/HTML.pm
	(%defaults, output, _set_variables_texi2html): set SHOW_TITLE
	to undef, and have NO_TOP_NODE_OUTPUT set SHOW_TITLE to 1
	if SHOW_TITLE is undef.  Set USE_TITLEPAGE_FOR_TITLE to 1.
	That way, there is no title in the default case, as it is
	redundant with the @top header, there is a title only if
	NO_TOP_NODE_OUTPUT is set.

2022-03-10  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Other Customization Variables): expand
	on NO_TOP_NODE_OUTPUT corresponding more to book formatting
	if set, or to browsing if not set.

2022-03-10  Patrice Dumas  <pertusus@free.fr>

	* tp/tests/Makefile.am (input_file_names_recoded_stamp.txt):
	record in the file if the recoding succeeded or failed.

	* tp/tests/run_parser_all.sh: if 'Need recoded file names'
	appears on a test line, skip the test if the recoding of
	file names failed.

	* tp/tests/run_parser_all.sh: if a prerequisite for a test is
	missing, such as not recoded file names needed, or latex2html
	or tex4ht not present, and only one test is run, return 77 to
	have the test marked as skipped instead of succeeding.

2022-03-10  Patrice Dumas  <pertusus@free.fr>

	* tp/tests/Makefile.am (check_DATA): copy and change file name
	encoding from utf8 to latin1 for latin1 encoded file name for tests.

2022-03-10  Patrice Dumas  <pertusus@free.fr>

	Add NO_TOP_NODE_OUTPUT to discard Top node for "book like" styles

	* NEWS, doc/texinfo.texi (Other Customization Variables),
	tp/Texinfo/Common.pm (@variable_string_settables),
	tp/Texinfo/Convert/HTML.pm (%defaults, _convert_heading_command)
	(output), tp/init/book.pm, tp/init/epub3.pm: add NO_TOP_NODE_OUTPUT
	customization variable.  If set, the Top node content output is
	discarded.  If set and USE_TITLEPAGE_FOR_TITLE is undef (the default
	now), set USE_TITLEPAGE_FOR_TITLE.  Set NO_TOP_NODE_OUTPUT in
	tp/init/book.pm and tp/init/epub3.pm.

2022-03-09  Gavin Smith  <gavinsmith0123@gmail.com>

	Document index node name requirement

	* doc/texinfo.texi (Printing Indices & Menus): Document
	requirement for "Index" to appear in node name.  Edit and
	trim extraneous language.
	(Advanced Indexing): Edit slightly.

2022-03-09  Gavin Smith  <gavinsmith0123@gmail.com>

	Find first index entry under initial substring search

	* info/indices.c (next_index_match): Reset index search by
	setting index to -1 index instead of 0.  Otherwise the first
	index entry is skipped when checking for initial substrings.
	The very first index entry in an Info file would not be found
	with a non-exact search.

	Report from Sergey Matveev <stargrave@stargrave.org>.

2022-03-06  Patrice Dumas  <pertusus@free.fr>

	* tp/init/latex2html.pm (l2h_process, l2h_to_html)
	(l2h_change_image_file_names, l2h_finish, l2h_from_cache): do
	not use a volume, consistently with the HTML converter.
	Do not force encoding variables to UTF-8, but instead encode
	separately the directory as in the HTML Converter and the files
	related to latex2html in UTF-8, such that the files output by
	latex2html only contains UTF-8.  Also encode separately
	the file names in the latex2html command line and the remaining
	of the command line.  Based on Gavin report.

2022-03-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/TODO: Move winning latex2html test cases.

2022-03-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Attempt to fix latex2html init file under Latin-1 locale

	* tp/init/latex2html.pm: Force several encoding variables to
	UTF-8.  Otherwise incorrect image paths are used in the output file.

2022-03-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix latex2html init file under Latin-1 locale

	* tp/init/latex2html.pm (l2h_change_image_file_name):
	Hardcode the use of UTF-8 to encode image file names, as the
	calling code in l2h_init_from_html set a ':utf8' filter on the
	file the file names were taken from.  Call File::Spec->catpath
	on already-encoded strings rather than encoding afterwards.

2022-03-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%default_parser_common_customization):
	set DOC_ENCODING_FOR_INPUT_FILE_NAME as a parser customization
	variable.  Report from Gavin.

2022-03-06  Patrice Dumas  <pertusus@free.fr>

	Document that some functions are getting or returning binary strings

	* doc/customization_api.texi (Dynamic Converter Formatting
	Information): update html_image_file_location_name() returned
	values documentation.

	* tp/Texinfo/Common.pm: change variable names, document in
	comments which strings are binary strings.

2022-03-06  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Other Customization Variables), NEWS: document
	DATA_INPUT_ENCODING_NAME, DOC_ENCODING_FOR_INPUT_FILE_NAME,
	DOC_ENCODING_FOR_OUTPUT_FILE_NAME, LOCALE_INPUT_FILE_NAME_ENCODING,
	LOCALE_OUTPUT_FILE_NAME_ENCODING and LOCALE_OUTPUT_ENCODING_NAME.

2022-03-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Converter.pm (determine_files_and_directory):
	Use '?' as replacement character when decoding input filename.

2022-03-06  Patrice Dumas  <pertusus@free.fr>

	Decode init file names in messages

	* tp/Texinfo/Config.pm (_GNUT_decode_input, GNUT_load_init_file),
	tp/texi2any.pl (locate_and_load_init_file): add _GNUT_decode_input()
	in Texinfo::Config duplicating _decode_input() from texi2any.pl.
	Decode init file names in messages both in texi2any.pl and
	Texinfo::Config.

	Changes in comments in other files.

2022-03-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/init/latex2html.pm (l2h_to_html): Do not call
	encoded_input_file_name with an undefined or empty argument.

2022-03-05  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix man page bold, italic, underline for Debian man

	* info/man.c (get_manpage_from_formatter): Set MAN_KEEP_FORMATTING=1
	and GROFF_SGR=1 in environment.
	* doc/info-stnd.texi (Invoking Info) <-R>: Comment out text about
	GROFF_SGR as it is hardcoded now.

2022-03-05  Patrice Dumas  <pertusus@free.fr>

	Encode file names in Parser and Text Converter

	* tp/Texinfo/Common.pm (%default_parser_common_customization),
	tp/Texinfo/ParserNonXS.pm (parse_texi_file),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser, parse_texi_file):
	add DATA_INPUT_ENCODING_NAME as a Parser configuration variable
	and use it to decode the file name in error message for not
	opened input file.

	* tp/Texinfo/Convert/Converter.pm (encoded_output_file_name),
	tp/Texinfo/Convert/Text.pm (converter, output, set_conf),
	tp/Texinfo/Convert/Utils.pm (encoded_output_file_name):
	move encoded_output_file_name from Texinfo::Convert::Converter
	to Texinfo::Convert::Utils, but keep a wrapper to be able
	to call the function from converters in object oriented style.
	in Texinfo::Convert::Text, call set_output_encodings,
	encoded_output_file_name, decode command line strings and encode 
	file names and output file contents.  Define set_conf() for
	Texinfo::Common::set_output_encodings() call.

2022-03-05  Patrice Dumas  <pertusus@free.fr>

	Pass created directory charcter string for error messages

	* tp/Texinfo/Convert/Converter.pm (create_destination_directory):
	add an argument for created directory name as character string for
	use in error message.

2022-03-05  Patrice Dumas  <pertusus@free.fr>

	Encode more file names for epub

	* tp/init/epub3.pm: set OUTPUT_ENCODING_NAME and
	LOCALE_OUTPUT_FILE_NAME_ENCODING to utf-8 as mandated by the
	specification.

	* tp/init/epub3.pm (epub_setup, epub_finish): encode file and
	directory names.  Check more errors from Archive::Zip.

2022-03-04  Gavin Smith  <gavinsmith0123@gmail.com>

	File name encoding variables for XS parser

	* tp/Texinfo/XS/parsetexi/input.c
	(doc_encoding_for_input_file_name, locale_input_file_name_encoding):
	Put these variables in this file, to represent
	DOC_ENCODING_FOR_INPUT_FILE_NAME and LOCALE_OUTPUT_ENCODING_NAME.
	(encode_file_name): Obey these variables as is done in ParserNonXS.pm.

	* tp/Texinfo/XS/parsetexi/api.c (reset_parser): Reset both of these
	variables.
	(set_DOC_ENCODING_FOR_INPUT_FILE_NAME): Renamed and moved function.

2022-03-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/input.c (set_input_encoding): Reset
	reverse_iconv conversion used in encode_name.  Report from Patrice.

2022-03-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: List new customization variables for filename encoding.

2022-03-02  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix #line directive early in file.

	* tp/Texinfo/XS/parsetexi/input.c (input_pushback): New function.
	(next_text): Return string passed to input_pushback before any
	other input.
	* tp/Texinfo/XS/parsetexi/parser.c (parse_texi_document): Call
	input_pushback after collecting 'preamble_before_beginning' element.
	This preserves the source line information when a #line directive
	appears immediately after the \input line.

2022-03-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Info.pm (output): encode directory name
	before creating.

2022-03-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Encoding of #line argument in XS parser.

	* tp/Texinfo/XS/parsetexi/input.c (encode_file_name): Save
	return value with save_string.
	* tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line):
	Update call to encode_file_name.
	* tp/Texinfo/XS/parsetexi/input.c (save_line_directive):
	Call encode_file_name on argument. Do not save reference to
	argument.
	* tp/Texinfo/XS/parsetexi/parser.c (check_line_directive):
	Update code calling save_line_directive so not to allocate
	unneeded string.

	Patrice reported that encode_file_name should be used here.

2022-03-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_parse_htmlxref_files)
	(_load_htmlxref_files, _prepare_css): decode file names for messages,
	encode file names for filesystem access.  Other minor changes in the
	code.

	* tp/Texinfo/Convert/HTML.pm (_parse_htmlxref_files, _process_css_file)
	(output), tp/Texinfo/Convert/Info.pm (output), tp/Texinfo/Report.pm
	(line_warn, line_error), tp/texi2any.pl: use
	Texinfo::Report::line_warn instead of Texinfo::Report::file_line_warn
	and similarly for error, by setting up $error_location_info using the
	file name and line number.

2022-03-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (parse_texi_file, _save_line_directive)
	(_next_text, _end_line): use a structure similar with source_info
	within the input for the current file informations. Like in the XS
	parser.  Add the information on the @include file name encoding.
	Use this information to decode the file name in an error message.

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parse_texi_line): reindent.

2022-03-01  Patrice Dumas  <pertusus@free.fr>

	Rename line_nr as source_info except when a line number

	* tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/DocBook.pm,
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/Info.pm,
	tp/Texinfo/Convert/NodeNameNormalization.pm,
	tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/Convert/Utils.pm,
	tp/Texinfo/ParserNonXS.pm, tp/Texinfo/Report.pm,
	tp/Texinfo/Structuring.pm, tp/Texinfo/Transformations.pm,
	tp/Texinfo/XS/parsetexi/Parsetexi.pm, tp/Texinfo/XS/parsetexi/api.c,
	tp/Texinfo/XS/parsetexi/end_line.c, tp/Texinfo/XS/parsetexi/errors.c,
	tp/Texinfo/XS/parsetexi/handle_commands.c,
	tp/Texinfo/XS/parsetexi/input.c (current_source_info),
	tp/Texinfo/XS/parsetexi/macro.c, tp/Texinfo/XS/parsetexi/menus.c,
	tp/Texinfo/XS/parsetexi/parser.c, tp/Texinfo/XS/parsetexi/separator.c,
	tp/Texinfo/XS/parsetexi/tree_types.h (SOURCE_INFO):
	rename line_nr variables and structures as source_info.
	rename global line_nr as current_source_info in XS parser.
	rename the LINE_NR type as SOURCE_INFO.

	* tp/Texinfo/Report.pm: change in spacing.

2022-02-28  Patrice Dumas  <pertusus@free.fr>

	Allow customization of input file name and output file name encoding

	* tp/Texinfo/Common.pm, tp/Texinfo/Convert/Converter.pm
	(encoded_input_file_name, encoded_output_file_name),
	tp/Texinfo/Convert/Utils.pm (expand_verbatiminclude),
	tp/Texinfo/ParserNonXS.pm (_encode_file_name),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser),
	tp/Texinfo/XS/parsetexi/Parsetexi.xs, tp/Texinfo/XS/parsetexi/api.c,
	tp/Texinfo/XS/parsetexi/conf.c
	(conf_set_DOC_ENCODING_FOR_INPUT_FILE_NAME)
	(set_locale_input_file_name_encoding), tp/texi2any.pl: 
	rename customization variable
	MESSAGE_OUTPUT_ENCODING_NAME as LOCALE_OUTPUT_ENCODING_NAME.
	Add DOC_ENCODING_FOR_INPUT_FILE_NAME,
	DOC_ENCODING_FOR_OUTPUT_FILE_NAME,
	LOCALE_INPUT_FILE_NAME_ENCODING, LOCALE_OUTPUT_FILE_NAME_ENCODING.
	separate functions for input and output file names and use
	the customization variables to determine if @documentencoding
	is used or locale encoding.  In the default case, the locale
	encoding is used for output, the @documentencoding for input, except
	on windows.

2022-02-28  Patrice Dumas  <pertusus@free.fr>

	Decode/encode fixes

	* tp/Texinfo/Convert/HTML.pm (output): set 'destination_directory'
	global info to a decoded string.

	* tp/Texinfo/Convert/HTML.pm (html_image_file_location_name):
	return the image path encoding.

	* tp/init/epub3.pm, tp/init/latex2html.pm, tp/init/tex4ht.pm:
	more decoding/encoding fixes.

2022-02-27  Patrice Dumas  <pertusus@free.fr>

	Output and read latex2html files in utf-8

	* tp/init/latex2html.pm: read and write files as utf-8, which
	is in line with what is output or expected by latex2html.

2022-02-27  Patrice Dumas  <pertusus@free.fr>

	Encode file names when needed

	* tp/DebugTexinfo/DebugTree.pm (output),
	tp/Texinfo/Convert/Converter.pm (output), 
	tp/Texinfo/Convert/DocBook.pm (output),
	tp/Texinfo/Convert/HTML.pm (output),
	tp/Texinfo/Convert/IXIN.pm (output_ixin),
	tp/Texinfo/Convert/Info.pm (output, _register_closed_info_file),
	tp/Texinfo/Convert/LaTeX.pm (output),
	tp/Texinfo/Convert/TexinfoXML.pm (output),
	tp/init/chm.pm, tp/init/epub3.pm, tp/init/highlight_syntax.pm,
	tp/init/latex2html.pm, tp/init/tex4ht.pm, tp/texi2any.pl:
	encode file names and command calls when needed.
	In texi2any.pl, decode INTERNAL_LINKS and MACRO_EXPAND for
	error message.

	* tp/Texinfo/Convert/Converter.pm (output_no_split): remove.

	* tp/DebugTexinfo/DebugTree.pm: general improvements.

2022-02-27  Patrice Dumas  <pertusus@free.fr>

	Decode more inputs as perl character strings

	* tp/Texinfo/Convert/Converter.pm (determine_files_and_directory):
	do not encode setfilename, instead decode input file name.
	* tp/Texinfo/Convert/HTML.pm (html_image_file_location_name):
	do not return the encoded file name.
	* tp/Texinfo/Convert/HTML.pm (encoded_file_name): call
	encoded_file_name to encode file name just before calling
	output_files_open_out().


2022-02-26  Gavin Smith  <gavinsmith0123@gmail.com>

	Attempt to fix copying image for epub3 test

	* tp/Texinfo/Convert/HTML.pm (html_image_file_location_name):
	Use the return value from Texinfo::Common::encode_file_name
	for the image file name.
	* tp/tests/formatting/list-of-tests (non_ascii_test_epub):
	Enable test and commit results.

2022-02-26  Gavin Smith  <gavinsmith0123@gmail.com>

	Encode @setfilename argument

	* tp/Texinfo/Convert/Converter.pm (determine_files_and_directory):
	Call Texinfo::Common::encode_file_name on @setfilename argument.

	This mean that @setfilename works properly for a
	'@documentencoding ISO-8859-1' and also means that
	the OUTDIR customization variable works correctly.

2022-02-24  Gavin Smith  <gavinsmith0123@gmail.com>

	UTF-8 flag on strings for XS parser

	* tp/Texinfo/XS/parsetexi/api.c (newSVpv_utf8): New function.
	(element_to_perl_hash, build_single_index_data, build_line_nr_hash)
	(convert_error): Use it in many more places where the string being
	created should be "Perl-internal".  Suggestion from Patrice.

2022-02-24  Patrice Dumas  <pertusus@free.fr>

	One function in Texinfo::Common to handle file name encoding

	* tp/Texinfo/Common.pm (encode_file_name),
	tp/Texinfo/Convert/Converter.pm (encoded_file_name),
	tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/Info.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Utils.pm
	(expand_verbatiminclude), tp/Texinfo/ParserNonXS.pm: put the
	main function encode_file_name() doing file name encoding
	in Texinfo::Common and use encoded_file_name for Converters.
	Return the file name encoding if there is a need to decode
	the file name for error messages.

	* tp/Texinfo/ParserNonXS.pm (_save_line_directive): encode CPP
	line directive file name.

2022-02-24  Gavin Smith  <gavinsmith0123@gmail.com>

	Include file name encoding for XS parser

	* tp/Texinfo/XS/parsetexi/input.c
	(set_input_encoding): Save input encoding name.
	(encode_file_name): New function to re-encode using the input
	encoding.
	(encode_with_iconv): Split out from convert_to_utf8.

	* tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line):
	Call it before calling locate_include_file.

	Suggestion from Patrice.

2022-02-24  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix XS configure check

	* tp/Texinfo/XSLoader.pm: Put 'require Texinfo::ModulePath'
	inside an eval block and provide default values if the module
	wasn't loaded successfully.  This will be the case for the
	configure check using TestXS.pm.  Report from Patrice.

2022-02-23  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (locate_include_file),
	tp/Texinfo/Convert/Converter.pm (encode_file_name, txt_image_text),
	tp/Texinfo/Convert/DocBook.pm (_convert),
	tp/Texinfo/Convert/HTML.pm (html_image_file_location_name),
	tp/Texinfo/Convert/IXIN.pm (output_ixin),
	tp/Texinfo/Convert/Info.pm (format_image),
	tp/Texinfo/Convert/LaTeX.pm (_convert),
	tp/Texinfo/Convert/Utils.pm (expand_verbatiminclude),
	tp/Texinfo/ParserNonXS.pm (_end_line): encode file name before
	calling locate_include_file() in order to be able to pass file
	names already encoded (case of CSS_FILES) and find the information
	in different structures in converters and NonXS Parser.
	Note in comments that no information source is available in
	Texinfo/Convert/Utils.pm expand_verbatiminclude().

2022-02-23  Gavin Smith  <gavinsmith0123@gmail.com>

	Recode filenames into input encoding

	* tp/Texinfo/Common.pm (locale_include_file): Recode
	the filename into the input encoding even if it is not UTF-8.

2022-02-23  Gavin Smith  <gavinsmith0123@gmail.com>

	Get errors from XS code without using eval

	* tp/Texinfo/XS/parsetexi/api.c, tp/Texinfo/XS/parsetexi/Parsetexi.xs
	(get_errors): New function to create error list.
	* tp/Texinfo/XS/parsetexi/errors.c (dump_errors): Function removed.
	* tp/Texinfo/XS/parsetexi/Parsetexi.pm: Call it to get the errors
	and warnings from the XS module.

	This allows better control of string encodings for messages
	and filenames.  It may also be faster than calling eval.

2022-02-23  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (_get_errors): encode
	file name for consistency with file names being bytes, as a temporary
	measure before a better interface is implemented.

	* tp/Texinfo/Report.pm: rename variables.

2022-02-22  Patrice Dumas  <pertusus@free.fr>

	Decode inputs for encoded characters

	* doc/texinfo.texi (HTML CSS), tp/Texinfo/Convert/HTML.pm
	(_process_css_file): process @charset to get the encoding, and use
	utf-8 as default as described.

	* tp/texi2any.pl: decode more input from command line that are
	combined with messages or strings from document.
	Import Encode symbols explicitly.

2022-02-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid double encoding error messages with XS parser

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (_get_errors): Call
	utf8::decode before eval-ing error message output from XS parser.

2022-02-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix test failures under non-English locale

	* tp/t/test_parse_texi_line.t, tp/t/test_parser_registrar.t:
	Set LC_ALL and LANGUAGE for consistent error messages.

2022-02-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Always use installed translated messages

	* tp/Texinfo/XS/parsetexi/api.c (init),
	* tp/texi2any.pl: Unconditionally use installed messages regardless
	of whether the program is installed or not.  Although it would be
	better to use uninstalled messages for this, this hasn't been
	implemented, and having access to translated messages when uninstalled
	will make testing the translations easier.  Remove reference to
	a non-existent 'maintain/regenerate_perl_module_files.sh' script.

2022-02-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/ModulePath.pm.in: Add a comment warning against
	using the module more than once.

2022-02-22  Gavin Smith  <gavinsmith0123@gmail.com>

       Fix translation of messages with XS modules

       * tp/Texinfo/XSLoader.pm: require rather than use Texinfo::ModulePath
       to prevent initialization being done again, incorrectly.  This led
       to incorrect locale dirs being used due to
       $Texinfo::ModulePath::texinfo_uninstalled being reset.

2022-02-22  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/parsetexi/api.c (build_texinfo_tree): return
	an empty element instead of segfaulting if build_texinfo_tree()
	is called without any Root set, although this should never happen
	with the current code.

2022-02-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid segfault in XS code for missing input file

	* tp/Texinfo/XS/parsetexi/api.c (parse_file): Correctly propagate
	return value of file open.

2022-02-21  Patrice Dumas  <pertusus@free.fr>

	* tp/texi2any.pl (handle_errors): print line_nr if 0. Although
	it should not happen in practice.

	* tp/t/test_parse_texi_line.t, tp/t/test_parser_registrar.t,
	tp/t/test_protect_hashchar_at_line_beginning.t: check line error
	messages line numbers.

2022-02-21  Gavin Smith  <gavinsmith0123@gmail.com>

	No encoding for filenames in error messages.

	* tp/Texinfo/Report.pm (line_warn, line_error):
	Do not prepend filename or line number to error messages.
	* tp/texi2any.pl (handle_errors): Do it here, without encoding
	the filename.  Handle stripping directories from the filenames
	for the test suite here.
	* tp/t/test_parse_texi_line.t, tp/t/test_parser_registrar.t,
        tp/t/test_protect_hashchar_at_line_beginning.t: Remove line numbers
	from reference error lines.

2022-02-21  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_latex_header): readd framemethod=tikz
	option for mdframed for roundcorners for @cartouche formatting
	now that the \fbox in sectioning command issue has been solved.

2022-02-21  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_convert): add a context if
	in heading formatting.  In heading formating, use 'error'
	as a string instead of a \fbox for @error formatting in
	contents bookmark string using \texorpdfstring{}.
	Based on Ulrike Fischer suggestion:
	https://github.com/latex3/hyperref/issues/207#issuecomment-920712424

2022-02-20  Patrice Dumas  <pertusus@free.fr>

	* tp/texi2any.pl: call get_conf() only after conf is setup.

2022-02-20  Patrice Dumas  <pertusus@free.fr>

	Decode input data to perl internal and encode messages

	* tp/Texinfo/Common.pm (@variable_string_settables),
	tp/Texinfo/Config.pm (_GNUT_encode_message, _GNUT_document_warn),
	tp/texi2any.pl ($main_program_set_options, _decode_i18n_string)
	(_encode_message, document_warn, handle_errors, _decode_input)
	(Getopt::Long::GetOptions): add DATA_INPUT_ENCODING_NAME and
	MESSAGE_OUTPUT_ENCODING_NAME set in the default case to the
	locale encoding, to decode from environment, command line and
	translated messages and encode messages.  Add FILE_NAMES_ENCODING_NAME
	for file names encoding but do not use it yet.

2022-02-20  Gavin Smith  <gavinsmith0123@gmail.com>

	@include file name encoding

	* tp/Texinfo/Common.pm (locate_include_file):
	Call utf8::encode on the argument, as otherwise an include
	file may not be found.
	Report from Gaël Bonithon <trash.paradise@protonmail.com> of
	failure building under non-ASCII directory name.

2022-02-19  Patrice Dumas  <pertusus@free.fr>

	* configure.ac (TEXINFO_DTD_VERSION), util/texinfo.dtd:
	update the DTD with new @-commands (latex, displaymath,
	subentry, seeentry, seealso). Remove definition. Some
	fixes. Define lt and amp predefined entities exactly as
	shown on the XML specification.

2022-02-19  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%close_paragraph_commands),
	tp/Texinfo/XS/parsetexi/commands.c (close_paragraph_command):
	have @need close paragraph/preformatted.

2022-02-18  Patrice Dumas  <pertusus@free.fr>

	* tp/Makefile.am, tp/Texinfo/ParserNonXS.pm (_encoding_alias)
	(%canonical_texinfo_encodings): remove Texinfo::Encoding, put
	the code directly in tp/Texinfo/ParserNonXS.pm.

2022-02-18  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Encoding.pm (encoding_alias): use Encode::find_encoding,
	both for the perl name, and, with mime_name() lower cased for the
	output/HTML/input encoding name.  Remove %encoding_aliases and
	%perl_charset_to_html.

2022-02-18  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Unicode.pm (%unicode_to_eight_bit)
	(_eight_bit_and_unicode_point, encoded_accents)
	(unicode_point_decoded_in_encoding): use directly the input encodings
	names.  Separate mappings of koi8-u and koi8-r.

	* tp/Texinfo/Encoding.pm (encoding_alias): remove
	%eight_bit_encoding_aliases.  Use my, not our for variables not used
	elsewhere.

	* util/txixml2texi.pl: use directly Encode::resolve_alias() instead of
	Texinfo::Encoding::encoding_alias().

	* tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): add latin-1
	mapping.  Remove impossible or incorrect mappings from encoding_map.

	* doc/tp_api/Makefile.am: do not document Texinfo::Encoding.

2022-02-18  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/pod2texi.pl: do not ignore an input file that
	cannot be searched for the manual name.

	* doc/tp_api/Makefile.am (tp_api_TEXINFOS): add tp_api_indices.texi.

2022-02-18  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/pod2texi.pl (--setfilename): add --setfilename
	option to be able to pass @setfilename argument for top boilerplate,
	in particular if outputting on stdout.

	* doc/tp_api/Makefile.am, doc/tp_api/tp_api_indices.texi: prepend
	tp_api_indices.texi to tp_api.texi to output indices.

2022-02-18  Patrice Dumas  <pertusus@free.fr>

	Title page info specific handling in DocBook

	* tp/Texinfo/Convert/DocBook.pm (%ignored_block_commands, output)
	(_convert): determine title based on more @-commands than @settitle.
	Get only title, subtitle and authors informations from @titlepage.
	Get title, author and legal notice informations in headers, afterwards
	ignore @copying, @titlepage.  Ignore @documentdescription.
	Set @documentlanguage to the end of preamble value for the header
	formatting.

2022-02-17  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (%docbook_misc_elements_with_arg_map)
	(%def_argument_types_docbook, _convert): add exdent role for @exdent,
	use simpara and center role for @center.
	Use emphasis role="arg" instead of replaceable for arg def argument
	type.  The idea is that replaceable is not used such that replaceable
	is only used if @var{} is present which should be more in line with
	the examples in the Texinfo manual.

	* tp/Texinfo/Convert/DocBook.pm: reindent.

2022-02-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (%docbook_preformatted_formats):
	use literallayout for @format and @smallformat (same as @display).

2022-02-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (output): switch to DocBook
	version 4.5 for mathphrase.

2022-02-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (_convert): start a section at
	the associated node.

2022-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid warn_unused_result warning from gcc

	* tp/Texinfo/XS/text.c, tp/Texinfo/XS/parsetexi/errors.c
	(xasprintf, xvasprintf): New wrapper functions for
	asprintf and vasprintf.  Abort if functions failed.

2022-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	@image top page margin

	* doc/texinfo.tex (\image): Wrap image in a \vtop in order to
	make the top margin close to correct in case an image appears
	at the top of a page.  Remove or change some comments.

	Report from Werner Lemberg.

2022-02-14  Patrice Dumas  <pertusus@free.fr>

	A different work around for generated Texinfo file problem

	* autogen.sh: setup a fake doc/tp_api/tp_api.texi to be able
	to run automake even if the file is not present, with a file
	timestamp set in the paste. Report from Werner Lemberg and solution
	adaptated from Gavin.

	* doc/tp_api/Makefile.am: Reset nodist_info_TEXINFOS to
	info_TEXINFOS, otherwise the file will not be in the distribution
	and users without mean to regenerate it will not have it.

2022-02-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Work around generated Texinfo file problem

	* doc/tp_api/Makefile.am: Rename info_TEXINFOS to
	nodist_info_TEXINFOS in attempt to avoid automake problem
	with generated .texi file.

2022-02-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/test_utils.pl: Set LANGUAGE environment variable as well
	as LC_ALL for consistent test results.

2022-02-09  Patrice Dumas  <pertusus@free.fr>

	* man/info.5, man/texinfo.5: format man page name in Bold and
	man section in Roman.  Report by Helge Kreutzmann.

2022-02-08  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm (_protect_text)
	(_prepend_internal_section_manual, _convert_pod): if not in code
	context in resulting Texinfo, protect -- and --- in order for the
	minus to be kept in the Texinfo output, as expected from Pod
	translators.  This is important to avoid -- in options becoming
	ndash.

2022-02-08  Patrice Dumas  <pertusus@free.fr>

	* contrib/perldoc-all, doc/texinfo.texi (Invoking @command{pod2texi}): 
	comment out the paragraph on contrib/perldoc-all as there are issues with
	cross Pod links, because the Perldoc Browser adds an additional anchor
	with the first word.

2022-02-08  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm (_convert_pod)
	(%standard_headers): prepend the module name to first level
	section names only if in a list of standard headers taken
	from perlpodstyle and perldocstyle.

	* tp/Texinfo/*.pm, tp/Texinfo/Convert/*.pm: use the standard NOTES
	header instead of DISCLAIMER in Pod.

2022-02-08  Patrice Dumas  <pertusus@free.fr>

	Include pod2texi Pod converted to Texinfo by pod2texi in manual

	* doc/Makefile.am, doc/texinfo.texi (Invoking @command{pod2texi}):
	include pod2texi.texi converted from pod2texi.pl by pod2texi.pl
	in the Texinfo manual.

2022-02-08  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm
	(texinfo_main_command_sectioning_style, run):
	new sectioning style, 'heading', use @*heading commands in that case,
	except for the main command appearing at the beginning
	of the output if texinfo_sectioning_base_level != 0.
	New accessor texinfo_main_command_sectioning_style to select the
	sectioning style for the main command appearing at the beginning
	of the output if texinfo_sectioning_base_level != 0.

	* Pod-Simple-Texinfo/pod2texi.pl: add --headings-as-sections
	option.

2022-02-08  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm (_convert_pod):
	prepend modules name to first level section names for internal
	manuals, otherwise the section name does not allow to understand which
	module the following text refers to, since all the POD use the  same
	top level section names, like NAME, METHODS, as described in
	perlpodstyle and based on man pages conventions.

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm
	(_prepend_internal_section_manual): rename
	_section_manual_to_node_name() as _prepend_internal_section_manual()
	and remove the unused $self argument.

2022-02-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Transformations.pm,
	Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm
	(_reference_to_text_in_texi) : export reference_to_arg_in_tree
	in Texinfo::Transformations, and use it directly in
	Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm.

2022-02-07  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/pod2texi.pl: allow - as --preamble argument to
	read the preamble from stdin.

2022-02-07  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (HTML Customization Variables), tp/Texinfo/Common.pm
	(@variable_string_settables), tp/Texinfo/Convert/HTML.pm (%defaults)
	(_external_node_href): new customization variable, EXTERNAL_CROSSREF_EXTENSION
	used as file extension for external cross-references.  Default undef.
	If undef, set based on EXTENSION.

2022-02-06  Patrice Dumas  <pertusus@free.fr>

	* doc/tp_api/Makefile.am: use AM_MAKEINFOFLAGS and AM_MAKEINFOHTMLFLAGS
	instead of MAKEINFOHTML.  Pass -c INFO_SPECIAL_CHARS_QUOTE=1 to Info
	conversion to get reasonably ok manual.

2022-02-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (converter_initialize),
	tp/Texinfo/Convert/Unicode.pm (unicode_point_decoded_in_encoding)
	(brace_no_arg_command):
	add unicode_point_decoded_in_encoding(), returning true if an
	unicode point will be correctly decoded.
	Call unicode_point_decoded_in_encoding in HTML converter.
	Remove spurious setting to numeric entities.

	* tp/Texinfo/Convert/Unicode.pm: change in spacing.

2022-02-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%sectioning_heading_commands),
	tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm,
	tp/Texinfo/Convert/Texinfo.pm (root_heading_command_to_texinfo),
	tp/Texinfo/Convert/Text.pm, tp/Texinfo/ParserNonXS.pm,
	tp/Texinfo/Structuring.pm, tp/Texinfo/Transformations.pm,
	tp/init/book.pm:
	rename %sectioning_commands in Texinfo::Common as
	%sectioning_heading_commands and root_element_command_to_texinfo() as
	root_heading_command_to_texinfo() in Texinfo::Convert::Texinfo.

2022-02-06  Patrice Dumas  <pertusus@free.fr>

	* doc/tp_api/Makefile.am: the documentation is referred to in
	customization_api Texinfo manual, so always distribute the texinfo
	source even when they cannot be rebuilt, and always setup
	documentation building target.  Do not install the Info manual,
	however, as it is mostly useless.

2022-02-05  Patrice Dumas  <pertusus@free.fr>

	* NEWS, doc/texinfo.texi (HTML Splitting, HTML Xref Link Basics)
	(HTML Xref Node Name Expansion, HTML Xref Mismatch),
	tp/Texinfo/Convert/Converter.pm (determine_files_and_directory)
	(create_destination_directory), tp/Texinfo/Convert/HTML.pm
	(_external_node_href), tp/init/epub3.pm: postpend '_format'
	to output directory when split.  For this, add a format argument
	to determine_files_and_directory().  In practice means that
	default output directory for HTML manual is now manual_html/.

2022-02-03  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm
	(%contents_command_special_element_variety)
	(command_name_special_element_information)
	(_convert_special_element_type, _prepare_special_elements)
	(_prepare_contents_elements), tp/Texinfo/Config.pm,
	texinfo/doc/customization_api.texi: rename special_element_type
	as special_element_variety.

	* texinfo/doc/customization_api.texi: corrections.

2022-02-02  Patrice Dumas  <pertusus@free.fr>

	* texinfo/doc/customization_api.texi: draft of the HTML
	customization API documentation.

	* TODO: update.  Put 'Process Texinfo files directly' in
	an entry, stating that the Texinfo project could help
	with a library for Texinfo parsing, but would not implement
	processing Texinfo files directly.

2022-02-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (command_href, _external_node_href):
	change variable name.

	* tp/Texinfo/Convert/HTML.pm (global_direction_element),
	tp/init/chm.pm: rename global_element as global_direction_element.
	Change a variable name.

2022-02-01  Patrice Dumas  <pertusus@free.fr>

	* tp/init/chm.pm: simplify the code getting the top element file name.

2022-02-01  Patrice Dumas  <pertusus@free.fr>

	* tp/init/epub3.pm, tp/init/chm.pm: use command_href instead
	of doing the href from a separate file and target.

2022-02-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (command_filename): cache undef if
	file name is not found.

	* tp/Texinfo/Convert/HTML.pm (command_root_element_command)
	(command_node): cache the information that is really needed.
	Cache undef if not found.

2022-02-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (command_href), tp/init/chm.pm,
	tp/init/epub3.pm: remove command_target(), inline or replace
	by command_id.

	* tp/Texinfo/Convert/HTML.pm (command_filename, command_node)
	(footnote_location_href): set $target->{'root_command'}
	in command_node() only, where it is used.

	* tp/Texinfo/Convert/HTML.pm (footnote_location_href): simplify
	code, remove _set_footnote_location_target().

	* tp/Texinfo/Convert/HTML.pm (_convert_heading_command),
	tp/init/book.pm: replace command_string(), which is not defined,
	by command_text($element, 'string').  Mark better in comment
	that the code is never run.

	* tp/Texinfo/Convert/HTML.pm (tree_unit_element_command):
	rename element_command() as tree_unit_element_command().

2022-02-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (in_non_breakable_space)
	(is_format_expanded), tp/init/html32.pm: rename in_space_protected()
	as in_non_breakable_space() and expanded_format() as
	is_format_expanded().

2022-01-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm, tp/init/chm.pm, tp/init/epub3.pm,
	tp/init/html32.pm: remove protect_text(), call directly
	$self->formatting_function('format_protect_text')}.

	* tp/Texinfo/Convert/HTML.pm (output): do not set
	$self->{'structure'}->{'unit_filename'}, it does not seems to be used
	and it should not be needed.

2022-01-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_default_format_end_file): use
	$self->get_info to retrieve 'jslicenses' information.

	* tp/Texinfo/Convert/HTML.pm (output): set 'jslicenses' earlier.

2022-01-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (command_conversion, type_conversion)
	(_convert_item_command), tp/init/html32.pm:
	add accessors to 'commands_conversion' and 'types_conversion'.

	* tp/Texinfo/Convert/HTML.pm (default_type_conversion)
	(default_type_open), tp/init/epub3.pm: rename default_types_conversion as
	default_type_conversion and default_types_open as default_type_open.

2022-01-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_*_command, _convert),
	tp/init/highlight_syntax.pm, tp/init/html32.pm, tp/init/latex2html.pm:
	always use the same call for @-command conversion functions, with
	$args always as fourth argument and $content as fifth argument.

	* tp/Texinfo/Convert/HTML.pm (_convert_*type), tp/init/html32.pm:
	rename $command argument as $element.

	* tp/Texinfo/Convert/HTML.pm (default_command_open)
	(default_command_conversion), tp/init/epub3.pm,
	tp/init/highlight_syntax.pm, tp/init/html32.pm, tp/init/latex2html.pm:
	rename default_commands_conversion() as default_command_conversion().
	rename default_commands_open() as default_command_open().

	* tp/Texinfo/Convert/HTML.pm (_conversion_contents): rename
	_convert_contents() as _conversion_contents()

	* tp/init/latex2html.pm: change in spacing.

2022-01-30  Patrice Dumas  <pertusus@free.fr>

	* autogen.sh: add -other 'other' to regenerate_cmd_tests.sh call.

2022-01-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_default_format_element_footer)
	(_convert): rename cmdname as context or context_name, as contexts
	are not necessarily associated with command names, and it is
	clearer to separate.

2022-01-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Config.pm (texinfo_register_style_command_formatting),
	tp/Texinfo/Convert/HTML.pm (%style_commands_formatting)
	(_convert_style_command): rename 'attribute' key as 'element'
	as it is the element name before (potentially) holding attributes.

2022-01-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Config.pm (texinfo_register_style_command_formatting),
	tp/init/html32.pm: use a separate argument for quotes and
	html element argument.

	* tp/Texinfo/Convert/HTML.pm (%available_converter_info):
	add floats, global_commands and structuring.

	* tp/Texinfo/Convert/HTML.pm (_normalized_label_id_file): 
	add converter as the first argument of 'label_target_name'
	user code reference call.

2022-01-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (info_short_help): Remove --show-options from
	option list and examples.  Split examples up into smaller strings.

2022-01-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Invoking Info) <--show-options>:
	Say something about where the name of the program comes from.
	Report from Akbarkhon Variskhanov <akbarkhon.variskhanov@gmail.com>.

2022-01-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (converter),
	tp/Texinfo/Convert/Text.pm (converter),
	tp/Texinfo/Convert/HTML.pm (get_value, _prepare_index_entries),
	tp/Texinfo/Convert/LaTeX.pm (_prepare_indices),
	tp/Texinfo/Convert/Plaintext.pm (process_printindex),
	tp/maintain/template.pod:
	set 'values' and 'indices_information' from the parser in
	converter.  Do not keep the direct association with the
	parser.

	* tp/Texinfo/Convert/*.pm: regenerate pod section of converters
	that have a pod section generated from maintain/template.pod.

2022-01-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_convert): with ENABLE_ENCODING
	convert brace no args commands corresponding to letters to
	encoded characters if possible.

2022-01-26  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_default_format_special_body_about),
	* doc/texinfo.texi (HTML Customization Variables), NEWS:
	add PROGRAM_NAME_IN_ABOUT, remove PRE_ABOUT and AFTER_ABOUT.

	* tp/Texinfo/Config.pm
	(texinfo_register_formatting_special_element_body): fix call.

2022-01-26  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Config.pm
	(texinfo_register_formatting_special_element_body)
	(GNUT_get_formatting_special_element_body_references),
	tp/Texinfo/Convert/HTML.pm (defaults_special_element_body_formatting)
	(special_element_body_formatting, _convert_special_element_type)
	(%defaults_format_special_body_contents, converter_initialize)
	(_default_format_special_body_about)
	(_default_format_special_body_contents)
	(_default_format_special_body_shortcontents)
	(_default_format_special_body_footnotes): add registering of
	conversion functions for special elements bodies, and default
	functions.

2022-01-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%default_commands_args)
	(_convert_footnote_command, _default_format_footnotes_sequence):
	convert footnote body in _default_format_footnotes_sequence,
	not when the footnote appears in _convert_footnote_command.

	* tp/Texinfo/Convert/HTML.pm (register_footnote)
	(_convert_footnote_command, _default_format_footnotes_sequence):
	pass $multi_expanded_region information in register_footnote.
	This information is not actually used, a comment explains why.

2022-01-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (shared_conversion_state): add
	shared_conversion_state() for conversion state information
	shared among conversion functions.  It is only used in code
	that can be customized by the user.

2022-01-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm
	(command_name_special_element_information, command_contents_href)
	(_contents_inline_element, _html_get_tree_root_element): add
	command_name_special_element_information() to get information
	on a special element associated with an @-command name.

2022-01-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (format_footnotes_segment):
	rename format_footnotes_portion as format_footnotes_segment.

	* tp/Texinfo/Convert/HTML.pm (_default_format_footnotes_sequence)
	(_default_format_footnotes_segment): add a class for the footnote
	body heading and change class name for the footnotes segment.

2022-01-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%small_block_associated_command),
	tp/Texinfo/Convert/HTML.pm, tp/init/highlight_syntax.pm:
	move %small_alias to Texinfo::Common and rename as
	%small_block_associated_command.

2022-01-25  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (HTML Customization Variables),
	tp/Texinfo/Common.pm (@variable_string_settables)
	tp/Texinfo/Convert/HTML.pm (%defaults, _convert_footnote_command):
	set NO_NUMBER_FOOTNOTE_SYMBOL as a customization variable.

2022-01-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_footnote_command)
	(_convert_printindex_command): use a different prefix for
	footnotes in multi expanded environment and indices not in
	any root element.

	* tp/Texinfo/Convert/HTML.pm (special_direction_element): rename
	special_direction() as special_direction_element().

2022-01-25  Patrice Dumas  <pertusus@free.fr>

	Footnotes registering and link to location in document API

	* tp/Texinfo/Convert/HTML.pm (_get_footnote_location_target)
	(footnote_location_target, _set_footnote_location_target)
	(footnote_location_href, register_footnote, get_pending_footnotes)
	(_convert_footnote_command, _default_format_footnotes_sequence)
	(_prepare_footnotes, _default_format_footnotes_portion):
	do not format the footnote sequence where footnotes appear, instead
	use register_footnote() and get_pending_footnotes() to register
	information about footnotes, including their formatted argument
	and format them as a sequence including the link to the document
	where they appear. Rename format_footnotes_text as
	format_footnotes_portion and add format_footnotes_sequence with
	_default_format_footnotes_sequence().  Format the footnotes lines in
	_default_format_footnotes_sequence().  Add footnote_location_target()
	and footnote_location_href() to get the footnote in document location
	id and href, using a new special targets structure in
	self->{'special_targets'}->{'footnote_location'}->{$command}.

	* tp/Texinfo/Convert/HTML.pm (command_href): add the possibility
	to specify the target, use it in the footnotes formatting.

	* tp/Texinfo/Convert/HTML.pm (command_contents_href)
	(_convert_heading_command): if source filename argument of
	command_contents_href() is undef use current file name.

	* tp/Texinfo/Convert/HTML.pm (_html_get_tree_root_element):
	do not autogenerate a 'structure' hash.  Reindent.

2022-01-24  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (setup_index_entry_keys_formatting)
	(sort_indices), tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/LaTeX.pm,
	tp/Texinfo/Convert/Plaintext.pm, tp/init/chm.pm: remove first
	arguments of setup_index_entry_keys_formatting() and sort_indices()
	that are unused.

2022-01-23  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%available_converter_info)
	(get_info, _reset_infos): get informations on converter
	through get_info().
	remove html_non_breaking_space() and html_line_break_element()
	and use get_info() instead.

2022-01-23  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%css_element_class_styles):
	rename css_map as css_element_class_styles.

2022-01-23  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (css_add_info, css_get_info):
	add API to get information on CSS rules, imports and styles,
	the non dynamic parts, and to modify.

2022-01-23  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_default_format_end_file)
	(_do_jslicenses_file, output): replace 'jslicenses_infojs'
	and 'jslicenses_math' by categories in 'jslicenses'.

2022-01-23  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (count_elements_in_filename),
	tp/init/book.pm:
	add a specification argument to specify the count returned, total,
	current, or remaining.  Use it in formatting functions.  Remove
	'counter_in_file' which can be obtained from the other counters.

2022-01-23  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (in_multi_expanded): new method
	accessor for $self->{'multiple_pass'}.

	* tp/Texinfo/Convert/HTML.pm (expanded_format): new method
	accessor for $self->{'expanded_formats_hash'}.

	* tp/Texinfo/Convert/HTML.pm (_convert_raw_command): hardcode
	'html' as the format not protected and not warned if expanded.

	* tp/Texinfo/Convert/HTML.pm (_convert_printindex_command):
	call convert_tree_new_formatting_context() in case of multiple
	formatting of index entry.

	* tp/Texinfo/Convert/HTML.pm (converter_initialize, _convert): remove
	$self->{'commands_args'} use directly %default_commands_args.

2022-01-23  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Config.pm (texinfo_register_file_id_setting_function)
	(GNUT_get_file_id_setting_references),
	tp/Texinfo/Convert/HTML.pm (converter_initialize)
	(_normalized_label_id_file, _new_sectioning_command_target)
	(_set_root_commands_targets_node_files, _html_set_pages_files)
	(_prepare_special_elements), tp/init/book.pm: set customized
	functions used to set file names and targets through
	texinfo_register_file_id_setting_function() in Texinfo::Config.
	Use them in HTML.pm.

2022-01-23  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Config.pm (texinfo_register_type_format_info)
	(GNUT_get_types_formatting_info),
	tp/Texinfo/Convert/HTML.pm (in_preformatted, %default_pre_class_types)
	(converter_initialize, _convert): use
	texinfo_register_type_format_info() to register type formatting
	informations.  Use these informations in HTML.pm.

2022-01-23  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (converter_initialize)
	(_reset_unset_no_arg_commands_formatting_context): do not remove
	converter translated commands default informations, but have
	translated formatted strings take precedence.

2022-01-23  Patrice Dumas  <pertusus@free.fr>

	Consistent interface and caching for translated brace no args commands

	* tp/Texinfo/Config.pm (texinfo_register_no_arg_command_formatting),
	tp/Texinfo/Convert/HTML.pm, tp/init/chm.pm, tp/init/html32.pm:
	change order of texinfo_register_no_arg_command_formatting()
	arguments, add translation of an already converted string to the
	arguments.

	* tp/Texinfo/Convert/HTML.pm (_translate_names),
	(_complete_no_arg_commands_formatting, _convert_no_arg_command)
	(_css_string_convert_no_arg_command)
	(_reset_unset_no_arg_commands_formatting_context): instead of
	translating the default converter strings during the conversion,
	convert in _translate_names, setting at that time the correct
	context, and cache the result.
	Explicitly set 'unset' to the at commands in brace context not
	set.

2022-01-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_default_format_css_lines):
	Fix omitting CSS block if no rules.

2022-01-22  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (html_convert_css_string)
	(default_formatting_function, formatting_function),
	tp/init/book.pm: do not use a converter state for default formatting
	functions.  Use a converter state for formatting function, and use
	an accessor function, formatting_function().

2022-01-22  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_default_format_special_element_body):
	make $element an optional argument, it is not used much.

	* tp/init/chm.pm: set PROGRAM_NAME_IN_FOOTER to 0 but use the default
	format_end_file.

2022-01-22  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (top_block_command), tp/init/html32.pm:
	rename top_format() as top_block_command().

	* tp/Texinfo/Convert/HTML.pm (from_element_direction): put source
	element as fourth argument and use $self->{'current_root_element'}
	if not defined.

	* tp/Texinfo/Convert/HTML.pm (_convert_text): inline _protect_space
	in _convert_text.

	* tp/Texinfo/Convert/HTML.pm (_default_format_end_file): simplify
	conditions on jslicenses.

2022-01-22  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (comma_index_subentries_tree),
	tp/Texinfo/Convert/HTML.pm (_convert_printindex_command)
	tp/Texinfo/Convert/Plaintext.pm (process_printindex):
	replace convert_index_subentries() with comma_index_subentries_tree()
	which returns a tree instead of converting it.

	* tp/Texinfo/Convert/HTML.pm (_convert_float_command)
	(_convert_def_line_type, _convert): do not pass undef element to
	convert_tree()/_convert().  Call cluck in _convert() if an undef
	element is passed.

	* tp/Texinfo/Convert/HTML.pm (_convert_xref_commands, label_command):
	use only label_command to avoid accessing internal converter information.

	* tp/Texinfo/Convert/HTML.pm (_convert_xref_commands): change in
	spacing.

2022-01-22  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_item_command): check
	if in preformatted first before putting in <tt>.  Use
	preformatted_classes_stack() instead of commands_stack() to determine
	if in %preformatted_code_commands.

	* tp/Texinfo/Convert/HTML.pm (_convert_heading_command),
	tp/init/book.pm: add classes in heading formatting in preformatted.

	* tp/Texinfo/Convert/HTML.pm (_mini_toc): avoid using internal
	information when not needed.

	* tp/Texinfo/Convert/HTML.pm
	(%special_list_mark_css_string_no_arg_command): rename from
	%special_list_bullet_css_string_no_arg_command.
	(html_convert_css_string_for_list_mark): rename from
	html_convert_css_string_for_list_bullet().

	* tp/Texinfo/Convert/HTML.pm: remove commands_stack() as it is not
	used anymore, and 'commands' in $self->{'document_context'}.

2022-01-22  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_explained_command): no tree
	modification, set a converter state instead.

2022-01-21  Patrice Dumas  <pertusus@free.fr>

	tests: add tests scripts by category/type. Only do other with other-checks.

2022-01-21  Patrice Dumas  <pertusus@free.fr>

	* tp/init/highlight_syntax.pm (highlight_open_inline_container_type)
	(highlight_preformatted_command): update to match with changes in
	HTML output.

	* tests: add other tests requiring other softwares.

	* tp/init/highlight_syntax.pm (highlight_process): avoid version in output in tests.

2022-01-21  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (html_attribute_class),
	tp/init/html32.pm, tp/init/book.pm: only pass a list of classes
	to html_attribute_class(), instead of a class and a list.

2022-01-21  Patrice Dumas  <pertusus@free.fr>

	* tp/init/chm.pm tp/init/epub3.pm tp/init/highlight_syntax.pm,
	tp/init/latex2html.pm tp/init/tex4ht.pm tp/t/init/redefine_need.init:
	add missing use, change in comments.

2022-01-20  Patrice Dumas  <pertusus@free.fr>

	Convert Texinfo in @*math to LaTeX for HTML_MATH

	* tp/Texinfo/Common.pm (@variable_string_settables),
	tp/Texinfo/Convert/HTML.pm (%defaults, _convert_math_command)
	(output, _convert), doc/texinfo.texi (HTML Customization Variables),
	tp/Texinfo/Convert/LaTeX.pm (copy_options_for_convert_to_latex_math)
	(convert_to_latex_math): set CONVERT_TEXINFO_MATH_TO_LATEX based
	on HTML_MATH being defined.  When set, convert math commands to LaTeX.
	Add convert_to_latex_math and copy_options_for_convert_to_latex_math
	in Texinfo::Convert::LaTeX to convert Texinfo to LaTeX math.

	* tp/Texinfo/Convert/HTML.pm (%defaults, output): do not set
	jslicenses, jslicenses_math nor jslicenses_infojs in %defaults
	such that they cannot be shared among converters and are
	defined when needed.

	* tp/Texinfo/Convert/HTML.pm _convert_contents): change variable
	names.

	* tp/Texinfo/Convert/LaTeX.pm (converter_initialize): do not check
	documentencoding to encode quotes.

2022-01-19  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_open_preformatted)
	(_close_preformatted, _open_preformatted_command)
	(_close_preformatted_command, _open_preformatted_stack)
	(_close_preformatted_command, _convert): format preformatted type
	as preformatted, not preformatted commands.  Preformatted commands
	only set up 'preformatted_context'.

2022-01-19  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_convert, _latex_header): implement
	@multitable.

2022-01-18  Patrice Dumas  <pertusus@free.fr>

	* tp/texi2any.pl ($makeinfo_help): in the help block where
	--latex was added. Avoid \n in translated strings, split each
	option in a translatable string. Report from Benno Schulenberg.

2022-01-17  Gavin Smith  <gavinsmith0123@gmail.com>

	ASCII spaces only

	* tp/Texinfo/Convert/Plaintext.pm (_align_lines, _convert):
	Use /a in regexps where \s or \S is used.  This also has a possible
	performance benefit.

2022-01-17  Gavin Smith  <gavinsmith0123@gmail.com>

	ASCII spaces only

	* tp/Texinfo/XS/xspara.c (xspara_add_text): Call isspace instead
	of iswspace to match change in ParagraphNonXS.pm.
	* tp/Texinfo/Convert/Plaintext.pm (_protect_sentence_ends):
	Remove special handling of \x{202f} and \x{00a0}, using \a flag
	instead.

2022-01-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/ParagraphNonXS.pm (add_text): Simplify regexp
	by taking \x{202f} and \x{00a0} out, as these are not matched with
	\s with the /a flag.

2022-01-16  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/prove.sh: -I ../tp for Texinfo::ModulePath in builddir

2022-01-16  Patrice Dumas  <pertusus@free.fr>

	Put texinfo_document.pot in git and update po files

	* .gitignore, po_document/texinfo_document.pot: ship
	po_document/texinfo_document.pot.  It is inconvenient as it changes
	frequently if regenerated, but can help diagnose what is going on when
	po files have not changed but po_document/texinfo_document.pot has.

	* po_document/*.po: regenerate.

2022-01-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Format with texi2dvi): Add index entry for
	texi2pdf.

2022-01-16  Patrice Dumas  <pertusus@free.fr>

	Keep small* command information in extra classes in HTML

	* tp/Texinfo/Convert/HTML.pm (_convert_preformatted_command)
	(_indent_with_table, _convert_indented_command)
	(_convert_quotation_command): always use the non small
	variant as the main class, add the small* variants as an extra class.

2022-01-16  Patrice Dumas  <pertusus@free.fr>

	Use /a regexp modifier in NonXS paragraph handling for Info

	* tp/Texinfo/Convert/ParagraphNonXS.pm (add_text): use /a modifier
	to consider non ascii space as characters.

2022-01-16  Patrice Dumas  <pertusus@free.fr>

	Use /a regexp modifier to consider only ascii spaces in matching

	* tp/Texinfo/ParserNonXS.pm: use /a modifier to match or exclude
	only ascii spaces, as \s can also mean non ascii spaces.  In general
	we want spaces to be only ascii spaces, because it makes more sense to
	consider at least most non ascii spaces as chraracters and not spaces,
	but also because it matches with the XS parser definition of spaces.

2022-01-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Figure spaces

	* doc/texinfo.tex (\unicodechardefs): Add definition for
	U+2007 FIGURE SPACE.  From Werner Lemberg.
	* tp/Texinfo/Convert/HTML.pm (_convert_tab_command): Restrict
	stripping whitespace to ASCII characters so that figure space
	can be used for alignment in multitables.
	* tp/t/21multitable.t (multitable_figure_space): New test.

2022-01-16  Patrice Dumas  <pertusus@free.fr>

	Set novalidate in main program and use common code to set language

	* tp/Texinfo/Common.pm (%default_parser_common_customization),
	tp/Texinfo/ParserNonXS.pm (_set_global_informations),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser, parse_texi_file)
	(parse_texi_piece, parse_texi_text),
	tp/Texinfo/Structuring.pm (set_menus_node_directions, nodes_tree)
	(associate_internal_references),
	tp/texi2any.pl: do not set novalidate in parser info, instead set it
	in main program in main configuration.  Remove novalidate from
	parser options and inputs.

	* tp/Texinfo/Common.pm (_informative_command_value)
	(set_informative_command_value, _in_preamble)
	(set_global_document_command), tp/Texinfo/Convert/Converter.pm
	(set_global_document_commands),
	tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm,
	tp/texi2any.pl: extract set_global_document_command from
	set_global_document_commands in Texinfo::Convert::Converter
	and move it, with set_informative_command_value to Texinfo::Common.
	Use that code to set documentlanguage in main program configuration.

2022-01-16  Patrice Dumas  <pertusus@free.fr>

	* po_document/POTFILES.in: add tp/Texinfo/Translations.pm.

	* tp/Texinfo/Translations.pm: mark explicitly strings that are to be
	translated as the call to gdt has a first argument that is not the
	string to translate.

2022-01-15  Gavin Smith  <gavinsmith0123@gmail.com>

	Update gnulib.

	* (top-level), tp/Texinfo/XS: Run gnulib-tool --add-import.

2022-01-15  Patrice Dumas  <pertusus@free.fr>

	* tp/texi2any.pl: set documentlanguage in main program configuration
	as it is needed for regenerate_master_menu.

	* tp/Texinfo/Config.pm (new, get_conf, set_conf): reset the additional
	configuration each time new is called.  Add a flat to the
	configuration to distinguish the standalone configuration as used
	in the tests or the configuration for the main program.  For the main
	program do not override command line.

	* tp/Texinfo/Transformations.pm: mark the translation especially.

	* .gitignore, tp/tests/Makefile.am,
	tp/tests/many_input_files/Makefile.am: add new tests for many_input_files.

2022-01-15  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%default_index_commands, %command_index),
	tp/Texinfo/ParserNonXS.pm (%default_no_paragraph_commands)
	(%default_valid_nestings): put two letter default @*index commands
	in hashes in Texinfo::Common and in the ParserNonXS.

	* tp/Texinfo/ParserNonXS.pm (parser, simple_parser)
	(_register_global_command): no dynamic 'global_commands', use directly
	%global_multiple_commands.

	* tp/Texinfo/ParserNonXS.pm (parser): ignore code setting user defined
	information, as it cannot happen now that the configuration keys are
	not in %parser_state_configuration anymore, and also because there is
	no such configuration possible in the XS parser.

2022-01-15  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (%parser_state_initialization, parser)
	(simple_parser): put 'regions_stack', 'macro_stack' and
	'conditionals_stack' initialization in %parser_state_initialization.
	remove 'explained_commands' state it is not used anywhere.
	Merge _setup_parser() in parser().

2022-01-15  Patrice Dumas  <pertusus@free.fr>

	* doc/tp_api/Makefile.am (tp_api_dependencies): add missing modules.

2022-01-15  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ModulePath.pm.in (init): do not use undefined $top_builddir

2022-01-14  Patrice Dumas  <pertusus@free.fr>

	Do not have parsers inherit Texinfo::Translations

	* tp/Texinfo/Translations.pm tp/Texinfo/ParserNonXS.pm,
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (gdt, complete_indices):
	do not have parsers inherit Texinfo::Translations.
	Allow gdt() first argument to be undefined.  Get parser
	configuration customization variables through $self->get_conf().
	In complete_indices() call gdt() directly, not as a method on
	$self.

2022-01-14  Patrice Dumas  <pertusus@free.fr>

	Move section_level() to Common.pm to avoid circular dependency

	* tp/Texinfo/Common.pm (section_level), tp/Texinfo/Convert/HTML.pm
	(_convert_heading_command), tp/Texinfo/Convert/Text.pm (heading),
	tp/Texinfo/Structuring.pm (sectioning_structure),
	tp/Texinfo/Transformations.pm (fill_gaps_in_sectioning),
	tp/init/book.pm: move
	section_level() from Texinfo::Structuring to Texinfo::Common to
	avoid a dependency of Texinfo::Convert::Text on Texinfo::Structuring.
	This avoids a circular dependency, as Texinfo::Structuring depends on
	Texinfo::Convert::NodeNameNormalization which depends on
	Texinfo::Convert::Text.

	* tp/Texinfo/Transformations.pm (new_master_menu): take directly
	gdt() from Texinfo::Translations.

	* tp/texi2any.pl: use $main_configuration for the configuration
	source for Texinfo::Transformations::regenerate_master_menu().

2022-01-14  Patrice Dumas  <pertusus@free.fr>

	Improve links to internal pod without a section

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm (_convert_pod):
	use the pod manual as section name for internal links to avoid ending
	up with the non informative 'NAME'.

2022-01-14  Patrice Dumas  <pertusus@free.fr>

	Update DevHelp TODO entry

	* TODO: describe that the DevHelp XML format that would need to be
	generated is still not documented.

2022-01-13  Patrice Dumas  <pertusus@free.fr>

	* maintain/regenerate_documentlanguages-loc.pl: script to
	regenerate tp/Texinfo/Documentlanguages.pm using sources of
	information for languages and regions codes consistent with
	the Texinfo manual content.

	* tp/Texinfo/Documentlanguages.pm: regenerate with
	maintain/regenerate_documentlanguages-loc.pl.

2022-01-13  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm
	(_normalize_texinfo_name): put the normalized content in the
	tree.

2022-01-13  Patrice Dumas  <pertusus@free.fr>

	* NEWS: document the change in HTML element class names.

2022-01-13  Patrice Dumas  <pertusus@free.fr>

	* NEWS, doc/texinfo.texi (HTML Customization Variables),
	tp/Texinfo/Common.pm (@variable_string_settables),
	tp/Texinfo/Convert/HTML.pm (html_get_css_elements_classes)
	(%defaults, %css_map, _convert_def_line_type, tp/init/epub3.pm)
	(tp/init/html32.pm): rename COPIABLE_ANCHORS as COPIABLE_LINKS and
	rename the associated class.

2022-01-13  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Plaintext.pm (converter_initialize): fix typo
	in $self->{'ascii_punctuation'}.

2022-01-13  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%special_characters)
	(converter_initialize): setup a structure holding information on
	all the special characters (left quote, right quote, paragraph symbol,
	non breaking space) that are added to output as part of formatting.
	Set these characters to their encoded values if ENABLE_ENCODING
	is set and they are in the output encoded characters set.

2022-01-12  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (@code{@@settitle}, @code{@@titlepage}):
	describe that @settitle is output at the very beginning of an
	HTML document.  And that @shorttitlepage is used instead of @settitle
	page if @settitle is not set.

	* doc/texinfo.texi (@code{@@copying}, @code{@@insertcopying}):
	clarify that in XML and DocBook @copying text is in appropriate
	markup.  In @insertcopying node state explicitly that @insertcopying
	is used to have the @copying test in normal text.

	* doc/texinfo.texi (Texinfo Preamble): revise for more clarity.

2022-01-12  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%css_map, _convert_preformatted_type):
	set a class for menu entry description in preformatted in menu to
	have it inline to avoid a line break caused by <pre> being a block
	element.  Note that it does not seem to be rendered as intended, at
	least in firefox there still seems to be a line break.

2022-01-12  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_listoffloats_command): add
	a class for caption or shortcaption in listoffloats, like
	caption-in-listoffloats

	* tp/Texinfo/Convert/HTML.pm (_convert_menu_command)
	(_convert_menu_entry_type, converter_initialize): in preformatted
	in menu, let the description be converted as preformatted.
	In case of SIMPLE_MENU use the menu conversion command, but
	use a <div> instead of a table.

2022-01-12  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_default_format_navigation_panel):
	rename format_navigation_header_panel as format_navigation_panel
	as it is used both for headers and footers.  Use nav-panel instead
	of nav-header for the class.

	* tp/Texinfo/Convert/HTML.pm (_indent_with_table): add a class
	with the command name with COMPLEX_FORMAT_IN_TABLE.

2022-01-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_style_command): comment
	out the code parsing attributes in style command specification
	as there is no need to specify attributes right now.

2022-01-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (html_attribute_class)
	(_convert_style_command): simplify and correct class string
	formatting.

2022-01-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_heading_command)
	(_default_format_heading_text, _default_format_titlepage)
	(_convert_titlefont_command, _print_title), tp/init/book.pm: add
	a an $additional_classes argument for _default_format_heading_text,
	and change argument order such that the element argument which is not
	used, is last.  Do not set an element argument in calls to
	format_heading_text except for the call from _convert_heading_command.

2022-01-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_heading_command): use
	a specific class for the opening section div, like
	<section>-level-extent.  Always associate the class corresponding to a
	sectioning @-command or a @node to the header if it is output, else to
	the anchor with the id.  Use node-id for the anchor class if there is
	a heading.

2022-01-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_heading_command):
	use level corrected sectioning command name for the opening section
	class.

2022-01-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%css_map, _convert_titlefont_command)
	(_default_format_heading_text, _convert_heading_command)
	(_contents_inline_element, _default_format_titlepage, _print_title)
	(_convert_special_element_type, _convert_tree_unit_type)
	(_default_format_footnotes_text), tp/init/book.pm: pass the
	command name, possibly undef for special elements, and class to
	format_heading_text formatting.

	* tp/Texinfo/Convert/HTML.pm (output, _default_format_titlepage)
	(_print_title): keep information on the @-command used for
	simpletitle_tree in simpletitle_command_name and use it in the
	formatting.

2022-01-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_heading_command): use
	command as class for anchors, as if it is a @node the
	heading has another class name, and for an empty @top, there
	are two classes as for sectioning commands.
	Move code around, change variable names, add comments for
	clarity and add FIXMEs.

	* tp/Texinfo/Convert/HTML.pm (_convert_index_command): use
	index-entry-id as class name.

	* tp/Texinfo/Convert/HTML.pm (_normalized_label_id_file):
	rename _node_id_file() as _normalized_label_id_file().

	* tp/Texinfo/Convert/HTML.pm: change variable names for better
	code readibility.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%css_map, _protect_space):
	rename nolinebreak class as w-nolinebreak-text.  Call
	html_attribute_class() only if the element will be substituted
	in the protected text.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%css_map, %pre_class_commands)
	(_preformatted_class): only use command and type names in
	'preformatted_classes', and prepend -preformatted systematically
	for the corresponding pre class name.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%css_map)
	(_default_format_navigation_header_panel)
	(_convert_printindex_command, _contents_inline_element)
	(_convert_def_line_type, _convert_special_element_type)
	(_mini_toc, _default_format_contents, _default_format_end_file):
	rename no-bullet class as toc-numbered-mark. Rename
	smaller class as program-in-footer. Rename header class
	as nav-header. Rename summary-letter class as
	summary-letter-printindex. Add a div for printindex with
	additional class $index_name-printindex. Add a class 
	$index_name-letters-header-printindex for the letters printindex
	header and $index_name-letters-footer-printindex for the
	letters footer. Rename index-$index_name class as
	$index_name-entries-printindex. Rename special elements
	${class}-element as element-${class}. Rename category class
	in def* as category-def. Rename section-toc class as mini-toc.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_def_command): use
	first-def* as class for the main def* command container.
	Also get alias information with first-def*-alias-first-def*.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%def_aliases): add aliases for the
	def*x forms too.

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type): add classes
	for def* commands, adding also information about alias
	and information about command associated with def*x.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_quotation_command)
	(_convert_itemize_command, _convert_enumerate_command)
	(_convert_multitable_command, _convert_xtable_command): add
	command name as class for block @-commands.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_float_command): use
	@caption or @shortcaption as caption class for the div element
	if there is a non empty caption/shortcaption, otherwise use the
	type-number-float class.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_float_command): convert
	prepended float number type information in the same way with
	a caption or without.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_float_command): use
	register_pending_formatted_inline_content() to have the float
	number and type prepended to the caption instead of modifying the
	tree.

2022-01-10  Gavin Smith  <gavinsmith0123@gmail.com>

	TODO update

	* TODO: Delete most of the entries to do with dir files.
	Mention @dircategory recommendations in the Language section.
	Move idea for Info to "will not be implemented".  Delete suggestion
	to use old xinfo, saxinfo or tkinfo programs (all long gone).

2022-01-10  Gavin Smith  <gavinsmith0123@gmail.com>

	@group should be inside @example not vice versa

	* doc/texinfo.texi (Texinfo Preamble): Fix nesting of
	@group and @example.
	* tp/TODO: Add this as something to warn about.

2022-01-10  Gavin Smith  <gavinsmith0123@gmail.com>

	Documentation of @dircategory

	* doc/texinfo.texi (Directory Category): New node, to document
	@dircategory independently of install-info and dir files.  Expand
	list of categories based on what is in util/dir-example.
	(Installing Dir Entries):  Move much material to new node.
	(Directory File): Move reference to util/dir-example file here.

2022-01-10  Gavin Smith  <gavinsmith0123@gmail.com>

	*  util/htmlxref.cnf:
	Add auth, calc, dbus, ede, edt, emacs-gnutls, emacs-mime,
	ert, eudc, forms, htmlfontify, ido, newsticker, octave-mode, pgg,
	reftex, remember, bovine, srecode, ses, sieve, sc, todo-mode, url,
	vhdl-mode, widget, wisent.  Update for ada-mode.
	
	From Thérèse Godefroy <godef.th@free.fr>.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%default_types_open, default_types_open)
	(_convert, associate_pending_formatted_inline_content)
	(get_associated_formatted_inline_content),
	tp/Texinfo/Config.pm (texinfo_register_type_opening, GNUT_get_types_open):
	API to associate pending inline formatted text to an element, allowing
	to associate the pending content to the first opening inline element.

	* tp/Texinfo/Convert/HTML.pm (_convert_paragraph_type)
	(_open_inline_container_type, _convert_preformatted_type),
	tp/init/html32.pm (html32_convert_paragraph_type): use
	associate_pending_formatted_inline_content() and
	get_associated_formatted_inline_content() to get the inline formatted
	pending content.


2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%css_rules_not_collected, %css_map)
	(%style_commands_element): format key like other style commands.
	Use kbd.kbd for the CSS selector for @kbd.

	* tp/Texinfo/Convert/HTML.pm (_convert_author_command): return a
	simple string if in_string.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_exdent_command): use command
	name as class for pre.

	* tp/Texinfo/Convert/HTML.pm (_convert_center_command): simple
	formatting if in_string.

	* tp/Texinfo/Convert/HTML.pm (%default_types_conversion): remove
	rawpreformatted, the default formatting is right.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%css_map, _default_format_heading_text)
	(_convert_command_simple_block, _convert_exdent_command)
	(_convert_center_command, _convert_paragraph_type): use class for
	headings alignement selector.  Use _convert_command_simple_block
	to convert raggedright, flushleft, flushright and group, that
	output a <div>.  Use classes line flushleft-paragraph to align
	paragraphs.

	* tp/Texinfo/Convert/HTML.pm (_new_document_context): do not set the
	default 'composition_context' to be raggedright, such that it is
	possible to know when the @-command was set, instead use an empty
	string.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%css_map, %style_commands_element)
	(_convert_email_command, _convert_explained_command)
	(_convert_footnote_command, _convert_uref_command)
	(_convert_image_command, _convert_math_command)
	(_convert_indicateurl_command, _convert_author_command)
	(_convert_title_command, _convert_subtitle_command)
	(_convert_xref_commands): add the @-command name as class for
	brace commands.  Use span for @dmn and for @sc in preformatted.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%css_map, %style_commands_element)
	(_convert_style_command): always use the style command name as
	class.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	Documentation of the Texinfo Preamble

	* doc/texinfo.texi (Texinfo File Header, Texinfo Preamble):
	introduce the preamble and explain how it influences the formatting.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (output): translate strings if
	the end of preamble document language is not the same as the default
	document language.

	* tp/Texinfo/Convert/Text.pm (_convert): use the converter current
	document language and not the documentlanguage from the tree, as the
	converter document language may be different, for instance if the
	document language from the end of the preamble is used.

2022-01-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (output): do not add a preamble
	if there is none.  The tree used should already contain a
	preamble if needed.

2022-01-09  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm
	(_normalize_texinfo_name): use parse_texi_piece().  Try to use
	a more robust code to find the anchor in the tree.

2022-01-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (output): use the last value in
	preamble for documentlanguage to set the body element lang
	attribute.

2022-01-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (output): use the last value in
	preamble for documentlanguage to format the title and the
	copying block in comments.

2022-01-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Info.pm (_info_header): use the last value in
	preamble of informative commands to format the @copying block for
	the copying header.

2022-01-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* TODO.HTML: Add some remarks from an old email.  More on
	other projects.

2022-01-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_prepare_input_from_text)
	(parse_texi_piece, parse_texi_text),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (parse_texi_piece)
	(get_parser_info, parse_texi_text),
	tp/Texinfo/XS/parsetexi/Parsetexi.xs (parse_piece),
	tp/Texinfo/XS/parsetexi/api.c (parse_text, parse_piece):
	change meaning of parse_texi_text() to be parsing a text as
	a whole manual.  Add parse_texi_piece() to do what parse_texi_text()
	formerly did.

2022-01-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (parse_texi_file, _parse_texi_document),
	tp/Texinfo/XS/parsetexi/api.c (parse_file),
	tp/Texinfo/XS/parsetexi/parser.c (parse_texi_document):
	split the entry point for parse_texi_file, using parse_texi_document()
	for the part doing the parsing.  In the XS parser move the code
	related to file opening to parse_file() and remove parse_texi_file().

	* tp/Texinfo/ParserNonXS.pm (parse_texi_text): simplify possibilities
	for arguments.

2022-01-09  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove old TODO

	* tp/Texinfo/XS/parsetexi/input.c,
	* tp/Texinfo/XS/parsetexi/macro.c: Do not define _GNU_SOURCE as
	gnulib should deal with this.
	* tp/Texinfo/XS/parsetexi/api.c (element_to_perl_hash): Add a
	comment regarding use of newSVpv.

	* tp/Texinfo/XS/parsetexi/TODO: Remove obsolete file.  Report from 
	Patrice.

2022-01-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (parse_texi_file): synchronize
	implementation with XS parser implementation, which has the advantage
	of using next_text() and therefore can be used for another source than
	a file.

2022-01-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (parse_texi_line),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (parse_texi_text)
	(parse_texi_line), tp/Texinfo/XS/parsetexi/Parsetexi.xs
	(parse_string, parse_text), tp/Texinfo/XS/parsetexi/api.c
	(parse_string, parse_text): add a line number argument to the XS
	parser parse_string() and parse_text() functions and update
	accordingly the callers.  Set line number to 1 in the default case
	for parse_texi_line().

	* tp/Texinfo/ParserNonXS.pm: update API documentation.

2022-01-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command):
	check if the element type is root_line when closing a root command,
	and die if there is no parent only if not in root_line.  A root
	command in parse_texi_line could be considered incorrect, in that
	case an error message should be output.

2022-01-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (_in_preamble)
	(set_global_document_commands)
	tp/Texinfo/Convert/HTML.pm (_prepare_conversion_tree_units, output),
	tp/Texinfo/Convert/Info.pm (_info_header): modify
	set_global_document_commands() to take for commands location
	argument 'before', 'last', 'preamble' or 'preamble_or_first'
	taking into account the preamble appropriately.

2022-01-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (register_file_information)
	(get_file_information): add an API to be able to set informations
	during conversion and get it back when doint the footers and headers.
	(_default_format_end_file): get the file name in argument.

	* tp/Texinfo/Convert/HTML.pm (_convert_math_command)
	(_convert_displaymath_command, _default_format_end_file)
	(_file_header_informations): use register_file_information() and
	get_file_information() to determine if some math was seen for
	mathjax.

	* tp/Texinfo/Convert/HTML.pm (_prepare_conversion_tree_units): rename
	_prepare_tree_root_elements() as _prepare_conversion_tree_units().

	* tp/Texinfo/Convert/HTML.pm: change some names, remove useless code,
	move code around.

2022-01-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (set_global_document_commands)
	(_command_init): determine the initial values only when needed.

2022-01-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%css_map, converter_initialize):
	unconditionally put 'span.smaller' (for PROGRAM_NAME_IN_FOOTER)
	in %css_map.

2022-01-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (set_tree_unit_file)
	(_set_tree_units_files, output), tp/Texinfo/Convert/HTML.pm
	(_html_set_pages_files, output): set 'out_filepaths'
	in the converter to associate file names without output file
	paths and not 'out_filepath' in the elements.

2022-01-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (set_tree_unit_file)
	(_set_tree_units_files, output), tp/Texinfo/Convert/HTML.pm
	(command_filename, command_href, _default_format_element_header)
	(_convert_special_element_type, _default_format_element_footer)
	(_html_set_pages_files, output),
	tp/Texinfo/Structuring.pm (elements_file_directions),
	tp/init/book.pm, tp/init/chm.pm, tp/init/epub3.pm,
	tp/t/init/t2h_singular.init: put 'unit_filename' in 'structure'
	hash reference.


2022-01-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (set_tree_unit_file)
	(_set_tree_units_files, output), tp/Texinfo/Convert/HTML.pm
	(command_filename, command_href, _default_format_element_header)
	(_convert_special_element_type, _default_format_element_footer)
	(_html_set_pages_files, output),
	tp/Texinfo/Structuring.pm (elements_file_directions),
	tp/init/book.pm, tp/init/chm.pm, tp/init/epub3.pm,
	tp/t/init/t2h_singular.init: rename tree unit 'filename' key as
	'unit_filename'.

	* tp/Texinfo/Convert/HTML.pm: rename variables for better
	code legibility.  Add/improve comments describing data structures.

	* tp/Texinfo/Convert/Converter.pm (from_element_direction):
	rename variables.

2022-01-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (%LaTeX_list_environments)
	(_latex_header, _convert): only import packages and output
	LaTeX code related to list environments if needed for the
	document formatting.

2022-01-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (%LaTeX_environment_packages)
	(_latex_header, _convert): only import packages and
	output LaTeX code if needed for the document formatting.

	* tp/Texinfo/Convert/LaTeX.pm (output, _latex_header)
	(_latex_begin_output): output packages import last.

	* tp/Texinfo/Convert/LaTeX.pm: re-enable babel and fontsize
	package use, if needed.

2022-01-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Config.pm (texinfo_register_no_arg_command_formatting),
	tp/Texinfo/Convert/HTML.pm (_translate_names)
	(%default_no_arg_commands_formatting, _text_element_conversion)
	(_convert_no_arg_command, _css_string_convert_no_arg_command)
	(converter_initialize): specify no args commands with a separate
	'element' and 'text' information in an hash reference instead of just
	having a text.

2022-01-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm
	(%xml_text_entity_no_arg_commands_formatting),
	tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/TexinfoXML.pm:
	replace %default_xml_no_arg_commands_formatting{'normal'}
	by %xml_text_entity_no_arg_commands_formatting.

	* tp/Texinfo/Convert/HTML.pm (%style_commands_element):
	rename %style_attribute_commands as %style_commands_element.

2022-01-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%default_main_program_customization),
	tp/Texinfo/Convert/HTML.pm (builtin_default_css_text),
	tp/texi2any.pl, doc/texinfo.texi (HTML Customization Variables),
	NEWS:
	add SHOW_BUILTIN_CSS_RULES, to output the default builtin CSS
	rules, and exit right after.

2022-01-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_end_line),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (_set_itemize_commands_arg)
	(_set_errors_node_lists_labels_indices, get_parser_info):
	remove @itemize command argument detected as command_as_argument
	in itemize_commands_arg in global information as it is not needed
	anymore.

2022-01-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%css_map, converter_initialize):
	setup css_string for more @-commands in the first initialization.
	Preset %css_map for all the possible @itemize marks.
	No use for parser_info itemize_commands_arg anymore.

2022-01-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (texi2html): Remove references to the following
	removed or never implemented cutomization variables:
	SHORT_REF, IDX_SUMMARY, IGNORE_PREAMBLE_TEXT.

2022-01-06  Patrice Dumas  <pertusus@free.fr>

	Dynamically generated CSS lines in HTML

	* NEWS, doc/texinfo.texi (HTML Customization Variables)
	(_default_format_css_lines, _file_header_informations): remove
	CSS_LINES customization variable which does not make much sense
	with dynamically generated CSS lines.

	* tp/Texinfo/Convert/HTML.pm (convert_tree_new_formatting_context)
	(command_text, _new_document_context, _pop_document_context)
	(_translate_names): add an argument to mark expansions that are
	reused in the document without being expanded again.  Mainly
	for expansions in command_text() and buttons names.

	* tp/Texinfo/Convert/HTML.pm (_collect_css_element_class)
	(html_attribute_class, %css_rules_not_collected)
	(html_get_css_elements_classes, %css_map, _default_format_css_lines)
	(_default_format_begin_file, _default_format_frame_files, output):
	collect CSS rules used in the document while outputting and use only
	collected CSS rules in generated CSS rules.  Both CSS rules associated
	to the file being output and associated to the global context in its
	current state are output.

	* tp/Texinfo/Convert/HTML.pm (output): do headers after the body from
	all the elements to collect CSS rules.  Do end of files before doing
	header in case there are CSS rules there.

	* tp/Texinfo/Convert/HTML.pm (output, %defaults)
	(_file_header_informations, _default_format_end_file): do not setup
	jslicenses_element at the beginning of a file, but at the end, when
	the information is needed.

	* tp/Texinfo/Convert/HTML.pm (_default_format_end_file, output)
	(_convert, _default_format_frame_files),: define $self->{'current_filename'}
	and delete outside of conversion to be sure that it is defined for CSS rules
	collection including in end of files formatting.

	* tp/Texinfo/Convert/HTML.pm (_get_copiable_anchor): use
	html_attribute_class().

2022-01-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_itemize_command)
	(converter_initialize): use mark-none for the class name corresponding
	to @itemize @w{} that does not produce any mark at all.

2022-01-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%defaults): more consistent
	'misc_elements_targets'.

	* tp/Texinfo/Convert/HTML.pm (_contents_inline_element)
	(_convert_special_element_type): more consistent class names, always
	use SPECIAL_ELEMENTS_CLASS for class names.

2022-01-05  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (special_element, global_element)
	[from_element_direction, element_is_tree_unit_top, _translate_names)
	(_html_get_tree_root_element, _prepare_special_elements)
	(_prepare_contents_elements, _prepare_tree_units_global_targets):
	rename internal hash keys, use global_element() and special_element()
	functions more.

2022-01-05  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (@variable_other_settables),
	tp/Texinfo/Convert/HTML.pm (%contents_command_element_type)
	(command_contents_href, command_text, %defaults, _translate_names)
	(_contents_inline_element, _convert_special_element_type)
	(_html_set_pages_files, _prepare_special_elements, _prepare_contents_elements)
	(_default_format_footnotes_text)
	(_default_format_special_element_body): distinguish special element
	types and special elements directions.

2022-01-05  Patrice Dumas  <pertusus@free.fr>

	* NEWS, doc/texinfo.texi (HTML Customization Variables),
	(Other Customization Variables), tp/Texinfo/Common.pm
	(@variable_string_settables), tp/Texinfo/Convert/HTML.pm (%defaults)
	(_default_format_contents), tp/init/html32.pm: rename OVERVIEW_LINK_TO_TOC
	as SHORT_TOC_LINK_TO_TOC, rename BEFORE_OVERVIEW as BEFORE_SHORT_TOC_LINES
	and AFTER_OVERVIEW as AFTER_SHORT_TOC_LINES.

	* tp/Texinfo/Convert/HTML.pm (_default_format_contents): link to Table
	of contents from Short table of contents only if a Table of contents
	is output.  Report from Benno Schulenberg.

2022-01-05  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm
	(%special_list_bullet_css_string_no_arg_command)
	(html_convert_css_string_for_list_bullet): allow formatting for list
	bullets to be different from formatting of @-commands in CSS strings.
	This was an attempt to find an hyphen more suitable for a bullet list,
	but the default one seems to be the best.

2022-01-05  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Plaintext.pm (converter_initialize)
	(_process_text): cache $self->get_conf('ASCII_PUNCTUATION') for
	speed.

2022-01-05  Patrice Dumas  <pertusus@free.fr>

	* TODO, tp/TODO: update.

2022-01-05  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_end_line),
	tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): do not
	register accent comment without brace as a command_as_argument at all.

2022-01-05  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_default_css_string_format_protect_text)
	(_css_string_convert_text): fix text protection.

	* tp/Texinfo/Convert/HTML.pm (_convert_itemize_command)
	(converter_initialize): handle @click as @itemize argument.

	* tp/Texinfo/Convert/HTML.pm (%default_no_arg_commands_formatting):
	force @error to be translated and not be in predefined CSS.

	* tp/Texinfo/Convert/HTML.pm
	(%default_css_string_formatting_references)
	(_default_css_string_format_protect_text): rename to
	use _css_string everywhere and not _css_line.

2022-01-05  Patrice Dumas  <pertusus@free.fr>

	in HTML @itemize item mark based on CSS

	* tp/Texinfo/Convert/HTML.pm (html_convert_css_string, %css_map)
	(%default_no_arg_commands_formatting, _css_string_convert_no_arg_command)
	(_css_string_accent, _css_string_convert_accent_command)
	(_default_css_line_format_protect_text, _convert_itemize_command)
	(_convert_item_command, _css_string_convert_text)
	(%default_css_line_formatting_references)
	(_complete_no_arg_commands_formatting, converter_initialize),
	tp/Texinfo/Config.pm (%possible_formatting_contexts),
	tp/init/html32.pm (html32_convert_itemize_command)
	(html32_convert_item_command): format mark for @itemize items
	as a CSS property.  Add mark corresponding to command argument
	detected as command_as_argument to the css_map.  Parse the @itemize
	argument as a CSS string if there is no command argument detected as
	command_as_argument.  Add a new possibility for no arg commands
	formatting context, css_string.

	* tp/Texinfo/ParserNonXS.pm (_end_line),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (_set_itemize_commands_arg)
	(_set_errors_node_lists_labels_indices, get_parser_info):
	gather @itemize command argument detected as command_as_argument
	in itemize_commands_arg in global information.  In the XS parser done
	using an inefficient tree walking.

	* tp/Texinfo/Convert/Converter.pm (_format_numeric_entities_accent),
	tp/Texinfo/Convert/Unicode.pm (unicode_accent):
	harmonize, change variable names to be like similar codes handling
	accent commands and diacritics.

	* tp/Texinfo/Config.pm: initialize $real_command_name otherwise
	it will be undef for error messages in tests.

2022-01-04  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_set_environment_options): if @w
	is the @itemize argument, use an explicit empty format to have
	no bullet.

2022-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* TODO: Remove already implemented functionality.

2022-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	get-or-remove-footnotes

	* info/footnotes.c (info_show_footnotes): Unconditionally
	toggle a footnote window.  Previously it required a negative
	argument to close the footnote window (e.g with 'C-u - M-C-f')
	which was laborious.

2022-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* TODO, NEWS: Change a couple of items.

2022-01-03  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (%parser_state_initialization)
	(%parser_state_configuration, %parser_settable_configuration)
	(_setup_conf): split %parser_state_configuration in two, with
	%parser_state_initialization being not configurable anymore
	to match with the XS parser in which those configuration keys
	are not implemented.
	Two configuration keys, clickstyle and kbdinputstyle are
	duplicated in Texinfo::Translations::gdt(), so are put in
	%parser_state_configuration although they are not implemented
	in the XS parser.

	* tp/Texinfo/ParserNonXS.pm (parse_texi_text): set first line to 1.

	* tp/Texinfo/ParserNonXS.pm (_setup_conf),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser):
	pass registrar object as is instead of copying.

	* tp/Texinfo/Report.pm (line_warn, line_error, document_warn)
	(document_error): accept an undef $configuration_informations
	to be able to use a Texinfo::Report standalone without configuration
	information.

2022-01-03  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm
	(_normalize_texinfo_name): adapt to tree structure change.
	Better error reporting in case of parser errors.

	* tp/Texinfo/Common.pm (protect_first_parenthesis): fail with
	backtrace if argument is undef.

2022-01-03  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Texinfo.pm (convert_to_texinfo): use confess
	instead of die.

	* tp/Makefile.am (test_files, dist_init_DATA): add distributed files.

2022-01-03  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (convert): output special elements
	in every cases where there are multiple units.

2022-01-03  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm, tp/Texinfo/Config.pm,
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/TexinfoXML.pm,
	tp/Texinfo/ParserNonXS.pm, tp/Texinfo/XS/parsetexi/Parsetexi.pm:
	use cleaner ref($var) eq '' instead of ! ref($var).

	* tp/Texinfo/Structuring.pm (sectioning_structure)
	(section_level_adjusted_command_name, split_pages)
	(elements_directions),
	tp/Texinfo/Convert/DocBook.pm (_docbook_section_element, _convert),
	tp/Texinfo/Convert/HTML.pm (command_text, _convert_heading_command)
	(_prepare_tree_units_global_targets, _default_format_contents),
	tp/Texinfo/Convert/LaTeX.pm (_convert),
	tp/Texinfo/Convert/Plaintext.pm (format_contents, _convert),
	tp/Texinfo/Convert/Text.pm (heading), tp/Texinfo/Convert/Utils.pm
	(numbered_heading), tp/init/book.pm, tp/init/chm.pm, tp/init/epub3.pm: 
	replace section element level by section_level and number by
	section_number in structure.

2022-01-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (_substitute_references): handle
	index_ignore_chars.

2022-01-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm: rename name extra key of special
	elements to special_element_type.

2022-01-02  Patrice Dumas  <pertusus@free.fr>

	* NEWS: add USE_XML_SYNTAX, HTML_ROOT_ELEMENT_ATTRIBUTES
	and NO_CUSTOM_HTML_ATTRIBUTE.

2022-01-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (output): set MATHJAX_SCRIPT and
	MATHJAX_SOURCE dynamic defaults earlier such that they can be known
	and modified in init files.

2022-01-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (output, _convert): do not remove the
	Top node from the tree.  Instead, put 'in_skipped_node_top' in context
	if in Top node and ignore everything except informative commands and
	top level sectioning commands.  Arguments of informative commands
	should all be formatted out of the main conversion or in a new context
	stack.

2022-01-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_begin_document, _convert): output
	contents after the beginning of document unless if CONTENTS_OUTPUT_LOCATION
	is set to inline in which case it is output where contents is (could
	be in the preamble...).

2022-01-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (output): add a preamble element
	only if there was not already one in the tree.  With parse_texi_text()
	there is no preamble element.

2022-01-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\kbd): Simplify definition so as not to
	check whether @key is contained within.

2022-01-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi: Revise use of @key and @kbd.

2022-01-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_begin_document, _convert): output
	title page after begining of contents independently of where
	@titlepage is defined.  Allows titlepage and shorttitlepage to be
	in preamble.

2022-01-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (output, convert, convert_tree): always
	call _pop_context after _push_new_context.

2022-01-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm: use Texinfo::Common::document_settable_at_commands
	for informative commands.
	Do not consider ignored commands in preamble commands.

2022-01-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_convert): simpler formatting of
	author outside of front cover.

2022-01-02  Gavin Smith  <gavinsmith0123@gmail.com>

	No slant for @key

	* doc/texinfo.tex (\key): Unconditionally use (upright) typewriter
	font, regardless of whether @key is inside @kbd or not.

2022-01-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (%preamble_commands): use Texinfo::Common
	preamble commands, except for titlepage and shorttitlepage which
	need to be in the document content.

	* tp/Texinfo/Convert/LaTeX.pm (_finish_front_cover_page, _convert):
	distinguish cover page formatting from titlepage formatting.

2022-01-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (add_preamble_before_content): put code that
	setup the preamble before content in a function
	add_preamble_before_content().
	Add the preamble even if empty.

2022-01-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%preamble_commands, rearrange_tree_beginning):
	add a preamble_before_content type before the first content, which
	corresponds to non informative commands content.  Use %preamble_commands
	for that, that holds all the @-command that can appear in that
	preamble.

	* tp/Texinfo/Common.pm (%formattable_misc_command),
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/LaTeX.pm,
	tp/Texinfo/Convert/Plaintext.pm: add @vskip to
	%formattable_misc_command.

2022-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Document of LaTeX back-end

	* NEWS: Announce
	* doc/texinfo.texi (Output Formats, Generic Translator texi2any):
	Add LaTeX.
	(Invoking texi2any): Document --latex.
	(@documentencoding): Edit to reflect fact that a LaTeX back-end
	now exists.

2022-01-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%document_settable_multiple_at_commands)
	(%formattable_misc_commands): put contents and summarycontents in
	%document_settable_multiple_at_commands and remove from
	%formattable_misc_commands.

	* tp/Texinfo/Convert/HTML.pm (_convert_contents_command)
	(@contents_commands): do a separate formatting functions for
	contents commands.

	* tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/Plaintext.pm,
	tp/Texinfo/Convert/Text.pm:
	use %Texinfo::Common::formatted_misc_commands and, if relevant,
	%Texinfo::Common::formattable_misc_commands instead of
	%Texinfo::Convert::Text::formatting_misc_commands, and remove
	%Texinfo::Convert::Text::formatting_misc_commands.

	* tp/Texinfo/Convert/Text.pm (_convert): separate formatted
	and formattable misc commands formatting.  Format page
	specifically.

2022-01-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%formattable_misc_commands),
	(%formatted_misc_commands, is_content_empty): split
	formattable commands which require having some replacement
	text formatted and formatted_misc_commands whch can be
	formatted and may have text argument.

	* tp/Texinfo/Convert/TextContent.pm (converter_initialize):
	use Texinfo::Common::formatted_misc_commands for a better
	selection of @-commands which should be replaced by their
	content.

2022-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Make LaTeX output processable

	* tp/Texinfo/Convert/LaTeX.pm (_latex_header):
	Comment out use of 'fontsize' and 'babel' packages.
	(_convert): Comment out code outputing fontsize directive.

2022-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	No slant for @key.

	* tp/Texinfo/Convert/HTML.pm
	(_convert_key_command): Always output @key command with
	<kbd class="key"> element.  (Previously it was either done
	with <tt class="key"> or <span class="key">.)
	(%css_map): Output 'font-style: normal'
	for kbd.key to cancel effect of oblique font style for 'kbd'.

	This means that a key name will be consistently un-slanted,
	so that there is no inconsistency e.g. between
	@key{RIGHT} and @kbd{C-@key{RIGHT}}.

	* doc/info-stnd.texi: Revise use of @key and @kbd.

2022-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\smallerbook): Remove experimental page
	size setting, never documented or implemented in makeinfo.
	(Originally added 2005-04-18.)

2022-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%line_commands),
	* tp/Texinfo/XS/parsetexi/command_data.txt:
	Put page size commands together.

2022-01-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TextContent.pm (_convert): add end of line
	for all the 'line_arg', except when on a def_line as they already
	have an end of line in that case.

2022-01-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (rearrange_tree_beginning),
	tp/Texinfo/ParserNonXS.pm (parse_texi_file),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm
	(_maybe_ignore_before_setfilename, parse_texi_file):
	move code from _maybe_ignore_before_setfilename to
	Texinfo::Common renamed as rearrange_tree_beginning
	and remove similar code from ParserNonXS.pm and call
	that function there too.

2022-01-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%document_settable_unique_at_commands),
	tp/Texinfo/Convert/LaTeX.pm (@informative_global_commands)
	(_convert), tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/parser.c (register_global_command),
	tp/Texinfo/XS/parsetexi/parser.h (GLOBAL_INFO): set @afourpaper,
	@afourlatex, @afourwide, @afivepaper, @bsixpaper and @smallbook
	as global unique @-commands.

2022-01-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (split_by_node, split_by_section):
	do not generate unit_node nor unit_section.

2022-01-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (split_pages, _tree_unit_section)
	(_tree_unit_node, elements_directions): do not use unit_node
	or unit_section, instead use unit_command and associated_*
	through two functions _tree_unit_section and _tree_unit_node.

2022-01-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (from_element_direction),
	(_convert_heading_command, _prepare_tree_units_global_targets),
	tp/init/book.pm (book_format_navigation_header)
	(book_convert_heading_command, book_element_file_name):
	do not use unit_section or unit_node, use unit_command and
	associated_*.

2022-01-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Info.pm (format_error_outside_of_any_node),
	tp/Texinfo/Convert/Plaintext.pm (process_footnotes, _menu, _convert):
	rename $self->{'node'} as $self->{'current_node'}.

2022-01-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (element_is_tree_unit_top): simplify
	condition and use only 'unit_command'.

2022-01-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (command_text, element_is_tree_unit_top)
	(_convert_heading_command, _prepare_tree_units_global_targets),
	tp/Texinfo/Structuring.pm (split_by_node, split_by_section)
	(split_pages, elements_directions), tp/init/book.pm
	(book_format_navigation_header, book_convert_heading_command)
	(book_element_file_name): use unit_section instead of section and
	unit_node instead of node for extra tree unit keys.

	* tp/Texinfo/Convert/Converter.pm (sort_element_counts),
	tp/Texinfo/Convert/IXIN.pm (output_ixin), tp/Texinfo/Convert/Info.pm
	(output), tp/Texinfo/Convert/Plaintext.pm (process_footnotes):
	use tree unit 'unit_command'.

2022-01-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (_find_menus_of_node),
	tp/Texinfo/Structuring.pm (set_menus_node_directions)
	(complete_node_tree_with_menus), Transformations
	(_reassociate_to_node, complete_node_menu)
	(complete_tree_nodes_missing_menu, _print_down_menus)
	(regenerate_master_menu, set_menus_to_simple_menu),
	Pod-Simple-Texinfo/pod2texi.pl (_do_top_node_menu):
	put menus in extra.

2022-01-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (split_by_node, split_by_section)
	(_label_target_element, elements_directions),
	tp/Texinfo/Convert/DocBook.pm (_convert), tp/Texinfo/Convert/HTML.pm
	(_convert_heading_command, _html_get_tree_root_element)
	(_prepare_tree_units_global_targets), tp/Texinfo/Convert/TexinfoXML.pm
	(_convert), tp/init/book.pm (book_convert_heading_command): when
	splitting associate tree unit elements to node and section elements
	through 'structure'->{'associated_unit'} and not by reparenting to
	the tree units.

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (check_nodes_are_referenced)
	(set_menus_node_directions, complete_node_tree_with_menus, nodes_tree)
	(elements_directions), tp/Texinfo/Convert/Info.pm (format_node),
	tp/Texinfo/Convert/Plaintext.pm (process_footnotes),
	tp/Texinfo/Convert/TexinfoXML.pm (_convert): put node_* and menu_*
	directions in structure.

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (_convert), tp/Texinfo/Convert/HTML.pm
	(_prepare_tree_units_global_targets, _mini_toc,
	_default_format_contents), tp/Texinfo/Convert/IXIN.pm (output_ixin),
	tp/Texinfo/Convert/Plaintext.pm (format_contents),
	tp/Texinfo/Convert/TexinfoXML.pm (_convert),
	tp/Texinfo/Structuring.pm (sectioning_structure)
	(_print_sectioning_tree, _section_direction_associated_node)
	(complete_node_tree_with_menus, nodes_tree, elements_directions)
	(number_floats, get_node_node_childs_from_sectioning),
	tp/init/book.pm (book_print_up_toc, book_print_sub_toc)
	(book_convert_heading_command), tp/init/chm.pm (chm_init),
	tp/init/epub3.pm (epub_finish): put section_{up,next,prev}
	and toplevel_{up,next,prev} in structure.

	* tp/Texinfo/Convert/HTML.pm: more explanations and debugging
	informations.

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (float_type_number)
	(float_name_caption), tp/Texinfo/Convert/Plaintext.pm (_convert),
	tp/Texinfo/Convert/TexinfoXML.pm (_convert), tp/Texinfo/Structuring.pm
	(number_floats): put float number in structure and rename the key as
	float_number.

	* tp/Texinfo/Convert/DocBook.pm (_convert), tp/Texinfo/Convert/HTML.pm
	(command_text), tp/Texinfo/Convert/Plaintext.pm (format_contents),
	tp/Texinfo/Convert/Utils.pm (numbered_heading),
	tp/Texinfo/Structuring.pm (sectioning_structure),
	tp/init/book.pm (book_element_file_name): put number in structure.

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (sectioning_structure)
	(_print_sectioning_tree, section_level_adjusted_command_name)
	(split_pages, elements_directions), tp/Texinfo/Common.pm (debug_print_element),
	tp/Texinfo/Convert/DocBook.pm (_docbook_section_element),
	tp/Texinfo/Convert/HTML.pm (command_text, _convert_heading_command)
	(_prepare_tree_units_global_targets, _default_format_contents),
	tp/Texinfo/Convert/LaTeX.pm (_convert),
	tp/Texinfo/Convert/Plaintext.pm (format_contents, _convert),
	tp/Texinfo/Convert/Text.pm (heading),
	tp/Texinfo/Convert/Utils.pm (numbered_heading),
	tp/init/book.pm (book_convert_heading_command), tp/init/chm.pm
	(chm_init), tp/init/epub3.pm (epub_finish): put level in structure.

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_default_format_element_header)
	(_convert_tree_unit_type, _default_format_element_footer)
	(_html_set_pages_files), tp/Texinfo/Structuring.pm (split_by_node)
	(split_by_section, elements_directions, elements_file_directions):
	put unit_prev and unit_next in structure.

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (from_element_direction)
	(_prepare_special_elements), tp/Texinfo/Structuring.pm
	(elements_directions, elements_file_directions)
	(print_element_directions): put directions in
	{'structure'}->{'directions'}, not in {'extra'}->{'directions'}.

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoXML.pm (_convert): use unit_command
	extra key unit type to determine if assocaited with a node
	or a section instead of not having either node or section defined,
	should be more robust.

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%default_parser_specific_customization),
	tp/Texinfo/ParserNonXS.pm (parse_texi_file),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm
	(_maybe_ignore_before_setfilename),
	doc/texinfo.texi (Other Customization Variables):
	remove IGNORE_BEFORE_SETFILENAME (always set).

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (%parser_state_configuration)
	(_set_global_informations, parse_texi_file, _register_global_command),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (get_parser_info)
	(_maybe_ignore_before_setfilename, global_commands_information):
	use commands_info instead of extra as key for parser global
	commands informations.
	Synchronize code used to set preamble_before_setfilename.

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_expand_macro_body): ignore arg value
	if there are less arguments given to the macro than the argument
	found.

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_parse_texi): check if top_context_command
	is not undef too, which would correspond to the root context, for
	heading specification context command check.

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* INSTALL: describe TEXINFO_XS_PARSER use.

	* tp/Texinfo/XS/parsetexi/README: update.
	 
	* tp/Texinfo/XS/misc.c (xs_abort_empty_line): use the modified
	context strings from ParserNonXS.

	* tp/Texinfo/XS/misc.c (xs_merge_text): no more warning when creating
	a new content.

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (parse_texi_text, parse_texi_file)
	(_close_commands, _setup_document_root_and_before_node_section),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm
	(_maybe_ignore_before_setfilename, parse_texi_file),
	tp/Texinfo/XS/parsetexi/api.c (parse_string),
	tp/Texinfo/XS/parsetexi/close.c (close_commands),
	tp/Texinfo/XS/parsetexi/element_types.txt,
	tp/Texinfo/XS/parsetexi/parser.c
	(setup_document_root_and_before_node_section, parse_texi_file,
	begin_paragraph_p),
	tp/Texinfo/XS/misc.c (xs_abort_empty_line),
	tp/Texinfo/Convert/Plaintext.pm (_convert):
	rename text_root type as before_node_section.

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/IXIN.pm (output_ixin),
	tp/Texinfo/Convert/TexinfoXML.pm (_set_ignored_type):
	do not ignore before first node.  Remove now unused
	_set_ignored_type().

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (no_root_command_tree),
	tp/Texinfo/Transformations.pm (fill_gaps_in_sectioning)
	(insert_nodes_for_sectioning_commands)
	(_get_non_automatic_nodes_with_sections): do not use
	no_root_command_tree, instead inspect the contents directly.
	Remove no_root_command_tree().

	* tp/Texinfo/Structuring.pm (split_by_section): explicitly select
	root commands for sections (which are not nodes).

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_tree_unit_type, convert)
	(output): only output a rule if there is something after.

	* tp/Texinfo/Structuring.pm (split_by_node),
	tp/Texinfo/Convert/Info.pm (output), tp/Texinfo/Convert/Plaintext.pm
	(process_footnotes), tp/Texinfo/Convert/TexinfoXML.pm (_convert):
	do not use no_root_command_tree() to check if there is no node.
	If there is no node, instead of setting extra no_node
	key, simply do not set extra node key.

2021-12-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%default_types_conversion),
	(_convert_tree_unit_type, convert, output): do not use the
	text_root type to make sure that footnotes and rules are output
	when there are no tree units.  Do it in the output() and convert()
	functions.

	* tp/Texinfo/Structuring.pm (split_by_section),
	tp/Texinfo/Convert/TexinfoXML.pm (_convert): do not use
	no_root_command_tree() to check if there is no section.
	If there is no section, instead of setting extra no_section
	key, simply do not set extra section key.


2021-12-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (sectioning_structure): do not
	use no_root_command_tree() to check if there is no section
	structure, use the tree directly to define $sec_root.

	* tp/Texinfo/Convert/LaTeX.pm (output): no need to modify the
	tree structure anymore.

2021-12-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_setup_document_root_and_text_root)
	(parse_texi_text, parse_texi_file, parse_texi_line, _parse_texi),
	tp/Texinfo/XS/parsetexi/api.c (parse_file, parse_text),
	tp/Texinfo/XS/parsetexi/parser.c (setup_document_root_and_text_root),
	(parse_texi_file, parse_texi): pass both root element and current
	element to parse_texi().
	Rename setup_text_root() as setup_document_root_and_text_root().

2021-12-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/LaTeX.pm,
	tp/Texinfo/Convert/NodeNameNormalization.pm,
	tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/Convert/TexinfoXML.pm,
	tp/Texinfo/Convert/Text.pm, tp/Texinfo/Convert/TextContent.pm,
	tp/Texinfo/ParserNonXS.pm (parse_texi_file),
	tp/Texinfo/XS/parsetexi/element_types.txt,
	tp/Texinfo/XS/parsetexi/parser.c (parse_texi_file):
	rename preamble type as preamble_before_beginning and
	preamble_text as text_before_beginning.

	* tp/Texinfo/ParserNonXS.pm (parse_texi_text, _parse_texi):
	defined $root in parse_texi_text() instead of _parse_texi().

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parse_texi_file): simplify
	code with the new tree geometry.

2021-12-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_close_commands, _setup_text_root)
	(_parse_texi),
	tp/Texinfo/XS/parsetexi/api.c (parse_text),
	tp/Texinfo/XS/parsetexi/close.c (close_commands),
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command),
	tp/Texinfo/XS/parsetexi/parser.c (setup_text_root, parse_texi_file)
	(parse_texi): create a document_root if there is a text_root in order
	to always have the same geometry for the root of the tree.

2021-12-30  Patrice Dumas  <pertusus@free.fr>

	* tp/init/epub3.pm (epub_finish): put jslabels file id in <spine>.

2021-12-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm: prefix context strings by ct_
	to have specific names (similar with XS parser context enum names).

2021-12-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_begin_preformatted, _end_line),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block),
	tp/Texinfo/XS/parsetexi/parser.c (begin_preformatted):
	begin rawpreformatted at the only place where it can begin,
	and not in begin_preformatted().

2021-12-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_end_preformatted, _end_line),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line),
	tp/Texinfo/XS/parsetexi/parser.c (end_preformatted):
	only close preformatted type in end_preformatted().
	Close all the empty types after an @end command.

	* tp/Texinfo/ParserNonXS.pm (_begin_preformatted, _merge_text)
	(_end_line): do not initialize 'contents' for preformatted to match with
	what is done in XS parser.


2021-12-29  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (HTML Customization Variables),
	(Other Customization ariables): remove ENABLE_ENCODING_USE_ENTITY
	and FALLBACK_TO_NUMERIC_ENTITY.  Describe the quotes used for
	CLOSE_QUOTE_SYMBOL and OPEN_QUOTE_SYMBOL in HTML when --enable-encoding
	is used.

	(@code{@@documentencoding}): explain what --enable-encoding does
	for HTML.

2021-12-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (@variable_string_settables),
	tp/Texinfo/Convert/HTML.pm (%defaults, _convert_text)
	(converter_initialize): remove ENABLE_ENCODING_USE_ENTITY
	always as if false.

2021-12-29  Gavin Smith  <gavinsmith0123@gmail.com>

	ASCII_PUNCTUATION documentation.

	* NEWS: Mention.
	* doc/texinfo.texi (Other Customization Variables): Add
	ASCII_PUNCTUATION.
	(Inserting Quotation Marks): Remove text explaining which character
	encodings particular quotation marks are in.  Move discussion of TeX
	fonts later in node.
	(@documentencoding): State that UTF-8 is the default.

2021-12-29  Gavin Smith  <gavinsmith0123@gmail.com>

	ASCII_PUNCTUATION for any encoding

	* tp/Texinfo/Convert/Text.pm (brace_no_arg_command):
	Obey 'ascii_punctuation' setting regardless of the encoding.
	This means it works for '@documentencoding ISO-8859-1';
	specifically, outputting @copyright{} as (C) rather than an
	0xA9 byte.

2021-12-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Change internal setting

	* tp/Texinfo/Convert/Plaintext.pm: Set 'ascii_punctuation' setting
	if ASCII_PUNCTUATION is set as a customization variable, regardless
	of whether the output encoding is UTF-8.  This replaces 'extra_utf8'.
	* tp/Texinfo/Convert/Text.pm (brace_no_arg_command): Check
	'ascii_punctuation'.
	* tp/Texinfo/Structuring.pm (setup_index_entry_keys_formatting):
	Set 'ascii_punctuation' as an option for Texinfo::Convert::Text.

2021-12-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Rename variable to ASCII_PUNCTUATION

	* tp/Texinfo/Common.pm (@variable_string_settables):
	Change NO_UTF8_PUNCTUATION variable to ASCII_PUNCTUATION.  All
	references updated.

2021-12-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (@variable_string_settables),
	tp/Texinfo/Convert/Converter.pm (xml_accent)
	(_xml_numeric_entities_accent, xml_accents),
	tp/Texinfo/Convert/HTML.pm (%defaults): remove
	FALLBACK_TO_NUMERIC_ENTITY, effect is set always on.

2021-12-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Text.pm (%text_brace_no_arg_commands): use a
	simpler formatting (") for quotedblleft and quotedblright in ASCII
	more consistent with formatting of `` and ''.
	* tp/Texinfo/Convert/Unicode.pm: move quotedblleft, quotedblright,
	quoteleft and quoteright from %unicode_map to %extra_unicode_map.

2021-12-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Plaintext.pm (_process_text): use NO_UTF8_PUNCTUATION
	instead of @documentencoding for quotes and dash ini text.
	* tp/Texinfo/Convert/Text.pm (brace_no_arg_command): make explicit
	that the eight bit encodings known in Texinfo always go through
	Texinfo::Convert::Unicode::brace_no_arg_command().

2021-12-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Text.pm (brace_no_arg_command):
	Don't check 'extra_utf8' option unless the encoding actually is
	UTF-8.
	* tp/Texinfo/Convert/Unicode.pm
	(unicode_for_brace_no_arg_command, brace_no_arg_command):
	Rename to make it clearer that this can be used for other encodings
	too.
	* tp/t/test_sort.t: Remove unnecessary option from a test.

2021-12-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_in_preformatted_context_not_menu)
	(_kbd_formatted_as_code),
	tp/Texinfo/XS/parsetexi/context_stack.c
	(in_preformatted_context_not_menu), tp/Texinfo/XS/parsetexi/parser.c
	(kbd_formatted_as_code): add in_preformatted_context_not_menu() to
	determine if in a preformatted context that is not associated to a
	menu command.
	Use that function in kbd_formatted_as_code() to determine if kbd
	should be formatted as code in with kbdinputstyle set to 'example'.

2021-12-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Rename internal option

	* tp/Texinfo/Convert/Plaintext.pm (converter_initialize),
	* tp/Texinfo/Convert/Text.pm (brace_no_arg_command):
	Use 'extra_utf8' as name of an option instead of 'no_extra_unicode'.
	* tp/t/test_sort.t: Supply this option so as not to change test
	results.

2021-12-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Customization variable for turning off UTF-8 punctuation

	* tp/Texinfo/Common.pm (@variable_string_settables):
	Add NO_UTF8_PUNCTUATION variable.
	* tp/Texinfo/Convert/Plaintext.pm (%defaults): Turn it off by default.
	(converter_initialize): Replace code checking presence of
	"@documentencoding UTF-8" directive with check of new variable.
	This use of @documentencoding was never documented and users found
	it confusing.  Report from Alan Mackenzie <acm@muc.de>, help-texinfo
	October 2021.

2021-12-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_close_current, _end_line)
	(_enter_menu_entry_node, _parse_texi),
	tp/Texinfo/XS/parsetexi/close.c (close_current),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block, end_line)
	(end_line_misc_line), tp/Texinfo/XS/parsetexi/handle_commands.c
	(handle_block_command), tp/Texinfo/XS/parsetexi/menus.c
	(enter_menu_entry_node, handle_menu): do not open a preformatted
	context for menu types (description, comment...) the main menu
	preformatted context can be used instead.

2021-12-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (%no_paragraph_context, _close_commands)
	(_parse_texi), tp/Texinfo/XS/parsetexi/close.c (close_commands),
	tp/Texinfo/XS/parsetexi/context_stack.c (push_context),
	tp/Texinfo/XS/parsetexi/context_stack.h,
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command):
	always push a preformatted on context stack when entering a menu, no
	more menu context, it is better to check the command on the context
	command stack.

	* tp/Texinfo/ParserNonXS.pm (_check_no_text, _end_line),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line),
	tp/Texinfo/XS/parsetexi/handle_commands.c (check_no_text): do not test
	for rawpreformatted type when there can only be a preformatted type.

2021-12-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser): fix typo in
	passing DEBUG code.

	* tp/Texinfo/XS/parsetexi/api.c (parse_file): do not set
	debug_output to 0 unconditionally.

2021-12-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm: use undef for _push_context
	command argument if the context pushed corresponds to a type.

	* tp/Texinfo/ParserNonXS.pm (_top_context_command),
	tp/Texinfo/XS/parsetexi/context_stack.c (current_context_command):
	ignore unset commands starting from the top of the stack.

	* tp/Texinfo/ParserNonXS.pm (_end_line),
	tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): use
	current_context_command/_top_context_command to find if in a menu
	instead of the context stack to find if in a menu even if the
	context is preformatted.

2021-12-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%document_settable_multiple_at_commands),
	tp/Texinfo/XS/parsetexi/command_data.txt: make *heading commands
	global multiple commands.

2021-12-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (%in_full_text_commands):
	allow in heading commands to be in brace style commands.

	* tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting):
	put LINE_heading_spec commands in simple_text_command, and
	restrict in heading commands to be in in brace style commands
	or in LINE_heading_spec commands only.

2021-12-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%line_commands),
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command):
	set headings specifiction commands to be parsed as line commands.
	In the XS parser it amounts to not considering that they are raw
	line commands.

	* tp/Texinfo/XS/parsetexi/command_data.txt: add thissection,
	thissectionname, thissectionnum.

2021-12-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.h,
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_other_command)
	(handle_line_command): use LINE_heading_spec as data for headings
	specifications commands (like @enveheading...).  A flag such as
	CF_heading_spec could also have been used, but there are no flags
	available anymore.
	Check that the last context command is LINE_heading_spec for
	CF_in_heading commands.

2021-12-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/parsetexi/context_stack.c (push_context)
	(current_context_command), tp/Texinfo/XS/parsetexi/end_line.c,
	tp/Texinfo/XS/parsetexi/handle_commands.c,
	tp/Texinfo/XS/parsetexi/menus.c, tp/Texinfo/XS/parsetexi/separator.c:
	add a stack for commands associated with contexts.

2021-12-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/parsetexi/context_stack.h (context),
	tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace)
	(handle_close_brace),
	tp/Texinfo/ParserNonXS.pm (_parse_texi): use 'brace_command' as
	context for non @math brace commands with context.
	Do not test for math context when closing with paragraph, as there
	is no paragraph in math context.

2021-12-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (table_item_content_tree): take into
	account extra key command_as_argument_kbd_code to set code extra key
	for the formatting command.

2021-12-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/parsetexi/handle_commands.c (handle_brace_command),
	tp/Texinfo/XS/parsetexi/parser.c (kbd_formatted_as_code)
	(process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c
	(handle_close_brace),
	tp/Texinfo/ParserNonXS.pm (_kbd_formatted_as_code, _parse_texi):
	put the code determining if kbd is to be formatted as code in a
	function, name along kbd_formatted_as_code().  If @kbd as argument
	of @*table should be formatted as code, ad an extra key for the
	@*table command, command_as_argument_kbd_code, set to 1.

2021-12-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm: really setup kbd formatting
	for table terms.

2021-12-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TextContent.pm (_convert): add an end of line
	after a 'table_term' @-command since there are none in the tree.

2021-12-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (converter_initialize): do not modify
	$default_no_arg_commands_formatting{'normal'} based on configuration,
	modify a duplicate.

2021-12-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_xtable_description_command_format)
	(_convert): for @*table descriptions formatting, use only one
	\item with \parbox and \\ between @item/@itemx lines to avoid
	too much spacing.  Idea by Gavin.
	Instead of using format= of enumitem description, format each
	@item/@itemx line with a LaTeX macro, either existing or setup.

2021-12-26  Patrice Dumas  <pertusus@free.fr>

	* tp/init/html32.pm (html32_format_separate_anchor): redefine.

2021-12-24  Gavin Smith  <gavinsmith0123@gmail.com>

	History node revision

	* doc/texinfo.texi (History):  Edit.  More on Info history.  Add
	an historical email in an @ignore block.

2021-12-24  Gavin Smith  <gavinsmith0123@gmail.com>

	History node revision

	* doc/texinfo.texi (History):
	Remove acknowledgement text.  This text appeared
	in Texinfo 2.16 (a beta test) released 9 October 1992.
	Likely written by Robert Chassell.  Copied here for posterity:

	  Our thanks go out to all who helped improve this work,
	  particularly to @w{Francois Pinard} and
	  @w{David D.@: Zuhn}, who tirelessly recorded and reported
	  mistakes and obscurities; our special thanks go to
	  @w{Melissa Weisshaus} for her frequent and often tedious reviews
	  of nearly similar editions.  Our mistakes are our own.

	Later, by Texinfo 4.0 (September 1999), this was changed to add:
	
	  The indefatigable Eli Zaretskii and Andreas Schwab have
	  provided patches beyond counting.  Zack Weinberg did the
	  impossible by implementing the macro syntax in @file{texinfo.tex}.
	
	Karl Berry likely wrote this latter text.

2021-12-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser):
	Remove code and comments contemplating the possibility of
	an array or hash setting for a @set flag, as gdt does
	not pass this on.

2021-12-26  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_anchor_command)
	(_default_format_separate_anchor, _convert_heading_command)
	(_convert_index_command): add a specific formatting function to
	format separate anchors.  Use <a> for separate anchors instead of
	<span> and add a class.

	* tp/Texinfo/Convert/HTML.pm (_convert_float_command): integrate the
	id in the float <div>.

2021-12-26  Patrice Dumas  <pertusus@free.fr>

	* tp/init/book.pm (book_convert_heading_command): synchronize with
	HTML.pm _convert_heading_command().

2021-12-26  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_default_format_heading_text)
	(_convert_heading_command): add an $id argument to
	_default_format_heading_text() to add an id to the heading.
	Use that possibility in _convert_heading_command() is there
	is no header and no id already output.  Report by Per Bothner.

2021-12-26  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Config.pm (texinfo_register_command_opening)
	(GNUT_get_commands_open), tp/Texinfo/Convert/HTML.pm
	(%default_commands_open, default_commands_open, converter_initialize)
	(_convert, _open_quotation_command): add an API to setup
	functions to be called when an @-command is first encountered.

	* tp/Texinfo/Convert/HTML.pm
	(register_pending_formatted_inline_content)
	(cancel_pending_formatted_inline_content)
	(get_pending_formatted_inline_content, _convert_quotation_command)
	(_open_quotation_command, _convert_paragraph_type)
	(_convert_preformatted_type), tp/init/html32.pm
	(html32_convert_paragraph_type): add an API to register, cancel and
	get formatted content to be prepended to inline content.
	Use that API and the API for opening functions to handle quotation
	argument formatting.

2021-12-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_do_jslicenses_file): close <table>.

	* tp/init/epub3.pm (epub_setup, epub_finish): handle INFO_JS_DIR
	and JS_WEBLABELS_FILE.

2021-12-24  Per Bothner  <per@bothner.com>

	* js/info.js: Update document.title as pages are selected.

	* js/info.js (on_keydown): Prevent the event default behavior.
	This prevents the character sometimes getting inserted into the
	mini-buffer.

	* js/info.js (Minibuffer index.render): Handle missing index better.
	Specifically, 'i' now warns "No index in this document".

2021-12-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_set_variables_texi2html): use a CSS
	inline style for BIG_RULE <hr> size.

2021-12-24  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%css_map, _default_format_heading_text)
	(_convert_center_command, _convert_subtitle_command)
	(_convert_paragraph_type): use CSS instead of align attribute for
	<p>, <div> and <h*> which do not have align attribute in strict HTML4.

	* tp/Texinfo/Convert/HTML.pm (_convert_listoffloats_command):
	reindent.

2021-12-24  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_xtable_command):
	remove compact="compact" from <dl>, it is not strict HTML4 and
	it does not seem to have an effect in firefox.

2021-12-24  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (get_parser_info),
	tp/Texinfo/XS/parsetexi/api.c (build_global_info):
	do not pass txiindex*ignore @set value especially, rely
	on 'index_ignore_chars' in index entry.

	* tp/Texinfo/Structuring.pm (setup_index_entry_keys_formatting)
	(index_entry_sort_string, sort_indices),
	tp/Texinfo/Convert/LaTeX.pm (_index_entry): use index entries
	'index_ignore_chars' to set ignored characters in sorting.
	Remove $ignore_chars return from setup_index_entry_keys_formatting()
	and remove $ignore_chars argument of index_entry_sort_string().

2021-12-24  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/parsetexi/macro.c (clear_value): Check for
	internal flag name and clear in global_info.

	* p/Texinfo/ParserNonXS.pm (_enter_index_entry): set
	'index_ignore_chars'.

2021-12-24  Gavin Smith  <gavinsmith0123@gmail.com>

	index_ignored_chars hash on index entry

	* tp/Texinfo/XS/parsetexi/tree_types.h (IGNORED_CHARS): New struct.
	* tp/Texinfo/XS/parsetexi/parser.h (GLOBAL_INFO),
	* tp/Texinfo/XS/parsetexi/tree_types.h (INDEX_ENTRY):
	Add it as a field.
	* tp/Texinfo/XS/parsetexi/macro.c (store_value): Check for
	internal flag name and record in global_info.

	* tp/Texinfo/XS/parsetexi/indices.c (enter_index_entry):
	Save ignored_chars from global_info.
	* tp/Texinfo/XS/parsetexi/api.c (build_single_index_data):
	Create 'index_ignored_chars' hash on each index entry.
	(build_global_info): Add comment to remove code in future
	when the 'index_ignored_chars' hash is used.
	* tp/Texinfo/XS/parsetexi/parser.c (wipe_global_info): Add
	a comment confirming that all fields are wiped.

2021-12-24  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (index_entry_sort_string),
	tp/Texinfo/ParserNonXS.pm (_enter_index_entry):
	correct 'index_ignore_flags' as it should have been
	'index_ignore_chars'.

2021-12-23  Gavin Smith  <gavinsmith0123@gmail.com>

	<code> for @t

	* tp/Texinfo/Convert/HTML.pm (%style_attribute_commands):
	Output @t with <code> instead of <tt>.
	* NEWS: Mention.

	<tt> is a deprecated tag in HTML5, although it is harmless
	to use it.  Nonetheless, changing it is one less thing to
	worry about.

	In practice, @t is most often used when @code would be
	semantically correct, but the author doesn't want quotes to
	appear in Info output.	Here are some reasons why not:
	- The argument was a single character
	- There were already quotes of some kind enclosing the argument
	- It's evident from context or the argument itself that the argument
	  could be computer code (e.g. name of a Usenet newsgroup)

2021-12-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@documentlanguage):
	Remove text added on 2007-06-14 referencing possible future
	gettext/makeinfo support of BCP 47.  If it still matters, somebody
	will ask for it.

2021-12-23  Patrice Dumas  <pertusus@free.fr>

	* tp/init/epub3.pm: conversion to epub 3.2.

2021-12-23  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (@code{@@format}): add missing protection
	or { and } in @format example.

2021-12-23  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/Converter.pm:
	rename 'out_filename' as 'out_filepath'.

	* tp/Texinfo/Convert/HTML.pm (html_image_file_location_name)
	(_convert_image_command): separate code to determine image
	file location, basename and extension to be able to use in init
	files, in particular to find the image file.

	* tp/Texinfo/Convert/HTML.pm (output): set 'filename' and
	'out_filepath' for the converter when there is no page and no
	tree unit to hold this information.

2021-12-23  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (output_files_open_out): add
	$output_encoding argument to set the encoding irrespective
	of document encoding.

2021-12-23  Patrice Dumas  <pertusus@free.fr>

	* tp/init/chm.pm (_chm_convert_tree_to_text): rename
	convert_tree() as _chm_convert_tree_to_text().

2021-12-21  Gavin Smith  <gavinsmith0123@gmail.com>

	Chapter list for -c CONTENTS_OUTPUT_LOCATION=inline

	* tp/Texinfo/Convert/HTML.pm (_convert_heading_command):
	Output top-level list of chapters for Top node even if
	CONTENTS_OUTPUT_LOCATION is 'inline'.  If @contents appeared
	at the end of the document, then there would be no list of chapters
	at the start at all, so risk having an unnecessary list.  Suppress
	the list only when CONTENTS_OUTPUT_LOCATION is 'after_top' (the
	default).  Report from Benno Schulenberg 2021-10-18.

2021-12-21  Brendan O'Dea  <bod@debian.org>  (tiny change)

	* install-info/install-info.c (parse_input): Allocate all
	fields of struct spec_entry.

2021-12-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* install-info/install-info.c (extract_menu_file_name):
	Remove unused.  Report from Brendan O'Dea <bod@debian.org>.

2021-12-21  Alfred M. Szmidt  <ams@gnu.org>  (tiny change)

	* doc/texinfo.texi (@code{@@format}): Add example input.

2021-12-21  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (run_stage_handlers),
	tp/Texinfo/Convert/TexinfoXML.pm (output): fix the call of
	document_error().

	* tp/Texinfo/Report.pm: correct the order of arguments in
	document_error() documentation.

2021-12-20  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (html_attribute_class): fix case
	of INLINE_CSS_STYLE with multiple classes.

2021-12-20  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (close_html_lone_element)
	(_xhtml_re_close_lone_element): rename _html_close_lone_element() as
	_xhtml_re_close_lone_element().
	Rename close_html_lone_element_if_needed() as
	close_html_lone_element() and close instead of re-closing. Per Bothner
	idea.

2021-12-20  Patrice Dumas  <pertusus@free.fr>

	* tp/texi2any.pl: remove \n from translated strings is newly
	modified strings.  Report from Benno Schulenberg.

2021-12-20  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_root_html_element_attributes_string),
	doc/texinfo.texi (HTML Customization Variables): add
	HTML_ROOT_ELEMENT_ATTRIBUTES to be able to add attributes
	to the <html> HTML document root element.

2021-12-19  Patrice Dumas  <pertusus@free.fr>

	* tp/init/html32.pm: set NO_CUSTOM_HTML_ATTRIBUTE.

2021-12-19  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_math_command)
	(_convert_heading_command, _contents_inline_element)
	(_convert_special_element_type): always call
	html_attribute_class() to set a class attribute.

2021-12-19  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_item_command)
	(_convert_def_line_type): only output <span> associated with
	copiable anchor if there is a copiable anchor.

	* tp/init/html32.pm: no copiable anchor.

2021-12-19  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_image_command)
	(_default_format_button_icon_img): call
	close_html_lone_element_if_needed() for <img>.

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type):
	correct use of html_attribute_class().

	* tp/Texinfo/Convert/HTML.pm (_default_format_end_file)
	(converter_initialize): use <span> instead of <font>
	for program name in footer.

2021-12-19  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_default_format_end_file): use
	defined() to test if defined, not true value.

	* tp/Texinfo/Convert/HTML.pm (_do_jslicenses_file): use
	DOCTYPE from customization.  Sort license files for reproducible
	output.

2021-12-19  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Other Customization Variables),
	tp/Texinfo/Common.pm (@variable_string_settables),
	tp/Texinfo/Convert/HTML.pm (close_html_lone_element_if_needed)
	(html_line_break_element, _html_close_lone_element):
	add USE_XML_SYNTAX.  This amounts mainly to calling
	close_html_lone_element_if_needed() on HTML elements
	without end of element.  Add html_line_break_element() to
	output a line break element.

	* tp/Texinfo/Convert/HTML.pm (html_non_breaking_space)
	(substitute_html_non_breaking_space): rename
	non_breaking_space() and substitute_non_breaking_space().

2021-12-19  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (Other Customization Variables),
	tp/Texinfo/Convert/HTML.pm (non_breaking_space)
	(substitute_non_breaking_space, %BUTTONS_EXAMPLE)
	(%defaults, _indent_with_table, _set_non_breaking_space)
	(converter_initialize, _default_format_special_element_body):
	use numeric entities everywhere in HTML if USE_NUMERIC_ENTITY
	is set.  Use functions to set and get the non breaking space
	entity.  Set OPEN_QUOTE_SYMBOL CLOSE_QUOTE_SYMBOL and
	MENU_SYMBOL to undef in the default case, to set them
	dynamically based on USE_NUMERIC_ENTITY.

2021-12-19  Gavin Smith  <gavinsmith0123@gmail.com>

	Documentation of --OPT vs. --no-OPT

	* doc/texinfo.texi : Be clearer as to the effects of
	--OPT versus --no-OPT and which does what.  Put --OPT
	first and put options in alphabetical order based on this.
	Report from Dan Jacobson.

2021-12-19  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix usage message

	* tp/texi2any.pl (makeinfo_help): Say "columns" instead of
	"characters".  From Dan Jacobson.

2021-12-19  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix usage message for help2man formatting

	* tp/texi2any.pl (makeinfo_help):
	Change indentation of the message for the -o message so that
	help2man treats it as a single paragraph.
	Split up part of the usage message so the text for each option
	can be translated separately.  Report from
	Dan Jacobson <jidanni@jidanni.org> and suggested fix by
	Alfred M. Szmidt <ams@gnu.org>.

2021-12-19  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm
	(xml_format_text_with_numeric_entities),
	tp/Texinfo/Convert/DocBook.pm (_convert),
	tp/Texinfo/Convert/HTML.pm (_convert_text): add
	xml_format_text_with_numeric_entities() based on DocBook
	converter text, and use it in HTML if USE_NUMERIC_ENTITY
	is set.

2021-12-19  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_parse_macro_command_line)
	(_lookup_macro_parameter, _expand_macro_body, _parse_texi):
	Add _lookup_macro_parameter() to find the formal argument index
	by going through macro element args instead of adding 'args_index'
	in _parse_macro_command_line() and removing it later from the tree.
	Based on the C parser code.

2021-12-19  Gavin Smith  <gavinsmith0123@gmail.com>

	Parsetexi.pm clear list of include directories

	* tp/Texinfo/XS/parsetexi/input.c (clear_include_directories):
	New function to clear the path for finding @include files
	* tp/Texinfo/XS/parsetexi/api.c (reset_parser): Call it.

2021-12-19  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (@variable_string_settables),
	tp/Texinfo/Convert/Converter.pm (_format_numeric_entities_accent)
	(xml_accent, _xml_named_entities_numeric_fallback_accent)
	(xml_accents), tp/Texinfo/Convert/DocBook.pm (%defaults)
	(cmdname), doc/texinfo.texi (Other Customization Variables):
	re-add USE_NUMERIC_ENTITY with the meaning of using numeric
	entities in priority.  In DocBook, use Texinfo::Convert::Converter
	xml_accents and set USE_NUMERIC_ENTITY, remove docbook_accent().

2021-12-19  Gavin Smith  <gavinsmith0123@gmail.com>

	Attempt to make texi2any relocatable

	* tp/texi2any.pl: Reinstate code removed on 2018-08-15, which
	attempted to find associated files relative to the installed location
	of texi2any.  Also find loadable XS modules.

	Report from Nikolay Kudryavtsev <nikolay.kudryavtsev@gmail.com>
	who was using Eli Zaretskii's ezwinports build of Texinfo.

2021-12-19  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (xml_accent): fix tieaccent
	regexp for entities.

2021-12-19  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (@variable_string_settables),
	tp/Texinfo/Convert/Converter.pm (xml_accents), 
	tp/Texinfo/Convert/HTML.pm (%defaults, _set_variables_texi2html),
	doc/texinfo.texi (Other Customization Variables),
	tp/t/accents.t: rename USE_NUMERIC_ENTITY as
	FALLBACK_TO_NUMERIC_ENTITY.

2021-12-18  Gavin Smith  <gavinsmith0123@gmail.com>

	No more doctypes

	* tp/Texinfo/Convert.pm (%defaults) <DOCTYPE, FRAMESET_DOCTYPE>:
	Replace HTML 4.01 Transitional and Frameset doctype declarations
	with simple HTML 5-type doctype string.

2021-12-17  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (add_valid_customization_option),
	tp/Texinfo/Config.pm (texinfo_add_valid_customization_option),
	tp/init/highlight_syntax.pm (texinfo_add_valid_customization_option):
	Rename Texinfo::Common add_valid_option() as
	add_valid_customization_option() and Texinfo::Config
	texinfo_add_valid_option() as
	texinfo_add_valid_customization_option().

	* tp/Texinfo/Config.pm: improve comments.


2021-12-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%defaults, _convert_xref_commands),
	tp/Texinfo/Common.pm (@variable_string_settables),
	doc/texinfo.texi (@node HTML Customization Variables): add
	customization variable NO_CUSTOM_HTML_ATTRIBUTE in order not
	to output HTML with custom attributes in elements if set.
	Report from Kurt Hornik.

2021-12-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_multitable_body_type),
	tp/init/html32.pm (html32_convert_multitable_body_type):
	convert multitable_body type as tbody.  Report from Kurt Hornik.

2021-12-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_row_type,
	_convert_multitable_head_type), tp/init/html32.pm
	(html32_convert_row_type, html32_convert_multitable_head_type):
	add _convert_multitable_head_type() to convert multitable_head type,
	to thead, consistently with other formats, instead of doing the
	conversion in _convert_row_type().

2021-12-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_display_file_info): Add 1 to line number so
	that the first line is reported as line 1 rather than line 0 and that
	the last line is reported as 100% through the node.

2021-11-24  Ken Brown <kbrown@cornell.edu>

	* tp/Texinfo/XS/Makefile.am: Reference gnulib libraries when
	building MiscXS.la library.

2021-11-24  Gavin Smith  <gavinsmith0123@gmail.com>

	install-info avoid accessing freed memory

	* install-info/install-info.c
	(reformat_new_entries): Do not free a string.  This avoids
	referencing freed memory in case the input was found to be
	malformed in format_entry.
	(format_entry): If entry is not malformed, free output argument
	before assigning to it.
	
	Report and investigation from Brendan O'Dea.

2021-11-15 Ville Skyttä <ville.skytta@iki.fi>  (tiny change):

	No egrep or fgrep

	* README-hacking, contrib/gen-dir-node,
	contrib/perldoc-all/GNUmakefile,install-info/tests/defs.in,
	util/texi2dvi:

	Change use of egrep and fgrep to grep -E and grep -F.
	'egrep' and 'fgrep' have been deprecated in GNU grep since
	2007, and in current post 3.7 Git they have been made to emit
	obsolescence warnings.

2021-11-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (\L, \l): Add definitions using European
	Computer Modern fonts so that they work correctly in a fixed-width
	font.  Report from Karl.

2021-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Master Menu Parts, @pxref, @top command):
	Spelling and grammar fixes.  From Benno.

2021-10-11  Patrice Dumas  <pertusus@free.fr>

	* tp/texi2any.pl (_get_converter_default): use existing variable name.
	* tp/Texinfo/Common.pm (%default_converter_command_line_options):
	reindent.

2021-10-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Config.pm (GNUT_set_from_cmdline): avoid function
	name in warning message. Gavin report.

2021-09-26  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix page break between @verbatim environment and @image

	* doc/texinfo.tex (\image): Do not add an initial \nobreak before
	the image as this blocks a page break after a preceding @verbatim
	environment, causing breaking before the final line of the
	environment instead.  Report from Werner Lemberg.
	* doc/texinfo-tex-test.texi (Images): Add test case.

2021-09-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/end_line.c (parse_line_command_args)
	<@headings>: Add missing option value 'single'.  Report from
	Sergei Trofimovich <slyich@gmail.com>.

2021-09-13  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm: protect [ and ] with braces as they
	could be interpreted as LaTeX macros optional argument delimiters
	in some contexts.  Do not use framemethod=TikZ for mdframed for
	the case of generated \fbox in sectioning command leading to a
	failure.  Close preformatted before @listofloat and reopen after.

2021-09-13  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (_substitute_references): rename
	substitute_references() as _substitute_references(). 

2021-09-13  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%in_heading_commands): add some @-commands
	in that category that were missing.

	* tp/Texinfo/Common.pm (split_custom_heading_command_contents):
	add that function to split at @| contents of customization header
	@-commands such as @everyheading.

	* tp/Texinfo/Convert/LaTeX.pm: handle custom headers.  For that
	replace fancyhdr package by titleps, with fancyhdr it is too
	complicated to use chapter or section name.

2021-09-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (parse_node_manual), tp/Texinfo/ParserNonXS.pm,
	tp/Texinfo/Structuring.pm, tp/Texinfo/Transformations.pm: do not modify the
	input argument, let it be done by the caller.

2021-09-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (_convert_argument_and_end_line):
	use $self->format_comment_or_return_end_line() to better collect
	comments.

2021-09-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (html_attribute_class)
	(from_element_direction, _noticed_line_warn),
	tp/init/book.pm, tp/init/highlight_syntax.pm,
	tp/t/init/t2h_singular.init: rename _attribute_class()
	as html_attribute_class(), _element_direction() as
	from_element_direction(), and noticed_line_warn() as
	_noticed_line_warn().

2021-09-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (root_element_command_to_texinfo),
	tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/Convert/Texinfo.pm
	(root_element_command_to_texinfo), tp/Texinfo/Transformations.pm,
	tp/init/book.pm:
	rename _print_root_command_texi() as
	root_element_command_to_texinfo().  Move _print_root_command_texi()
	to Texinfo::Convert::Texinfo and rename as
	root_element_command_to_texinfo().

2021-09-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (section_level_adjusted_command_name),
	tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/DocBook.pm,
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/IXIN.pm,
	tp/Texinfo/Convert/TexinfoXML.pm, tp/init/book.pm: move
	_level_corrected_section() to Texinfo::Structuring and rename as
	section_level_adjusted_command_name()

2021-09-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_heading_command),
	tp/init/book.pm (book_convert_heading_command):
	rename $command as $element.  Use _level_corrected_section().

2021-09-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (table_item_content_tree),
	tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/Plaintext.pm: rename _table_item_content_tree()
	as table_item_content_tree().

2021-09-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (format_comment_or_return_end_line),
	tp/Texinfo/Convert/TexinfoXML.pm, tp/Texinfo/Convert/DocBook.pm:
	rename _end_line_or_comment() as format_comment_or_return_end_line().

2021-09-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/TexinfoXML.pm
	(_collect_leading_trailing_spaces_arg): move to
	Texinfo::Convert::TexinfoXML as it is only used there.

2021-09-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoXML.pm (_leading_trailing_spaces_arg):
	avoid code duplication.

2021-09-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (_end_line_or_comment),
	tp/Texinfo/Convert/TexinfoXML.pm (_texinfo_line, _convert):
	check if 'args' exist in function and not in _convert().

	* tp/Texinfo/Convert/TexinfoXML.pm (_leading_spaces): remove,
	replace with _leading_spaces_before_argument() which is exactly
	the same.

	* tp/Texinfo/Convert/TexinfoXML.pm (_convert): remove
	$contents_possible_comment, call _end_line_or_comment() directly.

2021-09-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoXML.pm (_convert): avoid using $result
	if the @-command has no contents.  Make braces commands formatting
	code cleaner and easier to understand.
	Put content at end of line of @item @*table commands at the end
	of line, after closing the item element.

2021-09-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoXML.pm (_end_line_spaces)
	(_convert_argument_and_end_line, _convert): less redundant code.
	Use $cmdname instead of $command for $element->{'cmdname'}, and use
	it more consistently.

2021-09-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TextContent.pm (_convert): use a fixed string for
	@today if TEST is set.

2021-09-10  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (debug_print_element_short,
	debug_print_element, debug_print_element_details),
	tp/Texinfo/Convert/Converter.pm (present_bug_message):
	rename _print_element_tree_simple() as debug_print_element_short().
	Rename _print_current() as debug_print_element() and replace newline
	by the string \n in text.  Move _print_current_keys() from
	Texinfo::Structuring to Texinfo::Common and rename as
	debug_print_element_details().
	Rename _bug_message() as present_bug_message().

2021-09-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Text.pm (_convert): do not replace the
	$option hash when setting 'sc', instead increment.
	
	* tp/Texinfo/Convert/Text.pm (output): handle SUBDIR.  Merge
	the converter object with the text options based on the converter
	configuration, to have a blessed object needed in some functions.
	Without the 'converter' field as the Text converter does not allow for
	translation nor error reporting.

	* tp/Texinfo/Convert/Text.pm (output_files_information): add.

	* tp/tests/layout/list-of-tests: add tests of TEXINFO_OUTPUT_FORMAT
	textcontent and rawtext to test Texinfo::Convert::TextContent
	and Texinfo::Convert::Text as converters called from texi2any.pl.

2021-09-09  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (@code{@@float}): add example of reference
	to float formatted in the context of the manual.

2021-09-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (element_is_inline),
	tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/DocBook.pm,
	tp/Texinfo/Convert/TexinfoXML.pm: move _is_inline() and
	_in_inline() from Texinfo::Convert::Converter to Texinfo::Common,
	rename and merge in element_is_inline() adding an optional
	argument to de able to also do the same as _in_inline().

2021-09-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%defaults), tp/Texinfo/Common.pm
	(@variable_other_settables): rename SPECIAL_ELEMENTS_NAME as
	SPECIAL_ELEMENTS_HEADING.

	* tp/Texinfo/Convert/HTML.pm (_prepare_special_elements):
	set 'name' in 'extra' for special element name instead of
	'special_element'.   Use 'type' 'special_element' to detect
	that an element is a special element.

2021-09-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Config.pm (texinfo_set_format_from_init_file)
	(GNUT_get_format_from_init_file), tp/texi2any.pl,
	tp/init/chm.pm: use a propoer API in Texinfo::Config
	to set format from init file with texinfo_set_format_from_init_file()
	and retrieve from main program with GNUT_get_format_from_init_file().

2021-09-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Convert/Texinfo.pm (convert_to_texinfo):
	rename $root as $element if not a root element.

2021-09-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm: rename 'current_element' as
	'current_root_element'.  Rename $root as $element if not a
	root element.

2021-09-08  Patrice Dumas  <pertusus@free.fr>

	* tp/DebugTexinfo/DebugTree.pm, tp/init/highlight_syntax.pm,
	tp/init/latex2html.pm, tp/init/tex4ht.pm: rename $root as
	$element if not a root element.

2021-09-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm: rename $root as $element if not
	a root element.

2021-09-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/IXIN.pm,
	tp/Texinfo/Convert/NodeNameNormalization.pm,
	tp/Texinfo/Convert/TexinfoSXML.pm, tp/Texinfo/Convert/Text.pm,
	tp/Texinfo/Convert/TextContent.pm: rename $root as $element if not
	a root element and $elements as $tree_units if only for tree_units.

2021-09-08  Patrice Dumas  <pertusus@free.fr>

	* Texinfo/Structuring.pm (elements_directions): create directions only
	if pointing to other 'unit' elements.


	* Texinfo/Structuring.pm (_label_target_element): rename
	_node_element() as _label_target_element().

2021-09-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Info.pm (output), tp/Texinfo/Convert/Plaintext.pm
	(_convert_root_element):
	rename _convert_element() as _convert_root_element(), change variable
	names, rename $root as $element if not a root element.

2021-09-08  Patrice Dumas  <pertusus@free.fr>

	* Texinfo/Convert/TexinfoXML.pm: rename $root as $element if not
	a root element, and element as format_element for TexinfoXML elements.

	* Texinfo/Convert/DocBook.pm: rename $root as $element if not
	a root element, and element as format_element for DocBook elements.

2021-09-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_html_get_tree_root_element)
	(command_filename, command_root_element_command)
	(_prepare_tree_root_elements):
	rename command_tree_unit_command() as command_root_element_command(),
	_html_get_tree_unit() as _html_get_tree_root_element(),
	rename _prepare_elements() as _prepare_tree_root_elements(),
	and use root_element as those functions deal with root elements,
	including special elements, not only tree unit elements.

	* tp/Texinfo/Convert/HTML.pm (_convert_special_element_type),
	(_convert_tree_unit_type, _html_get_tree_root_element)
	(_prepare_tree_root_elements, _prepare_special_elements, _convert):
	use a specific type for special elements, 'special_element' instead
	of 'unit' and split _convert_special_element_type out of
	_convert_tree_unit_type to format them.

	* tp/Texinfo/Convert/HTML.pm (command_element): remove, it is unused,
	also do not set target 'unit', it is not used either.

	* tp/Texinfo/Structuring.pm (_print_current_keys), tp/Texinfo/ParserNonXS.pm:
	move _print_current_keys() to Texinfo::Structuring where it is used.

2021-09-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (set_tree_unit_file)
	(_set_tree_units_files, output, _convert_document_tree_units),
	tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/HTML.pm
	(set_tree_unit_file, _set_tree_units_files)
	(_convert_document_tree_units, _default_format_element_header)
	(element_is_tree_unit_top, _default_format_element_header)
	(_convert_heading_command, _convert_tree_unit_type)
	(_html_get_tree_unit, _html_set_pages_files)
	(_prepare_tree_units_global_targets),
	tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/Plaintext.pm,
	tp/Texinfo/Convert/TexinfoXML.pm, tp/Texinfo/Structuring.pm
	(split_by_node, split_by_section, elements_file_directions),
	tp/init/book.pm, tp/init/chm.pm, tp/t/init/mini_ker_t2h.init,
	tp/t/init/misc_file_collision.init, tp/t/init/t2h_singular.init:
	Rename element as tree_unit when it corresponds to the
	section and associated node tree element, such that
	element can be used for any tree element.
	Rename the corresponding type as unit and associated
	element extra fields.
	In Texinfo::Convert::Converter, rename _set_element_file()
	as set_tree_unit_file(), _set_pages_files() as _set_tree_units_files()
	and _convert_document_elements() as _convert_document_tree_units().
	In Texinfo::Convert::HTML, rename command_element_command() as
	command_tree_unit_command(), element_is_top() as
	element_is_tree_unit_top(), _convert_element_type() as
	_convert_tree_unit_type(), _get_element() as _html_get_tree_unit(),
	_set_html_pages_files() as _html_set_pages_files(),
	_prepare_global_targets() as _prepare_tree_units_global_targets()

2021-09-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (node_information_filename),
	tp/Texinfo/Convert/HTML.pm: rename _node_filename() as
	node_information_filename().

2021-09-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (converter),
	tp/Texinfo/Convert/Text.pm (converter),
	tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/Info.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm:
	rename converters field 'extra' as 'global_commands' to be more
	specific and avoid a field that is already used by tree elements.

2021-09-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm
	(normalized_sectioning_command_filename), tp/Texinfo/Convert/HTML.pm:
	rename _sectioning_command_normalized_filename() as
	normalized_sectioning_command_filename().

2021-09-07  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (set_informative_command_value),
	tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm:
	rename _informative_command() as set_informative_command_value().

2021-09-07  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (write_or_return)
	tp/DebugTexinfo/DebugTree.pm, tp/Texinfo/Convert/DocBook.pm,
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/IXIN.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/TexinfoXML.pm:
	rename _output_text() as write_or_return().

2021-09-07  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (top_node_filename),
	tp/Texinfo/Convert/HTML.pm: rename _top_node_filename()
	as top_node_filename().

2021-09-07  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (@code{@@code}, @code{@@allowcodebreaks}):
	make clear that @allowcodebreaks has no effect in HTML.

	* tp/Texinfo/Convert/HTML.pm (@informative_global_commands):
	remove allowcodebreaks and documentencoding that are not used
	at all.

2021-09-07  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (@code{@@documentlanguage}): explain that
	in DocBook lang only sets the language in the following sections.
	Text from Gavin.

2021-09-07  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (parse_texi_file, _setup_text_root)
	(_parse_texi), tp/Texinfo/Structuring.pm (no_root_command_tree),
	tp/Texinfo/Transformations.pm: use a function to setup 'text_root'
	type in tp/Texinfo/ParserNonXS.pm.  Prepare recognizing trees
	with text_root and @bye only as trees without root command in
	no_root_command_tree().
	No functional change, aim is to reduce difference with future code
	changing the tree in ParserNonXS.pm.

2021-09-07  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (determine_files_and_directory)
	(_set_element_file, _top_node_filename, _set_pages_files)
	(create_destination_directory), tp/DebugTexinfo/DebugTree.pm,
	tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/HTML.pm
	(_set_html_pages_files, _prepare_elements, _prepare_special_elements)
	(_default_format_frame_files, _do_jslicenses_file),
	tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/Info.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/TexinfoSXML.pm,
	tp/Texinfo/Convert/TexinfoXML.pm, tp/Texinfo/Convert/Text.pm:
	in Texinfo::Convert::Converter rename _create_destination_directory() as
	create_destination_directory() and _set_outfile() as
	determine_files_and_directory().  Do not set anything directly
	in those methods, set if needed in the specific converters,
	instead return the file and directory names.  Pass those names
	directly to files called in output(), notably _set_element_file(),
	_top_node_filename() and _set_pages_files() instead of using the
	converter as a hash.  Rename _set_pages_files() as
	_set_html_pages_files() in Texinfo::Convert::HTML and pass the
	file names to this method and other methods called by output().

	* tp/Texinfo/Convert/Converter.pm (output_no_split): close output
	file.  This method is unused and untested.

2021-09-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (_set_pages_files): do not use
	a non defined method to get element command, access the
	'extra' value directly.

	* tp/Texinfo/Convert/Info.pm, tp/Texinfo/Convert/Plaintext.pm:
	change name of methods/method used, such that methods used/set in
	Info.pm are not marked as internal (beginning with _).

2021-09-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (%set_flag_index_char_ignore)
	(_enter_index_entry), tp/Texinfo/Structuring.pm
	(index_entry_sort_string): add the ignored characters based
	on txiindex*ignore values to index_entry dynamically in parser.
	Use these values.  Inactive implementation, waiting for implementation
	in XS parser to activate.  Design partly based on Gavin ideas.

2021-09-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm (%defaults, convert, convert_tree)
	($DEFAULT_LANG, output, _convert): set the default for
	documentlanguage as undef, but use $DEFAULT_LANG, set to 'en' as
	lang attribute for the whole document if documentlanguage is undef.
	Use a stack of languages, with current documentlanguage value
	pushed at sectioning command opening, removed when a sectioning
	command is closed.  If the new language is different from the
	container section, set a lang attribute.

	* tp/Texinfo/Convert/DocBook.pm (%docbook_global_commands):
	remove 'documentencoding'.

2021-09-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/IXIN.pm: do not call
	set_global_document_commands().

2021-09-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (output, output_no_split): remove
	calls to set_global_document_commands(), it is better if converters
	set the global commands on a case per case basis.

	* tp/Texinfo/Convert/Info.pm (_info_header),
	tp/Texinfo/Convert/Plaintext.pm (get_informative_global_commands):
	pass @informative_global_commands to with
	get_informative_global_commands() to limit the vairables on which
	set_global_document_commands() is used in Texinfo::Convert::Info
	_info_header().

	* tp/Texinfo/Convert/Plaintext.pm (%contents_commands): remove unused
	variable.

	* tp/Texinfo/Convert/Plaintext.pm (new_formatter): access 'frenchspacing'
	through get_conf(), and not ->{'conf'}.

	* tp/Texinfo/Convert/Plaintext.pm (@informative_global_commands,
	%formatting_misc_commands): remove from @informative_global_commands
	the @-commands that are not used through configuration or
	translation.  Put @*contents commands in %formatting_misc_commands
	such that they are taken into account, even if not in
	@informative_global_commands anymore.

2021-09-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoXML.pm (format_header): remove document
	wide xml:lang texinfo element attribute as it does not corresponds to
	the document language settings in Texinfo which should be done with
	documentlanguage elements and are not a document-wide characteristic.

2021-09-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (set_global_document_commands),
	tp/Texinfo/Convert/HTML.pm (_prepare_elements),
	tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/Info.pm,
	tp/Texinfo/Convert/TexinfoXML.pm:
	rename _set_global_multiple_commands() as
	set_global_document_commands().  Add a list of global commands to
	process in argument.
	In Texinfo::Convert::HTML, use set_global_document_commands()
	in more specific ways specifying the changed variables and restoring
	after use if not needed anymore.  For contents, the variables are set
	early and once for all as it needs to be known in advance in many
	codes.

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type): fix the
	case of @deftypefn and similar commands with @deftypefnnewline
	on and no argument, the type and name were missing.

2021-09-05  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Text.pm (copy_options_for_convert_text),
	tp/Texinfo/Common.pm, tp/Texinfo/Convert/DocBook.pm,
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/IXIN.pm,
	tp/Texinfo/Convert/Info.pm, tp/Texinfo/Convert/LaTeX.pm,
	tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/Convert/TexinfoXML.pm,
	tp/Texinfo/Convert/Text.pm, tp/Texinfo/Convert/TextContent.pm,
	tp/Texinfo/Structuring.pm, tp/init/chm.pm,
	tp/init/highlight_syntax.pm: move copy_options_for_convert_text()
	from Texinfo::Common to Texinfo::Convert::Text.

2021-09-05  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%index_names), tp/t/test_utils.pl (test):
	complete the %index_names structure to have the 'contained_indices'
	field and use it as a reference in tests for the default index
	names structure.

	* tp/Texinfo/Common.pm (copy_options_for_convert_text)
	(copy_contents), tp/Texinfo/Structuring.pm (print_element_directions)
	(index_entry_sort_string, get_node_node_childs_from_sectioning),
	tp/t/test_utils.pl (unsplit), tp/Texinfo/Transformations.pm,
	tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm,
	tp/Texinfo/Convert/TexinfoXML.pm, tp/Texinfo/Convert/Text.pm,
	tp/Texinfo/Convert/TextContent.pm:
	rename Texinfo::Common _convert_text_options() as
	copy_options_for_convert_text().
	Add _copy_contents as copy_contents() in Texinfo::Common,
	from Texinfo::Structuring.
	Rename Texinfo::Structuring _print_directions() as
	print_element_directions().
	Rename Texinfo::Structuring get_node_node_childs() as
	get_node_node_childs_from_sectioning().
	Rename Texinfo::Structuring index_key() as index_entry_sort_string().
	Move Texinfo::Structuring _unsplit() to tp/t/test_utils.pl, renamed
	as unsplit().
	Remove _sort_index_entries_in_letter() it is not used anymore,
	the same function is used for sorting when sorting by letter
	or not.

2021-09-05  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Translations.pm (gdt, complete_indices),
	tp/Texinfo/Convert/Text.pm: pass optionally the language to gdt().

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (get_parser_info)
	(_set_errors_node_lists_labels_indices, parse_texi_line): do
	the actions after parsing that are done in ParserNonXS for
	all parsing functions, using _set_errors_node_lists_labels_indices().

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parse_texi_text):
	do not merge the indices, it is done elsewhere.


2021-09-05  Patrice Dumas  <pertusus@free.fr>

	* texi2any.pl: use Storable::dclone to copy parser configuration
	for each file and command line options for each file.  A shallow
	copy is not enough to make sure that the initial information is not
	modified with arrays or hashes.  This happened in practice for
	'INCLUDE_DIRECTORIES'.

2021-09-05  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Translations.pm (complete_indices): do not delete
	$entry->{'command'}->{'extra'}->{'documentlanguage'} from tree.

2021-09-04  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%default_parser_common_customization),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser):
	do not consider ENABLE_ENCODING to be a parser option.

2021-09-04  Patrice Dumas  <pertusus@free.fr>

	* t/test_utils.pl: add a test comparison on sorted
	index entry sort strings for indices.

2021-09-04  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (sort_indices): do not add
	a 'key' in index entries when sorting.

2021-09-04  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid unnecessary documentlanguage extra value

	* tp/Texinfo/XS/parsetexi/parser.c (wipe_global_info): Set
	global_documentlanguage to null rather than an empty string.
	This avoids a "documentlanguage" key being set on some @def*
	commands (like @defop) where there is no @documentlanguage directive
	in the document.  Report from Patrice.

2021-09-04  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (sort_indices),
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/IXIN.pm,
	tp/Texinfo/Convert/Plaintext.pm, tp/init/chm.pm:
	merge sort_indices_by_letter() in sort_indices().
	Merge do_index_keys() in sort_indices() too.  Sort using
	especially created lists with entries informations.  Do not
	use entry 'key' at all.  Return keys used to sort entries as
	a hash reference.

2021-09-04  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Config.pm (Texinfo::MainConfig::new):
	bless module hash and not input hash.  Return explicitly the
	blessed hashes.

2021-09-04  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (txt_image_text),
	tp/Texinfo/Convert/Plaintext.pm (_image_text),
	tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/Info.pm:
	move _image_text() from Texinfo::Convert::Plaintext to
	Texinfo::Convert::Converter and rename as txt_image_text().

2021-09-04  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/DocBook.pm,
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/IXIN.pm,
	tp/Texinfo/Convert/IXINSXML.pm, tp/Texinfo/Convert/Info.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/PlainTexinfo.pm,
	tp/Texinfo/Convert/NodeNameNormalization.pm,
	tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/Convert/Texinfo.pm,
	tp/Texinfo/Convert/TexinfoSXML.pm, tp/Texinfo/Convert/TexinfoXML.pm,
	tp/Texinfo/Convert/Text.pm, tp/Texinfo/Convert/TextContent.pm,
	tp/Texinfo/Convert/Unicode.pm, tp/Texinfo/Convert/Utils.pm,
	tp/Texinfo/Encoding.pm, tp/Texinfo/ParserNonXS.pm,
	tp/Texinfo/Report.pm, tp/Texinfo/Structuring.pm,
	tp/Texinfo/Transformations.pm, tp/Texinfo/Translations.pm,
	tp/Texinfo/XS/parsetexi/Parsetexi.pm: do not export symbols that
	are always called as methods on an object.  Add $VERSION to
	modules lacking one.  Other minor fixes related to exporting
	and using modules.
	Rename Texinfo::Convert::Unicode unicode_accents() as
	_format_unicode_accents_stack() and eight_bit_accents() as
	_format_eight_bit_accents_stack().
	Export protect_hashchar_at_line_beginning() in
	Texinfo::Transformations.

	* tp/Texinfo/Common.pm (modify_tree), tp/Texinfo/Transformations.pm,
	Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm,
	Pod-Simple-Texinfo/pod2texi.pl, tp/texi2any.pl:
	remove the first argument of Texinfo::Common::modify_tree(),
	also in all the functions called by modify_tree and calling
	modify_tree.

2021-09-04  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm,
	tp/Texinfo/Convert/Converter.pm (float_name_caption),
	tp/Texinfo/Convert/Utils.pm (@MONTH_NAMES, expand_verbatiminclude)
	(definition_category, expand_today, translated_command_tree)
	(numbered_heading, definition_arguments_content)
	(find_innermost_accent_contents),
	tp/Texinfo/Convert/NodeNameNormalization.pm (set_nodes_list_labels),
	tp/Texinfo/Transformations.pm (protect_hashchar_at_line_beginning),
	tp/Texinfo/Translations.pm (complete_indices),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm,
	tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm,
	tp/Texinfo/Convert/Text.pm, tp/Texinfo/Convert/TextContent.pm,
	tp/Texinfo/ParserNonXS.pm, Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm,
	tp/init/chm.pm : move methods from Texinfo::Common to other files, to avoid
	dependencies on other modules and group code more logically.
	Most of the functions are moved to the newly created
	Texinfo::Convert::Utils file which groups miscellaneous functions
	usable in simple converters, in practice functions used by
	Texinfo::Convert::Text and other converters.  Exceptions are
	set_nodes_list_labels() moved to Texinfo::Convert::NodeNameNormalization
	because it uses that module, float_name_caption() moved to
	Texinfo::Convert::Converter, protect_hashchar_at_line_beginning()
	moved to Texinfo::Transformations and complete_indices() moved
	to Texinfo::Translations as it is mostly about translations.
	Add to, simplify and reorder loading of packages with use.

	* tp/Texinfo/Convert/Converter.pm (float_type_number),
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/Plaintext.pm:
	rename _float_type_number() as float_type_number().

	* tp/Makefile.am (dist_converters_DATA), po/POTFILES.in,
	po_document/POTFILES.in: add Texinfo/Convert/Utils.pm.

2021-09-03  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Config.pm (texinfo_register_no_arg_command_formatting)
	(GNUT_get_no_arg_command_formatting)
	(texinfo_register_style_command_formatting)
	(GNUT_get_style_command_formatting), tp/Texinfo/Convert/HTML.pm,
	tp/init/chm.pm, tp/init/html32.pm: setup an API for registering
	formatting of no_arg_commands and style_commands.

2021-09-03  Patrice Dumas  <pertusus@free.fr>

	* tp/maintain/lib/libintl-perl/: synchronize with code archive
	by removing generated files and adding files that were not present.
	None of the added/removed files are used/installed in Texinfo.

2021-09-03  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/DocBook.pm,
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/TexinfoXML.pm,
	tp/init/chm.pm, tp/init/html32.pm, util/txixml2texi.pl: replace
	commands_formatting with no_arg_commands_formatting to be more
	precise.

2021-09-03  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%default_main_program_command_line_options),
	tp/Texinfo/Config.pm (GNUT_set_main_program_default,
	Texinfo::MainConfig, new, get_conf, set_conf), texi2any.pl
	(set_main_program_default): add a scope with functions that
	mimics parser or converter with get_conf() and set_conf()
	methods but using directly Texinfo::Config informations.
	This allows to set a $main_configuration object in
	main program that is passed to functions that need information.
	Used in tests too, simply setting a hash reference and not accessing
	Texinfo::Config informations.
	handle FORMAT_MENU and CHECK_NORMAL_MENU_STRUCTURE more like a
	normal main program option.
	

	* tp/Texinfo/Common.pm (%default_structure_customization_values),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm, tp/Texinfo/ParserNonXS.pm:
	remove %default_structure_customization_values.

	* tp/Texinfo/Common.pm (set_output_encodings),
	tp/Texinfo/Convert/Converter.pm (converter), texi2any.pl: add
	set_output_encodings(), based on Texinfo::Converter::Convert
	to call on main program configuration for
	Texinfo::Common::output_files_open_out().

2021-09-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (converter): set
	$converter->{'converter_init_conf'} to the configuration
	options obtained after setting the defaults and applying
	the configuration passed as argument.

	* tp/Texinfo/Convert/Converter.pm (_set_global_multiple_commands):
	rename $multiple_commands_index as $commands_location.

2021-09-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm, tp/Texinfo/Convert/Converter.pm,
	tp/texi2any.pl: add more default values for command
	line options and customizations, separating specific main
	program and parser customization options, and command line
	set from other options.  Use the defaults in
	Texinfo::Convert::Converter and in texi2any.pl.

	* tp/Texinfo/Config.pm (texinfo_add_to_option_list)
	(texinfo_remove_from_option_list), tp/texi2any.pl,
	tp/t/init/t2h_singular.init: handle list options differently than
	string options.  Indeed, the lists need to be defined in the
	main program, therefore the main program list options would
	always take precedence if there is a precedence, and the list
	options set from init file would not have any effect. For
	list options, items are added and removed by calls to
	texinfo_add_to_option_list and texinfo_remove_from_option_list,
	be it from command line or init files, there is no precedence,
	but the order of calls matter.
	Rename $default_options as $main_program_default_options.

	* tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/Unicode.pm, tp/Texinfo/Structuring.pm,
	tp/Texinfo/XS/parsetexi/Parsetexi.pm, tp/init/chm.pm: load
	needed used modules explicitly.
	* tp/Texinfo/Convert/Text.pm: do not inherit
	Texinfo::Convert::Converter.

	* tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/Text.pm,
	tp/texi2any.pl, tp/t/init/t2h_singular.init, tp/texi2any.pl:
	handle 'EXPANDED_FORMATS' like a normal customization option in
	converters, in particular replacing 'expanded_formats'.

2021-09-02  Patrice Dumas  <pertusus@free.fr>

	* NEWS: document that L2H was removed.

	* tp/Texinfo/Config.pm (_GNUT_map_obsolete_options),
	(texinfo_set_from_init_file, GNUT_set_from_cmdline): 
	add _GNUT_map_obsolete_options to map obsolete options
	to current options.
	add _GNUT in front of internal functions starting with _.

2021-09-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (_get_error_registrar)
	(parse_texi_file, _get_errors): setup an error registrar
	to output the error message obtained before tree parsing.

	* tp/init/latex2html.pm (l2h_to_html): check that the
	command is set.

2021-09-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (converter_global_commands),
	tp/Texinfo/Convert/HTML.pm (output):
	handle the global unique commands similarly with the global
	multiple commands.  remove now unused converter_global_commands().
	Modify _set_global_multiple_commands such that it only set to the
	first, last or initial configuration values (replacing
	_unset_global_multiple_commands).  Rename 'conf_default'
	as 'converter_init_conf' and add 'output_init_conf' for
	converters that modify the initial configuration per output,
	currently HTML.
	* tp/Texinfo/Common.pm (%document_settable_at_commands):
	add as a merge of %document_settable_multiple_at_commands and
	%document_settable_unique_at_commands.

2021-09-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%document_settable_at_commands)
	(%document_settable_multiple_at_commands): rename
	%document_settable_at_commands as
	%document_settable_multiple_at_commands.

2021-09-01  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.texi (HTML Customization Variables)
	(@command{latex2html} Customization Variables, @command{texi2html})
	tp/Texinfo/Common.pm (@variable_string_settables)
	tp/texi2any.pl: remove L2H.  HTML_MATH should be set to l2h
	only.

2021-09-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (@variable_other_settables),
	tp/Texinfo/Convert/IXIN.pm (output_ixin),
	tp/Texinfo/Convert/IXINSXML.pm (%defaults):
	remove completely 'GLOBAL_COMMANDS'.

2021-09-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (converter_initialize): do not
	allow customization of 'commands_args'.  It is not already used
	and it is better to avoid making such changes which amounts
	to changing the Texinfo @-commands arguments meaning.

2021-09-01  Patrice Dumas  <pertusus@free.fr>

	* util/texi-elements-by-size: use $parser->registered_errors().

2021-09-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%default_parser_customization_values)
	(@variable_other_settables, locate_include_file)
	(_convert_text_options),
	tp/Texinfo/Convert/Converter.pm (%all_converters_defaults),
	tp/Texinfo/Convert/Text.pm (_code_options, convert_to_text)
	(_convert), tp/Texinfo/ParserNonXS.pm (%parser_state_configuration),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser), tp/texi2any.pl:
	turn 'include_directories' to a normal conf variable, renamed
	as 'INCLUDE_DIRECTORIES'.  As a consequence, locate_include_file
	now uses get_conf, which means that the $configurations_informations
	need to be blessed.  bless $options in Texinfo::Convert::Text
	convert_to_text() and instead of replacing the $options with
	the _code_options() function, use a state in '_code_options'
	to modify transiently instead of replacing each time code type
	formatting is needed.

	* tp/Texinfo/Config.pm (GNUT_load_config, GNUT_initialize_config)
	(_document_warn), tp/texi2any.pl: rename GNUT_load_config() as
	GNUT_initialize_config().  Pass $real_command_name and return
	$options, renamed $init_files_options.

	* tp/texi2any.pl (normalize_config, process_config): rename
	normalize_config() as process_config().
	Do not modify $cmdline_options after the first file, copy and
	modify.

2021-09-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Config.pm (texinfo_register_formatting_function),
	tp/Texinfo/Convert/HTML.pm (converter_initialize, run_stage_handlers):
	do not check the validity of texinfo_register_formatting_function()
	registered functions in Texinfo::Config but in Texinfo::Convert::HTML
	in converter_initialize().  Do not check that the stage handler is
	valid in Convert::HTML in run_stage_handlers() as it has already been
	done in Texinfo::Config.  This allows to avoid loading the
	Convert::HTML module early.

2021-09-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Config.pm (GNUT_get_stage_handlers)
	(GNUT_get_formatting_references, GNUT_get_commands_conversion)
	(GNUT_get_types_conversion), tp/Texinfo/Convert/HTML.pm:
	use a proper interface between Texinfo::Config and
	Texinfo::Convert::HTML for handlers.

2021-09-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Config.pm, texi2any.pl, tp/init/*.pm, tp/t/init/*.init: 
	rename _load_init_file as GNUT_load_init_file,
	_load_config as GNUT_load_config, set_from_init_file as
	texinfo_set_from_init_file, set_from_cmdline as GNUT_set_from_cmdline
	and get_conf as texinfo_get_conf to follow the convention that
	functions that should not be called by user init files codes are
	prefixed by GNUT_ while functions that can be called by user init
	files codes are prefixed by texinfo_.

	* tp/Texinfo/Config.pm: use explicitly Texinfo::Common for __(
	instead of using main program function.

2021-09-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Config.pm, texi2any.pl, tp/Texinfo/Convert/HTML.pm,
	tp/Makefile.am (dist_modules_DATA): put Texinfo::Config namespace
	in a separate file.  This is not perfect as Texinfo::Config is still
	entangled with Texinfo::Convert::HTML.  In particular delayed loading
	of converter modules in texi2any.pl is now ineffective for
	Texinfo::Convert::HTML.

2021-09-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Makefile.am (dist_converters_DATA, test_files),
	tp/tests/formatting/Makefile.am, tp/tests/indices/Makefile.am: add
	new files.

	* tp/Texinfo/Convert/LaTeX.pm (_convert): use basename for image file
	and not full path.  The same as in other converters.  As a side effect
	helps to pass make distcheck.

2021-08-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Makefile.am (dist_modules_DATA): add Texinfo/Translations.pm.

2021-08-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Report.pm, tp/Texinfo/Translations.pm,
	tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/Text.pm,
	tp/Texinfo/ParserNonXS.pm, tp/Texinfo/XS/parsetexi/Parsetexi.pm:
	move gdt() and string translation related code from
	tp/Texinfo/Report.pm to newly created tp/Texinfo/Translations.pm.

2021-08-31  Patrice Dumas  <pertusus@free.fr>

	* tp/texi2any.pl: use separate opened files informations
	for each of the files opened in texi2any.pl and add to
	the opened files list.

2021-08-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (open_out, output_files_open_out)
	(output_files_register_closed, output_files_opened_files)
	(output_files_unclosed_files),
	tp/Texinfo/Convert/Converter.pm (register_close_file, converter)
	(converter_opened_files, converter_unclosed_files, output_files_information)
	tp/DebugTexinfo/DebugTree.pm, tp/Texinfo/Convert/DocBook.pm,
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/LaTeX.pm,
	tp/Texinfo/Convert/TexinfoXML.pm, tp/Texinfo/Convert/Text.pm,
	tp/init/chm.pm, tp/texi2any.pl:
	move the opened output file registration API completely to
	Texinfo::Common, renaming open_out() as output_files_open_out()
	and moving converter_unclosed_files(), register_close_file()
	converter_opened_files() from Convert::Converter to 
	Texinfo::Common renaming as output_files_unclosed_files(),
	output_files_register_closed() and output_files_opened_files().
	Pass a hash reference, initialized in Convert::Converter::converter
	to the API functions rather than a full converter.  Access 
	this hash reference through output_files_information() defined in
	Convert::Converter.

2021-08-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (sectioning_structure, nodes_tree),
	tp/Texinfo/Convert/Converter.pm (%all_converters_defaults)
	(converter), Pod-Simple-Texinfo/pod2texi.pl, texi2any.pl:
	Do not set 'structring' keys in Texinfo::Structuring
	sectioning_structure() and nodes_tree(), return the
	informations that are set in the caller.  The 'structuring'
	is not associated with parser anymore, but setup in the
	Texinfo::Structuring function callers.

2021-08-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Report.pm (new, gdt),
	tp/Texinfo/ParserNonXS.pm (_line_warn, _line_error)
	(_setup_parser, simple_parser, parse_texi_file, registered_errors),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser, _get_errors)
	(registered_errors), texi2any.pl: do not initialize parsers
	as Texinfo::Report objects, instead create a new Texinfo::Report
	object in Texinfo::Report::new, and pass it from the parsers
	using registered_errors().

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (@ISA): do not inherit
	DynaLoader.

2021-08-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XSLoader.pm (init): pass warnings and die if
	the require of perl module associated with XS parser failed.

2021-08-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Transformations.pm (_print_down_menus): remove
	unused argument.

2021-08-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parse_texi_file):
	internationalize error message.

	* po_document/POTFILES.in, po/POTFILES.in: update.

2021-08-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Report.pm (document_warn, document_error),
	tp/Texinfo/Common.pm, tp/Texinfo/Convert/Converter.pm,
	tp/Texinfo/Convert/DocBook.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/Info.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm,
	Texinfo/ParserNonXS.pm, tp/Texinfo/Structuring.pm,
	tp/Texinfo/XS/parsetexi/Parsetexi.pm, tp/init/chm.pm,
	tp/init/highlight_syntax.pm, tp/init/latex2html.pm,
	tp/init/tex4ht.pm: separate registrar that
	register errors from from configuration in Texinfo::Report
	for document_warn() and document_error().

2021-08-30  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Report.pm (line_warn, line_error),
	Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm (_protect_hashchar),
	Pod-Simple-Texinfo/pod2texi.pl (_fix_texinfo_tree),
	tp/Texinfo/Common.pm (locate_include_file, expand_verbatiminclude)
	(_convert_text_options, _protect_hashchar_at_line_beginning)
	(protect_hashchar_at_line_beginning, set_nodes_list_labels)
	tp/Texinfo/Convert/DocBook.pm(_convert),
	tp/Texinfo/Convert/HTML.pm(noticed_line_warn)
	(_convert_verbatiminclude_command, _prepare_index_entries),
	tp/Texinfo/Convert/IXIN.pm (output_ixin),
	tp/Texinfo/Convert/Info.pm, tp/Texinfo/Convert/LaTeX.pm(_convert),
	tp/Texinfo/Convert/Plaintext.pm(_printindex_formatted, _convert),
	tp/Texinfo/Convert/Text.pm (_convert),
	tp/Texinfo/ParserNonXS.pm (_line_warn, _line_error),
	tp/Texinfo/Structuring.pm (sectioning_structure, warn_non_empty_parts)
	(_check_menu_entry, check_nodes_are_referenced)
	(set_menus_node_directions, complete_node_tree_with_menus)
	(nodes_tree, elements_directions, elements_file_directions)
	(associate_internal_references, do_index_keys, sort_indices
	(sort_indices_by_letter, new_complete_node_menu)
	tp/Texinfo/Transformations.pm (complete_node_menu)
	(complete_tree_nodes_menus, complete_tree_nodes_missing_menu)
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (get_parser_info, _get_errors)
	(parse_texi_line),
	tp/init/chm.pm, tp/texi2any.pl: separate registrar that 
	register errors from from configuration in Texinfo::Report.
	pass more options to Text converter.

2021-08-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Report.pm (line_warn, line_error, document_warn)
	(document_error, file_line_warn, file_line_error),
	tp/Texinfo/Convert/HTML.pm (noticed_line_warn)
	(noticed_line_error): do not handle 'ignore_notice' in
	Texinfo::Report, this is internal converter information.
	Instead use the new function noticed_line_warn() in converter
	in in relevant places to intercept messages and ignore them
	if 'ignore_notice' is set.

	* tp/Texinfo/Report.pm (gdt): do not pass 'gettext' it is not
	set not used anywhere.

2021-08-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (setup_index_entry_keys_formatting)
	(do_index_keys, sort_indices, sort_indices_by_letter),
	tp/Texinfo/Convert/LaTeX.pm, tp/init/chm.pm,
	tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/Plaintext.pm,
	tp/Texinfo/Convert/IXIN.pm: remove the now unused
	$parser_informations argument.

2021-08-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (setup_index_entry_keys_formatting):
	do not use input encoding to determine the encoding used in index
	key sorting.

2021-08-29  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (converter),
	tp/Texinfo/Convert/HTML.pm (_load_htmlxref_files, output),
	tp/Texinfo/Convert/IXIN.pm (output_ixin),
	tp/Texinfo/Convert/Info.pm (output, _info_header),
	tp/Texinfo/Convert/Text.pm (converter, output): rename 'info'
	as 'parser_info' in converter.

	* tp/Texinfo/Structuring.pm (warn_non_empty_parts)
	(set_menus_node_directions, complete_node_tree_with_menus)
	(nodes_tree, elements_directions, setup_index_entry_keys_formatting)
	(do_index_keys, sort_indices, sort_indices_by_letter),
	tp/texi2any.pl, tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/IXIN.pm,
	tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm,
	tp/init/chm.pm: pass explicitly parser informations and configuration
	informations.

2021-08-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/ParserNonXS.pm (_parse_texi): avoid "invalid
	interpolation" error in error message.

2021-08-28  Stephen Gildea <stepheng-texinfo@gildea.com> (tiny change)

	texinfo.tex: Simplify time-stamp local variables
	
	* doc/texinfo.tex: Use time-stamp-pattern in preference to setting
	multiple time-stamp Emacs variables.  Add time-stamp to hook locally,
	so that Emacs will accept this setting as safe without prompting.

2021-08-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/end_line.c (end_line) <def command>:
	Only store documentlanguage if set.  From Patrice.

2021-08-28  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/pod2texi.pl (_fix_texinfo_tree)
	tp/texi2any.pl,
	tp/Texinfo/Common.pm (register_label, set_nodes_list_labels),
	tp/Texinfo/ParserNonXS.pm (labels_information, _register_label)
	(_end_line, _parse_texi),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (_complete_node_menus)
	(get_parser_info, parse_texi_line, labels_information)
	tp/Texinfo/Structuring.pm (_check_menu_entry)
	(_check_referenced_nodes, check_nodes_are_referenced)
	(set_menus_node_directions, complete_node_tree_with_menus)
	(nodes_tree, associate_internal_references),
	tp/Texinfo/Transformations.pm (_new_node)
	(insert_nodes_for_sectioning_commands, _print_down_menus)
	(new_master_menu, regenerate_master_menu, set_menus_to_simple_menu),
	tp/Texinfo/Convert/Converter.pm (converter):
	Rename labels_information() as set_nodes_list_labels() in
	Texinfo::Common, do not remove the 'labels' and always set
	'targets'.  Always call that function from the parsers.
	Have labels_information() return 'targets' list and 'nodes'
	list too.
	Use what is returned by labels_information() instead of a parser
	or converter in Texinfo::Structuring and Texinfo::Transform
	functions to access 'labels', 'targets' and 'nodes'.
	Move the definition of Texinfo::ParserNonXS _register_label
	as register_label in Texinfo::Common and use the 'labels'
	list in argument instead of the parser.
	Separate _check_referenced_nodes from complete_node_tree_with_menus
	and rename as check_nodes_are_referenced.

	* tp/Texinfo/Common.pm (%default_structure_customization_values):
	remove USE_UP_NODE_FOR_ELEMENT_UP, it is used from converter.

2021-08-28  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm(_parse_def, _end_line): put
	information about documentlanguage into the tree only if defined.

2021-08-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix setting documentlanguage from command line

	* tp/Texinfo/XS/parsetexi/parser.c (wipe_global_info): Do not
	reset document language if it was set from the command line.
	* tp/Texinfo/XS/parsetexi/api.c (reset_parser): Reset documentlanguage
	here too.
	* tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): Set
	documentlanguage via set_documentlanguage to allow override to
	take effect.
	
	Report from Patrice.

2021-08-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Give documentlanguage setting priority over @documentlanguage
	
	* tp/Texinfo/XS/parsetexi/Parsetexi.xs,
	* tp/Texinfo/XS/parsetexi/api.c (set_documentlanguage_override):
	New Perl-visible function to replace set_documentlanguage.
	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser): Call it.
	* tp/Texinfo/XS/parsetexi/parser.c (set_documentlanguage_fixed):
	New variable.
	* tp/Texinfo/XS/parsetexi/parser.c (set_documentlanguage): Don't
	set the document language if it was already set by
	set_documentlanguage_override.

 	Report from Patrice.

2021-08-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (xml_accent): if using numerical
	entities, use numerical entities for diacritics too.  Suggestion
	from Hefferon, Jim S.

2021-08-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/NodeNameNormalization.pm (unicode_accent):
	put @tieaccent diacritic between the characters.

2021-08-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (parse_texi_line): always add a line
	such as to always get error messages.
	* tp/Texinfo/Report.pm (gdt): show errors in parsing Texinfo generated
	for translations.

	* tp/Texinfo/ParserNonXS.pm (_setup_conf): use same error message
	as XS parser for unknown configuration option.

	* tp/t/test_utils.pl: add parser_options->{'init_files'} to support
	tests loading init files.

2021-08-26  Patrice Dumas  <pertusus@free.fr>

	replace in_gdt by accept_internalvalue

	* tp/Texinfo/ParserNonXS.pm, tp/Texinfo/Report.pm,
	tp/Texinfo/XS/parsetexi/Parsetexi.pm,
	tp/Texinfo/XS/parsetexi/Parsetexi.xs, tp/Texinfo/XS/parsetexi/api.c,
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/commands.c, tp/Texinfo/XS/parsetexi/parser.c,
	tp/Texinfo/XS/parsetexi/parser.h

2021-08-26  Patrice Dumas  <pertusus@free.fr>

	Internal command @txiinternalvalue for gdt strings value labels in
	tree

	* tp/Texinfo/ParserNonXS.pm (_parse_texi), tp/Texinfo/Report.pm (gdt)
	(_substitute_element_array), tp/Texinfo/XS/parsetexi/Parsetexi.pm
	(parser), tp/Texinfo/XS/parsetexi/Parsetexi.xs (set_in_gdt),
	tp/Texinfo/XS/parsetexi/api.c (reset_parser), 
	tp/Texinfo/XS/parsetexi/command_data.txt,
	tp/Texinfo/XS/parsetexi/command_ids.h,
	tp/Texinfo/XS/parsetexi/commands.c (lookup_command),
	tp/Texinfo/XS/parsetexi/parser.c (set_in_gdt)
	(process_remaining_on_line),
	tp/Texinfo/XS/parsetexi/parser.h: use a new internal @-command
	@txiinternalvalue to mark strings in trees generated in gdt.
	These @-commands are only valid if the parser parsing their 
	texinfo fragment is called with a specific configuration option.
	Same formatting as @value.

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parse_texi_line): call
	_get_errors().

2021-08-25  Patrice Dumas  <pertusus@free.fr>

	handle @novalidate in a more common way

	* tp/Texinfo/Common.pm (%default_parser_customization_values):
	add novalidate.
	* tp/texi2any.pl: do not set {'info'}->{'novalidate'} here.
	* tp/Texinfo/ParserNonXS.pm (_set_global_informations, _parse_texi)
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser, get_parser_info)
	tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command):
	Handle @novalidate more like other commands by setting
	{'info'}->{'novalidate'} based on global unique
	command information and configuration.
	* tp/Texinfo/XS/parsetexi/Parsetexi.xs (set_novalidate),
	tp/Texinfo/XS/parsetexi/parser.c (set_novalidate): remove.
	* tp/Texinfo/XS/parsetexi/api.c (build_global_info)
	(build_global_info2), tp/Texinfo/XS/parsetexi/parser.c
	(register_global_command), tp/Texinfo/XS/parsetexi/parser.h:
	register novalidate as a global command.


2021-08-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%default_parser_state_configuration)
	(%default_parser_customization_values, @variable_other_settables)
	(@parser_options), tp/Texinfo/Convert/Text.pm (converter),
	tp/Texinfo/ParserNonXS.pm (%parser_state_configuration),
	(_setup_parser, simple_parser), texi2any.pl,
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (%parser_default_configuration)
	(parser): rename 'expanded_formats' key as 'EXPANDED_FORMATS' in
	the configuration setting and in the parsers.
	Move %default_parser_state_configuration out of Common.pm to
	ParserNonXS.pm, renaming it %parser_state_configuration.
	Put the keys that are actually parser options in
	%default_parser_customization_values (EXPANDED_FORMATS and
	documentlanguage).  Remove correspondingly @parser_options.
	Do not set defaults for parse configuration in texi2any.pl
	and in Parsetexi.pm according to %default_parser_state_configuration.
	Do not set $parser_options for keys that are alreay in configuration.

2021-08-24  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (output_internal_links):
	do not use 'key' for index entries, as it may be different
	from the index entry to be used for sorting.

2021-08-24  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Text.pm (%ignored_brace_commands),
	tp/Texinfo/Convert/NodeNameNormalization.pm
	(%ignored_brace_commands): ignore sortas, seealso, seeentry.
	* tp/Texinfo/Structuring.pm (setup_index_entry_keys_formatting)
	(index_key, do_index_keys): split setup_index_entry_keys_formatting
	and index_key out of do_index_keys() such that the same code
	can be used in converters on individual index entries or
	subentries.
	* tp/Texinfo/Convert/LaTeX.pm (_index_entry): use
	Texinfo::Structuring::index_key() to setup sorting string
	for index entries in code.  Protect sortas strings.

2021-08-24  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (convert_index_subentries):
	use convert_tree() instead of _convert().

2021-08-24  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_printindex_command):
	convert @subentry in monospace context if in code index.
	* tp/Texinfo/Convert/Plaintext.pm (_open_code, _close_code)
	(_printindex_formatted, _convert): new functions to open and
	close _code type to be able to open and close code context
	without a tree element, to be able to use
	convert_index_subentries().

2021-08-21  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm,
	Pod-Simple-Texinfo/pod2texi.pl: rename 
	Texinfo::Convert::Texinfo convert() as convert_to_texinfo().
	Report from shoober420.

2021-08-21  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (%in_simple_text_headings_commands),
	(%simple_text_commands, %simple_text_headings_commands)
	(%default_valid_nestings): add valid nestings for
	%in_heading_commands like @thispage in %headings_specification_commands
	like @everyheading.  This should have an effect when
	%headings_specification_commands commands arguments are parsed.

2021-08-21  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_end_line): do not really
	keep the @include in tree when they have been replaced
	to avoid different test results until the XS parser has
	been modified (or not).

2021-08-21  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoXML.pm (%commands_formatting):
	format @| as divideheading element.
	* util/texinfo.dtd: add divideheading.  Add heading marks, such
	as thischapter.  Allow everyheading and similar to contain
	simple line text and heading marks.

2021-08-21  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/PlainTexinfo.pm (%defaults): set
	EXTENSION to texi.

2021-08-21  Patrice Dumas  <pertusus@free.fr>

	* tp/texi2any.pl: handle the case of 'FORMAT_MENU'
	not being defined and format 'nodes_tree' being set.
	Can happen if format is structure.

2021-08-21  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_top_context_command)
	(_parse_texi),
	tp/Texinfo/Common.pm (%headings_specification_commands):
	use a list of headings specification @-commands and
	a new function, _top_context_command() to determine if
	rightly in a headings specification @-commands when seeing an
	@-command in %in_heading_commands.

2021-08-21  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_init_context_stack)
	(_push_context, _pop_context, _get_context_stack)
	(_top_context): use functions to encapsulate
	parser 'context_state'.  Put context on context stack but
	also th eassociated command.  Gavin idea.

2021-08-17  Patrice Dumas  <pertusus@free.fr>

	* tp/init/tex4ht.pm (tex4ht_prepare, tex4ht_convert)
	(tex4ht_process_format, tex4ht_process_command):
	process commands in the input file order, using
	Texinfo::Common::collect_commands_list_in_tree().
	Prepare and process a file for tex4ht per format and 
	not per @-command.

2021-08-17  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (collect_commands_list_in_tree):
	add function that collects commands from tree and keep them
	in the order in which they appear.
	* tp/init/latex2html.pm (l2h_process): use 
	Texinfo::Common::collect_commands_list_in_tree() to
	collect @-commands in order and process them in order too.

2021-08-17  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (find_innermost_accent_contents)
	(float_name_caption, labels_information), 
	tp/Texinfo/Convert/Converter.pm (sort_element_counts),
	tp/Texinfo/Convert/DocBook.pm (_convert),
	tp/Texinfo/Convert/HTML.pm (_convert_def_line_type)
	(_prepare_footnotes, _external_node_href)
	(output_internal_links, output, _convert),
	tp/Texinfo/Convert/IXIN.pm (output_ixin),
	tp/Texinfo/Convert/Info.pm (output, _image),
	tp/Texinfo/Convert/LaTeX.pm (_convert),
	tp/Texinfo/Convert/PlainTexinfo.pm (_convert),
	tp/Texinfo/Convert/Plaintext.pm (_printindex_formatted)
	(_image_formatted_text, _image),
	tp/Texinfo/Convert/Texinfo.pm (convert)
	(node_extra_to_texi, _expand_cmd_args_to_texi),
	tp/Texinfo/Convert/TexinfoXML.pm (_texinfo_line, _convert),
	tp/Texinfo/Convert/Text.pm (convert, text_accents),
	tp/Texinfo/ParserNonXS.pm (_print_command_args_texi)
	(_parse_float_type, _end_line)
	(_register_extra_menu_entry_information, _parse_texi),
	tp/Texinfo/Structuring.pm (_check_node_same_texinfo_code)
	(_print_root_command_texi, _print_element_command_texi)
	(do_index_keys),
	tp/Texinfo/Transformations.pm (_reference_to_arg)
	(_reassociate_to_node),
	tp/init/chm.pm, tp/init/highlight_syntax.pm,
	tp/init/latex2html.pm, tp/init/tex4ht.pm,
	tp/t/*.t, tp/t/test_utils.pl, tp/texi2any.pl,
	tp/t/init/redefine_need.init: rename Texinfo::Convert::Texinfo
	convert() as convert_to_texinfo() and 
	Texinfo::Convert::Text convert() as convert_to_text()
	to make clearer that those functions are not part of
	the Converter traditionnal API.
	* tp/Texinfo/Convert/Text.pm (convert_to_text, convert):
	do not allow convert_to_text to be called with an object
	oriented syntax.  Add convert() to implement the Converter
	traditionnal API.
	* tp/Texinfo/Common.pm(_print_element_tree_simple): add
	a function that can be used for debugging purposes.

2021-08-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Unicode.pm (check_unicode_point_conversion)
	tp/Texinfo/Convert/Plaintext.pm (_convert)
	tp/Texinfo/Convert/LaTeX.pm (_convert):
	move the code checking actual conversion to UTF-8 of
	unicode codepoint string to Texinfo/Convert/Unicode.pm
	as check_unicode_point_conversion().

2021-08-15  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_end_line),
	tp/Texinfo/Convert/Texinfo.pm (convert),
	tp/Texinfo/Convert/TexinfoXML.pm (%ignored_types):
	Keep @include of included files in tree, with type
	set to 'replaced'.  Ignore 'replaced' type in converters
	that expand all @-commands, in the default case.  If
	Texinfo.pm convert() has a defined second argument given,
	expand replaced types.  Used in the parser to have
	@include replaced by its content, with replaced type set
	shown in error messages.

2021-08-15  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/ParserNonXS.pm (_parse_line_command_args):
	fix setchapternewpage argument.
	Changes in one debug message, reindent some code.

2021-08-12  Patrice Dumas  <pertusus@free.fr>

	Add support for @latex/@end latex in other formats

	* tp/Texinfo/Common.pm (%format_raw_command),
	tp/Texinfo/Convert/Text.pm (%ignored_block_commands),
	tp/Texinfo/XS/parsetexi/command_data.txt: add latex.
	* tp/t/converters_tests.t: add latex in conditionals tests.

2021-08-10  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix @defun sentence spacing

	* doc/texinfo.tex (\printdefunline): Call \plainfrenchspacing.
	Werner Lemberg reported that extra space would appear after a
	'?' in a definition line, which is often used for Lisp dialects
	like Scheme, in particular the documentation of Lilypond.
	* doc/texinfo-tex-test.texi (Definitions): Add example.

2021-08-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (%Latex_style_brace_commands)
	(_protect_text, _convert): handle style commands, verb and
	kbd, verbatim, @-, add kbdinputstyle in informative commands.
	* t/latex_tests.t, t/test_utils.pl: support for LaTeX converter
	tests.  Add a first test.

2021-08-11  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (_protect_text, _convert):
	use the context to determine if in math.  If in math protect
	text differently and use different conversions.
	Handle @math and @displaymath conversion.
	(_convert): prepend \leavevmode{} to @* conversion to avoid
	! LaTeX Error: There's no line here to end.
	(_image_formatted_text): protect text result.

2021-08-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/LaTeX.pm (%Latex_no_arg_brace_commands),
	(%LaTeX_text_only_no_arg_brace_commands, _latex_header, _convert):
	use LaTeX commands for @-commands with braces and no argument.
	* tp/Texinfo/Convert/LaTeX.pm (_latex_header, 
	%LaTeX_encoding_names_map): use OUTPUT_ENCODING_NAME to determine
	output encoding.
	* tp/Texinfo/Convert/LaTeX.pm (%defaults): set EXTENSION to tex.
	* tp/Texinfo/Convert/LaTeX.pm (output, convert, convert_tree):
	make output() more general, add convert() and convert_tree().

2021-08-07  Patrice Dumas  <pertusus@free.fr>

	* tp/tests/layout/list-of-tests,
	tp/tests/layout/res_parser/formatting_html_no_texi2html:
	add a coverage test for texi2any html style.

2021-08-07  Patrice Dumas  <pertusus@free.fr>

	* tp/tests/*/res_parser*: remove results of tests moved.

2021-08-07  Patrice Dumas  <pertusus@free.fr>

	* tp/tests/layout/list-of-tests,
	tp/tests/layout/res_parser/formatting_info/: (re)add a coverage
	test for info.

2021-08-07  Patrice Dumas  <pertusus@free.fr>

	* tp/tests/layout/list-of-tests: remove now useless -U texi2html
	and remove also -c TEXI2HTML=undef for formats other than html
	as it should not be needed.

2021-07-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/Parsetexi.xs: #include <config.h> to
	avoid gnulib error from unistd.h included via perl.h.  From
	Patrice.

2021-07-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: Bump to 6.8dev, no dist-xz.

2021-07-24  Gavin Smith  <gavinsmith0123@gmail.com>

	Update gnulib checkout
	
	This is intended to fix incompatibilities with upcoming glibc-2.34,
	related to the use of __attribute_nonnull__.  Reported by
	Sam James <sam@gentoo.org>.

2021-07-24  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid info crash for Brazillian Portuguese

	* info/infodoc.c (replace_in_documentation): Do not abort
	if command name is not found in documentation.  As the string
	may have come from a translated message, such a problem may
	not be found for some time.  Report from
	René Neumann <lists@necoro.eu>.

2021-07-12  Eli Zaretskii  <eliz@gnu.org>

	* tp/Texinfo/XS/parsetexi/handle_commands.c
	(handle_block_command): Don't let 'memcmp' try accessing memory
	past the end of the input buffer.

2021-07-07  Gavin Smith  <gavinsmith0123@gmail.com>

	Initial work on LaTeX back-end

	* tp/Texinfo/Convert/LaTeX.pm: File copied from Plaintext.pm
	and heavily modified.
	* tp/texi2any.pl (%formats_table, $makeinfo_help): Add 'latex'.

2021-07-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix texi2any reading from stdin

	* tp/Texinfo/XS/parsetexi/input.c (input_push_file): If input file
	name is "-", read from stdin instead.  Broken reading from standard
	input reported by Ken Brown and John Turney.

2021-07-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid repeated "locale -a" calls.

	* tp/Texinfo/Report.pm (gdt): Only try to call "locale -a" once
	and check its exit status.

2021-07-05  Gavin Smith  <gavinsmith0123@gmail.com>

	Find working locale for gettext

	* tp/Texinfo/Report.pm (gdt): If we couldn't set the locale, then
	run "locale -a" and try the locales named one by one.  This should
	allow the test_scripts/layout_formatting_fr_icons.sh test to
	pass on more systems.

2021-07-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Update instructions.  Add backup email
	addresses for contacting tug.org (from Karl).

2021-07-03  Per Bothner  <per@bothner.com>

	* js/info.css: Styling tweaks for js-info to make help scrollable.

2021-07-03  Gavin Smith  <gavinsmith0123@gmail.com>

	6.8

	* tp/Texinfo/Convert/HTML.pm: unconditionally reference MathJax
	code if HTML_MATH is 'mathjax' and it is non-split output.

2021-07-03  Gavin Smith  <gavinsmith0123@gmail.com>

	6.8

	* configure.ac, NEWS, util/texi2dvi, util/texi2pdf: versionn
	* tp/Texinfo/Documentlanguages.pm: Regenerate.

2021-07-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* INSTALL: Refer to doc/README.  From Patrice.

2021-07-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/README: tweak instructions

2021-06-30  Gavin Smith  <gavinsmith0123@gmail.com>

	pretest 6.7.92

	* configure.ac, util/texi2dvi, util/texi2pdf: version
	* tp/texi2any.pl: 2021
	* README-hacking: update

2021-06-30  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove old js files.
	
	* js/texinfo-js.in, js/texinfo-js.texi,
	* js/build-aux/eslint.json, js/build-aux/modernizr.json,
	js/build-aux/texinfo.tex: Remove.
	* js/README: remove out-of-date material

2021-06-24  Patrice Dumas  <pertusus@free.fr>

	Remove SVN keyword.

	* util/texi2pdf (version), util/pdftexi2dvi (version): Do not
	use '$Revision$' keyword as this doesn't work with git.

2021-06-22  Per Bothner  <per@bothner.com>

	* js/info.js (Remote_store): Use parent window rather than top window.
	The latter breaks if we're running the info browser in an iframe.

2021-06-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: update

2021-06-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* Pod-Simple-Texinfo/pod2texi.pl: Fix some messages.  Report from
	Benno Schulenberg.  Update copyright years.

2021-06-16  Gavin Smith  <gavinsmith0123@gmail.com>

	pretest 6.7.91

	* configure.ac, util/texi2dvi, util/texi2pdf,
	* info/info.c (main), install-info/install-info.c (main):
	version, 2021.

2021-06-08  Gavin Smith  <gavinsmith0123@gmail.com>

	Document @indent @image{}

	* doc/texinfo.texi (Image Syntax): Document that @image commands
	should sometimes be preceded by @indent or @noindent.

2021-05-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix afl-fuzz error
	
	* info/info-utils.c (scan_reference_label): Avoid advancing
	pointer if we are already at the end of the buffer, in the case
	of a malformed input file.  Report from Nathaniel Beaver for file
	generated by afl-fuzz.

2021-05-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix afl-fuzz error

	* info/info-utils.c (copy_input_to_output): Avoid calling
	copy_converting with negative argument in case of malformed
	input file.  Report from Nathaniel Beaver for file generated
	by afl-fuzz.

2021-05-04  Per Bothner  <per@bothner.com>

	* js/info.js (updater.navigate): Relative movement without node links.
	For example if the current item is a @subsection without a @node,
	requesting the 'next' item can't use the Next link as there is none.
	Instead, use the nesting in the sidebar ToC.

	* js/info.js: Use keydown event handler instead of keyup.
	The former is more standard.

2021-05-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_image_command): format
	@image with an <img> tag in preformatted environment.  Report from
	Per Bothner.

2021-05-02  Per Bothner  <per@bothner.com>

	* js/info.js: Fix sidebar-update after selecting non-section link.
	For example index link or @anchor are not sections,
	hence not in the ToC.  To update the sidebar we need to find the
	the sectioning element surrounding the anchor.
	This involves some back-and-forth messaging.

2021-05-02  Vitezslav Crhonek <vcrhonek@redhat.com>

	* contrib/fix-info-dir:  Remove unused variable

2021-05-02  Vitezslav Crhonek <vcrhonek@redhat.com>

	* util/texi2dvi (input_file_name_decode):
	Fix ShellCheck SC1083 warning
	https://github.com/koalaman/shellcheck/wiki/SC1083
	This is only for suppresing the warning, both '{' and '}'
	are supposed to be literals.

2021-05-02  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid extra newline after @titlefont

	* tp/Texinfo/Convert/Plaintext.pm (_convert) <@titlefont>:
	Remove newline from end of output as a newline following
	@titlefont{...} is now output separately since change on
	2021-04-25.

2021-04-29  Per Bothner  <per@bothner.com>

	* js/info.js (Text_input.keyup): At end hide sidebar if narrow.

	* js/info.js (Sidebar.render): Fix initial rendering.

	* js/info.css: Style hide-sidebar buttom vertically.

2021-04-28  Per Bothner  <per@bothner.com>

	* js/info.js: Change auto-hide of sidebar in narrow windows.
	Now clicking in sidebar in narror window doesn't hide sidebar,
	but click in main page does - however, navigation is supressed.
	Also changed the show/hide-sidebar logic to work using the
	store/action/dispatch framework.

2021-04-27  Per Bothner  <per@bothner.com>

	* js/info.js (config.LOCAL_HTML_PAGE_PATTERN): Handle local links.
	I.e. links like "#foo" on the same page.

	* js/info.js (cache_index_links): Fix thinko alink->link.

2021-04-27  Per Bothner  <per@bothner.com>

	Change how "show/hide sidebar" button is displayed.
	Move it to upper-left and use arrows, to hopefully both
	make it more visible and take less space in hide mode.
	* js/info.js (add_header): Change DOM structure to make this work.
	(hide_sidebar_if_narrow): New function.
	* js/info.css: Styling changes for desired show/hide style.

	Improve determination of whether links are internal or not.
	* js/info.js (config.LOCAL_HTML_PAGE_PATTERN): New regex pattern
	(maybe_pageref_url_p): Use LOCAL_HTML_PAGE_PATTERN.

2021-04-25  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid suppressing first paragraph indent with an @image.

	* doc/texinfo.tex (\imageindent): New macro.
	(\image): Use it.
	* doc/texinfo-tex-test.texi (Paragraph formatting): New section.

	Inconsistency between Info and TeX reported by Werner Lemberg.

2021-04-25  Gavin Smith  <gavinsmith0123@gmail.com>

	Whitespace after @image

	* tp/Texinfo/Convert/Plaintext.pm (_convert): Output any
	top-level whitespace element.  This allows a blank line
	of whitespace to appear after an @image that is not part
	of a paragraph.

	* tp/t/05paragraph.t (sole_image): New test.

	Report from Werner Lemberg.

2021-04-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (get_tags_of_indirect_tags_table):
	Free arrays in case of malformed Info file.
	Report from Vitezslav Crhonek.

2021-04-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (get_tags_of_indirect_tags_table):
	Reduce indentation of code.

2021-04-25  Vitezslav Crhonek <vcrhonek@redhat.com>  (tiny change)

	Fix memory leaks.

	* info/nodes.c (get_nodes_of_tags_table):
	info_create_tag returns a pointer to a newly allocated TAG structure.
	Before continuing to the start of the loop it is necessary to free the
	current TAG structure, because the pointer will be overwritten by
	new value in the next iteration of the loop.

2021-04-25  Vitezslav Crhonek <vcrhonek@redhat.com>  (tiny change)

	Fix memory leaks.
	
	* info/makedoc.c (process_one_file):
	The memory is freed for both pointers at the end of the loop.
	But there is one break that leaves the loop without freeing them.
	* info/session.c (info_goto_invocation_node):
	The value of 'default_program_name' is assigned by
	program_name_from_file_name() function.
	Its description says 'Return value should be freed by caller.'
	That was not done in this case.

2021-04-25  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix memory leaks.
	
	* info/m-x.c (describe_command): Always free a variable.
	* info/filesys.c (info_file_find_next_in_path): Do not free a string
	that shouldn't be freed.

	Reports from Vitezslav Crhonek.

2021-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\doxeteximage):
	Add an \hbox around \XeTeXpdffile or \XeTeXpicfile to avoid
	over-long line.  Report from Werner Lemberg.

2021-04-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\end): Add % after opening brace to
	prevent spurious space being added to the output.  Report
	from Werner Lemberg for "@end iftex".

2021-03-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-test.inc (run_ginfo): Increase timeout for
	test from 3 to 5 seconds in an attempt to stop test failures.

2021-03-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Multitable Column Widths): Mention effect
	of inter-column space for @columnfractions.

2021-03-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\indexnofonts): Do not define any of the
	non-English letter glyph commands with a special definition
	that removes a following pair of braces, as these braces are
	not always present in the definitions for e.g. Unicode characters.
	This could lead to an error message within \setpdfdestname where
	\indexnofonts was called.  Report from Werner Lemberg for XeTeX.

2021-03-22  Per Bothner  <per@bothner.com>

	* js/info.js: Add tooltips for show/hide sidebar button.
	(SHOW_SIDEBAR_TOOLTIP, HIDE_SIDEBAR_TOOLTIP): Tooltip text.
	(show_sidebar): Update tooltips on show/hide of sidebar.

	* js/info.js (maybe_pageref_url_p): Recognize "index.html#PAGE".

2021-03-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\multitableparskip, \multitableparindent)
	(\multitablecolspace, \multitablelinespace):
	Try removing these and hardcoding values.  \multitablelinespace
	was not used anyway and a comment referred to a @multitablecolmargin
	sequence which didn't exist.  This should make the code a bit
	easier to understand.
	(\setmultitablespacing): Remove.

2021-03-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\multitable): Fix indendation of code.  Remove
	useless macro \multistrut replacing it with \strut (always set to
	this since October 2004).  Remove comment about space added by
	\multistrut, as no such space was added.  Remove documentation of
	@multitable as this is in the manual.  Remove comment crediting
	original author of macros, recorded here as
	Amy Hendrickson, 8/18/94, 3/6/96
	(\tab): Remove comment from April 1999 saying what used to be
	in the code.
	(\alphaenumerate, \capsenumerate): Remove undocumented aliases.


2021-03-18  Gavin Smith  <gavinsmith0123@gmail.com>

	Narrow @multitable nested within @quotation

	* doc/texinfo.tex (\domultitable): Subtract \leftskip before
	calculating column widths as fraction of \hsize.
	* doc/texinfo-tex-test.texi (@multitable): New section.
	
	Report of excessive width from Werner Lemberg.

2021-03-12  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix NetBSD build

	* tp/Texinfo/XS/parsetexi/api.c,
	* tp/Texinfo/XS/parsetexi/errors.c: Surround calls to gettext
	with #ifdef ENABLE_NLS.

2021-03-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/errors.c (bug): Don't call abort.

2021-03-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/coverage_macro.texi: Add blank lines to isolate
	test result differences for some glyph commands.

2021-03-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@copying): Coalesce copyright years where possible.
	(Reporting Bugs): Refer bugs in Info mode to Emacs developers.

2021-03-05  Patrice Dumas  <pertusus@free.fr>

	* Pod-Simple-Texinfo/pod2texi.pl (pod2texi_help): improve
	help message formatting by removing incorrect dots for options.
	Make easier to translate strings by splitting help message,
	splitting options, avoiding \n in translated messages.
	Report by Benno Schulenberg
	* tp/texi2any.pl (makeinfo_help): add TODO to remember to
	avoid \n in translated strings and split translated options
	messages by option.  To be done when strings change.

2021-03-03  Per Bothner  <per@bothner.com>

	* js/info.js (absolute_url_p): Replace with maybe_pageref_url_p.
	New function checks if URL may be cross-reference to local page.
	Prevents failure on links to images or stuff in sub-directories.
	(config.LOCAL_HTML_PAGE_PATTERN): Patternfor HTML files.

2021-03-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Invoking pod2texi): Remove  reference to
	non-existent webpage.

2021-03-01  Gavin Smith  <gavinsmith0123@gmail.com>

	GNULIB_MDA_FDOPEN=0

	* tp/Texinfo/XS/configure.ac: Set GNULIB_MDA_FDOPEN=0 to
	prevent definition of fdopen in gnulib-provided stdio.h, which
	clashes with Perl header files.  Report by Eli Zaretskii.
	Suggested fix from Bruno Haible.

2021-03-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/api.c (element_to_perl_hash):
	Cast pointer to intptr_t before IV to prevent a compiler warning
	on MinGW.  Suggestion from Eli Zaretskii.

2021-02-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Simplify, update, document infrastructure

	* util/srclist.txt: Remove all gettext lines as this should
	be taken care of by gettextize.
	* util/srclist-txi: Likewise.
	* README-hacking: Explain how to check that files have been updated.
	* INSTALL.generic: Update from gnulib.
	* build-aux/config.rpath: Update from gnulib.
	* autogen.sh: Remove obsolete comment about keeping files in CVS.

2021-02-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Run "autoreconf --verbose --force --install" to update
	files under build-aux.  Don't commit changes to INSTALL or
	build-aux/texinfo.tex.

2021-02-27  Gavin Smith  <gavinsmith0123@gmail.com>

	No raw newline in awk string constant

	* texindex/ti.twjr (usage, version): Avoid multi-line character
	string as it appears not to be supported by awk under AIX 7.1.
	Report by Bruno Haible.

2021-02-27  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid cleaning generated files

	* tp/Texinfo/XS/Makefile.am (CLEANFILES): Remove .c files that
	are generated from .xs files, as these .c files are distributed
	in the tarball and shouldn't be cleaned.
	(.xs.c): Generate .c files under $(srcdir).

	Report from Bruno Haible.

2021-02-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Report.pm (gdt): Set and restore LC_ALL rather than
	LC_MESSAGES as the latter doesn't work on MS-Windows.  Report
	from Eli Zaretskii.

2021-02-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* texindex/Makefile.am (bin_SCRIPTS): Remove dist_ prefix
	from variable to prevent distribution of the generated texindex
	wrapper script.  Report by Bruno Haible.

2021-02-27  Eli Zaretskii  <eliz@gnu.org>

	* info/session.c (read, _read): #undef before redefining, to avoid
	compilation warning due to Gnulib's unistd.h redefining them.

2021-02-24  Per Bothner  <per@bothner.com>

	* js/info.js: Add button to show/hide sidebar.  Other polishing.
	(Sidebar): Create show/hide button.
	(on_click): Handle clicks on show/hide button.
	Also automatically hide sidebar on click when narrow.
	(Sidebar): Copy _href property when copying ToC.
	* js/info.css: Various adjustments and tricks to make it work.

2021-02-23  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Common.pm (%default_customization_values),
	(%default_parser_customization_values),
	(%default_structure_customization_values),
	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (%parser_default_configuration),
	(parser),
	* tp/Texinfo/ParserNonXS.pm (%parser_default_configuration),
	* tp/texi2any.pl:
	split %default_customization_values in two, as
	%default_parser_customization_values and
	%default_structure_customization_values differentiating
	parser options and options for Texinfo::Structuring.
	* tp/Texinfo/Structuring.pm (_complete_check_menus_directions),
	(complete_node_tree_with_menus, nodes_tree),
	* tp/t/test_utils.pl (test), tp/texi2any.pl: rename
	_complete_check_menus_directions() as complete_node_tree_with_menus(),
	call _check_referenced_nodes in that function and do not call
	_complete_check_menus_directions in nodes_tree.
	Call Texinfo::Structuring::set_menus_node_directions() and
	Texinfo::Structuring::complete_node_tree_with_menus() in
	texi2any.pl only if 'FORMAT_MENU' is set to 'menu'.
	* tp/texi2any.pl: call $converter_class->converter_defaults()
	with $cmdline_options argument to pass TEXI2HTML customization
	variable for HTML output.

2021-02-23  Patrice Dumas  <pertusus@free.fr>

	* tp/texi2any.pl: use a special value if 'FORMAT_MENU' is set on
	the command line that is replaced by the output format default
	when the output format is known if the output format default is
	not nomenu, or set to 'menu'.

2021-02-23  Gavin Smith  <gavinsmith0123@gmail.com>

	pretest 6.7.90

	* configure.ac, util/texi2dvi, util/texi2pdf: Version.
	* info/info.c (main), install-info/install-info.c (main): 2021
	* README-hacking: Edit release instructions.

	* info/dir.c (dir_entry_of_infodir): Do not call
	info_check_compressed with a null argument.

2021-02-22  Patrice Dumas  <pertusus@free.fr>

	Remove unused code.

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (%tree_informations)

2021-02-22  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (set_menus_node_directions)
	(nodes_tree, _section_direction_associated_node), 
	(_complete_check_menus_directions): separate
	set_menus_node_directions() and _complete_check_menus_directions()
	from nodes_tree() to distinguish better code related to menus
	and not related to menus.  Add _section_direction_associated_node()
	as a small helper function from node_tree too to be able to reuse 
	the code.
	* tp/t/test_utils.pl, tp/texi2any.pl: call
	set_menus_node_directions.
	* tp/Texinfo/Structuring.pm (nodes_tree): set Top node next
	using the sectioning structure first.  Avoid resetting node directions
	based on Top node first menu entry the direction was already set.

2021-02-21  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (nodes_tree): use first non Top node
	for Top node next if there is no menu information.

2021-02-21  Patrice Dumas  <pertusus@free.fr>

	use first section in file direction for footer if split at section or
	chapter

	* tp/Texinfo/Convert/HTML.pm, tp/init/book.pm: add 
	CHAPTER_FOOTER_BUTTONS to be able to specify different 
	customization for footer and header when split at chapter.
	(_translate_names, %BUTTONS_*): add FirstInFile* directions.
	(_default_format_element_footer)
	(_default_panel_button_dynamic_direction)
	(_default_panel_button_dynamic_direction_section_footer)
	(_set_variables_texi2html):
	reenable footer when there are more than one element in a file
	and use FirstInFile* directions for section and chapter footer 
	formatting.
	(_default_panel_button_dynamic_direction_footer)
	(_default_panel_button_dynamic_direction_node_footer): rename
	_default_panel_button_dynamic_direction_footer() as
	_default_panel_button_dynamic_direction_node_footer().
	Report from Per Bothner.

2021-02-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Structuring.pm (nodes_tree):
	Only call _check_referenced_nodes if FORMAT_MENU is not
	"sectiontoc".  From Patrice.

2021-02-21  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (_check_referenced_nodes):
	consider a node to be referenced if it is a target of a
	@*ref command.  Report by Gavin.

2021-02-20  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (elements_file_directions):
	add FirstInFile* directions for every element.

2021-02-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Structuring.pm (_check_referenced_nodes):
	New function to centralize code for checking referenced nodes.
	(nodes_tree): Call it.

2021-02-20  Gavin Smith  <gavinsmith0123@gmail.com>

	No footer for several nodes in a file.

	* tp/Texinfo/Convert/HTML.pm (_default_format_element_footer):
	Do not output the element footer if there is more than one node
	in the output file, using the 'elements_in_file_count' hash.

	These changes lead to a few changes as to whether a rule
	is output at the end of a file but the output appeared
	acceptable in the cases I checked.

	Per Bothner reported that the footer would
	be relative to the last node output in the file for
	--split=section, while it would make more sense to have this
	relative to the first node output in the file.  As this is
	not possible to do just now, just omit it.

2021-02-20  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix display of _ in section name.

	* doc/texinfo.tex (\setupdatafile): Read aux file giving
	_ | < and > catcode "active".

	* doc/texinfo-tex-test.texi (~[]"_|<>$#&%+\) Add a test
	of a cross-reference.
	
	Werner Lemberg reported that an underscore in a section title
	would be printed as a dot accent when using
	"@xrefautomaticsectiontitle on".


2021-02-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (~[]"_|<>$#&%+\) Add example.

2021-02-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Add advice on using git.

2021-02-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\refx): Remove useless second argument
	which is nearly always empty.

2021-02-20  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_heading_command):
	add a div for sections without nodes.
	(_default_format_element_footer, _default_format_end_file):
	call close_registered_sections_level() in
	_default_format_element_footer() and not in
	_default_format_end_file().
	* tp/t/init/t2h_singular.init (singular_format_footer):
	call close_registered_sections_level().

2021-02-18  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix compiler warnings.
	
	* tp/Texinfo/XS/XSParagraph.xs (xspara_new): Remove code
	setting an unused variable.  It appears that we are not
	blessing the return value into a class after all.
	* tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command):
	Parentheses around assignment in conditional.
	* tp/Texinfo/XS/parsetexi/input.c (text_buffer_iconv): Handle
	KOI8 cases in switch statement.
	* tp/Texinfo/XS/parsetexi/macro.c (parse_macro_command_line):
	Remove unused label.

	Report from Per Bothner.

2021-02-18  Gavin Smith  <gavinsmith0123@gmail.com>

	Reform parsetexi header files

	* tp/Texinfo/XS/parsetexi: Make header files include the other
	headers that they need.
	* tp/Texinfo/XS/parsetexi/command_data.awk,
	* tp/Texinfo/XS/parsetexi/element_types.awk: Output include guards
	in generated headers.
	* tp/Texinfo/XS/parsetexi/parser.c,
	* tp/Texinfo/XS/parsetexi/errors.c: (bug, fatal): Move to errors.c.

2021-02-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_default_format_begin_file):
	Add viewport declaration as was already output for node
	redirection pages.  Report from Per Bothner.

2021-02-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi: Add include guards to all header files.

2021-02-17  Per Bothner  <per@bothner.com>

	* js/info.js (scan_toc): Change to how sidebar links are matched.
	This fixes updating the sidebar when using a http/https URL.

2021-02-16  Per Bothner  <per@bothner.com>

	* js/info.js: Fix [Contents] link by creating a fresh page-node for
	the ToC.  This is done by cloning the ToC from the index.html.
	Cloning is needed because the same table is used for the Sidebar.

2021-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	srclist-txi fixes

	* contrib/gdoc: Remove file.  This saves us the trouble of
	working out if/how we should synchronize it with upstream.
	* util/srclist-txi, util/srclist.txt: Remove references to gsasl.

2021-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/fdl.texi: Update to latest (URL change).

2021-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Revise release instructions.

2021-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix for make po-check

	* po/POTFILES.in: Update
	* Makefile.in (po-check): check for parsetexi function calls

2021-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix for make po-check

	* tp/t/html_tests.t (example_class): Change test to avoid false
	positive with "make po-check".

2021-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix for make ccheck

	* doc/refcard/txirefcard.tex: Update to 6.8, 2021.  Remove
	@setfilename line from mandatory file beginning.  Add @displaymath.
	* doc/texinfo.texi (small): Add index entries for @smalldisplay
	and @smallindentedblock.

2021-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Pre-release fixes

	* configure.ac: Add dist-xz option.  Change TEXINFO_DTD_VERSION to
	6.8.
	* util/txicmdlist, util/txicustomvars: require Texinfo::ModulePath
	so that Locale::Messages can be found from Texinfo::Common.
	* tp/Texinfo/Common.pm: Make @variable_string_settables accessible
	outside of file.
	* doc/refcard/txivarcheck, util/txicustomvars:
	Fix to account for changes in manual and in Texinfo::Common.

2021-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/run_parser_all.sh (check_latex2html_and_tex4ht):
	Do not use 'continue' inside a function inside a loop.  Report
	from Vitezslav Crhon.

2021-02-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_convert_element_type):
	Always call close_registered_sections_level to close <div>
	element rather than adding a '</div>' string, as it's possible
	that the <div> was never opened.

2021-02-14  Per Bothner  <per@bothner.com>

	* js/info.css: Adjustments to consistent margin/padding for index and other pages.

2021-02-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_convert_heading_command):
	Only output a <div> for a @node with an associated section.
	Otherwise, output a <span> as an anchor.

2021-02-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/run_parser_all.sh: Print stderr for test error.
	* TODO: Remove item.

2021-02-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/maintain/regenerate_cmd_tests.sh: Remove code that
	was supposed to print diffs (ineffective since 2018-09-01).

2021-02-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/run_parser_all.sh: Print diffs for test failure.

2021-02-14  Patrice Dumas  <pertusus@free.fr>

	* Texinfo/Convert/HTML.pm (_contents_inline_element):
	Put inline contents elements in a <div>.  Report from 
	Per Bothner.

2021-02-14  Patrice Dumas  <pertusus@free.fr>

	* Texinfo/Convert/HTML.pm (%default_formatting_references, 
	converter_initialize, _default_*), init/book.pm, 
	init/chm.pm, init/html32.pm, t/init/mini_ker_t2h.init, 
	t/init/t2h_singular.init: use format_ in formatting functions 
	strings and in formatting function names, to make clearer
	that the references called through the converter with format_
	in the key point to the same functions.  Report from Gavin.

2021-02-13  Patrice Dumas  <pertusus@free.fr>

	* tp/init/book.pm (book_convert_heading_command): update with
	changes in HTML main converter.

2021-02-13  Per Bothner <per@bothner.com>

	Use the sectionning tree structure in HTML output

	* tp/Texinfo/Convert/HTML.pm (register_opened_section_level,
	close_registered_sections_level, _convert_heading_command,
	_convert_element_type, _default_end_file): use <div> for
	elements and keep the sectioning tree structure.

2021-02-10  Gavin Smith  <gavinsmith0123@gmail.com>

	Do not call pclose on non-pipe.

	* install-info/install-info.c (readfile): Only
	call pclose if compression_program is set.  Suggestion from
	Hans-Bernhard Bröker.  Remove an incomprehensible comment.
	(open_possibly_compressed_file):  Revise main comment for function.
	Only fseek back to start of stream if not reading from a pipe.
	
	Barath Aron reported that install-info hung on Threos OS.

2021-02-09  gettextize  <bug-gnu-gettext@gnu.org>

	* gnulib/m4/gettext.m4: Upgrade to gettext-0.21.
	* gnulib/m4/iconv.m4: Upgrade to gettext-0.21.
	* gnulib/m4/intlmacosx.m4: Upgrade to gettext-0.21.
	* gnulib/m4/lib-link.m4: Upgrade to gettext-0.21.
	* gnulib/m4/nls.m4: Upgrade to gettext-0.21.
	* gnulib/m4/po.m4: Upgrade to gettext-0.21.
	* gnulib/m4/progtest.m4: Upgrade to gettext-0.21.
	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.21.

2021-02-09  Gavin Smith  <gavinsmith0123@gmail.com>

	Wrap or remove calls to abort in XS parser

	* tp/Texinfo/XS/parsetexi/parser.c (bug, fatal): New functions.
	* tp/Texinfo/XS/parsetexi: Use them throughout instead of calling
	abort, in order to give informative error messages.
	* tp/Texinfo/XS/parsetexi/end_line.c (end_line):
	Add code to deal with no description in menu entry.
	* tp/Texinfo/XS/parsetexi/macro.c (parse_macro_command_line):
	Do not abort on missing backslash in macro body.

2021-02-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix argument counting for nested @footnote.
	
	* tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace)
	<context brace commands>: Pop the remaining args counter.
	* tp/t/55conditionals.t (inlinefmtifelse_nesting): New test.

2021-02-03  Gavin Smith  <gavinsmith0123@gmail.com>

	"Inline" command nesting

	* tp/Texinfo/ParserNonXS.pm (%default_valid_nestings),
	* tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting):
	Allow anything inside an inline command like @inlinefmt.
	
	The ccd2cue manual nested @footnote inside of @inlinefmtifelse.

2021-02-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Copiable anchors tweaks
	
	* tp/Texinfo/Convert/HTML.pm
	(_convert_item_command, _convert_def_line_type, %css_map):
	Wrap <a> for copiable anchor in a <span> to avoid it flickering
	when mouse pointer moves over page.
	(_get_copiable_anchor, %css_map) Precede it with a space character
	rather than using CSS to get space before it, as this looks
	slightly better in Lynx.

2021-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Rename node to avoid .

	* doc/texinfo.texi (@small..., small): Rename node to "small"
	as periods in the node name are iffy.  Update or remove references to
	this node.
	
	'info texinfo smallexample' gave the error: Cannot find node '@small'

2021-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Encoding error message in standard format

	* tp/Texinfo/ParserNonXS.pm (_next_text),
	* tp/Texinfo/XS/parsetexi/input.c (convert_to_utf8): File name
	and line number in error message.

2021-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (hl_ref_rendition): Use bold for active link
	rather than no underline.

2021-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	@set txiindexhyphenignore for parsetexi

	* tp/Texinfo/XS/parsetexi/api.c (build_global_info): Set
	'txiindexhyphenignore' and others on 'info' hash.
	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (get_parser_info):
	Copy settings from 'info' to 'values' hash.
	* tp/Texinfo/XS/parsetexi/macro.c (fetch_value): Remove out
	of date comment.
	* tp/t/09indices.t (transparent_sort_chars): New test.

2021-01-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Makefile.am (dist_init_DATA): install init/highlight_syntax.pm.

2021-01-27  Patrice Dumas  <pertusus@free.fr>

	* tp/init/highlight_syntax.pm (highlight_process): add a postfix
	differing for input and output file to disambiguate files otherwise
	than with extension, in particular for the case of html 
	being highlighted.

2021-01-26  Patrice Dumas  <pertusus@free.fr>

	* Texinfo/Convert/HTML.pm (_convert_preformatted_command):
	no extra class based on argument expansion for @smallexample
	as we would prefer if users did not use that @-command.
	From Gavin.

2021-01-26  Patrice Dumas  <pertusus@free.fr>

	* Texinfo/Convert/HTML.pm (%pre_class_commands,
	_convert_preformatted_command, _convert_indented_command,
	_convert_quotation_command, _convert): do not alias @small*
	commands in _convert() but in formatting functions, such that
	the information is not lost and corresponds to the parsing
	tree.  Alias @small* in %pre_class_commands too.

2021-01-26  Patrice Dumas  <pertusus@free.fr>

	* tp/init/highlight_syntax.pm (_get_highlighted_languages,
	%highlighted_languages_list, _get_language, highlight_process):
	In _get_highlighted_languages() call 'source-highlight --lang-list'
	to obtain the list of highlighted languages and highlight only
	languages that are in that list.

2021-01-26  Patrice Dumas  <pertusus@free.fr>

	* tp/init/highlight_syntax.pm (highlight_process): make sure that
	the text fragment to be highlighted ends with a newline.

2021-01-25  Patrice Dumas  <pertusus@free.fr>

	* Texinfo/Common.pm (add_valid_option), texi2any.pl
	(texinfo_add_valid_option): add Texinfo::Common::add_valid_option() 
	to dynamically add customization options.  Also add, in texi2any.pl,
	Texinfo::Config::texinfo_add_valid_option() as a wrapper around 
	Texinfo::Common::add_valid_option() in the Texinfo::Config
	namespace.
	* tp/init/highlight_examples.pm: rename as 
	tp/init/highlight_syntax.pm.  Fix extraction of highlighted 
	fragments.
	Use dynamically added HIGHLIGHT_SYNTAX_DEFAULT customization option
	to setup a default for the language of @example when not set.

2021-01-25  Patrice Dumas  <pertusus@free.fr>

	* tp/init/highlight_examples.pm: use --out-format=html5 to be more
	in line with the type of HTML produced by texi2any.

2021-01-25  Eli Zaretskii  <eliz@gnu.org>

	* info/pcterm.c (w32_kbd_read): Avoid gratuitous flickering of the
	MS-Windows console if screen-buffer size-change events are sent
	without any change in the screen dimensions.

2021-01-24  Patrice Dumas  <pertusus@free.fr>

	* tp/init/highlight_examples.pm: add an init file that does syntax 
	highlighting for @example with language argument using
	source-highlight.

2021-01-24  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_attribute_class): ignore an empty
	extra classes expansion result string.

2021-01-24  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_attribute_class,
	_convert_preformatted_command): pass extra classes as an array
	instead of a string.
	* tp/Texinfo/Convert/HTML.pm (_attribute_class, _protect_class_name):
	protect spaces in _attribute_class extra_classes.
	* tp/Texinfo/Convert/HTML.pm (_convert_preformatted_command):
	use Texinfo::Convert::NodeNameNormalization::convert to convert
	@example arguments to text.

2021-01-24  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoXML.pm (%commands_formatting),
	util/texinfo.dtd:
	use specific entities for guillemotleft and guillemotright
	to be able to distinguish from guillemetleft and guillemetright
	and be able to come back to the @-command that generated the 
	entity.

2021-01-23  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoXML.pm (%commands_args_elements)
	(_convert), tp/t/xml_tests.t, tests/coverage_macro.texi, 
	util/texinfo.dtd, util/txixml2texi.pl: add support for @example
	multiple arguments in TexinfoXML output.  Update xml @example tests.
	* tp/Texinfo/Convert/HTML.pm (_convert_preformatted_command):
	always initialize $extra_class.
	* configure.ac (TEXINFO_DTD_VERSION): Increase to '6.7dev'.

2021-01-23  Gavin Smith  <gavinsmith0123@gmail.com>

	KOI8 support

	* tp/Texinfo/XS/parsetexi/input.c (set_input_encoding)
	(convert_to_utf8): Support KOI8-R and KOI8-U, as these are
	documented to be supported.

2021-01-23  Gavin Smith  <gavinsmith0123@gmail.com>

	Validate UTF-8 input

	* tp/Texinfo/XS/parsetexi/input.c (convert_to_utf8): Use
	iconv to validate UTF-8 input, in case for example the
	encoding is not declared and the input is actually Latin-1.
	Handle conversion errors by advancing in input stream rather
	than dumping core.

2021-01-23  Patrice Dumas  <pertusus@free.fr>

	* tp/t/20preformatted.t: change name of test with example
	and add test with @display now that @example accepts arguments.

2021-01-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/parser.c (register_global_command):
	Fix equivalence of @summarycontents to @shortcontents.

2021-01-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/api.c (build_global_info2):
	Remove handling of @setcontentsaftertitlepage and
	@setshortcontentsaftertitlepage.

2021-01-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/api.c (element_to_perl_hash):
	Create an empty contents array for an empty paragraph.
	* tp/t/08misc_commands.t (noindent_empty_para): New test.

2021-01-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/input.c (set_input_encoding): Save
	the encoding as an enum value rather than as a string.  Give
	a warning message if the encoding is unknown.
	(convert_to_utf8): Use this value instead of checking the string.
	Return string unaltered if conversion couldn't be initialized.

2021-01-20  Gavin Smith  <gavinsmith0123@gmail.com>

	Handle Latin-15 encoding in XS parser
	
	* tp/Texinfo/XS/parsetexi/input.c (convert_to_utf8): Support
	ISO-8859-15 encoding.  (Used for GNU screen manual.)

2021-01-19  Gavin Smith  <gavinsmith0123@gmail.com>

	"seeentry" and "seealso" extra elements

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	* Texinfo/XS/parsetexi/separator.c (handle_close_brace):
	Do not convert @seeentry or @seealso commands to strings.
	Save references to them as extra elements.  This allows
	more reliable checking of whether these commands were present.
	* Texinfo/Convert/DocBook.pm (_index_entry): Accomodate change.

2021-01-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm:
	Remove a pointless comment.

2021-01-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Advanced Indexing): Remove @ from
	@findex entries for seeentry and seealso.

2021-01-19  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix @seealso XS difference

	* tp/Texinfo/XS/parsetexi/parser.c (parse_texi): Isolate
	space before @seealso as was done for other commands that
	could occur in an index entry.
	* tp/Texinfo/Common.pm (%in_index_commands): Add 'subentry'.
	* tp/Texinfo/ParserNonXS.pm (_parse_texi): Do not leave an
	empty text element if isolating spaces from a text element that
	was all spaces to start with.
	* tp/t/09indices.t (seealso_duplicate): New test.

2021-01-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Handle malformed menu.

	* tp/Texinfo/ParserNonXS.pm (_close_current),
	* tp/Texinfo/XS/parsetexi/close.c (close_current): Do not
	attempt to remove an empty menu_entry_description element
	from the contents.  It may not be in the contents but in the
	args instead, and also referenced elsewhere as an "extra" element.
	* tp/Texinfo/XS/parsetexi/api.c (element_to_perl_hash): Always
	create contents array for ET_menu_entry_description.
	* tp/t/10menu.t (menu_node_unterminated): New test.

2021-01-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command)
	<BLOCK_variadic>: Use a constant to represent unlimited args.
	* tp/Texinfo/XS/parsetexi/separator.c (handle_comma): Do not
	decrement counter if its value is this constant.

2021-01-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/end_line.c (parse_line_command_args):
	Give warnings if try to redefine one of the predefined indices.

2021-01-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace) <@U>
	Correct argument check.
	* tp/t/02coverage.t (invalid_U): Add another use of @U.

2021-01-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/end_line.c (parse_line_command_args)
	<@defindex>: No warning if index already exists (to match the
	Perl code).

2021-01-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command)
	<BLOCK_variadic>: Start counter at -2 rather than -1.

2021-01-15  Gavin Smith  <gavinsmith0123@gmail.com>

	Attempt to recover from input encoding errors.
	
	* tp/Texinfo/ParserNonXS.pm (_next_text): Trap input errors
	and if caught, strip out non-ASCII bytes from input.

2021-01-15  Gavin Smith  <gavinsmith0123@gmail.com>

	Simply end-of-sentence handling.
	
	* Texinfo/XS/xspara.c (xspara_add_text): Always double the end of
	sentence space here when it has to be doubled, rather than
	sometimes relying on it being done later in xspara_add_next.  This
	is simpler and more reliable.
	(xspara__add_next, xspara_set_space_protection): Don't handle
	end of sentence spaces.

	* tp/Texinfo/Convert/ParagraphNonXS.pm (add_text, _add_next):
	The same.

2021-01-15  Gavin Smith  <gavinsmith0123@gmail.com>

	end of sentence space for set_space_protection
	
	* tp/Texinfo/XS/xspara.c (xspara_set_space_protection):
	Double end-of-sentence space if at end of sentence.
	* tp/t/03coverage_braces.t (w_end_sentence): New test.

2021-01-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/ParserNonXS.pm (_setup_conf): Merge 'info' hash
	from conf rather than replacing with it.  Otherwise giving
	--no-validate flag to texi2any led to character encoding differences
	in the output.

2021-01-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/paragraph.t: Update calls to set_space_protection.

2021-01-13  Gavin Smith  <gavinsmith0123@gmail.com>

	void return type for set_space_protection

	* tp/Texinfo/Convert/ParagraphNonXS.pm (set_space_protection):
	Do not return an empty string.  Callers updated.
	* tp/Texinfo/XS/xspara.c (xspara_set_space_protection): The same.

2021-01-13  Gavin Smith  <gavinsmith0123@gmail.com>

	No line counting for set_space_protection.
	
	* tp/Texinfo/Convert/Plaintext.pm (_convert): Do not wrap
	any calls to set_space_protection with _count_added as
	set_space_protection does not reset the line counter and
	this can lead line numbers in index entries to be too high.
	* tp/t/09indices.t (w_lines_count): New test.

2021-01-13  Gavin Smith  <gavinsmith0123@gmail.com>

	Simply paragraph formatter.
	
	* tp/Texinfo/XS/xspara.c (two_spaces_only): Remove function.
	(xspara_add_text): Simply use two spaces at the end of a
	sentence, rather than processing space characters from the input.
	This has a potential change to the output if exotic spaces were used.
	* tp/Texinfo/Convert/ParagraphNonXS.pm (add_text): The same.
	* tp/Texinfo/XS/xspara.c (xspara_add_text): Do not continue the loop
	after this, as this can rarely lead to calls to xspara__cut_line
	or xspara__end_line being missed later on in the loop body.

2021-01-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/xspara.c (two_spaces_only): Split out function
	for clarity.
	(xspara_add_text): Copy some code to each case of an if statement.

2021-01-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS, doc/texinfo.texi (@example): Document that @example
	can take an argument.

2021-01-12  Gavin Smith  <gavinsmith0123@gmail.com> and
            Patrice Dumas  <pertusus@free.fr>

	Separate @example args with commas.

	* tp/Texinfo/XS/parsetexi/command_data.txt: Use BLOCK_variadic
	for @example.
	* tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_commands):
	Start remaining args counter at -1 for BLOCK_variadic.

	* tp/Texinfo/Common.pm (%block_commands):
	Use 'variadic' for 'example'.
	* tp/Texinfo/ParserNonXS.pm (_parse_texi) <variadic block command>:
	Set remaining_args value to -1.

	* tp/Texinfo/Convert/HTML.pm (_convert_preformatted_command):
	Concatenate any arguments to example with intervening spaces.
	
	* tp/t/html_tests.t (example_class, example_multi_class): New tests.

2021-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/Makefile.am (wwwdoc-build): Add options for using MathJax.

2021-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	CFLAGS for XS module checks

	* tp/Texinfo/XS/configure.ac: Set CFLAGS and LDFLAGS before
	running more tests, using Perl configuration values.  This is
	intended to make results from the AM_GNU_GETTEXT checks reliable
	on Solaris 11, where gettext was found to work when it didn't.

	* tp/Texinfo/XS/configure.ac: Change AC_HELP_STRING to AS_HELP_STRING.

2021-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: Print informative message if we
	are not going to try to build XS modules.

2021-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid compiler warning

	* tp/Texinfo/XS/parsetexi/extra.c (add_extra_integer)
	* tp/Texinfo/XS/parsetexi/api.c (element_to_perl_hash): Use
	wider integer type to avoid compiler warning.

2020-12-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Document INFO_JS_DIR.
	
	* TODO,
	* doc/texinfo.texi (HTML Customization Variables):
	Document INFO_JS_DIR.

2020-12-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Manual revisions

	* doc/texinfo.texi (References): cross reference -> cross-reference
	(Cross Reference Commands): rm reference to @inforef
	(Info Format FAQ): Revise and extend.

2020-12-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* TODO: Update some items from (now-closed) bug tracker on Savannah.

2020-12-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/README: Remove long-obsolete file.

2020-12-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (forward_move_node_structure)
	(backward_move_node_structure): Check return value from
	info_handle_pointer.  Otherwise an infinity loop can result
	from malformed input.  Report from Nathaniel Beaver.

2020-12-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix info fuzzing error.
	
	* info/info-utils.c (copy_input_to_output): Avoid pointer
	arithmetic with value from input file to avoid chance of a
	invalid pointer.  Add check for anchor offset being previous
	to current node.  Report from Nathaniel Beaver 2020-05-25 who
	found the failing input with afl-fuzz.

2020-12-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Report.pm (gdt): Try to set locale from a list
	so that more can be easily added.

2020-12-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove warning for @menu seen before first @node.

	* tp/Texinfo/ParserNonXS.pm (_parse_texi),
	* tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command):
	Remove warning for @menu seen before first @node.

	This warning would be output incorrectly when texi2any --pdf
	was run if the @top node was in an @ifnottex block.  Report from
	Matt Wette 2020-11-29.

2020-12-22  Gavin Smith  <gavinsmith0123@gmail.com>

	texi2dvi stop on first error

	* util/texi2dvi: Stop on first error.  Changes the behaviour that
	has been current since change on 2019-03-31.
	Request from Marius Hofert 2020-12-09.
	* NEWS: Mention.

2020-11-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Revise in line with GNU Coding Standards
	
	* doc/texinfo.texi: Change "filename" to "file name" and
	avoid using "path" or "pathname".
	(Format with texi2dvi): Remove advice on running texi2dvi
	under MS-DOS.

2020-11-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Preparing for TeX, Other Info Directories):
	Remove explanations of how to set environment variables in various
	shells.

2020-11-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Change @smallexample to @example in many
	places.

2020-11-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Update manual for command deprecations
	
	* doc/texinfo.texi (@unnumbered @appendix): Discourage @centerchap.
	(@inforef): Discourage.
	(@small...): Don't encourage.
	(@definfoenclose): Discourage.

2020-11-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* texindex/ti.twjr: Add missing } in menu.

2020-11-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/test_utils.pm: require instead of use Texinfo::Transformations.

2020-11-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Upgrade libintl-perl to 1.32
	
	* tp/maintain/lib/libintl-perl,
	* tp/maintain/lib/README: Upgrade to libintl-perl-1.32
	* TODO: Update.
	
	* tp/Texinfo/Report.pm (gdt): Set and restore LC_MESSAGES
	when callling gettext.

2020-11-25  Gavin Smith  <gavinsmith0123@gmail.com>

	data-manual attribute

	* tp/Texinfo/Convert/HTML.pm (_convert_xref_commands):
	Set data-manual attribute instead of class="texi-manual"
	on links to other Texinfo manuals.

2020-11-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\image): Call \makevalueexpandable.  Remove
	outdated code for macro expansion.
	
	Christopher Dimech reported that @value does not work inside
	@image.

2020-11-21  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove newline at start of @macro argument

	* doc/texinfo.tex (\eatleadingcr): New macro.
	(\scanmacro): Put \eatleadingcr into definition of \xeatspaces.
	(\parsemargdef): Put \xempty{} into argument to \xeatspaces.
	* doc/texinfo-tex-test.texi (Newline at start of argument): New
	test.
	
	Hilaire Fernandes reported the case of a broken macro when a comma
	separating arguments was at the end of a line.  This led the following
	newline to be included in the macro argument.

	This change stops whitespace being trimmed from the end of
	macro arguments, so only leading whitespace is trimmed, as
	is documented and is the case with texi2any's macro handling.


2020-11-18  Gavin Smith  <gavinsmith0123@gmail.com>

	No extra . for image file extension

	* tp/Texinfo/Convert/HTML.pm (_convert_image_command): Do not
	include extra period before file extension in the case that the
	file was not found, in accordance with the manual's statement
	that the fifth argument to @image includes the extension.
	Report from Christopher Dimech.
	* NEWS: Update.

2020-11-17  Gavin Smith  <gavinsmith0123@gmail.com>

	@set txiomitxrefpg
	
	* doc/texinfo.texi (\xrefX): If @set txiomitxrefpg is given
	do not output page numbers for cross-references.

2020-11-17  Patrice Dumas  <pertusus@free.fr>

	Use files in input for tests with encodings and non ascii characters

	* tp/t/09indices.t, tp/t/input_files/encoding_index_latin1.texi,
	tp/t/input_files/encoding_index_utf8.texi: replace 
	tests with encoded characters provided as perl strings with 
	actual files properly encoded.

2020-11-17  Patrice Dumas  <pertusus@free.fr>

	Normalize perl parser and XS parser output for better test comparability

	* tp/Texinfo/ParserNonXS.pm (_end_line): use a string for enumerate
	default specification for consistency.
	* tp/Texinfo/ParserNonXS.pm (_check_line_directive): use an integer
	for the line number for consistency.
	* tp/t/test_utils.pl (duplicate_key_array, _duplicate_element_keys,
	duplicate_tree_element_keys): new functions used to normalize
	parsers outputs for better tests comparabilities.
	* tp/t/test_utils.pl: put use Texinfo::Transformations; at the 
	beginning.

2020-11-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Parse Texinfo commands in @displaymath as in @math (XS version)
	
	* tp/Texinfo/XS/parsetexi/command_data.txt: Remove displaymath
	from raw commands.
	* tp/Texinfo/XS/parsetexi/commands.c (close_paragraph_command):
	Remove displaymath.
	* tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command):
	Push 'math' context for @displaymath.
	* tp/Texinfo/XS/parsetexi/close.c (close_commands): Pop context
	for @math and @displaymath.

2020-11-16  Patrice Dumas  <pertusus@free.fr>

	Warn and die if the fallback ParserNonXS require failed

	* tp/Texinfo/XSLoader.pm (FALLBACK): check the status of 
	the eval of the require of the fallback module (ParserNonXS)
	and report the warning and die if the eval failed.

2020-11-16  Patrice Dumas  <pertusus@free.fr>

	Parse texinfo commands in @displaymath as in @math

	* tp/Texinfo/Common.pm (%math_commands): Add.  Remove
	displaymath from raw commands.
	* tp/Texinfo/ParserNonXS.pm (_close_current, _parse_texi):
	Handle math commands in a more generic way using a specific
	"math" context independently of the command name.
	* tp/Texinfo/Convert/HTML.pm (_convert),
	tp/Texinfo/Convert/Plaintext.pm (%block_math_commands,
	new_formatter, _convert),
	tp/Texinfo/Convert/TexinfoXML.pm (_convert)
	tp/Texinfo/Convert/Text.pm (_convert): use %math_commands.


2020-11-15  Patrice Dumas  <pertusus@free.fr>

	Rename OUTPUT_CONTENTS_LOCATION as CONTENTS_OUTPUT_LOCATION
	and at_commands value for the variable as inline

	* tp/Texinfo/Convert/HTML.pm (%defaults, _convert_heading_command,
	_convert_informative_command, _contents_shortcontents_in_title,
	_prepare_special_elements, _prepare_contents_elements,
	_set_variables_texi2html, tp/Texinfo/Common.pm 
	(@variable_string_settables), doc/texi2oldapi.texi,
	doc/texinfo.texi (HTML Customization Variables),
	tp/init/book.pm:
	Rename OUTPUT_CONTENTS_LOCATION as CONTENTS_OUTPUT_LOCATION
	and use 'inline' instead of 'at_commands' for the corresponding
	value.  Idea from Gavin.

2020-11-15  Patrice Dumas  <pertusus@free.fr>

	Add 'after_top' for OUTPUT_CONTENTS_LOCATION and use it as default

	* tp/Texinfo/Convert/HTML.pm (%defaults, _convert_heading_command),
	doc/texinfo.texi (HTML Customization Variables):
	If 'OUTPUT_CONTENTS_LOCATION' is set to 'after_top', write the
	table of contents/Overview at the end of the @top.  Instead of
	the mini toc.  Set 'after_top' in the default case (Gavin).

2020-11-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Fully remove @setcontentsaftertitlepage.

	* tp/Texinfo/Common.pm (%line_commands, %deprecated_commands),
	* tp/Texinfo/XS/parsetexi/command_data.txt,
	* tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line):
	Remove setcontentsaftertitlepage and setshortcontentsaftertitlepage.
	* tp/t/info_tests.t (contents_setcontentsaftertitlepage_before_node):
	Remove.
	* tp/tests/contents/res_parser: Remove results files for removed
	tests.
	* doc/texinfo.texi (Command List, Obsolete @-Commands): Move
	@refill to Obsolete @-Commands.  Update documentation of
	@setcontentsaftertitlepage.
	* NEWS: Update.
	* doc/refcard/txirefcard.tex: Remove documentation of deprecated
	commands.

2020-11-14  Patrice Dumas  <pertusus@free.fr>

	Move mini toc formatting to section @-command conversion function

	* tp/Texinfo/Convert/HTML.pm (_convert, _convert_heading_command):
	Move mini toc formatting code to _convert_heading_command() such that
	it is in the function that can be customized if set in
	Texinfo::Config::texinfo_commands_conversion.

2020-11-14  Patrice Dumas  <pertusus@free.fr>

	Use OUTPUT_CONTENTS_LOCATION for HTML

	* tp/Texinfo/Convert/HTML.pm (%defaults,
	_convert_informative_command, _contents_shortcontents_in_title,
	_default_titlepage, _print_title, _prepare_contents_elements,
	_convert, _set_variables_texi2html),
	tp/Texinfo/Common.pm (@variable_string_settables),
	doc/texinfo.texi (HTML Customization Variables),
	texi2oldapi.texi, tp/init/book.pm, tp/tests/contents/list-of-tests:
	Replace INLINE_CONTENTS by OUTPUT_CONTENTS_LOCATION set to 
	"at_commands", INLINE_CONTENTS unset becomes "separate_element".
	Add "after_title" as a possibility for OUTPUT_CONTENTS_LOCATION
	using the code that corresponded to @setcontentaftertitlepage
	before the @-command was removed.

2020-11-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Simplify little-used "markup style" infrastructure.
	
	* doc/texinfo.tex (\currentmarkupstyle, \setupmarkupstyle)
	(\markupsetuplqdefault, \markupsetuprqdefault): Remove.
	(\setcodequotes, \setregularquotes): Replacements.
	* doc/texinfo.texi (Inserting Quote Characters):
	Do not say that the command interface is preferred.

2020-11-13  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid excess vertical space above @displaymath.
	
	* doc/texinfo.tex (\displaymath): Avoid active newlines in macro
	definition.  These led to \par tokens which in turn led to extra
	vertical space above the block.  Report by Christopher Dimech.

2020-11-13  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix \eqno in @displaymath.
	
	* doc/texinfo.tex (\end): Do not exit math mode (reverts previous
	change).
	(\displaymath): Temporarily redefine @end to insert $$ immediately,
	before reading the rest of the line.  This is needed for \halign
	and \eqno inside display math.
	* doc/texinfo-tex-test.texi (Test of @displaymath): Add \eqno
	example.
	
	Report of broken \eqno by Christopher Dimech.

2020-11-13  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix align in @displaymath.

	* doc/texinfo.tex (\end): Leave math mode.
	(\Edisplaymath): Do not leave math mode here as it is too
	late if \halign is inside the display math, which has to appear
	as $$\halign{...}$$.
	* doc/texinfo-tex-test.texi (Test of @displaymath): New section.

	Christopher Dimech reported that \leqalignno within
	@displaymath was broken.

2020-11-12  Gavin Smith  <gavinsmith0123@gmail.com>

	Ignore line argument to @example.
	
	* doc/texinfo.tex (\example, \lisp) : End call to \makedispenvdef
	with \parsearg rather than \gobble.

2020-11-12  Patrice Dumas  <pertusus@free.fr>

	* tp/tests/run_parser_all.sh: store raw output and postprocess
	test output even if not comparing with previous results.

2020-11-12  Patrice Dumas  <pertusus@free.fr>

	* tp/tests/tex_html/tex_gdef.texi, tex_eqalign.texi: tests with 
	\gdef in @tex block and with \leqalignno from Christopher Dimech.

2020-11-11  Gavin Smith  <gavinsmith0123@gmail.com>

	Mark some commands as deprecated.
	
	* tp/Texinfo/Common.pm (%deprecated_commands),
	* tp/Texinfo/XS/parsetexi/command_data.txt:
	Mark definfoenclose, refill, inforef, centerchap as deprecated.
	* NEWS: Update.

2020-11-10  Gavin Smith  <gavinsmith0123@gmail.com>

	Output @lisp with 'example' class.
	
	* tp/Texinfo/Convert/HTML.pm (_convert_preformatted_command):
	Output @lisp with <div class='example lisp'> rather than
	<div class='lisp'>.
	(%css_map): No CSS for div.lisp.

2020-11-10  Gavin Smith  <gavinsmith0123@gmail.com>

	Optional parameter to @example
	
	* tp/Texinfo/Common.pm (%block_commands),
	* tp/Texinfo/XS/parsetexi/command_data.txt: Specify @example to
	take 1 argument.
	* tp/Texinfo/Convert/HTML.pm (_convert_preformatted_command):
	If 'example' takes an argument, pass it as an extra argument
	to _attribute_class.
	(_attribute_class): Take an extra argument for extra classes
	to be added to the element.

	This could be used as e.g. "@example cplusplus" to allow
	post-processing the HTML output to syntax-highlight C++ code.

2020-11-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Other Customization Variables): Alphabetize.
	(Top): Remove bespoke menu entry names for master menu as these
	are not useful.

2020-11-08  Per Bother  <per@bothner.com>

	* js/info.js (config): Flatten structure so as to allow merging
	of configs.

2020-11-08  Gavin Smith  <gavinsmith0123@gmail.com>

	Manual revisions.
	
	* doc/texinfo.tex (Conventions): Swap treatment of form feeds
	and tabs.
	(Short Sample, Body of the Document):
	Include sections in the example chapter and headings in the
	example output.
	(First Node): Do not encourage putting copying permissions into
	Top node.

2020-11-07  Gavin Smith  <gavinsmith0123@gmail.com>

	Rename PERMALINKS to COPIABLE_ANCHORS

	* tp/Texinfo/Common.pm (@variable_string_settables),
	* tp/Texinfo/Convert/HTML.pm (%defaults):
	Rename PERMALINKS to COPIABLE_ANCHORS.
	* tp/Texinfo/Convert/HTML.pm (_get_permalink, _get_copiable_anchor):
	Rename.
	(%css_map) <a.copiable-anchor>: Set line height to 0em to avoid
	increasing spacing of line.
	* doc/texinfo.texi (HTML Customization Variables):
	Add COPIABLE_ANCHORS.  Update documentation of JS_WEBLABELS.

2020-11-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Update.

2020-11-07  Gavin Smith  <gavinsmith0123@gmail.com>

	Do not use dir.info as dir file.
	
	* info/dir.c (dir_entry_of_infodir): Call info_check_compressed
	instead of info_add_extension.

2020-11-07  Gavin Smith  <gavinsmith0123@gmail.com>

	Do not use dir.info as dir file.
	
	* info/filesys.c (info_check_compressed): Split out new function.
	Remove code which deals with a file being found which is a
	directory.
	(info_add_extension): Use info_check_compressed.
	* info/dir.c (build_dir_node): Iterate over search
	path with infopath_first and infopath_next and check for
	dir file with info_check_compressed.

2020-11-06  Gavin Smith  <gavinsmith0123@gmail.com>

	awk for texindex

	* configure.ac: Call AC_CHECK_PROGS instead of AC_PROG_AWK and
	set TI_AWK.
	* texindex/texindex.in, texindex/Makefile.am:
	Substitute TI_AWK instead of AWK.

2020-11-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Allow dir.gz

	* info/dir.c (build_dir_node): Call info_file_find_next_in_path
	to get all the dir files.  This means that compressed dir
	files can be found as dir.gz etc., which install-info already
	supports.
	(dir_entry_of_infodir): Only check for dir under the name of "dir",
	not "localdir".

2020-11-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Catching Mistakes): Subordinate to
	previous appendix.

2020-11-05  Gavin Smith  <gavinsmith0123@gmail.com>

	JS_WEBLABELS=reference

	* tp/Texinfo/Convert/HTML.pm (_default_end_file):
	For JS_WEBLABELS=reference only output the reference link
	if JS is used in the page.

2020-11-05  Gavin Smith  <gavinsmith0123@gmail.com>

	@bsixpaper

	* NEWS,
	* doc/texinfo.texi (A4 Paper, Command List),
	* doc/refcard/txirefcard.tex: Document @bsixpaper.

2020-11-05  Patrice Dumas  <pertusus@free.fr>

	Warn about nodes not references in pointers or in document node menu

	* tp/Texinfo/Structuring.pm (nodes_tree): put referenced nodes in 
	%referenced_nodes and warn about unreferenced nodes.

2020-11-05  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (nodes_tree): word node pointers and menu
	order inconsistencies message without referring to section.


2020-11-05  Patrice Dumas  <pertusus@free.fr>

	Add CHECK_NORMAL_MENU_STRUCTURE customization variable

	* tp/Texinfo/Common.pm (%default_customization_values, 
	@variable_string_settables),
	tp/Texinfo/Structuring.pm (nodes_tree),
	doc/texinfo.texi (Other Customization Variables):
	add CHECK_NORMAL_MENU_STRUCTURE which must be set in order to
	get warnings about inconsistencies between node pointers
	and node menu entries order.  Do not use FORMAT_MENU for that.
	Output those warnings even for nodes with explicit pointers.


2020-11-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Invoking texi2any) <--no-validate>: Reword
	to say it is menu entries that are checked rather than menu
	structure.  Comment out text that may be inaccurate.

2020-11-02  Gavin Smith  <gavinsmith0123@gmail.com>

	Anchor links on hover over regular @table items.
	
	* tp/Texinfo/Common.pm (relate_index_entries_to_table_entries_in_tree):
	New function.
	* tp/texi2any.pl: Call it as a tree transformation for HTML.
	* tp/Texinfo/Convert/HTML.pm (command_id): Update a comment.

2020-11-02  Gavin Smith  <gavinsmith0123@gmail.com>

	Anchor links on hover over @vtable or @ftable @item.

	* tp/Texinfo/Convert/HTML.pm (_convert_item_command) <table_term>:
	Output id on containing <dt> rather than an empty <span>.  Call
	_get_permalink.

2020-11-02  Patrice Dumas  <pertusus@free.fr>

	Determine with USE_NODE_DIRECTIONS if section or nodes directions are
	used in HTML

	* tp/Texinfo/Convert/HTML.pm (_default_node_direction)
	rename as _default_panel_button_dynamic_direction.
	* tp/Texinfo/Convert/HTML.pm (_default_panel_button_dynamic_direction,
	%defaults), tp/Texinfo/Common.pm (@variable_string_settables):
	add USE_NODE_DIRECTIONS customization variable, and use it in
	_default_panel_button_dynamic_direction, defaulting to USE_NODES
	if USE_NODE_DIRECTIONS is undefined.
	* doc/texinfo.texi (HTML Customization Variables): add 
	USE_NODE_DIRECTIONS.
	* doc/texinfo.texi (Three Arguments): document that 
	xrefautomaticsectiontitle applies to node headers in HTML too.

	* tp/Texinfo/Convert/HTML.pm (_default_navigation_header_panel,
	_default_button_formatting): determine if a delimiter is needed
	before a button from 'format_button' function reference return.

2020-11-01  Patrice Dumas  <pertusus@free.fr>

	Use the section itself for sectiontoc, not the previous node

	* tp/Texinfo/Convert/HTML.pm (_convert): use the sectioning
	command for the sectiontoc.

2020-11-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Anchor links on hover over def.

	* tp/Texinfo/Common.pm (@variable_string_settables),
	* tp/Texinfo/Convert/HTML.pm (%defaults):
	Add PERMALINKS.
	* tp/Texinfo/Convert/HTML.pm (_get_permalink): New function.
	(%css_map): Add CSS so as to make permalink appear on hover
	over parent element.
	(_convert_def_line_type): Call _get_permalink.

2020-11-01  Patrice Dumas  <pertusus@free.fr>

	Output a sectiontoc for @top if there is no contents already output

	* tp/Texinfo/Convert/HTML.pm (_convert): output a sectiontoc in 
	@top if there is no shortcontent nor summary content inlined.
	(_has_contents_or_shortcontents): new function.

2020-11-01  Patrice Dumas  <pertusus@free.fr>

	Update pot/po and fr translation to regenerate test result after @def
	change

	* po_document/*.po: update strings.
	* po_document/fr.po: update translations.
	* tp/tests/layout/res_parser/formatting_fr_icons/formatting.html:
	update

2020-11-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Enable def category CSS.

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type):
	Wrap def category in <span class='category'>.
	(_convert_def_command): Add class='def' to <dl> element.

2020-11-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Output category separately for @def*.

	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type):
	Split the conversion of the category away from the rest of
	the def line.  Add comments to label the different cases.

	This has a slight change to the output for @deffn with
	a completely empty argument, as this leads to the
	category being undefined.  It also changes a test
	result due to a translation for "{category}: " being missing
	(in French, this should come out as "{category}@ : ").

	This is preparation for allowing changing the formatting of
	the category with CSS, for example to float it to the right
	of the page.  Suggestion from Per Bother.

2020-11-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Text.pm (brace_no_arg_command):
	Add missing close bracket for defined.

2020-10-31  Patrice Dumas  <pertusus@free.fr>

	Replace SHOW_MENU by FORMAT_MENU which uses only strings

	* tp/Texinfo/ParserNonXS.pm (_register_extra_menu_entry_information),
	tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser),
	tp/Texinfo/Structuring.pm (nodes_tree),
	tp/Texinfo/Common.pm (%default_customization_values,
	@variable_string_settables), tp/texi2any.pl,
	tp/Texinfo/Convert/*.pm, tp/init/book.pm, tp/init/chm.pm,
	doc/texinfo.texi (Other Customization Variables), NEWS: 
	replace SHOW_MENU by FORMAT_MENU.  0 becomes 'nomenu' and 1
	becomes 'menu'.

2020-10-31  Patrice Dumas  <pertusus@free.fr>

	Do not remove raw_out_parser debug tests output directories

	* tp/tests/run_parser_all.sh: do not remove raw_out_parser.
	tp/tests/*/Makefile.am (distclean-local): remove raw_out_parser*

2020-10-31  Patrice Dumas  <pertusus@free.fr>

	Set include directories for parser

	* texi2any.pl (%$parser_file_options): set 'include_directories'. 

2020-10-31  Gavin Smith  <gavinsmith0123@gmail.com>

	_convert_text_options takes a converter argument

	* tp/Texinfo/Structuring.pm (do_index_keys): Do not call
	_convert_text_options as this appears to take a converter
	object as an argument.  Inline some parts of that function
	at the call site.

2020-10-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Call do_index_keys with parser object.
	
	* tp/Texinfo/Convert/HTML.pm (_prepare_index_entries),
	* tp/Texinfo/Convert/IXIN.pm (output_ixin):
	Pass parser object to sort_indices and sort_indices_by_letter
	instead of converter.
	
2020-10-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Call do_index_keys with parser object.

	* tp/Texinfo/Convert/Plaintext.pm (_printindex_formatted):
	Pass parser object to sort_indices instead of converter.
	* tp/t/09indices.t: Set ENABLE_ENCODING in parser options
	as well as converter options.
	* tp/Texinfo/Convert/Plaintext.pm (do_index_keys): Assume
	argument is a parser object.
	
	This means that conversion errors in the index sort keys
	will be part of the parser errors instead of the converter
	errors.

2020-10-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (texi2any Environment Variables): Update
	documentation of TEXINFO_XS_PARSER to reflect that this is
	the default.

2020-10-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Call do_index_keys with parser object again.
	
	* tp/Texinfo/Common.pm (%default_customization_values):
	Re-add 'ENABLE_ENCODING'.  It could be used in Texinfo::Structuring
	for index entry sorting.
	* tp/t/test_utils.pl, tp/t/test_sort.t:
	Use parser object instead of converter object to sort indices.
	* tp/Texinfo/XS/parsetexi/Parsetexi.pm: Ignore ENABLE_ENCODING.
	
	This reverts changes on 2020-10-21 and 2020-10-28.  The plan
	is to call do_index_keys with the parser object instead, which
	appears to have been the original intention.

2020-10-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Configuration/customization variables.
	
	* tp/Texinfo/Common.pm (%default_customization_values):
	Remove SIMPLE_MENU as this is used in neither Texinfo::Parser
	or Texinfo::Structuring.
	* tp/Texinfo/Structuring.pm (nodes_tree): Refer to SHOW_MENU
	via get_conf to clarify that this is a configuration value.
	* tp/texi2any.pl: Remove a comment.
	* tp/Texinfo/XS/parsetexi/Parsetexi.pm: Change a comment.

2020-10-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl: Rename two variables.

2020-10-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Do not set expanded_formats via parser.

	* tp/Texinfo/Convert/Converter.pm (converter): Do not copy
	'expanded_formats' from parser object to converter object.
	* tp/texi2any.pl: Copy 'expanded_formats' from parser object
	to converter object.

2020-10-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Do not set include_directories via parser.

	* tp/Texinfo/Convert/Converter.pm (converter): Do not copy
	'include_directories' from parser object to converter object.

	* tp/texi2any.pl: Add include directories to parser options
	and converter options separately.
	* tp/t/test_utils.pl: Set 'include_directories' in converter
	options explicitly.

	This should make it clearer where the 'include_directories'
	setting comes from.  Ideally the parser object should be used
	to access the results of parsing only, not to access parser
	settings.

2020-10-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser):
	Add a comment about copying the conf to the parser object.

2020-10-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Only call do_index_keys with converter object.

	* tp/t/test_utils.pl, tp/t/test_sort.t:
	Call Texinfo::Structuring::sort_indices with converter object
	rather than parser object.
	* tp/Texinfo/Convert/Text.pm: use Texinfo::Convert::Converter.
	* tp/Texinfo/Structuring.pm (do_index_keys): Update comment.

	This means that index sorting errors disappear from
	$result_errors, but they are still present in the converter
	errors.

2020-10-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Provide accesskey in section TOC.

	* tp/Texinfo/Convert/HTML.pm: Output accesskey attribute on <a>
	elements in section TOC, as is done for menus.

2020-10-27  Patrice Dumas  <pertusus@free.fr>

	Fix messages. Do not warn if up node is an external node and inconsistent with menu

	* tp/Texinfo/Structuring.pm (nodes_tree): do not check for 
	node up / menu up mismatch if node up is an external node.
	* tp/Texinfo/Convert/HTML.pm (_element_direction): accept section
	type for TOP_NODE_UP_URL Up.


2020-10-27  Patrice Dumas  <pertusus@free.fr>

	Do not warn if external node in menu is not consistent with sections

	* tp/Texinfo/Structuring.pm (nodes_tree): do not warn if a menu entry
	referring to an external node is not consistent with sectioning.

2020-10-26  Patrice Dumas  <pertusus@free.fr>

	use httex instead of httexi for @math in default case

	* tp/init/tex4ht.pm ($STYLE_MATH): set to tex.

2020-10-26  Gavin Smith  <gavinsmith0123@gmail.com>

	@math, @displaymath documentation

	* doc/texinfo.texi (Inserting Subscripts and Superscripts):
	Do not encourage @sub or @sup inside math.
	(Inserting Math): Use \over in example, instead of \frac.
	Comment out explanation of @\.  Explain that using any Texinfo
	commands inside math is not ideal.

2020-10-25  Patrice Dumas  <pertusus@free.fr>

	handle @displaymath with tex4ht and latex2html

	* tp/init/latex2html.pm (l2h_process, l2h_to_latex), 
	tp/init/tex4ht.pm ($tex4ht_command_displaymath, tex4ht_prepare):
	handle @displaymath.
	* tp/tests/coverage_macro.texi: use plain TeX math code in 
	@displaymath.
	* tp/tests/tex_html/tex.texi: add a @displaymath.

2020-10-25  Patrice Dumas  <pertusus@free.fr>

	add a @sup in @math{} in tex tests

	* tp/tests/tex_html/tex.texi: add @math{} with @sup{}
	to test.

2020-10-25  Patrice Dumas  <pertusus@free.fr>

	regenerate tex4ht/latex2html tests

	Note that tex must be changed to etex in httex and httexi to
	generate those tests results with recent tex4ht.

2020-10-25  Patrice Dumas  <pertusus@free.fr>

	@displaymath keep strings as is and add to coverage tests

	* tp/Texinfo/Convert/HTML.pm (_convert): increment 'math' context
	for @displaymath.
	* tp/Texinfo/Convert/Text.p (_convert): set code option for 
	Texinfo::Common::block_commands raw.
	* tp/t/02coverage.t, tp/tests/coverage_macro.texi, 
	tp/tests/*/res_parser/*: add @displaymath in coverage tests.

2020-10-25  Patrice Dumas  <pertusus@free.fr>

	Add a tree transformation to add missing menus

	* tp/Texinfo/Transformations.pm
	(_get_non_automatic_nodes_with_sections, complete_tree_nodes_menus,
	complete_tree_nodes_missing_menu, _prepend_new_menu_in_node_section), 
	doc/texinfo.texi (Other Customization Variables), texi2any.pl,
	tp/t/automatic_menus.t: add complete_tree_nodes_missing_menu
	transformation.  Add systematically the optional $use_sections
	argument to add a menu entry name using the section name to the 
	functions that can make use of that argument.
	* tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/Structuring.pm
	(node_menu_of_node): rename node_menu_of_node() as
	new_complete_node_menu().
	* tp/Texinfo/Structuring.pm (get_node_node_childs, new_complete_node_menu),
	tp/Texinfo/Transformations.pm (complete_node_menu): add
	get_node_node_childs() in Structuring.pm based on code in
	Transformations.pm, and use that code in new_complete_node_menu().
	* tp/Texinfo/Structuring.pm (node_menu_of_node, section_menu_of_node): 
	remove, optional arguments of the functions should be used instead.

2020-10-24  Patrice Dumas  <pertusus@free.fr>

	minor changes in comments and documentation

2020-10-24  Gavin Smith  <gavinsmith0123@gmail.com>

	Re-add example.

	* doc/texinfo.texi
	(Other Customization Variables): Re-add example of
	TREE_TRANSFORMATIONS with corrected invocation.

2020-10-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (HTML Customization Variables, Inserting Math):
	Document -c HTML_MATH=t4h.

2020-10-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl: Use tex4ht if HTML_MATH is set to 't4h'.

2020-10-24  Patrice Dumas  <pertusus@free.fr>

	do not mix tex4ht commands STDIN with main script STDIN

	* tp/init/tex4ht.pm (tex4ht_process_command): use open
	with "|-" input pipe to launch tex4ht commands to avoid mixing
	main script STDIN and tex4ht commands STDIN.  It is important
	because when tex fails it reads from STDIN and the input may 
	trigger diverse actions by tex.

2020-10-24  Gavin Smith  <gavinsmith0123@gmail.com>

	Reduce example indent for @bsixpaper.

	* doc/texinfo.tex (@bsixpaper): Set \lispnarrowing to 0.2in.

2020-10-24  Gavin Smith  <gavinsmith0123@gmail.com>

	@set dispenvsize small for @bsixpaper.
	
	* doc/texinfo.tex (@bsixpaper): Switch some block commands
	to display with a smaller font.
	(\verbatim): Respect '@set dispenvsize small'.

2020-10-24  Gavin Smith  <gavinsmith0123@gmail.com>

	Documentation of customization variables.
	
	* doc/texinfo.texi
	(HTML Customization Variables, Other Customization Variables):
	Move INDEX_ENTRY_COLON and MENU_ENTRY_COLON to HTML Customization
	Variables.  Remove commented-out IDX_SUMMARY.  Remove example
	referring to non-existent PLAINTEXINFO variable.  Remove
	USE_NODE_TARGET as it doesn't do anything in the current code.
	* tp/Texinfo/Common.pm (@variable_string_settables),
	* tp/Texinfo/Convert/HTML.pm (%defaults): Remove 'USE_NODE_TARGET'.
	* tp/t/init/t2h_singular.init: Remove commented-out code referring
	to IDX_SUMMARY.

2020-10-23  Gavin Smith  <gavinsmith0123@gmail.com>

	MathJax for TeX code only

	* tp/Texinfo/Convert/HTML.pm
	(_convert_math_command) [HTML_MATH=mathjax]: No MathJax if
	HTML tags in contents, e.g. @math{a@sup{2}} doesn't work.

2020-10-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\pagesizes): Increase physical page dimensions
	by fixed quantities.

2020-10-22  Gavin Smith  <gavinsmith0123@gmail.com>

	@bsixpaper

	* doc/texinfo.tex (@bsixpaper): Add.
	* tp/Texinfo/Common.pm (%line_commands),
	* tp/Texinfo/XS/parsetexi/command_data.txt: Add 'bsixpaper'.

2020-10-22  Gavin Smith  <gavinsmith0123@gmail.com>

	empty @headitem

	* tp/Texinfo/XS/parsetexi/api.c (element_to_perl_hash):
	Always create a contents array for @headitem even if it is empty.
	* tp/t/21multitable.t (empty_headitem): New test.

2020-10-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Only reference MathJax on those pages which require it.

	* tp/Texinfo/Convert/HTML.pm
	(%defaults): New value 'element_math' to keep track of
	whether @math or @displaymath has been seen in current file.
	(_convert_math_command, _convert_displaymath_command)
	(output): Set and reset 'element_math'.  Process body of
	file before the header to set 'element_math' correctly.
	(file_header_informations): Only reference MathJax scripts
	if 'element_math' is set.
	
	(%defaults): New value 'jslicenses_element' to keep track
	of whether scripts have actually been used in the current output
	file.
	(file_header_information): Update 'jslicenses_element'.
	(_default_end_file): Only output the link to the JS licences page
	if there were actually JS scripts referenced in the file.

2020-10-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser): Warn on
	unknown conf value.

2020-10-21  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove ENABLE_ENCODING setting for parser

	* tp/Texinfo/Common.pm (%default_customization_values):
	Remove 'ENABLE_ENCODING'.  This was passed indirectly to
	Texinfo::Convert::Text by Texinfo::Parser, but Texinfo::Parser
	has not depended on Texinfo::Convert::Text since 2016-07-09.

	* tp/t/test_utils.pl, tp/t/test_sort.t:
	Set 'ENABLE_ENCODING' on parser object before sorting indices
	to maintain consistency  in test results.

2020-10-21  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove TEST setting for parser

	* tp/Texinfo/Common.pm (%default_customization_values):
	Remove 'TEST'.
	* tp/Texinfo/ParserNonXS.pm (parse_texi_text, parse_texi_file)
	(parse_texi_line, _end_line):
	Remove code referring to the TEST setting.  This means that
	the 'input_directory' value is always set and all leading
	directory components will be removed from the input file name
	in messages.
	* tp/Texinfo/Convert/HTML.pm (_load_htmlxref_files): Make
	adding the input directory to the search path for htmlxref.cnf
	conditional on TEST.

2020-10-21  Gavin Smith  <gavinsmith0123@gmail.com>

	nodes_tree conditions

	* tp/Texinfo/Structuring.pm (nodes_tree):
	Remove conditions about external manuals in node up pointer.
	These conditions appeared to be ineffective due to a different
	check for menus on the up node preventing execution of
	a block of code.  Combine other conditions.  No functional
	changes intended.

2020-10-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Structuring.pm (nodes_tree): Warn about multiple
	@menu's regardless of value of SHOW_MENU.  Edit comments.
	Combine conditions (with no functional changes intended).

2020-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/run_parser_all.sh: Don't pass -c SHOW_MENU=1
	to texi2any.

2020-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	SHOW_MENU=1 for TEXI2HTML=1.

	* tp/Texinfo/Convert/HTML.pm (_set_variables_texi2html):
	Set SHOW_MENU to 1.

2020-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	Set MENU_ENTRY_COLON back to :.
	
	* tp/Texinfo/Convert/HTML.pm (%defaults):
	Change 'MENU_ENTRY_COLON' back from '' to ':'.

	If somebody specifies '-c SHOW_MENU=1', they probably
	want something that looks more like the Info output.
	':' was the default setting until 2019-02-10.

2020-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	Don't add menus in HTML.pm.
	
	* tp/Texinfo/Convert/HTML.pm (_convert): Remove code to add a menu
	to a node where there wasn't one.

	Since SHOW_MENU now has the value section-toc by default,
	a menu is not necessary in a node for inferior nodes to be
	accessible.  If adding menus is wanted as a feature for HTML,
	this may be better done in non-format-specific code (e.g. with
	TREE_TRANSFORMATIONS).

2020-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	Warning only for menu missing node.

	* tp/Texinfo/Structuring.pm (nodes_tree): Use a warning instead
	of an error for the message, "node `%s' lacks menu item for
	`%s' despite being its Up target".

2020-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	No automatic menu if node has explicit pointers.

	* tp/Texinfo/Convert/Plaintext.pm (_convert)
	<sectioning commands>:
	Check if extra arguments were given to @node, and if they
	were, do not generate a menu if one was missing.

2020-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/htmlxref.cnf (tar): Fix.

2020-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	class="texi-manual"

	* tp/Texinfo/Convert/HTML.pm
	(_convert_xref_commands): Set class="texi-manual" on links
	to other Texinfo manuals.

2020-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	Manual revisions.

	* doc/texinfo.texi: Docbook -> DocBook throughout.
	(Overview): Reword slightly.
	(Texinfo Document Structure): Remove node self-reference.

2020-10-18  Philipp Klaus Krause <pkk@spth.de>  (tiny change)

	const char *

	* info/filesys.c (filesys_error_string),
	* install-info/install-info.c (ensure_dirfile_exists): Store
	return value of strerror in a const char * variable.

2020-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Top Node Example): Merge into parent.

2020-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	Reorder nodes.

	* doc/texinfo.texi (Texinfo Document Structure, Writing a Node):
	Re-order.

2020-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	Document SHOW_MENU changes.

	* doc/texinfo.texi
	(Other Customization Variables) <SHOW_MENU>: Explain '1' and
	'sectiontoc' settings.
	(Invoking texi2any): Move '@vindex HEADERS' here.
	(Writing a Node): Take out material about menus and detailed
	menus.
	(Master Menu Parts, Top Node): Move material about menus here.
	Use consistent terminology re "master menu" and "detailed menu".

2020-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl: Move a line.

2020-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	End paragraph for @displaymath.

	* tp/Texinfo/Common.pm (%close_paragraph_commands),
	* tp/Texinfo/XS/parsetexi/commands.c (close_paragraph_command):
	Add @displaymath.
	* tp/Texinfo/Convert/HTML.pm (_convert_displaymath_command):
	Wrap output in a <div>.

2020-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Document @displaymath and HTML_MATH.

	* doc/texinfo.texi (Inserting Math, Command List):
	Document @displaymath and options for HTML_MATH.

2020-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	@displaymath for docbook

	* tp/Texinfo/Convert/DocBook.pm (_convert): Wrap
	output for @displaymath in <informalequation> and
	<mathphrase>.

2020-10-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Info Format FAQ): New node.

2020-10-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/16raw.t (displaymath): New test.

2020-10-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_mini_toc): Add bullets to
	list and remove section numbers.

2020-10-15  Gavin Smith  <gavinsmith0123@gmail.com>

	@displaymath for HTML.
	
	* tp/Texinfo/Convert/HTML.pm (_convert_displaymath_command):
	New function.

2020-10-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm: Remove reference
	to line numbers in ParserNonXS.pm.

2020-10-15  Gavin Smith  <gavinsmith0123@gmail.com>

	Add @displaymath.
	
	* tp/Texinfo/Common.pm (%block_commands, %raw_commands),
	* tp/Texinfo/XS/parsetexi/command_data.txt:
	Add 'displaymath'.  It is treated like @verbatim by default.

2020-10-15  Gavin Smith  <gavinsmith0123@gmail.com>

	@displaymath and \frac

	* doc/texinfo.tex (@displaymath): Implement.
	* doc/texinfo.tex (\frac): Provide.

2020-10-14  Gavin Smith  <gavinsmith0123@gmail.com>

	HTML_MATH, MATHJAX_SCRIPT and MATHJAX_SOURCE
	
	* doc/texinfo.texi (HTML Customization Variables):
	Add HTML_MATH.
	(MathJax Customization Variables): Add MATHJAX_SCRIPT
	and MATHJAX_SOURCE along with guidance for using these.

2020-10-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Customization Variables for @-Commands):
	Remove @contents and @shortcontents, as it is not meaningful to
	set these from the command line, even if they are viewed as
	settings internally.

2020-10-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Document JS_WEBLABELS and JS_WEBLABELS_FILE.
	
	* doc/texinfo.texi (HTML Customization Variables): Add
	JS_WEBLABELS and JS_WEBLABELS_FILE.
	* NEWS: Same.

2020-10-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Manual revisions.
	
	* doc/texinfo.texi (History, Reference Implementation):
	Merge the latter into the former.  Remove reference to
	removed 'util/texi2html' script.
	* TODO: Remove some install-info points that will never be done
	(by install-info).
	* tp/Texinfo/Structuring.pm: Remove reference to removed value.

2020-10-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Manual revisions.

	* doc/texinfo.texi (Pointer Validation, Invoking texi2any):
	Merge the former into the latter.

2020-10-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Change warning messages.
	
	* tp/Texinfo/Structuring.pm (nodes_tree): Reword warning messages.

2020-10-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Add a file to update the copyright year of.
	* tp/texi2any.pl: Update copyright year.

2020-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	URL line breaking.
	
	* doc/texinfo.tex (\urefbreak): Temporarily set \pretolerance
	to a negative value.
	\urefallowbreak: Increase value of penalty.
	* doc/texinfo-tex-test.texi (URL line breaking): Add another
	example.
	(Nested URL): New section.
	
	Substandard URL line breaking reported by Werner Lemberg.

2020-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	JS_WEBLABELS and JS_WEBLABELS_FILE
	
	* tp/Texinfo/Common.pm (@variable_string_settables):
	Add JS_WEBLABELS and JSWEBLABELS_FILE.
	* tp/Texinfo/Convert/HTML.pm (%defaults): Provide default values.
	(_do_jslicenses_file): Create this file according to the values of
	these variables.
	(_default_end_file): Output link to jslicense file depending on the
	values of these variables.

2020-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* TODO: Update with some bugs.

2020-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (infokey format):
	Add note that you can't effectively bind C-c.

2020-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (The Echo Area): Remove mention of using
	? for completions.

2020-10-12  Patrice Dumas  <pertusus@free.fr>

	Add mathjax test in layout coverage tests

	* tp/tests/layout/list-of-tests: add formatting_mathjax.

2020-10-12  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix test suite for non-XS.
	
	* tp/Texinfo/ParserNonXS.pm (_open_in): Use ':utf8' layer
	for UTF-8 input.  This was leading to errors in the test suite
	for Shift-JIS files.  This reverses change on 2020/05/14.

2020-10-12  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove MINI_TOC variable, using SHOW_MENU instead.
	
	* tp/Texinfo/Common.pm (@variable_string_settables):
	Remove MINI_TOC.
	* tp/Texinfo/Convert/HTML.pm (%defaults): Remove MINI_TOC
	value, and set SHOW_MENU to 'sectiontoc' to mean the same thing.
	(_convert): Make showing menu and generating a "mini-TOC" mutually
	exclusive, controlled through the SHOW_MENU setting.
	* tp/Texinfo/Convert/HTML.pm,
	* tp/Texinfo/Convert/Structuring.pm,
	* tp/Texinfo/ParserNonXS.pm,
	* tp/Texinfo/XS/parsetexi/Parsetexi.pm: Check whether SHOW_MENU
	has value '1' instead of whether it is true.
	* tp/tests/run_parser_all.sh: Do not pass '-c MINI_TOC=0' option.

2020-10-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser):
	Check for undef DEBUG.

2020-10-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi
	(Writing a Menu, Customization Variables for @-Commands)
	(Command List),
	* doc/refcard/txirefcard.tex
	Remove @validatemenus.
	* tp/Texinfo/XS/Makefile.am (command_ids.h): Use gawk instead
	of awk.  Avoid discouraged "$p" usage, using "$(p)" instead.
	* tp/Texinfo/XS/configure.ac: Check for gawk.

2020-10-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Update.

2020-10-12  Gavin Smith  <gavinsmith0123@gmail.com>

	MATHJAX_SCRIPT and MATHJAX_SOURCE

	* tp/Texinfo/Common.pm (@variable_string_settables): Add
	MATHJAX_SCRIPT and MATHJAX_SOURCE.  Give variables in alphabetical
	order.
	* tp/Texinfo/Convert/HTML.pm (output) Set MATHJAX_SCRIPT and
	MATHJAX_SOURCE to default values and use their values in the
	jslicenses file.
	(_file_header_informations): Use value of MATHJAX_SCRIPT.

2020-10-12  Gavin Smith  <gavinsmith0123@gmail.com>

	MathJax fixes.

	* tp/Texinfo/Convert/HTML.pm (_file_header_informations): Use
	math2jax_process instead of 'math' class.  (Suggestion from Patrice.)
	(_convert_math_command): Add 'math' class to <em> elements for
	math unless we are using mathjax, in which case use
	'math2jax_process'.
	(output): Set 'jslicenses' earlier to ensure the jslicense link
	is output.
	(default_end_file): Wrap jslicense link in <small>.

2020-10-12  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove SILENT variable.

	* tp/Texinfo/Common.pm (@command_line_settables): Remove
	'SILENT' as it is not used anywhere, and sort the variables
	in alphabetical order.
	* tp/texi2any.pl: Do not set SILENT for --silent option.

2020-10-12  Gavin Smith  <gavinsmith0123@gmail.com>

	Move index entries for customization variables.

	* doc/texinfo.texi (Customization Variables and Options):
	(Invoking texi2any): Move @vindex entries to Invoking texi2any
	node.

2020-10-11  Gavin Smith  <gavinsmith0123@gmail.com>

	Wipe res_parser etc.

	* tp/tests/run_parser_all.sh: For -copy option, wipe the
	contents of res_* directories before copying files over, so
	that leftover files do not cause test failures after running
	"make copy-tests".

2020-10-11  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove texi2html conditionality in tests.
	
	* tp/tests/coverage_macro.texi: Remove some "@ifset texi2html"
	conditions.

2020-10-11  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove "not used" variables.

	* tp/Texinfo/Common.pm (@variable_settables_not_used)
	(@formats_settable, @secondary_customization_variables)
	(_customization_variable_classes): Remove.
	* doc/texinfo.texi, tp/init/chm.pm, tp/Texinfo/Convert/HTML.pm:
	Remove mention of COMPLETE_IMAGE_PATHS, SPLIT_INDEX and TOC_FILE
	variables.

2020-10-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/layout/list-of-tests: Pass -c TEXI2HTML=undef to
	some tests to avoid 'texi2any' flag being reset by normalize_config.

2020-10-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl (normalize_config): Make '-c HTML_MATH=l2h'
	a synonym for '-c L2H=1'.

2020-10-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl (normalize_config): New function
	to centralize special treatment of config vars, including
	TEXINFO_OUTPUT_FORMAT, TEXI2HTML and L2H.

2020-10-10  Gavin Smith  <gavinsmith0123@gmail.com>

	MathJax and jslicenses file.

	* tp/Texinfo/Convert/HTML.pm
	(_do_jslicenses_file): New function.
	(output): Call it.  Add files to $self->{'jslicenses'} if
	INFO_JS_DIR or HTML_MATH is set.

	(_convert_math_commands):
	No warning if HTML is not used.
	(_default_end_files): Only refer to mathjax files if HTML_MATH
	is set to 'mathjax'.  Use tex-svg.js instead of tex-chtml.js.

	* tp/Texinfo/Common.pm (open_out),
	* tp/Texinfo/Convert/HTML.pm (_default_element_footer, output)
	Remove commented-out or debugging statements.

2020-10-08  Gavin Smith  <gavinsmith0123@gmail.com>

	MathJax fixes.

	* tp/Texinfo/Convert/HTML.pm (_convert_math_command): Use
	<em class='math'> around text to be processed by MathJax.
	(_file_header_informations): Set MathJax options to include the
	contents of <pre> elements (used for @display).  Only process inside
	elements with class 'math' by adding attribute to <body> element.

2020-10-07  Gavin Smith  <gavinsmith0123@gmail.com>

	Implement MathJax support.

	* tp/Texinfo/Common.pm (@variable_string_settables): Add 'HTML_MATH'.
	* tp/Texinfo/Convert/HTML.pm (%style_attribute_commands):
	Remove 'math'.
	(_convert_math_command): Uncomment.  Check HTML_MATH variable, and
	if set, wrap output in '\(' and '\)'.  If neither HTML_MATH nor
	L2H is set, issue a warning.
	(_file_header_informations):  Add <script> element in header if
	'HTML_MATH' is set.

2020-10-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* TODO: An idea for @def* and @findex.

2020-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Manual revisions.

	* doc/texinfo.texi
	(Include Files Evolution): Comment out node.
	(@titlefont @centre @sp): Swap with following node.

2020-09-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: Do not escape backquote in AC_MSG_WARN argument.

2020-09-26  Gavin Smith  <gavinsmith0123@gmail.com>

	Manual revisions.

	* doc/texinfo.texi (makeinfo Pointer Creation): Merge contents 
	into "Writing a Node" chapter.
	(Writing a Node): Revise.
	(Command List): Update documentation of @top.

2020-09-26  Gavin Smith  <gavinsmith0123@gmail.com>

	Manual revisions.

	* doc/texinfo.texi (Body of the Document): New node.
	(Texinfo File Header): Merge text from "Minimum" in here.
	(Document Permissions)
	(Titlepage & Copyright Page)
	(Ending a File): Finish merging text.

2020-09-26  Gavin Smith  <gavinsmith0123@gmail.com>

	Manual revisions.

	* doc/texinfo.texi (Sample Beginning, Short Sample): Remove.
	(Ending a File): Move later.
	(Short Sample): Merge into following nodes.

2020-09-25  Gavin Smith  <gavinsmith0123@gmail.com>

	Run autoupdate.

	* configure.ac: Change AC_HELP_STRING to AS_HELP_STRING.  The 
	upcoming autoconf 2.70 release will warn about AC_HELP_STRING.

2020-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Manual revisions.

	* doc/texinfo.texi
	(Short Sample, Short Sample Texinfo File)
	(Sample Beginning): Remove @ifnottex lines around Top node.
	(@top Command): Update documentation of @ifnottex.

2020-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Manual revisions.

	* doc/texinfo.texi (Short Sample Texinfo File): Move from
	appendix to introductory chapter.

2020-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Simplify parser configuration.

	* tp/Texinfo/Common.pm (%default_parser_state_configuration):
	Remove 'clickstyle' and 'kdbinputstyle' values as there is no 
	user-visible way to set these and this avoids the question of 
	how to pass them into Parsetexi.
	* tp/Texinfo/ParserNonXS.pm (%parser_default_configuration):
	Add them here.
	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser): Ignore 'in_gdt' 
	setting.

2020-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Propagate DEBUG setting to parsetexi.

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser):
	Call set_debug for DEBUG value.

2020-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Correctly propagate novalidate setting for Texinfo XS parser.

	* tp/Texinfo/XS/parsetexi/Parsetexi.xs,
	* tp/Texinfo/XS/parsetexi/handle_commands.c (set_novalidate):
	New function.
	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser): Check for 
	'novalidate' setting in parser conf and propagate into XS 
	module.

	Octave required on the --no-validate option in its documentation 
	build process.  Report by Stefan Husman.

2020-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Manual revisions.

	* doc/texinfo.texi (Conventions): Remove footnote about meaning 
	of argument.  Make warning about tab characters less 
	conspicuous.  Remove an unnecessary @noindent.
	(Sample Texinfo File Beginning, Ending a File): Move together.
	(Sample Texinfo File Beginning): Remove unnecessary text from 
	intro.
	(Texinfo File Header): Do not recommend start- and end-of-header 
	lines.
	(GNU Sample Texts): Remove use of $Id$ keyword as this is not 
	used with git.  Remove use of @ifnottex around @top node as this 
	is no longer necessary.  Refer to GNU website for guidance on 
	obtaining and using FDL.

2020-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Remove commented out @setchapternewpage 
	line.
	(Beginning and Ending a Texinfo File): Merge with previous 
	chapter.  Trim down discussion of text before Top node.

2020-09-20  Moritz Klammler  <moritz.klammler@cetitec.com>  (tiny change)

	* tp/texi2any.pl: Fix accidental duplication of
	variable value passed via texi2any's -D option to texi2dvi.

2020-09-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Headings Introduced): Remove text that 
	duplicates what is in @setchapternewpage.  Merge node with 
	Headings node.
	(Heading Format): Remove text duplicating material from other 
	nodes.
	(@headings): Subordinate to Headings node.
	(Global Document Commands): Make a note that these are nearly 
	all for printed output.

2020-09-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Page Headings): Move to section of Global 
	Document Commands appendix.

2020-08-07  Per Bother  <per@bothner.com>

	Add sidebar customization hook.

	* js/info.js (header): Check window.sidebarLinkAppendContents
	hook.

2020-08-06  Gavin Smith  <gavinsmith0123@gmail.com>

	No separate configure.ac for js subdirectory.

	* autogen.sh: Do not call autoreconf for js/.
	* configure.ac: Output js/Makefile from AC_CONFIG_FILES.
	Move contents of js/configure.ac into this file.
	* js/Makefile.am: Install files in js subdirectory of 
	$(pkgdatadir).

2020-08-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Copy JS files to HTML output.

	* tp/Texinfo/ModulePath.pm.in: Make $lib_dir and $libexec_dir 
	accessible outside of module.
	* tp/Texinfo/Convert/HTML.pm (output):
	If INFO_JS_DIR is given, try to copy the JS Interface files 
	there.  Remove some debugging statements.
	(_file_header_informations): Give an error if INFO_JS_DIR is 
	used for non-split output.

2020-08-05  Gavin Smith  <gavinsmith0123@gmail.com>

	Start adding option to use Javascript interface.

	* tp/Texinfo/Common.pm (@variable_string_settables):
	Add INFO_JS_DIR.
	* tp/Texinfo/Convert/HTML.pm (_file_header_informations):
	If INFO_JS_DIR is set, then add extra lines in the <head> 
	element.

2020-08-05  Gavin Smith  <gavinsmith0123@gmail.com>

	Add js subdirectory to build system.

	* Makefile.am: Add js to SUBDIRS.
	* configure.ac: Add js to AC_CONFIG_SUBDIRS
	* autogen.sh: Run autoreconf in js.

2020-07-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/htmlxref.cnf: Update mit-scheme.  From Thérèse Godefroy 
	<godef.th@free.fr>.

2020-07-12  Juha-Matti Huusko  <juha-matti.huusko@uef.fi>

	* doc/txi-fi.tex: Add Finnish translation.

2020-06-25  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix index features in code index.

	* doc/texinfo.tex (\docind): New macro, like \doind but for code 
	indices.
	(\docindwrite): Likewise, for \doindwrite.
	(\splitindexentry): Check whether we are in a code index and add 
	\code if we are.
	(\docodeindex): Use \docind rather than \doind and wrapping 
	argument in \code.

	This allows @subentry and @sortas to work correctly.  Reports 
	from Werner Lemberg (June 2020) and Akim Demaille (November 
	2019).

2020-06-25  Gavin Smith  <gavinsmith0123@gmail.com>

	Try to fix macro expansion in index entries.

	* doc/texinfo.tex (\printindex) <\ is escape character>:
	Made @ an escape character too in case one appears in a macro 
	expansion.  Report from Werner Lemberg.

2020-06-25  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix indentation of nested @verbatim.

	* doc/texinfo.tex (\setupverbatim): Call \leavevmode so that 
	\leftskip glue is correctly added.  Fixes bug introduced on
	2020-05-06.  Report from Werner Lemberg.

2020-05-24  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix info hang.

	* info/search.c (find_node_in_binding): Add a check to prevent 
	an infinite loop in case of a malformed input file.  Report by 
	Nathaniel Beaver.

2020-05-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix @verbatiminclude.

	* doc/texinfo.tex (\doverbatiminclude): Call \starttabbox before
	\input-ing the file, and do \egroup afterwards.  Otherwise the 
	catcode changes from \setupverbatim are cancelled at the end of 
	the first line with the \egroup from \par.

	Report from Akira Kakuto.

2020-05-20  Gavin Smith  <gavinsmith0123@gmail.com>

	Doc updates.

	* doc/texinfo.texi (title page): Remove non-sensical comment.
	(The Top Node): Omitted automatically with TeX.
	(Ending a File): Abbreviate.

2020-05-20  Gavin Smith  <gavinsmith0123@gmail.com>

	Update TODO.

	* TODO: Remove many items which have either been done or are 
	unlikely to be done.

2020-05-20  Gavin Smith  <gavinsmith0123@gmail.com>

	PDF page labels.

	(\pagelabels) [PDF]: New macro.
	(\bye): Call it.
	(\pagecount, \romancount, \arabiccount): New counts.
	(\advancepageno) [PDF]: Increment \pagecount.
	(\headings, \startcontents, \contents, \shortcontents):
	Set \romancount, \arabiccount appropriately.

	This means that the page numbers displayed in some PDF readers 
	can actually match the numbers printed on the pages.


2020-05-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Input encoding error.

	* tp/Texinfo/ParserNonXS.pm (_open_in): Use ':encoding(utf-8)'
	instead of 'utf-8'.  Hopefully this makes encoding errors 
	non-fatal for Latin-1 files that aren't marked as such.  The 
	output would be mostly OK if only a few non-ASCII characters are 
	used.

2020-05-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (mouse_event_handler): Clear echo area.

2020-05-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (HTML CSS): Remove mention of 
	pre.smalldisplay CSS which isn't output anymore.

2020-05-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Revise some index entries and use @subentry.

2020-05-14  Gavin Smith  <gavinsmith0123@gmail.com>

	No title in headings in TOC with '@headings double'.

	* doc/texinfo.tex (\startcontents): Define @thistitle to be 
	empty.

2020-05-14  Gavin Smith  <gavinsmith0123@gmail.com>

	'@setchapternewpage off' headings.

	* doc/texinfo.tex (\CHAPPAGoff): Redefine \HEADINGSon as is done 
	for \CHAPPAGon and \CHAPPAGodd.
	(\HEADINGSsinglechapoff): The new definition.  Chapter pages 
	have the same headings as other pages.

2020-05-13  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove unused macro.

	* doc\texinfo.tex (\pagealignmacro): Remove macro.  It was not 
	used except in \bye.
	(\bye): Use \chappager instead of \pagealignmacro.  Presumably 
	we do not need an extra blank page at the very end of the 
	document if "@setchapternewpage odd" to make sure that we end on 
	an even page.
	(\startcontents): Remove a comment.  The comment credited
	Torbjorn Granlund <tege@matematik.su.se> for the 
	\contentsalignmacro, presumably added 1996-08-03.

2020-05-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Remove commented out "@set smallbook".  
	There is no corresponding "@ifset smallbook" anywhere else in 
	the file and apparently has not been for a long time.

2020-05-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Remove "start of header" and "end of header" 
	lines.

2020-05-10  Paul Eggert <eggert@cs.ucla.edu>

	* doc/texinfo.tex (\unicodechardefs):
	Add definition for U+02BC APOSTROPHE, MODIFIER LETTER.

2020-05-10  Gavin Smith  <gavinsmith0123@gmail.com>

	Omit title on chapter pages in "@headings double" format.

	* doc/texinfo.tex (\checkchapterpage): Set a new conditional,
	\ifchapterpage.
	(\evenchapheadline, \oddchapheadline): Add.
	(\headline): Use \ifchapterpage to possibly use 
	\evenchapheadline or \oddchapheadline.
	(\evenheadline, \oddheadline): Also set \evenchapheadline and 
	\oddchapheadline.
	(\HEADINGSdouble, \HEADINGSsingle): Call \HEADINGSdoublex and
	\HEADINGSsinglex.
	(\HEADINGSdoublex, \HEADINGSsinglex): Set \evenchapheadline and 
	\oddchapheadline omitting \thistitle and \thischapter.

2020-05-10  Gavin Smith  <gavinsmith0123@gmail.com>

	Reorganise manual.

	* doc/texinfo.texi (Heading Choice): Remove most of node as it 
	repeats what is in "@setchapternewpage".  Merge the rest of the 
	node into "Headings Introduced".

2020-05-10  Gavin Smith  <gavinsmith0123@gmail.com>

	Reorganise manual.

	* doc/texinfo.texi (Printed Books):
	(Obtaining TeX): Merge into "Use TeX" node.
	(Printed Books): Refer to "Hardcopy" node.  Edit to remove 
	repetition.  Remove material on the implementation of TeX.  Move 
	material on paper size to "Hardcopy" node.

2020-05-10  Gavin Smith  <gavinsmith0123@gmail.com>

	Reorganise manual.

	* doc/texinfo.texi
	(Formatting and Printing Hardcopy, Global Document Commands):
	Move sections "@smallbook", "A4 Paper", "@pagesizes", 
	"Magnification" to "Global Document Commands" appendix.

2020-05-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@settitle): Do not refer to 
	@documentdescription.

2020-05-10  Gavin Smith  <gavinsmith0123@gmail.com>

	Reorganise manual.

	* doc/texinfo.texi (Catching Mistakes): Move this appendix to be 
	after "Using Texinfo Mode", with which it is more thematically 
	linked.

2020-05-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@documentdescription): Move section under
	"Generating HTML" chapter.

2020-05-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Global Document Commands): Relegate to 
	appendix.

2020-05-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\indexnofonts):
	Give many commands a definition that removes the {} after use.  
	Sebastian Urban reported that @TeX{} appeared as "TeX{}" in a 
	PDF outline rather than "TeX".

2020-05-07  Gavin Smith  <gavinsmith0123@gmail.com>

	Chapter numbers in PDF outlines.

	* doc/texinfo.tex (\pdfmakeoutlines) [pdftex, XeTeX]:
	Add chapter numbers in the PDF outline for chapters and 
	appendices only.  Suggestion from Sebastian Urban.

2020-05-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Environments, @verbatim): New 
	section.

2020-05-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Fixed-width pounds sign.

	* doc/texinfo.tex (\pounds): Use \ecfont glyph for fixed-width 
	British pound sign.
	(\quotedblleft, \quotedblright): Use \ifmonospace instead of 
	\curfontstyle.

2020-05-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix braced group at start of @verbatim line.

	* doc/texinfo.tex (\setupverbatim):  Do not call \starttabbox 
	with \everypar.  Call \starttabbox at end of \par, and do not 
	call \leavevmode at start of \par.
	(\doverbatim): Call \starttabbox before processing contents of 
	@verbatim block.  Close a group at the end with \egroup.
	(\starttabbox): No need for \global in assignment.
	(\tabexpand): Call \leavevmode before adding box.

	If a character such as Ð at the start of a line expanded to a
	braced group (like {\ecfont \char"D0}), then \everypar would not 
	insert an opening brace until after the first opening brace, 
	leading the closing brace to close \verbbox prematurely.  The 
	single character in the box would be printed at the end of the 
	line.

2020-05-05  Gavin Smith  <gavinsmith0123@gmail.com>

	Fixed-width directed double quotation marks.

	* doc/texinfo.tex (\quotedblleft, quotedblright): If we
	are in a fixed-width font, then use glyphs from European
	Computer Modern.  Sebastian Urban reported that “ and ”
	were output incorrectly.

2020-05-02  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix blank heading on last page of a chapter.

	(\checkchapterpage): Use \gettopheadingmarks or 
	\getbottomheadingmarks to determine the current chapter name.  
	\firstmark was wrong for this as it could give the wrong value 
	on the last page of a chapter.  Inconsistent output reported by
	Sebastian Urban.

2020-05-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Test of @*footing): Add.

2020-05-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Simplify output routine.

	* doc/texinfo.tex (\onepageout, \checkchapterpage):
	Split code to check if we are on a chapter page into a new 
	macro.
	* doc/texinfo-tex-test.texi (Test of @*heading): New section.

2020-04-23  Masamichi Hosoda <trueroad@trueroad.jp>

	* doc/txi-ja.tex: Remove \XeTeXgenerateactualtext=1 for XeTeX 0.99999+
	XeTeX 0.99999+ doesn't need this workaround.

2020-04-22  Masamichi Hosoda <trueroad@trueroad.jp>

	* doc/txi-ja.tex: Change default Japanese font to haranoaji.
	From TeX Live 2020, Japanese default font has become HaranoAji.

2020-04-14  Vincent Lefevre <vincent@vinc17.net>  (tiny change)

	* doc/texinfo.tex (\urefallowbreak): Fix typos in comment.

2020-04-12  Matthew Kraai <kraai@ftbfs.org>  (tiny change)

	* doc/info-stnd.texi (Invoking Info): Fix typo.

2020-03-27  Gavin Smith  <gavinsmith0123@gmail.com>

	Viewport declaration.

	* tp/Texinfo/Convert/HTML.pm (_default_node_redirection_page):
	Add <meta name="viewport"> tag in header for better rendering on 
	mobile devices.  From Karl.

2020-03-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/htmlxref.cnf: Add info.

2020-03-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/htmlxref.cnf: Add dejagnu.  From Karl.

2020-03-09  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix closing tag for footnotes heading.

	* tp/Texinfo/Convert/HTML.pm (_convert_footnote_command): 
	Correct closing tag from </h3> to </h5>.  Report from Kazuhiro 
	Ito.

2020-02-11  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix @xrefautomaticsectiontitle with active chars in node names.

	* doc/texinfo.tex (\refx): Turn off active characters when
	constructing a control sequence with \csname.  This allows 
	retrieving a section name for use with @xrefautomaticsectiontitle.
	(\xrefX): Do not turn off active characters before using \refx 
	for the section number.

	Akim Demaille reported an error message when using
	@xrefautomaticsectiontitle with a '+' in a node name.

2020-02-05  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix parsetexi out-of-source build.

	* tp/Texinfo/XS/Makefile.am: Add -I option to locate include 
	files under out-of-source builds.  Suggestion by Hans-Bernhard 
	Bröker.  Problem reported by Werner Lemberg 
	https://lists.gnu.org/archive/html/bug-texinfo/2020-01/msg00021.html.

2019-02-05  Hans-Bernhard Bröker  <HBBroeker@t-online.de>  (tiny change)

	* tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace):
	Remove incorrect semicolon after if condition.

2020-01-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Section names in HTML navigation bar instead of node names.

	* tp/Texinfo/Convert/HTML.pm
	(_element_direction): Accept 'section' as the type of text to 
	return.
	(_default_node_direction, _default_node_direction_footer)
	[xrefautomaticsectiontitle]: Call '_element_direction' with 
	'section'.  Combine text of both subroutines and make one call 
	the other.

2020-01-24 Jean-Christophe Helary <jean.christophe.helary@traduction-libre.org>

	* doc/texinfo.tex (Smallcaps): Use correct French.

2020-01-20  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix test results.

	* tp/tests/run_parser_all.sh: Specify
	"-c SHOW_MENU=1  -c MINI_TOC=0" by default.

	* tp/tests/layout/list-of-tests (formatting_plaintext),
	* tp/tests/contents/list-of-tests (double_contents_book):
	Specify "-c SHOW_MENU=0" on the command line.

	Update the test results for the last change.

2020-01-20  Gavin Smith  <gavinsmith0123@gmail.com>

	Use section names in HTML output.

	* tp/Texinfo/Convert/HTML.pm (%defaults):
	Set xrefautomaticsectiontitle to 'on'.
	(_convert_xref_commands): Do not insert word "section" before 
	hyperlink.

2020-01-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Info Format General Layout): Change 
	@subsection to @subheading so that nodes appear in menu.

2020-01-19  Gavin Smith  <gavinsmith0123@gmail.com>

	No menus for HTML output by default.

	* tp/Texinfo/Convert/HTML.pm (%defaults): Set SHOW_MENU to 0 and 
	MINI_TOC to 1.
	(_convert) <sectioning commands>: Do not generate a mini-TOC for 
	the @top node.  Do not generate a menu for a node missing one 
	unless SHOW_MENU is set.

2020-01-19  Gavin Smith  <gavinsmith0123@gmail.com>, and
	    Patrice Dumas  <pertusus@free.fr>

	Implement mini-tables of contents.

	* tp/Texinfo/Common.pm (@variable_string_settables),
	* tp/Texinfo/Convert/HTML.pm (%defaults): New customization 
	variable 'MINI_TOC'.

	* tp/Texinfo/Convert/HTML.pm
	(_mini_toc): New subroutine.
	(_convert) <sectioning commands> [MINI_TOC]: Call _mini_toc.
	(%contents_commands): Remove unused.

2020-01-17 Jean-Christophe Helary <jean.christophe.helary@traduction-libre.org>

	* doc/texinfo.texi: Grammar fixes throughout, especially 
	involving hyphens.

2020-01-15  Gavin Smith  <gavinsmith0123@gmail.com>

	No accesskey attribute in footer.

	* tp/Texinfo/Convert/HTML.pm (_default_node_direction_footer):
	New function, based on _default_node_direction.
	(%defaults) <'NODE_FOOTER_BUTTONS'>:
	Use _default_node_direction_footer.

	Daniel Nagy reported that in Firefox, when a page had accesskeys 
	defined in both a header and a footer of a node, that focus 
	would switch between the two elements, instead of following the 
	link.

2020-01-15  Gavin Smith  <gavinsmith0123@gmail.com>

	Suppress text decoration inside @def*.

	* tp/Texinfo/Convert/Plaintext.pm (_convert) <@def* commands>:
	Set 'suppress_styles' on the converter to prevent a @code 
	command inside a @def* command producing single quotes.
	* tp/t/19def.t (code_in_def): New test.

2019-12-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_default_node_redirection_page)
	(_default_begin_file): Move encoding declaration above the 
	copyright text so that it will always be present in the first 
	1024 bytes of the file.  See 
	https://www.w3.org/International/questions/qa-html-encoding-declarations

2019-12-15  Paul Eggert  <eggert@cs.ucla.edu>

	Fix misspelling of "common" in texinfo.tex
	* doc/texinfo.tex (commonheadfootline):
	Rename from name mispelled with 'mmm' instead of 'mm'.
	All uses changed.

2019-12-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/ParserNonXS.pm (_convert_to_text):
	New function.  Include text elements which are '0'.  Support 
	@atchar{}, @lbracechar{} and @rbracechar{}.
	(_end_line) <text commands>: Call _convert_to_text.
	(_parse_texi) <in index commands>: Call _convert_to_text in 
	order to support {, }, @ inside index sort keys.

	* tp/Texinfo/XS/parsetexi/convert.c (convert_to_text):
	Support @atchar{}, @lbracechar{} and @rbracechar{}.
	* tp/Texinfo/XS/parsetexi/separator.c
	(handle_close_brace) <in index commands>: Call convert_to_text.

	Georg-Johann Lay reported that @{ was not recognised inside a 
	@sortas directive.

2019-11-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (%defaults) <LINKS_BUTTONS>:
	Change to make <link> elements in header match the navigation 
	bar.

2019-11-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (command_href): Omit fragment 
	identifier from URL if linking to a section with an associated 
	node.  This means that links from the table of contents will go
	to the top of the page, rather than scrolling the page slightly.

2019-11-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (HTML Customization Variables) <INLINE_CONTENTS>:
	Remove referece to removed @setcontentsaftertitlepage command.

2019-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Advanced Indexing): Correct spelling.  
	Report from John Tait.

2019-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (xref_files_changed): Move call to 
	generated_files_get earlier so that xref_files_new will still be 
	updated if the log files indicate that LaTeX should be re-run.

2019-10-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/input.c (locate_include_file): Return 
	value to be freed by caller.

2019-10-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix parsetexi macro handling.

	* tp/Texinfo/XS/parsetexi/macro.c (handle_macro): For a macro 
	taking a single argument, if the rest of the line is empty, 
	leave the newline on the line.  Otherwise, a command on the next 
	line would not be recognized as occurring at the beginning of 
	the line.  This led to errors with as.texi from binutils, 
	reported by Hans-Bernhard Bröker.

	* tp/t/60macro.t (include_after_empty_line_arg): New test.

2019-10-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/end_line.c 
	(parse_special_misc_command) <CM_clear>:
	Use read_flag_name to read name of flag instead of 
	read_command_name.
	* tp/Texinfo/XS/parsetexi/macro.c
	(fetch_value, clear_value): Remove length argument.

2019-10-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/parser.c
	(process_remaining_on_line) <@value>:
	Use read_flag_name to read name of flag.

2019-10-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix test suite running under non-American locales.

	* tp/t/test_utils.pl: Set LC_ALL to 'C'.  I found test failures
	when my locale was en_GB.utf8 due to some translation files 
	provided by the "language-pack-en-base" package of Linux Mint 
	("recognized" was changed to "recognised").

2019-10-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/TestXS.pm: Update use of Texinfo::XSLoader.

2019-10-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/55conditionals.t (ifset_nonalpha): New test.

2019-10-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Support unusual characters in flag name in XS parser.

	* tp/Texinfo/XS/parsetexi/parser.c (read_flag_name): New 
	function.
	* tp/Texinfo/XS/parsetexi/handle_commands.c
	(handle_block_command) <@ifset>: Call read_flag_name instead of 
	read_command_name.

	Hans-Bernhard Bröker reported that flag names containing slashes 
	didn't work in binutils' as.texi.

2019-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/ParagraphNonXS.pm: Use 
	Texinfo::Convert::Paragraph namespace.

2019-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Reinstate TEXINFO_XS_PARSER variable.

	* tp/Texinfo/Parser.pm: If TEXINFO_XS_PARSER is set to 0, do not 
	load the XS parser module.
	* tp/Texinfo/XSLoader.pm: Make a warning message more 
	informative.
	
2019-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix XS module loading.

	* tp/Texinfo/XSLoader.pm (init): Remove code looking for a Perl 
	file in Perl's search path based on the package name of the 
	module.  This does not correspond to a file and will be the same
	package name for XS and non-XS modules.  Remove 'standalone' and 
	'libtool' options for TEXINFO_XS variable.

	* tp/Texinfo/MiscXS.pm, tp/Texinfo/XS/MiscXS.xs: Use 
	Texinfo::MiscXS namespace.

	* tp/Texinfo/Convert/Paragraph.pm, tp/Texinfo/XS/XSParagraph.xs:
	Use Texinfo::Convert::Paragraph namespace.

2019-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix XS fallback.

	* tp/Texinfo/XSLoader.pm (init): Do not take an argument of a 
	package name to use for the symbols found in the loaded module - 
	rely on the loaded module using the correct package name in the 
	first place.

2019-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Attempt to fix fallback to pure Perl Texinfo::Parser.

	* tp/Texinfo/ModulePath.pm.in: Remove hook from @INC to load the 
	right version of Texinfo::Parser.
	* tp/Texinfo/XSLoader.pm: Add argument for an extra Perl file
	to be loaded in addition to the XS module.
	* tp/Texinfo/Parser.pm: Load XS or pure Perl module by
	calling Texinfo:XSLoader::init.  This is the same approach as 
	for Texinfo::Convert::Paragraph.  Load 
	tp/Texinfo/XS/parsetexi/Parsetexi.pm only after the XS 
	module has been successfully loaded.

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm: Remove call to 
	Texinfo:XSLoader::init.

2019-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: Bump version to 6.7dev, remove dist-xz from 
	options.

2019-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix running texi2any.pl from the source directory.

	* tp/Texinfo/ModulePath.pm.in: Make $top_builddir and 
	$top_srcdir variables available.
	* tp/texi2any.pl: Use $Texinfo::ModulePath::top_srcdir instead
	of referring to an environment variable which may not be set.

2019-10-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Enable XS parser by default.

	* tp/Texinfo/ModulePath.pm.in: Reverse sense of the check for 
	TEXINFO_XS_PARSER: try to load XS parser module by default.

2019-09-28  Eli Zaretskii  <eliz@gnu.org>

	* tp/Texinfo/XS/parsetexi/api.c (find_locales_dir): Don't use
	asprintf, as that could cause Perl crashes due to different malloc
	implementations.

2019-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	@url line-breaking.

	* doc/texinfo.tex (\urefallowbreak): Discourage ragged right by 
	reducing end-line stretch and increasing penalty.  Test cases 
	sent by Vincent Lefevre.
	* doc/texinfo-tex-test.texi (URL line breaking): Add test cases.

2019-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	@url line-breaking.

	* doc/texinfo.tex (\urefallowbreak): Allow a break within a URL 
	without any extra stretch at all.  There is no point to having a 
	small amount of glue at the very end of a line when it is not 
	needed.  Report from Vincent Lefevre.
	* doc/texinfo-tex-test.texi (URL line breaking): Add a test 
	case.

2019-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	6.7.

	* configure.ac, NEWS, util/texi2dvi, util/texi2pdf,
	doc/refcard/txirefcard.tex: version

2019-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid gcc warnings about strncat.

	* install-info/install-info.c (split_entry, format_entry):
	Replace some calls to strncat with strcat.  This avoids a
	"'strncat' specified bound 2 equals source length 
	[-Wstringop-overflow=]" warning with gcc 8.

2019-09-21  YOKOTA Hiroshi  <yokota.hgml@gmail.com>  (tiny change)

	Japanese language support changes.

	* doc/short-sample-ja.texi: Include version.texi.
	* doc/Makefile.am: Install texinfo-ja.tex.

	* doc/texinfo.tex: Support Lua 5.3+ number syntax
    
	Lua 5.3 and newer supports floating point number.
	But some old code doesn't know that Lua supports floating point numbers.
    
	This patch avoids some unexpected floating point numbers in Lua 
	code.

	* doc/txi-ja.tex: Update LuaTeX hack
    
	"comment" command is now unified to "c" command.
    
	Origin of this hack:
	  https://ja.osdn.net/projects/luatex-ja/ticket/36096

	* doc/info-fr.texi: Change encoding to UTF-8.
	* doc/info-fr.texi, doc/info-stnd.texi, doc/short-sample-ja.texi:
	Do not wrap @top node in @ifnottex.

2019-09-19  Gavin Smith  <gavinsmith0123@gmail.com>

	pretest 6.6.92

	* configure.ac: version

2019-09-17  Gavin Smith  <gavinsmith0123@gmail.com>

	pretest 6.6.91

	* configure.ac: version

2019-09-08  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix LuaTeX errors in anchors.

	* doc/texinfo.tex (\pdfescstr) [LuaTeX]:
	Change definition of PDFescstr so to only output tokens of 
	catcode 10 or 12 back into TeX.  This is intended to prevent 
	errors when using @-commands inside anchors, reported by Didier 
	Verna.

2019-08-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_convert) <menu_entry_node>: 
	Put a pending space in the output so it is not included in the 
	node name when INFO_SPECIAL_CHARS_QUOTE is set.  Faulty menu in 
	output reported by Didier Verna.

2019-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\atdummies, \definedummies): Define \& and 
	\ampchar as dummies so they are written properly to the index 
	files.  Report from Didier Verna.

2019-08-19  Eli Zaretskii  <eliz@gnu.org>

	* api.c (find_locales_dir): Add the "dTHX" boilerplate, as this
	function uses Perl API functions.

2019-08-19  Eli Zaretskii  <eliz@gnu.org>

	* info/pcterm.c (kill): Don't use RETSIGTYPE, it is no longer
	defined by config.h.

2019-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix @value in index entry.

	* doc/texinfo.tex (\dummyvalue): Use \string\value instead of 
	\noexpand\value.  This means that a backslash is correctly used 
	as the escape character in the output, rather than an at sign.

2019-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Test of macros with @ in index):
	Comment out, as it doesn't work with \ as the index file escape 
	character.

2019-08-18  gettextize  <bug-gnu-gettext@gnu.org>

	* gnulib/m4/gettext.m4: Upgrade to gettext-0.20.1.
	* gnulib/m4/intlmacosx.m4: Upgrade to gettext-0.20.1.
	* gnulib/m4/nls.m4: Upgrade to gettext-0.20.1.
	* gnulib/m4/po.m4: Upgrade to gettext-0.20.1.
	* gnulib/m4/progtest.m4: Upgrade to gettext-0.20.1.
	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.20.

2019-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (default_contents): Use
	<a rel="index"> for links to index nodes.
	* NEWS: Mention change.

2019-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Remove announcement of use of @ as escape character in 
	index files.

2019-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Use "rel" attribute to indicate index nodes.

	* tp/Texinfo/Convert/HTML.pm (_convert_menu_entry_type):
	If the target node in a menu entry is an index node, then set 
	the "rel" attribute on the <a> element to "index".  Remove 
	commented-out code.
	* NEWS: Mention change.

2019-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Mark index nodes.

	* tp/Texinfo/ParserNonXS.pm (_parse_texi) <line commands>,
	* tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command):
	If @printindex is seen, record that the current node is an index 
	node by setting the "isindex" extra value.

2019-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Minimum): Put .texi first in the list and 
	remove footnote about preferring the "longer extensions".  
	Automake warns if .texi is not used.  Report from Дилян Палаузов 
	<dilyan.palauzov@aegee.org>.

2019-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (GNU Sample Texts): Mention UPDATED-MONTH 
	variable in version.texi.  Report from Дилян Палаузов 
	<dilyan.palauzov@aegee.org>.

2019-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (GNU Sample Texts): Link to "Texinfo" node of 
	Automake manual directly.  Report from Дилян Палаузов 
	<dilyan.palauzov@aegee.org>.

2019-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Beginning and Ending a File): Minor grammar 
	fix.  Report from TonyMc <afmcc@btinternet.com>.

2019-07-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Node Menu Illustration): Minor grammar fix.  
	Report from Дилян Палаузов <dilyan.palauzov@aegee.org>.

2019-07-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2html: Remove file.  It has not worked for a long 
	time due to invoking texi2any incorrectly.  Report from Adam 
	Spiers.

2019-06-14  Patrice Dumas  <pertusus@free.fr>

	Do not output HTML target when there is only one element in file

	* tp/Texinfo/Convert/HTML.pm (count_elements_in_filename, command_href, 
	output): add 'elements_in_file_count' to converter object, set equal 
	to 'file_counters' to record and keep the information of the number 
	of elements in files.
	Add count_elements_in_filename() to return this number.
	Do not output an HTML target for hrefs to elements (elements are nodes 
	in most cases) when there is only one element in the href destination 
	file.

2019-06-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\printindex): Remove \message printing 
	informative statement.  Report from Karl Berry.

2019-05-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex: Specify "@set txiindexescapeisbackslash" in 
	order to use backslashes in index files by default.

2019-05-18  Arnold D. Robbins  <arnold@skeeve.com>

	* doc/texinfo.tex (\definedummies): Define \subentry as a dummy.
	(\indexwriteseealso, \indexwriteseeentry): Fix writing 
	'seeentry' and 'seealso' commands for when backslash is the 
	escape.

2019-05-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/run_parser_all.sh: Do not use a staging directory to 
	remove CVS and .svn directories, as we don't use CVN or SVN.

2019-05-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/htmlxref.cnf: Add eww. From Tsuyoshi Kitamoto 
	<tsuyoshi.kitamoto@gmail.com>.

2019-05-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix finding translation files in out-of-source build.

	* tp/Texinfo/ModulePath.pm.in ($builddir, $srcdir):
	Save builddir instead of srcdir.
	* tp/Texinfo/XSLoader.pm: Pass on $Texinfo::ModulePath::builddir
	to XS modules.
	* tp/Texinfo/XS/parsetexi/api.c (init),
	* tp/texi2any.pl: When looking for the directory containing the
	translation files, check in $Texinfo::ModulePath::builddir and
	nowhere else.

2019-05-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/t/stdout.sh,
	* tp/tests/t/stdout_split.sh: Remove tests.

2019-05-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/Makefile.am (copy-tests): Do not try to make target 
	in subdirectory.

2019-05-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/94htmlxref.t: Remove a ".texi" suffix given as the manual 
	argument to an xref command.

2019-05-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/30sectioning.t: Remove a ".texi" suffix given as the 
	manual argument to an xref command.

2019-05-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_external_node_href): Do not strip
	off an arbitrary extension from the name of an external manual - 
	only strip of ".info".  Ludovico Courtès reported that 
	extensions were being used to distinguish translations of 
	manuals into other languages.

2019-04-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/Makefile.am
	(XSParagraph_la_LDFLAGS, Parsetexi_la_LDFLAGS):
	Put $(LTLIBINTL) and $(LTLIBICONV) in here.  Remove $(TERMLIBS) 
	which was not used.

	Attempt to fix building under Cygwin, which Hans-Bernhard Bröker 
	reported was broken.

2019-04-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Set TEXI2DVI in Makefile.

	* doc/Makefile.am: Set TEXI2DVI to use the texi2dvi in the 
	Texinfo sources rather than an installed one.

2019-04-27  Gavin Smith  <gavinsmith0123@gmail.com>

	Ignore spaces before @seeentry, @seealso and @sortas.

	* tp/Texinfo/ParserNonXS.pm (_parse_texi): Split off an ignored 
	spaces element if one of these commands is seen.
	* tp/Texinfo/XS/parsetexi/parser.c 
	(isolate_last_space_menu_entry_node, isolate_trailing_space):
	Rename and add a parameter.
	(process_remaining_on_line): After these commands are seen, call 
	isolate_trailing_space.

	* tp/t/09indices.t (subentry_and_sortas): New test.

	This allows these commands to occur at the end of index commands 
	without trailing spaces being present in the output.

2019-04-27  Gavin Smith  <gavinsmith0123@gmail.com>

	"See also" index entries for DocBook output.

	* tp/Texinfo/Convert/DocBook.pm (_index_entry):
	Output <see> or <seealso> elements if @seeentry or @seealso 
	directives were given for the index entry.

2019-04-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/ParserNonXS.pm (_enter_index_entry),
	* tp/Texinfo/XS/parsetexi/indices.c (enter_index_entry),
	* tp/Texinfo/XS/parsetexi/api.c (build_single_index_data): 
	Always create index entry object but do not add it to array of 
	entries for the index if there was a @seeentry or @seealso.

2019-04-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/indices.c (enter_index_entry): Skip if 
	'seeentry' or 'seealso' was recorded.
	* tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace):
	Record values of 'seeentry' and 'seealso' the same way as for 
	'sortas'.  Ignore spaces following these commands.
	* tp/Texinfo/XS/parsetexi/command_data.txt: Add 'seeentry', 
	'seealso'.  Remove comments referring to line numbers in Common.pm.

2019-04-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%in_index_commands, %brace_commands):
	Add 'seeentry', 'seealso'.  These are handled the same way as 
	'sortas'.
	* tp/Texinfo/ParserNonXS.pm (%command_ignore_space_after):
	Add 'seeentry', 'seealso'.
	(_parse_texi) <close brace>: Record values of 'seeentry' and 
	'seealso' in extra hash the same way as for 'sortas'.
	(_enter_index_entry): Skip the index entry if there is a 
	'seeentry' or 'seealso' directive.
	* tp/Texinfo/Convert/Plaintext.pm (_convert): Do not warn about 
	unhandled commands if a 'seeentry' or 'seealso' directive is 
	present.

	* tp/t/09indices.t (seeentry): Add test.

2019-04-21  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove TOP_NODE_FILE.

	* doc/texinfo.texi (HTML Customization Variables): Remove 
	TOP_NODE_FILE.
	* tp/Texinfo/Common.pm (@variable_string_settables):
	Remove TOP_NODE_FILE.
	* tp/Texinfo/Convert/Converter.pm (_top_node_filename):
	Do not look at TOP_NODE_FILE.
	* tp/Texinfo/Convert/HTML.pm (%defaults): Use TOP_FILE instead 
	of TOP_NODE_FILE.
	(_set_variables_texi2html): Do not override value of TOP_FILE to 
	an empty string.
	* tp/init/chm.pm: Do not try to set TOP_NODE_FILE.

2019-04-03  Patrice Dumas  <pertusus@free.fr>

	Use EXTENSION instead of hardcoding html and add extension to TOP_NODE_FILE_TARGET

	* tp/Texinfo/Convert/Converter.pm (_top_node_filename),
	tp/Texinfo/Convert/HTML.pm (_set_root_commands_targets_node_files):
	use EXTENSION instead of .html.
	* tp/Texinfo/Convert/HTML.pm (%defaults, _external_node_href),
	doc/texinfo.texi (TOP_NODE_FILE_TARGET): default is now index.html.
	* tp/Texinfo/Convert/HTML.pm (_external_node_href): use 
	$external_file_extension instead of $extension to make clear that
	it is not the same as EXTENSION.
	* tp/t/init/t2h_singular.init (t2h_node_file_name): add that 
	function to replace .htm with .html for node files.
	* tp/tests/tex_html/list-of-tests: update to match SHORTEXTN 
	removal.

2019-04-12  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove some customization variables.

	* tp/texi2any.pl (HTML Customization Variables):
	Remove NODE_FILE_EXTENSION, SHORTEXTN.
	(Other Customization Variables): Remove NODE_FILENAMES.  Remove 
	mention of INPUT_ENCODING_NAME
	* NEWS: Mention removal.

2019-04-12  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove NODE_FILE_EXTENSION.

	* tp/Texinfo/Convert/HTML.pm (%defaults):
	(_set_root_commands_targets_node_files, _set_pages_files)
	(_external_node_href, output),
	* tp/Texinfo/Convert/Converter.pm (_set_pages_files, output)
	(_top_node_filename)

	Do not set or refer to NODE_FILE_EXTENSION.  The extension for 
	html files will always be '.html'.  Remove some commented-out 
	code.

2019-04-12  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove SHORTEXTN.

	* tp/Texinfo/Convert/HTML.pm (converter_initialize):
	Do not check SHORTEXTN customization variable.

2019-04-12  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove NODE_FILENAMES.

	* tp/Texinfo/Convert/HTML.pm (output, %defaults, _set_pages_files),
	* tp/Texinfo/Convert/Converter.pm (output, _top_node_filename)
	(_set_pages_files): Do not set or refer to NODE_FILENAMES.

	* tp/Texinfo/Convert/HTML.pm (_set_pages_files),
	* tp/Texinfo/Convert/Converter.pm (_set_pages_files):
	Remove code for naming output files with a number suffix (this 
	was the old texi2html behaviour).

2019-04-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\defsl): Declare with OT1 encoding instead of 
	OT1TT to avoid pdftex warning about conflicting CMap's.
	
2019-04-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Preparing for TeX):  Clearer wording
	about where TeX finds input files.  Report from Alan Mackenzie.  
	Update link to texinfo.tex.  Do not discuss how to set 
	environment variables in csh.

2019-04-11         Arnold D. Robbins     <arnold@skeeve.com>

	* doc/texinfo.texi: Update chapter on Indexing to cover new
	@seeentry, @seealso and @subentry commands. General smaller
	revisions to that chapter.

2019-04-08  Gavin Smith  <gavinsmith0123@gmail.com>

	Make texi2dvi --tidy more reliable.

	* util/texi2dvi (xref_files_save) [--tidy]: Check for auxiliary 
	files in the same directory as the input file, and remove them.
	(cd_dir): Possibly make $in_dir absolute.

	* NEWS: Mention texi2dvi changes.


2019-04-08  Gavin Smith  <gavinsmith0123@gmail.com>

	Do not change directory variables when changing directory.

	* util/texi2dvi (cd_dir, cd_orig): Do not change variables 
	containing pathnames.  Store a prefix to use with these 
	variables in $rel.  If either the new directory or in_input is 
	absolute, change all the pathname variables to be absolute.

	(xref_files_save, xref_files_changed): Prefix $work_bak with 
	$rel.
	(run_tex, run_hevea): Prefix $in_input with $rel.

	No functional changes intended.  The code to add and remove the 
	prefix from all of the variables had tricky quoting.  $rel is 
	only needed in a small number of places in functions called from 
	run_tex_suite.

2019-04-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (make_openout_test): Call make_tex_cmd before 
	cd_dir.  This means that no calls to ensure_dir are called 
	between cd_dir and cd_orig.

2019-04-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (run_tex): Remove use of make_tex_cmd.  I could 
	find nothing in make_tex_cmd that would change the result 
	between uses of run_tex.
	(run_tex_suite): Move use of make_tex_cmd here.

2019-04-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (HTML Customization Variables): Remove text 
	"For HTML" from the description of each variable, as it is clear 
	that these variables are all for HTML.

2019-04-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (latex2html Customization Variables): New 
	node, split from 'HTML Customization Variables'.

2019-04-07  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove @math and @tex as 'global commands.'

	* tp/Texinfo/ParserNonXS.pm (%global_multiple_commands),
	* tp/Texinfo/XS/parsetexi/api.c (build_global_info2),
	* tp/Texinfo/XS/parsetexi/parser.c (register_global_command),
	* tp/Texinfo/XS/parsetexi/parser.h (GLOBAL_INFO): Remove 'math' 
	and 'tex'.

	Reverts change on 2019-04-01.  Suggestion from Patrice.

2019-04-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\printindex): Give an error message with 
	\errmessage, instead of putting a message in the output 
	document, in order to give a hard failure in case an index file 
	has a backslash.  Suggestion from Karl.  Old index files will 
	still be upgraded by texi2dvi due to the previous change.

2019-04-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi: If TeX exits with a bad status, do not quit 
	immediately: check if the xref files have changed.  If they 
	have, the error might be corrected on subsequent runs.  This is 
	intended to help with moving index files to use @ as the escape 
	character instead of \.

2019-04-03  Patrice Dumas  <pertusus@free.fr>

	use tree in HTML handlers to collect @-command to be processed

	* tp/Texinfo/Convert/HTML.pm (run_stage_handlers): pass document
	tree root.
	* tp/Texinfo/Common.pm (collect_commands_in_tree): add.
	* tp/init/tex4ht.pm (tex4ht_prepare), tp/init/latex2html.pm (l2h_process):
	find the math and tex command using 
	Texinfo::Common::collect_commands_in_tree instead of relying
	on having those commands collected by the parser.

2019-04-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Optionally use backslash as index escape character.

	* doc/texinfo.tex
	(\doindwrite): If the user gave '@set txiindexescapeisbackslash',
	then use \ as the escape character in the index file.
	(\splitindexentry): Use \string to output \indexlbrace etc.
	(\printindex): Under the same condition, read the sorted index 
	file with backslash as an escape character.  Expand the advice 
	on how to print the indices properly.

2019-04-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Do not output literal backslash character in index files.

	* doc/texinfo.tex
	(\splitindexentry): In the sort key, use '{@indexbackslash }' 
	for a backslash, instead of a backslash character.
	(\initialglyphs): Recognize \indexbackslash.
	(\doindwrite): Output a backslash character as '@backslashchar {}'.
	(\definedummies): Define \backslashchar as a dummy.

	* doc/texinfo-tex-test.texi (Test of certain characters in index):
	Add more examples.

	This is intended to make it more reliable for either backslash 
	or at sign to be used as the escape character in index files, 
	for use with old versions of texi2dvi.  (This also allows 
	reading in old index files that used the \indexbackslash 
	sequence, although that is not very important.)

2019-04-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* js/info.js (scan_toc): Use getElementById instead of 
	querySelector, as id's are unique.  From Mathieu.

2019-04-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\urefallowbreak): Reduce stretch from 1fil to 4em.

	This discourages breaking too early in the line.

2019-04-02  Gavin Smith  <gavinsmith0123@gmail.com>

	Support links between locally-installed manuals.

	* js/info.js (external_manual_url_p): New function.
	(fix_links): If a link to an external manual, open link in the 
	same browser tab.
	(on_click): No special handling of links to external manuals.

	This is intended to support links between locally-installed HTML 
	manuals.  For this to work, links to other manuals must begin 
	with "../", so htmlxref.cnf would need to be overridden.

2019-04-02  Patrice Dumas  <pertusus@free.fr>

	Avoid side effects in HTML formatting fonctions that can be overriden
	
	* tp/Texinfo/Convert/HTML.pm (_convert_heading_command,
	_convert_menu_command, _convert): move code with side effects (setting
	'seenmenus' and using 'seemenus' to add automatically a menu) out
	of formatting functions that can be overriden by a user to main
	converter function.
	* tests/tex_html: regenerate formatting_singular tests that overrides
	the menu formatting function.

2019-04-01  Patrice Dumas  <pertusus@free.fr>

	In _element_direction() output TOP_NODE_UP related infos even if element is not defined
	
	* tp/Texinfo/HTML.pl (_element_direction): output 
	TOP_NODE_UP related infos even if element is not defined.
	Explain in a comment when element is undef.

2019-04-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Add @math and @tex as 'global commands.'

	* tp/Texinfo/ParserNonXS.pm (%global_multiple_commands),
	* tp/Texinfo/XS/parsetexi/api.c (build_global_info2),
	* tp/Texinfo/XS/parsetexi/parser.c (register_global_command),
	* tp/Texinfo/XS/parsetexi/parser.h (GLOBAL_INFO): Add 'math' and 
	'tex'.
	* tp/init/latex2html.pm, tp/init/tex4ht.pm: Do not add values to 
	GLOBAL_COMMANDS.

	Patrice Dumas reported that tex4ht.pm and latex2html.pm were 
	broken since the GLOBAL_COMMANDS array was removed as a 
	customization value for init files (on 2018-10-13).

2019-04-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Make search-next and search-previous work for tree search.

	* info/session.c (info_search_next, info_search_previous):
	If there is an active tree search, carry on with it.  This means 
	that the '}' and '{' keys can be used to go through the results 
	from a tree search (instead of 'M-}' and 'M-{').
	(info_search_1): Disable any active tree search.
	* NEWS: Mention change.

2019-03-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove XS po directory.

	* tp/Texinfo/XS/po: Remove.
	* tp/Texinfo/XS/configure.ac (AC_CONFIG_FILES): Remove 
	po/Makefile.in.

	This keeps AM_GNU_GETTEXT in the XS subdirectory.  Apparently 
	AM_PO_SUBDIRS is also still used, even there is no po 
	subdirectory.

2019-03-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Only use a single po directory.

	* po/POTFILES.in: List parsetexi input files.
	* po/Makevars (XGETTEXT_OPTIONS): Move options from
	tp/Texinfo/XS/po/Makevars.

2019-03-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Find translation directory for parsetexi.

	* tp/Texinfo/XS/parsetexi/api.c (find_locales_dir): New 
	function.
	(init): Call it.
	* NEWS: Mention change.

2019-03-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Pass on srcdir to XS modules.

	* tp/Texinfo/ModulePath.pm.in ($srcdir): New variable.
	(init) [uninstalled]: Set it.
	* tp/Texinfo/XSLoader.pm: Pass on $Texinfo::ModulePath::srcdir 
	to XS modules.
	* tp/Texinfo/XS/parsetexi/api.c (init): Save value of srcdir.

2019-03-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Output message if file ended inside Top node.

	* doc/texinfo.tex (\omittopnode): Redefine @bye and put a 
	message in the output file to say the Top node was omitted.  
	This is most likely for short test files that consist only of a 
	Top node.

2019-03-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Add some news items.

2019-03-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Make texi2dvi --batch the default.

	* util/texi2dvi: (batch): Remove variable.
	(usage): Do not mention --batch.
	(make_tex_command): Unconditionally run in batch mode.
	(make_openout_test): Do not save and restore $batch.
	(input_file_name_decode): Do not set $batch for AUC-Tex input.
	(usage): Remove a comment about 'echo' compatibility.

2019-03-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Inserting Unicode): Include the Ĳ ligature 
	in the output.  Do not say that a UTF-8 encoding must be 
	explicitly requested.

2019-03-30  Gavin Smith  <gavinsmith0123@gmail.com>

	Module search path changes (no functional changes intended).

	* tp/texi2any.pl:
	Only check if one variable has been substituted by the Makefile 
	to create this file.  Do not set environment variables: only add 
	a directory to @INC so that Texinfo:ModulePath might be found.
	Pass an 'updirs' argument into Texinfo::ModulePath.
	* tp/Texinfo/ModulePath.pm.in (init): Change argument from 
	'uninstalled' to 'installed', so that the uninstalled case is 
	the default.  Place code for using uninstalled files and 
	checking environment variables inside a conditional so it is 
	clearer when this code is used.  Do not set any environment 
	variables: use them for input only.

2019-03-30  Gavin Smith  <gavinsmith0123@gmail.com>

	Introduce blank lines in test case.

	* tp/t/converter_tests.t ($at_commands_in_refs_text): Introduce 
	blank lines in input Texinfo to avoid problems with varying line 
	break decisions due to different wcwidth implementations.
	* tp/t/converters_tests.t (at_commands_in_refs): Do not skip.
	(at_commands_in_refs_utf8): Do not skip this one either, since 
	we are now counting combining accents in the XS code as having 
	width.

2019-03-30  Gavin Smith  <gavinsmith0123@gmail.com>

	Skip tests instead of marking them as expected failures.

	* tp/t/test_utils (test): If a test case is marked as 'todo', 
	always skip the test with 'skip' from Test::More, instead of 
	putting it inside a 'TODO' block.  Remove some commented-out 
	code.

2019-03-30  Gavin Smith  <gavinsmith0123@gmail.com>

	Skip a test.

	* tp/t/converters_tests.t (at_commands_in_refs): Skip plaintext
	output until we can get consistent results on Solaris 10 and 
	Solaris 11.

2019-03-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/test_utils.pl: Do not print errors from conversions.

2019-03-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Use 'utf-8' instead of 'utf-8-strict' as name of encoding.

	* tp/Texinfo/Common.pm (%default_parser_state_configuration)
	(open_out, count_out): Use 'utf-8' instead of 'utf-8-strict' as 
	the name of the perl encoding.
	* tp/Texinfo/ParserNonXS.pm (_open_in): Check for 'utf-8' 
	instead of 'utf-8-strict'.  Add a missing closing parenthesis in 
	input filter declaration.
	* tp/Texinfo/XS/parsetexi/parser.c (wipe_global_info):
	Use 'utf-8' instead of 'utf-8-strict'.

	On perl v5.8.4, there was an error 'Cannot find encoding 
	"utf-8-strict"'.  (This version is used on the OpenCSW 
	buildfarm.)

2019-03-28         Arnold D. Robbins     <arnold@skeeve.com>

	* texinfo.tex: @see is now @seentry, per Gavin. Removed
	spurious definition of \putwordSee.

2019-03-27  Patrice Dumas  <pertusus@free.fr>

	Set Top node Up per format and not in Structuring.

	* tp/Texinfo/Common.pm, tp/Texinfo/Convert/Converter.pm: set 
	TOP_NODE_UP in converter defaults.
	* tp/Texinfo/Structuring.pm, tp/Texinfo/Convert/HTML.pm,
	tp/Texinfo/Convert/Info.pm, doc/texinfo.texi: do not set 
	the Top node Up in Structuring but in converters. Only use 
	TOP_NODE_UP and set an Up URL/name in HTML when TOP_NODE_UP_URL 
	is set and do not modify all the links of the TOP_NODE_UP, 
	only the Top node Up links.

2019-03-27  Patrice Dumas  <pertusus@free.fr>

	* tp/init/chm.pm, tp/init/latex2html.pm, tp/init/tex4ht.pm:
	use __() from Texinfo::Common

2019-03-27  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix test of XS modules.

	* tp/Texinfo/XS/TestXS.pm: Declare init function as having a 
	single argument, and return a true value.  Otherwise the test 
	for XS modules fails.  Report from Patrice Dumas.

2019-03-27  Gavin Smith  <gavinsmith0123@gmail.com>

	Small changes.

	* tp/Texinfo/XS/xspara.c (xspara_add_text): Add a comment.
	* tp/tests/sectioning/Makefile.am: Do not try to distribute a 
	removed file.
	* tp/Texinfo/XS/po/texinfo.pot: Untrack in git.

2019-03-27  Gavin Smith  <gavinsmith0123@gmail.com>

	Make test results consistent for older versions of perl.

	* tp/Texinfo/Convert/Plaintext.pm (@U): Check argument to @U 
	before attempting to output the character.  The check inside 
	eval doesn't work for old versions of perl.  Trim down some 
	comments.

2019-03-25  Gavin Smith  <gavinsmith0123@gmail.com>

	Make test results consistent between XS and non-XS modules.

	* tp/Texinfo/XS/xspara.c (xspara_add_text): Treat characters 
	with wcwidth 0 the same as those with wcwidth 1.  This is wrong, 
	but gives consistency for the test results.

2019-03-24         Arnold D. Robbins     <arnold@skeeve.com>

	@see in index entries (experimental).
	
	* doc/texinfo.tex
	(\see, \putwordSee): Add default definitions for reading 
	in a sorted index file.
	(\splitindexentry): Record value of any @see directive in 
	the index entry inside \pagenumbertext.  Make @see expansion 
	empty when getting the sort key.

2019-03-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/htmlxref.cnf: Update 'mit-scheme-imail'.  From
	Thérèse Godefroy.

2019-03-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/parser.c (wipe_global_info): Set 
	input_encoding_name as well as input_perl_encoding.

2019-03-24  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove INPUT_PERL_ENCODING and INPUT_ENCODING_NAME as 
	customization variables.

	* tp/Texinfo/Common.pm (%default_customization_values)
	(@variable_string_settables): Remove INPUT_PERL_ENCODING and 
	INPUT_ENCODING_NAME.
	* tp/Texinfo/Convert/Converter.pm (converter),
	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parse_texi_file),
	Remove code propagating INPUT_PERL_ENCODING and 
	INPUT_ENCODING_NAME.

	* tp/Texinfo/ParserNonXS.pm (%initialization_overrides):
	Remove 'INPUT_ENCODING_NAME'.

	* tp/Texinfo/ParserNonXS.pm (_open_in, _end_line, _parse_texi),
	* tp/Texinfo/Convert/Converter.pm (converter),
	* tp/Texinfo/Convert/IXIN.pm (output_ixin),
	* tp/Texinfo/Structuring.pm (do_index_keys):
	Do not use INPUT_PERL_ENCODING or INPUT_ENCODING_NAME: use the 
	'info' hash instead.

	* tp/Texinfo/Common.pm (_convert_text_options),
	* tp/Texinfo/Report.pm (gdt),
	* tp/texi2any.pl:
	Do not look use INPUT_ENCODING_NAME or INPUT_PERL_ENCODING.

	* doc/texinfo.texi (Other Customization Variables):
	Remove INPUT_PERL_ENCODING and INPUT_ENCODING_NAME.  Remove 
	@ifnottex block around Top node.

	This is an attempt at simplifying a complicated picture around 
	character encoding.  These customization variables had little 
	use as the encoding is given as @documentencoding in the input.


2019-03-24  Gavin Smith  <gavinsmith0123@gmail.com>

	Use UTF-8 more consistently in test suite.

	* tp/Texinfo/ParserNonXS.pm (parse_texi_file): Do not set
	'input_encoding_name' and 'input_perl_encoding' here.
	* tp/Texinfo/Common.pm (%default_parser_state_configuration):
	Set 'input_encoding_name' and 'input_perl_encoding' here.

2019-03-23  Gavin Smith  <gavinsmith0123@gmail.com>

	Make UTF-8 default input encoding for parsetexi.

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (parse_texi_file):
	Propagate values of INPUT_PERL_ENCODING and INPUT_ENCODING_NAME.
	* tp/Texinfo/XS/parsetexi/api.c (reset_parser_except_conf):
	Call 'set_input_encoding' to use "utf-8" as the default.
	* tp/Texinfo/XS/parsetexi/parser.c (wipe_global_info): Set
	global_info.input_perl_encoding to "utf-8-strict".

	This replicates changes made on 2019-02-23 and 2019-02-26.

2019-03-23  Gavin Smith  <gavinsmith0123@gmail.com>

	@subentry in parsetexi.

	* tp/Texinfo/XS/parsetexi/command_data.txt: Add subentry.
	* tp/Texinfo/XS/parsetexi/handle_commands.c
	(handle_line_commands) <@subentry>: Add section.
	(handle_brace_commands) <@sortas>: Allow to occur inside @subentry.
	* tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting): Allow 
	@subentry to occur inside most commands.
	(process_remaining_on_line) <@-command>: Allow @subentry to 
	occur other than at the beginning of a line.
	* tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace) 
	<@sortas>: Record sort key on @subentry element.

2019-03-23  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix sort key for undefined @value.

	* doc/texinfo.tex (\indexnofontsvalue): Place a % comment 
	character after the text for an undefined @value.
	If this comment character isn't present and the @value is 
	followed by a space, the rest of the index sort key will be 
	discarded inside @eatspaces called from @splitindexentry.  It 
	appears that @eatspaces does not cope with several spaces in a 
	row in its argument.

2019-03-23  Gavin Smith  <gavinsmith0123@gmail.com>

	Add more tests of @value in index.

	* doc/texinfo-tex-test.texi (Test of auxiliary files):
	Add test of values in index entries containing underscores and 
	nested Texinfo commands.  Add test of a @value that changes.
	* doc/texinfo.tex (\expandablevalue): Remove obsolete comment.  
	@value in index entries is more reliable now that we use @ as 
	the escape character in index entries.

2019-03-23  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove apparently unused code.

	* doc/texinfo.tex (\begindoublecolumns): Remove code that is 
	supposed to account for the output routine in 
	\begindoublecolumns being called twice in a row.  It checks 
	whether \partialpage is void, but it appears that \partialpage 
	will always be void.  \doublecolumnout, \balancecolumns and 
	\pagesofar all clear \partialpage with \unvbox, which I believe 
	covers all the cases.  I was unable to get this code to run with 
	various tests.  Remove references to long-lost test files.  
	(Removed code introduced on Jan 14 16:53:43 1999 according to 
	ChangeLog entry.)

2019-03-23  Gavin Smith  <gavinsmith0123@gmail.com>

	Ignore Top node a different way.

	(\omittopnode): Change implementation so as to work when the 
	next node is hidden inside an included file.
	(\nwnode, \up, \down): Remove these useless synonyms.

2019-03-22  Gavin Smith  <gavinsmith0123@gmail.com>

	Ignore Top node in texinfo.tex even without @ifnottex.

	* doc/texinfo.tex (\omittopnode): New macro.
	(\node): Call it.

2019-03-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\texinfoc): Remove.
	(\scanmacro): Use \comment instead of \texinfoc.  \comment has 
	the same meaning inside math mode as outside.
	(\argremovecomment): Don't bother about @texinfoc.

2019-03-18  Gavin Smith  <gavinsmith0123@gmail.com>

	Pass on to XS modules whether uninstalled files should be used.

	* tp/Texinfo/ModulePath.pm.in ($texinfo_uninstalled): New 
	variable.
	(init): Set it if passed the right argument.
	* tp/texi2any.pl: Pass on to Texinfo::ModulePath::init whether
	uninstalled files should be used.  Use the value of 
	$texinfo_uninstalled to decide where to look for locale files.
	Remove some commented-out code and move a variable declaration 
	into a smaller block.
	* tp/Texinfo/XSLoader.pm: Pass on 
	$Texinfo::ModulePath::texinfo_uninstalled to XS modules.

2019-03-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Find translatable strings in parsetexi.

	* tp/Texinfo/XS/po/Makevars (XGETTEXT_OPTIONS): Use line_error 
	and similar functions to mark translatable strings.  (This 
	should maybe be done in the top-level po/Makevars instead.)
	* tp/Texinfo/XS/parsetexi/errors.c (line_error_internal):
	Pass message string to gettext function.
	* tp/Texinfo/XS/po/POTFILES.in: List files containing 
	translatable strings.

2019-03-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Add gettext to XS modules.

	* tp/Texinfo/XS/parsetexi/Parsetexi.xs,
	* tp/Texinfo/XS/parsetexi/api.c (init):
	Add, to be called from Texinfo::XSLoader.  Initialize gettext.

	* tp/Texinfo/XS/parsetexi/api.c: Include libintl.h.

	* tp/Texinfo/XS/configure.ac: Add AM_GNU_GETTEXT([external]).
	* tp/Texinfo/XS/Makefile.am (AM_CPPFLAGS): Define DATADIR.

	* tp/Texinfo/XS: Run 'gettextize'.
	I do not know if '--po-dir=../../../po -f' should have been used 
	here - should we share the po directory with the top-level 
	project?
	* tp/Texinfo/XS: Run 'aclocal -I gnulib/m4'.
	* tp/Texinfo/XS/po/Makevars: Copy from Makevars.template.  I'm 
	not sure if this will be used.

	Changes made by gettextize:
	* tp/Texinfo/XS/Makefile.am (SUBDIRS): Add po.
	* tp/Texinfo/XS/configure.ac (AC_CONFIG_FILES): Add po/Makefile.in.

        * tp/Texinfo/XS/gnulib/m4/gettext.m4: New file, from gettext-0.19.8.
        * tp/Texinfo/XS/gnulib/m4/iconv.m4: Upgrade to gettext-0.19.8.
        * tp/Texinfo/XS/gnulib/m4/lib-ld.m4: Upgrade to gettext-0.19.8.
        * tp/Texinfo/XS/gnulib/m4/lib-link.m4: Upgrade to gettext-0.19.8.
        * tp/Texinfo/XS/gnulib/m4/lib-prefix.m4: Upgrade to gettext-0.19.8.
        * tp/Texinfo/XS/gnulib/m4/nls.m4: New file, from gettext-0.19.8.
        * tp/Texinfo/XS/gnulib/m4/po.m4: New file, from gettext-0.19.8.
        * tp/Texinfo/XS/gnulib/m4/progtest.m4: New file, from gettext-0.19.8.

2019-03-16  Gavin Smith  <gavinsmith0123@gmail.com>

	@seealso in index entries (experimental).
	
	* doc/texinfo.tex
	(\seealso, \putwordSeeAlso): Add default definitions for reading 
	in a sorted index file.
	(\splitindexentry): Record value of any @seealso directive in 
	the index entry inside \pagenumbertext.  Make @seealso expansion 
	empty when getting the sort key.
	(\doindwrite): If \pagenumbertext set, use its contents instead 
	of \folio in the page number field.

2019-03-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Index subentries): New section.

2019-03-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Combine pdftex and XeTeX conditionals.

	* doc/texinfo.tex (\ifpdforxetex): New conditional.  Use it in
	several places.  This removes some code duplication.

2019-03-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Support @tertiary in sorted index file.

	* doc/texinfo.tex (\indententry): New.
	(\secondary, \tertiary): Use it.
	(\entry): Fix case when there are no page numbers and no leaders 
	are being printed.  Indent code that is outputting inside a box.

2019-03-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\printindex): Fix detection of backslash in 
	sorted index file.

2019-03-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Make @subentry the same level as index command in tree.

	* tp/Texinfo/ParserNonXS.pm (_parse_texi) <@subentry>:
	Call _end_line to avoid @subentry becoming a child of an index 
	command or another @subentry command.

	This means that we convert back to Texinfo correctly without 
	misplacing spaces before the @subentry command.

2019-03-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove unused function.

	* tp/Texinfo/Convert/Converter.pm (_register_command_arg): Remove.

2019-03-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Test of @subentry.

	* tp/t/09indices.t (subentries): New test.

2019-03-16  Gavin Smith  <gavinsmith0123@gmail.com>

	@subentry in DocBook output.

	* tp/Texinfo/Convert/DocBook.pm (_index_entry):
	Possibly output index subentries inside <secondary> or 
	<tertiary> elements.

2019-03-16  Gavin Smith  <gavinsmith0123@gmail.com>

	@subentry in HTML output.

	* tp/Texinfo/Convert/Converter.pm (convert_index_subentries): New.
	* tp/Texinfo/Convert/HTML.pm (_convert_printindex_command): Use it.
	* tp/Texinfo/Convert/Plaintext.pm (_printindex_formatted): 
	Inline code from convert_line and call convert_index_subentries.

2019-03-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Start on supporting @subentry in parser and Info output.

	* tp/Texinfo/Common.pm (%line_commands): Add 'subentry'.
	* tp/Texinfo/ParserNonXS.pm
	(%in_full_text_commands): Include 'subentry' so that @subentry 
	can appear inside an index command.
	(%begin_line_commands): Allow @subentry to occur other than at 
	the beginning of a line.
	(_is_index_element): New.
	(_parse_texi): Use _is_index_element to check if we are in an 
	index command.
	(_parse_texi) <line commands>: Handle @subentry.  Check valid 
	nesting.  Keep track of how many @subentry's have been used.
	* tp/Texinfo/Convert/Plaintext.pm (_printindex_formatted): If 
	there are index subentries, add them to the end of the text of 
	the index entry, separated by commas.

	This represents index subentries as a line command at the end of 
	the index entry.  A second @subentry is nested inside the first.

2019-03-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/18itemize.t (table_in_itemize): New test.

2019-03-13  Gavin Smith  <gavinsmith0123@gmail.com>

	Examples of special characters in PDF destinations.

	* doc/texinfo-tex-test.texi
	(Test of characters in node names for PDF): New test.

2019-03-12  Gavin Smith  <gavinsmith0123@gmail.com>

	Only load lcircle10 if @cartouche is used.

	* doc/texinfo.tex (\cartouchefontdefs): New macro.  Put loading 
	lcircle10 font in here.
	(\cartouche): Use it.

	This is a similar approach to that used for @euro{}.

2019-03-11  Gavin Smith  <gavinsmith0123@gmail.com>

	Active backslash in \setupdatafile.

	* doc/texinfo.tex (\setupdatafile): Make backslash active rather 
	than other.  This means that a section title is printed 
	correctly with input like the following:

	   \input texinfo
	   @xrefautomaticsectiontitle on
	   
	   @node One
	   @chapter One
	   
	   One.  @xref{Two}.
	   
	   @node Two
	   @chapter Two \
	   
	   @bye
	
	Without this, the backslash typesets as quotation marks.  Delete 
	an old comment stating that catcode other is needed for \csname 
	to work in \xrdef.  Currently, \turnoffactive called in \xrdef
	gives backslash the needed definition.  In any case, backslashes 
	in node names appear to produce buggy PDF files in many cases.

	* doc/texinfo.tex (\setupdatafile): Remove out-of-date comment 
	about why we do not support ^^ notation in auxiliary files.

2019-03-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Test of index widow elimination):
	Comment out.
	(No page number in index): New section.

2019-03-10  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove code for preventing widowed index entries.

	* doc/texinfo.tex
	(\finishentry): Output the index entry directly to the current 
	vertical list instead of storing it in a box and then calling 
	\dotheinsertentrybox.
	(\insertentrybox, \dotheinsertentrybox)
	(\dotheinsertentryboxwithpenalty, \ourunvbox): Remove.
	(\entry): No redefinition of \domark.
	(\printindex): Do not redefine \dotheinsertentrybox.  Read file 
	with \input instead of line-by-line with \read.
	(\indexinputprocessing, \loopdo): Remove.

	This code added an awful lot of complexity for not much benefit.
	It is better to use the processes provided in TeX (\input and 
	\unvbox) where possible, instead of creating a separate version.

2019-03-10  Gavin Smith  <gavinsmith0123@gmail.com>

	Use <h5> for footnote labels.

	* tp/Texinfo/Convert/HTML.pm (_convert_footnote_command): Use 
	<h5> instead of <h3> for the numbered footnote labels.  
	Jean-Christophe Helary reported that the <h3> level being used 
	was greater than that for the main footnotes heading, which was 
	only <h4>.

2019-03-10  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix indentation of @table within @itemize.

	* tp/Texinfo/Convert/Plaintext.pm (ensure_end_of_line):
	Set 'counter' on top-most 'text_element_context' to zero.  This 
	makes a @table be indented correctly within an @itemize and also
	means an @item immediately following the @table is indented 
	properly.  Report from Alan Mackenzie.

2019-03-09  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove unused backslash macros.

	* doc/texinfo.tex (\rawbackslash): Remove.  It appears to be
	unnecessary as @t and @code work fine without it.
	(\t, \tclose): Do not call \rawbackslash.
	(\rawbackslashxx, \doublebackslash): Remove.

2019-03-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Index display): Use @ as the escape 
	character.
	(@,c in macro argument): @, doesn't work any more in macro 
	argument due to changing the catcode of @.

2019-03-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\macroargctxt, \macrolineargctxt): Set 
	catcode of @ to other.

2019-03-09  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove description of a bug fixed by the last change.

	* doc/texinfo-tex-test.texi: Remove description of why a Texinfo 
	command inside an @example inside a macro didn't work.  It works 
	now that @ is no longer an escape character when a macro body is 
	read.  This means that \scantokens no longer sees any control 
	sequences in the macro body and does not insert extra spaces.

2019-03-09  Gavin Smith  <gavinsmith0123@gmail.com>

	No catcode changes in \scanmacro.

	* doc/texinfo.tex (\scanmacro): Do not change catcode of @ or \.

2019-03-09  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix marginindex flag.

	(\doindwrite, \maybemarginindex): Move code to put index entry 
	in the margin to a new macro, and make it work again.

2019-03-09  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove \indexdummies.

	* doc/texinfo.tex (\indexdummies): Remove.
	(\doindwrite): Call \atdummies instead of \indexdummies and move 
	the special definitions of \{ and \} here.
	(\onepageout): Call \atdummies instead of \indexdummies.

2019-03-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Use @ as escape character in index files.

	* doc/texinfo.tex
	(\indexdummies): Do not change \escapechar to backslash.
	Call \otherbackslash in order to keep backslash as it is.
	(\doindwrite, \indexnonalnumreappear):
	Do not call \useindexbackslash or change the definition of \@.
	(\indexbackslash, \useindexbackslash): Remove.
	(\splitindexentry): Convert @@ and @atchar{} to {@indexatchar}.
	texindex does not currently output given a sort key beginning 
	with @ as @initial{@@}, outputting @initial{@} instead.

	(\onepageout): Remove comment about backslash in index files.  
	Call \turnoffactive instead of \normalturnoffactive in order to 
	output backslash as itself in index files.

	(\printindex): Do not change catcode of \ or @.
	(\printindex, \initialglyphs): Move setting \indexlbrace and 
	\indexrbrace to \initialglyphs, and add \indexatchar too.  Do 
	not set \indexbackslash.

	(\atdummies): Comment changed so as no longer to imply that the 
	aux and toc files are the only auxiliary files using @.

	(\printindex): Cheeck first character of index file, and if it 
	is a backslash, skip reading the file.

	* doc/texinfo-tex-test.texi (Test of certain characters in index):
	New section.
	* util/texi2dvi (index_file_p): Check for a @entry in index 
	files as well as \entry.

2019-03-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Reset output routine correctly.

	* doc/texinfo.tex (\defaultoutput): New token list, to contain
	default output routine.
	(\enddoublecolumns): Use it to correctly use \savetopmark in the 
	output routine after the output of an index is finished.
	* doc/texinfo-tex-test.texi: Remove @bye line ending file by 
	mistake.

2019-03-03  Gavin Smith  <gavinsmith0123@gmail.com>

	No stretch around breakable characters in URL's.

	* doc/texinfo.tex
	(\urefprestretchamount, \urefpoststretchamount): Remove.
	(\urefprestretch, \urefpoststretch): Remove.  Replace calls with
	\urefprebreak and \urefpostbreak.
	(\urefallowbreak): New macro, to allow a ragged right break 
	within a URL.

	* doc/texinfo-tex-test.texi (URL line breaking): New section.

	This could lead to too much space being inserted, for example 
	around the two slashes in "http://".  The ragged right break 
	prevents under-full or over-full boxes.  (bug-texinfo, July 2018.)

2019-03-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Tidy up index writing.

	* doc/texinfo.tex (\dosubindwrite, \doindwrite): Rename.
	(\doind, \dosubind): Make \dosubind call \doind, not vice versa.  
	Move definition of \dosubind nearer where it is used.

	(\deffngeneral): Remove a comment.

2019-03-02  Gavin Smith  <gavinsmith0123@gmail.com>

	Implement index subentries in texinfo.tex.

	* doc/texinfo.tex (\splitindexentry): New macro.
	(\dosubindwrite): Call it to get the index text split up into 
	primary entry and possible secondary and further entries
	separated by @subentry, as well as the index sort key.  For one 
	subentry only, this is the same format as was output in the past 
	and recognized by the C implementation of texindex.

	This feature is experimental.

2019-03-02  Gavin Smith  <gavinsmith0123@gmail.com>

	Change how marks are preserved.

	* doc/texinfo.tex (\savemarks, \restoremarks): Remove.  No 
	longer propagate marks by running an output routine.  This could 
	lead to whatsits being thrown away in \restoremarks.
	(\savedtopmark, \savetopmark, \iftopmarksaved): New.  Save 
	\topmark only in \savedtopmark, a token list register.
	(\gettopheadingmarks, \getcolormarks, \onepageout)
	(\begindoublecolumns, \doublecolumnout):
	Use \savetopmark instead.
	
	The old behaviour made texinfo.tex less hackable, as simple 
	input like:

	  \input texinfo
	  
	  @cindex dddddd
	  @cindex fff
	  
	  @printindex cp
	  @bye

	could lead to an empty *.cp file, which was confusing, even if 
	this kind of problem would never occur in real documents.

2019-03-02  Gavin Smith  <gavinsmith0123@gmail.com>

	Add test material for headings and footings.

	* doc/texinfo-tex-test.texi (Headings and footings): New section.

2019-03-02  Gavin Smith  <gavinsmith0123@gmail.com>

	Rename \lastchapterdefs.

	* doc/texinfo.tex:
	(\lastchapterdefs, \currentchapterdefs)
	(\lastsectiondefs, \currentsectiondefs)
	(\lastcolordefs, \currentcolordefs)
	(\lastsection, \currentsection):
	Rename, as it is confusing to have both \lastchapterdefs and 
	\prevchapterdefs: both "last" and "previous" mean the same 
	thing.

2019-03-02  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix @everyheadingmarks top.

	* doc/texinfo.tex (\onepageout): Separate the code for setting 
	\headlinebox and \footlinebox.  Otherwise, the definitions for 
	the footline would overwrite those for the headline, rendering 
	'@everyheadingmarks top' ineffective.

2019-03-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\chapmacro): Remove obsolete comment about 
	\setcontentsaftertitlepage.

2019-02-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove obsolete and unused code.

	* doc/texinfo.tex (\cindexsub): Remove.  It has been in 
	texinfo.tex for a very long time but is not documented or 
	implemented in makeinfo.

2019-02-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Better support for @sortas at end of index entry.

	* doc/texinfo.tex (\dosubindwrite): Use \eatspaces to trim 
	leading and trailing spaces from the index entry.  This means a 
	@sortas command can occur at the end of the index entry with a 
	space before it, and the space will be removed when writing to 
	the index file.
	(\sortas): Expand to empty.
	(\dosubind): Do not set \toks0: use a \def instead to store the 
	index entry text.

2019-02-26  Gavin Smith  <gavinsmith0123@gmail.com>

	Use UTF-8 input and output by default for Info.

	* tp/Texinfo/ParserNonXS.pm (_open_in): New function.
	(parse_texi_file),
	(_end_line) <@include>: Use it.
	(parse_texi_file): Set the input encoding on $self->{'info'}.

	* tp/Texinfo/Convert/Unicode.pm (%extra_unicode_map): New hash,
	to contain a subset of %unicode_map.
	* tp/Texinfo/Convert/Plaintext.pm (converter_initialize):
	If @documentencoding were not given and we are converting to 
	UTF-8, set 'no_extra_unicode' on the 'convert_text_options' 
	hash, and do not use any curly quotes for style commands.
	* tp/Texinfo/Convert/Plaintext.pm (_process_text): Do not 
	convert `` into “, etc unless @documentencoding was in the 
	document.
	* tp/Texinfo/Convert/Text.pm (brace_no_arg_command):
	Check 'no_extra_unicode' in the options and if it is set, 
	exclude commands in %extra_unicode_map being output as non-ASCII 
	UTF-8 sequences.

2019-02-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@titlepage): Remove documentation of 
	@setcontentsaftertitlepage.

2019-02-23  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove unused code.

	* tp/Texinfo/Parser.pm (%tree_informations, duplicate_parser),
	* tp/Texinfo/XS/parsetexi/Parsetexi.pm (duplicate_parser):
	Remove unused.

2019-02-23  Gavin Smith  <gavinsmith0123@gmail.com>

	Make UTF-8 default input encoding.

	* doc/texinfo.tex: Remove line setting catcodes of non-ASCII 
	characters to "other".  Change a comment.
	* tp/t/test_sort.t: Update results.
	* tp/Texinfo/Common.pm (%default_customization_values)
	<INPUT_ENCODING_NAME, INPUT_PERL_ENCODING>: Use UTF-8 by default.
	* NEWS: Mention change.

2019-02-23  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid unnecessary change in test results.

	* tp/Texinfo/Convert/HTML.pm: Add 'return undef' to end of 
	function.  This stops an empty string being returned from the 
	sub for some reason.  This led to a change in the results
	for 'file_html' tests.

2019-02-23  Gavin Smith  <gavinsmith0123@gmail.com>

	Load more modules on demand.

	* tp/Texinfo/Convert/Converter.pm: Use fewer "use" declarations.
	(converter, sort_element_count): Use "require" statements
	to load modules on demand.  This cuts down the run time of
	'texi2any --help' as it stops Texinfo::Parser being loaded
	(about 0.6 sec -> 0.4 sec on my computer).

	This change depends on the previous change for module 
	namespaces; otherwise, the Texinfo::Parser::parser subroutine 
	can't be called in texi2any.pl, as the wrong hash is being 
	referenced for %Texinfo::Parser::.  This could be worked around 
	by putting the call within an 'eval' statement to delay the 
	choice of which namespace hash to use; however, this would be 
	too distracting if done too much.

2019-02-23  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid package typeglob assignment.

	* tp/Texinfo/ParserNonXS.pm: Use "package Texinfo::Parser" 
	instead of "package Texinfo::ParserNonXS" and then aliasing the 
	package namespace hash with a typeglob assignment.  Move
	"use Texinfo::Report" earlier in file and remove lengthy 
	comment.

	* tp/Texinfo/XS/parsetexi/Parsetexi.xs: Use "Texinfo::Parser" 
	instead of "Parsetexi" in MODULE and PACAKGE declarations.

	Package typeglob assignment is not recommended in the Perl 
	documentation anywhere, and has confusing effects.  It appears 
	that when a Perl source file is read, the symbols are 
	interpreted in terms of a particular package namespace hash.  
	This hash does not change if the package hash is later 
	reassigned, which can lead to undefined symbols, especially with 
	complicated situations when files "use" one another.

2019-02-19  Gavin Smith  <gavinsmith0123@gmail.com>

	Prefer @url in the documentation.

	* doc/texinfo.texi (@url, @url Examples): Use @url consistently 
	and say that @uref is a synonym.  Akim Demaille reported that a 
	confusing mixture of the two was being used.

2019-02-19  Gavin Smith  <gavinsmith0123@gmail.com>

	@documentencoding is not file-specific.

	* tp/Texinfo/XS/parsetexi/input.c (input_encoding): New 
	variable.
	(set_input_encoding, next_text):
	Use that encoding instead of an encoding on the input stack.

	(INPUT): Remove field 'encoding'.
	(input_push, input_push_file): Update.

	Eli Zaretskii reported that a @documentencoding command in an
	@include'd file would not take effect outside of that file, 
	which was wrong for the Emacs manuals.
	
2019-02-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove noderename.cnf feature.

	* tp/Texinfo/Common.pm (@variable_string_settables):
	Remove 'RENAMED_NODES_DIRECTIONS', 'RENAMED_NODES_FILE'.
	(collect_renamed_nodes, parse_renamed_nodes_file): Remove.

	* tp/Texinfo/Convert/HTML.pm
	(converter_initialize): Do not check Texinfo::Config::renamed_nodes.
	(_file_header_informations): Change a comment.
	(output): Do not call Texinfo::Common::collect_renamed_nodes.  
	Remove code dealing with renamed nodes.
	(_parse_node_and_warn_external): Remove unused.  This eliminates 
	the dependecy of Texinfo::Convert::HTML on Texinfo::Parser.

	* tp/tests/Makefile.am: Remove code dealing with copying 
	renamednodes.cnf-ref.
	* tp/tests/sectioning/renamednodes.cnf-ref: Remove.
	* tp/tests/sectioning (equivalent_nodes_test_renamed_nodes): Remove.
	* tp/tests/README: Update instructions for git.

	* tp/t/92formatting.t (unknown_nodes_renamed): Remove.

	* doc/texinfo.texi (Other Customization Variables) 
	<RENAMED_NODES_FILE, RENAMED_NODES_REDIRECTIONS>: Remove.  
	RENAMED_NODES_REDIRECTIONS was not actually used anywhere.
	(HTML Xref Link Preservation): Remove node.

2019-02-17  Gavin Smith  <gavinsmith0123@gmail.com>


	* tp/test_utils.pl: Check if errors were output properly.

2019-02-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove some function checks.

	* configure.ac: Remove AC_FUNC_STRCOLL.
	(AC_CHECK_FUNCS): Do not check for bzero, getcwd, memset, 
	setvbuf or strchr.
	* system.h: Never declare strcoll.
	* info/dribble.c (open_dribble_file): Do not check HAVE_SETVBUF 
	or SETVBUF_REVERSED.

2019-02-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Do not check for some header files.

	* configure.ac (AC_CHECK_HEADERS): Do not check for limits.h,
	string.h, strings.h, sys/file.h, sys/stream.h or sys/ttold.h.
	* system.h: Unconditionally include limits.h.  Never include 
	sys/file.h.
	* info/termdep.h: Do not try to include sys/ttold.h.

2019-02-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Do not check for fcntl.h or sys/fcntl.h.

	* configure.ac (AC_CHECK_HEADERS): Do not check for fcntl.h or 
	sys/fcntl.h.
	* system.h: Include fcntl.h unconditionally.
	
2019-02-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove BSD signals support.

	* configure.ac: Do not check for sigblock or sigsetmask.
	* info/signals.c: Do not check HAVE_SIGSETMASK.
	(sigprocmask): Remove this replacement function.

2019-02-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove AC_REPLACE_FUNCS.

	* configure.ac: Remove AC_REPLACE_FUNCS.  This has likely been 
	unused since gnulib was integrated into the sources.

2019-02-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove 'termio' support.

	* configure.ac: Do not check for termio.h or sys/ptem.h.
	* info/termdep.h, info/terminal.c:
	Remove all code for when termios.h is not present.

2019-02-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove obsolete configure checks.

	* configure.ac: Remove AC_HEADER_STAT, AC_HEADER_STDC, 
	AC_TYPE_SIGNAL, AC_C_CONST, AC_STRUCT_TM, AC_FUNC_VPRINTF.  
	Remove commented-out use of AC_FUNC_SETVBUF_REVERSED.

	* info/signals.c, info/terminal.c: Remove use of RETSIGTYPE for 
	signal handlers.

	Some of these are noted in the autoconf or gnulib manuals as 
	being unnecessary.

2019-02-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove customization value OUT.

	* tp/Texinfo/Common.pm (@command_line_settables),
	* doc/texinfo.texi (Customization Variables and Options):
	Remove 'OUT'.
	* tp/texi2any.pl: Do not use 'OUT' as a customization variable 
	and use 'OUTFILE' instead to check if the name of the output 
	file has been given.

2019-02-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Re-use open file descriptor.

	* info/t/Init-test.inc: Change a comment.
	* info/t: All tests: Use a file descriptor that is already open 
	to pass bytes to pseudotty instead of opening the FIFO again 
	every time.

2019-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: Bump version to 6.6dev.

2019-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	6.6.

	* configure.ac, NEWS, util/texi2dvi, util/texi2pdf,
	doc/refcard/txirefcard.tex.

2019-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Update for git, no keyword expansion.

2019-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Tweak index formatting.

	* doc/texinfo.tex (\balancecolumns): Increase length that the 
	final column of an index can be without being split.  Move some 
	code and add a comment.
	(\doublecolumnout, \begindoublecolumns): Move a comment to where 
	it was supposed to be.  Add another comment.

2019-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Multi-line macro argument):
	Add note on how a bug might be fixed.

2019-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Do not end a sentence after an inserted '.'.

	* tp/Texinfo/Convert/Plaintext.pm (_convert) <ref commands>:
	Do not end a sentence after an inserted '.' after @xref.  @xref
	can easily constitute only the first part of a sentence.

2019-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Documentation of @pxref.

	* doc/texinfo.texi (@pxref): Do not encourage using @pxref 
	outside of parentheses.  "see @ref" is often preferable to 
	"@pxref".

2019-02-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Minor changes to info-stnd.texi.

	* doc/info-stnd.texi
	(Invoking Info): Use a consistent name for menu arguments.
	(Moving the Cursor): Change 'imprinted on' to 'printed on'.  
	Move a footnote reference to the end of a sentence.
	(Node Commands): Correct key used in description.
	(The Echo Area) <printing characters>: Do not mention this 
	command, as self-inserting characters are inserted with a 
	different part of the code.  Do not mention about checking 
	whether a Meta key is bound, as this only applies if ISO-Latin 
	is 'Off'.
	<echo-area-complete>: SPC is not bound to this command any more.
	<echo-area-possible-completions>: Merge text with documentation 
	of 'echo-area-complete'.  '?' does not run this command any 
	more.
	(Colors and Styles): Privilege American spelling of "color".
	Fix typo ("a cross-references").
	(Variables): Privilege American spelling of "behavior".

2019-02-11  Gavin Smith  <gavinsmith0123@gmail.com>

	pretest 6.5.93.

	* configure.ac: version

2019-02-11  Gavin Smith  <gavinsmith0123@gmail.com>

	Be less optimistic about HTML 3.2 compatibility.

	* doc/texinfo.texi (HTML Translation): Mention that <span> is 
	used.  Mention that 'id' atttibute is used.  Say that html32.pm 
	hasn't been tested recently.

2019-02-11  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix make update-po in out-of-source build.

	* Makefile.am (update-po): Remove reference to $srcdir.

2019-02-11  Gavin Smith  <gavinsmith0123@gmail.com>

	Use a single include directory in test suite.

	* tp/t/include_reference: Move all files to tp/t/include.

	* tp/Makefile.am,
	* tp/t/test_utils.pl (test),
	* tp/t/nodenormalization.t: Do not refer to tp/t/include_reference.

2019-02-11  Gavin Smith  <gavinsmith0123@gmail.com>

	Use section names in generated HTML menus.

	* tp/Texinfo/Structuring.pm (new_node_menu_entry): Add argument 
	saying whether to use the section name in the menu entry.
	(menu_of_node, _menu_of_node): Rename.
	(node_menu_of_node, section_menu_of_node): Two new functions 
	wrapping _menu_of_node.
	* tp/Texinfo/Convert/HTML.pm (_convert_heading_command):
	Call section_menu_of_node instead of menu_of_node.
	* tp/Texinfo/Convert/Plaintext.pm (_convert): Call 
	node_menu_of_node instead of menu_of_node.  This is the existing 
	behaviour.
	* NEWS: Mention change.

	* tp/Texinfo/Transformations.pm (complete_node_menu): Update.

2019-02-11  Gavin Smith  <gavinsmith0123@gmail.com>

	Advice on node names.

	* doc/texinfo.texi (Node Names): Mention that HTML filenames are 
	based on the node names.  Do not link to 'HTML Xref Link 
	Preservation' node.
	(@anchor): Remove link to the same node.

2019-02-10  Robert Pluim  <rpluim@gmail.com>

	* doc/texinfo.texi (Inserting):
	Document 'M-x texinfo-insert-dwim-@ref'.

2019-02-10  Gavin Smith  <gavinsmith0123@gmail.com>

	Deprecate MANUAL-noderename.cnf.

	* tp/Texinfo/Common.pm (collect_renamed_nodes): Give a warning 
	if a renamed nodes file is being used.
	* doc/texinfo.texi (HTML Xref Link Preservation),
	* NEWS: Document deprecation.

2019-02-10  Gavin Smith  <gavinsmith0123@gmail.com>

	No special CSS for @small* commands.

	* tp/Texinfo/Convert/HTML.pm
	(%css_map): Remove css for @smallexample etc.
	(%small_alias): New hash.
	(_convert): Use %small_alias to treat e.g. @smallexample exactly 
	the same as @example, so that no extra CSS is needed.
	(%default_commands_conversion): Do not add entries for some 
	@small* commands.
	(_convert_quotation_command): Do not check if the passed command 
	name is different to 'quotation', as it will not be.

	* doc/texinfo.texi (@small...): Do not say that @small...  
	commands produce a smaller font in HTML output.
	* NEWS: Mention change.

2019-02-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Wrap introductory comment in @ifinfo block.

2019-02-10  Gavin Smith  <gavinsmith0123@gmail.com>

	No colon in HTML menus.

	* tp/Texinfo/Convert/HTML.pm (%defaults) <MENU_ENTRY_COLON>:
	Set to ''.
	* doc/texinfo.texi (Other Customization Variables): Update.
	* NEWS: Mention change.

2019-02-04  Gavin Smith  <gavinsmith0123@gmail.com>

	Do not install useless static libraries.

	* tp/Texinfo/XS/Makefile.am (LT_INIT): Use option 'disable-static'.
	* NEWS: Mention change.

	Report from Eli Zaretskii.

2019-02-04  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove parsetexi typemap.

	* tp/Texinfo/XS/parsetexi/Parsetexi.xs,
	* tp/Texinfo/XS/parsetexi/api.c (get_root): Remove, as it is 
	unused and relies on casting a pointer to an integer.
	* tp/Texinfo/XS/parsetexi/typemap: Remove.
	* tp/Texinfo/XS/Makefile.am (XSUBPPARGS): Remove reference to 
	typemap file.
	(EXTRA_DIST): Distribute Parsetexi.xs.

	Eli Zaretskii reported a warning "cast from pointer to integer 
	of different size" when compiling on MS-Windows.

2019-02-04  Gavin Smith  <gavinsmith0123@gmail.com>

	Fixes for MS-Windows.

	* tp/Texinfo/XS/misc.c (xs_process_text): Add dTHX at start so 
	that realloc will work.
	* tp/Texinfo/XS/parsetexi/command_data.awk:
	Output "#undef CM_NONE" in command_ids.h.
	* tp/Texinfo/XS/parsetexi/input.c (convert_to_utf8): Use 
	ICONV_CONST in a variable declaration.

	All reported by Eli Zaretskii.

2019-02-01  Gavin Smith  <gavinsmith0123@gmail.com>

	pretest 6.5.92.

	* configure.ac: version

2019-02-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Improve txicmdcheck.

	* doc/refcard/txicmdcheck: Special case for @& and @ampchar{}.
	* doc/refcard/txirefcard.tex: Add commands we deliberately 
	ignored at the end of the file.
	* doc/texinfo.texi (Command List): Add @&, @ampchar{}.

2019-02-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Automatically build pod2texi.1 man page.

	* man/Makefile.am (pod2texi.1): Add rule.
	* configure.ac: Check for pod2man with AM_MISSING_PROG.
	* README-hacking: Remove instruction.

2019-02-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Update.

2019-02-01  Werner Lemberg  <wl@gnu.org>

	* doc/texinfo.tex (\setupverbatim): Fix a comment.

2019-02-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix too wide space in @verbatiminclude.

	* doc/texinfo.tex (\verbatiminclude): Confine the effect of 
	\indexnofonts to a group where the filename is read, as is done 
	in \include.  Otherwise, there is an inappropriate definition of 
	'\ ' while the file is being input.  Werner Lemberg reported 
	that a wider space would be output after a colon in a file input 
	with @verbatiminclude.

2019-02-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Use 'id' instead of 'name'.

	* js/info.js (add_header, scan_toc): Use 'id' instead of 'name' 
	attribute.

2019-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Inline test script.

	* configure.ac: Load test module with "perl -e" instead of 
	running a separate script.
	* tp/Texinfo/XS/fail.pl: Remove this short file.

2019-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Unify AM_CFLAGS for XS modules.

	* tp/Texinfo/XS/Makefile.am (AM_CFLAGS): Put flags for C 
	compiler in here, rather than in target-specific variables.

2019-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix loading of XS module.

	* tp/Texinfo/Conver/Paragraph.pm: Use 0 as the XS interface 
	version number instead of 1.

2019-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Reorganize parsetexi header files.

	* tp/Texinfo/XS/parsetexi/tree_types.h,
	* tp/Texinfo/XS/parsetexi/parser.h (GLOBAL_INFO): Move to 
	parser.h.
	* tp/Texinfo/XS/parsetexi/extra.c (add_extra_index_entry): 
	Comment out function with preprocessor.
	* tp/Texinfo/XS/parsetexi/indices.c (enter_index_entry): Don't 
	call add_extra_index_entry.
	* tp/Texinfo/XS/parsetexi/tree_types.h,
	* tp/Texinfo/XS/parsetexi/indices.c (INDEX_ENTRY_REF):
	Move to indices.c.

2019-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid a warning.

	* tp/Texinfo/XS/configure.ac: Get perl conf value 'optimize'.
	* tp/Texinfo/XS/Makefile.am (AM_CFLAGS): Add it.  This can avoid 
	a preprocessor warning about -DFORTIFY_SOURCE.

2019-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove ununused output variable.

	* tp/Texinfo/XS/configure.ac (XSPARAGRAPH_INTERFACE_VERSION):
	Do not set with AC_SUBST.  This was intended to be used when 
	building XSParagraph as a stand-alone module.

2019-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Use an m4 loop.

	* tp/Texinfo/XS/configure.ac (lookup_perl_conf_values): New 
	macro, to use m4_foreach (from autoconf m4sugar) to look up 
	several values with lookup_perl_conf.

2019-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Do not require xsubpp.

	* tp/Texinfo/XS/configure.ac: Check for xsubpp with 
	AM_MISSING_PROG instead of AC_PATH_PROG, as xsubpp is not 
	required unless a *.xs file is modified.

2019-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove unused type.

	* tp/Texinfo/XS/parsetexi/tree_types.h (DEF_ARGS_EXTRA): Remove.
	(Suggestion from Hans-Bernhard Bröker.)
	(INDEX_ENTRY_REF): Update comment.

2019-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Centralise parser configuration values.

	* tp/texi2any.pl: Refer to %default_customization_values in 
	Texinfo::Common instead of Texinfo::Parser.  Continues change 
	made on 2019-01-29.

2019-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	perldoc-all Makefile change

	* contrib/perldoc-all/GNUmakefile: Change distclean target to 
	dist-hook to avoid deleting inappropriate files with distclean.

2019-01-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Continue search after a node wasn't found.

	* info/session.c (info_search_internal): If a node couldn't be 
	found, go onto the next node.
	This could happen if there was a comma in a node name.

2019-01-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove duplicate sub definition.

	* Pod-Simple-Texinfo/pod2texi.pl (__): Remove definition as 
	there is already one exported by Texinfo::Common (for translated 
	strings).

2019-01-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Try to fix contrib/perldoc-all.

	* contrib/perldoc-all/gendocs-sh: Add, from gendocs.sh in gnulib 
	project.
	* contrib/perldoc-all/Makefile.am: Access it instead of relying 
	on gendocs.sh being in path.  Do not remove *.?? (intending to 
	remove auxiliary index files) as this may delete the *.tar.gz 
	file the user has just downloaded.

	Keith Thompson reported problems with building Perl manuals with 
	this system.

2019-01-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Centralise parser configuration values.

	* tp/Texinfo/ParserNonXS.pm,
	* tp/Texinfo/Common.pm (%default_customization_values):
	Move to Common.pm.
	* tp/Texinfo/XS/parsetexi/Parsetexi.pm: Use this hash instead of 
	having a separate copy for this module.

2019-01-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove 'parent_type' field.

	* tp/Texinfo/XS/parsetexi/tree_types.h (ELEMENT):
	Remove field 'parent_type'.
	(enum route_element_type): Remove.
	* tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block)
	(end_line),
	* tp/Texinfo/XS/parsetexi/indices.c (wipe_index),
	* tp/Texinfo/XS/parsetexi/api.c (build_perl_array)
	(build_single_index_data): Check whether 'parent' is null to see 
	if an element is in tree.  This should work for all elements 
	except the root of the tree.

2019-01-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove reference line numbers in parsetexi.

	* tp/Texinfo/XS/parsetexi: Remove most of the comments with what 
	the line numbers were of the corresponding Perl code at the time 
	that parsetexi was first started.  Leave some where more work 
	might be needed.
	* tp/Texinfo/XS/parsetexi/main.c: Remove.
	* tp/Texinfo/XS/parsetexi/Common.pm: Remove.

2019-01-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove old files from parsetexi subdirectory.

	* tp/Texinfo/XS/parsetexi/complete_tree.pl,
	* tp/Texinfo/XS/parsetexi/debug_perl.txt,
	* tp/Texinfo/XS/parsetexi/makeinfo-debug.txt: Remove.

2019-01-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove relics of ExtUtils::MakeMaker build system.

	* tp/Texinfo/XS/Makefile.PL,
	* tp/Texinfo/XS/MANIFEST,
	* tp/Texinfo/XS/prepare_standalone_perl_module.sh: Remove.
	* tp/Texinfo/XS/Makefile.am (perl_specific_files): Remove.

2019-01-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove relics of ExtUtils::MakeMaker build system.

	* tp/Makefile.PL, tp/MANIFEST: Remove.
	* tp/maintain/MANIFEST_generated_files: Remove.
	* tp/maintain/MANIFEST_perl_po: Remove.
	* tp/maintain/prepare_perl_module_files.sh,
	* tp/maintain/prepare_perl_standalone_module_archive.sh,
	* tp/maintain/clean_perl_module_files.sh: Remove.

	* tp/Makefile.am (MANIFEST, perl_specific_files): Remove.

	This was for creating "standalone modules", but it is 
	out-of-date, doesn't work and has never been used.

2019-01-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove test from 'many_input_files' subdirectory.

	* tp/tests/many_input_files/indices.sh: Remove.
	* tp/tests/indices/list_of_tests (index_table): New test to 
	partially replace indices.sh.  Only one input file is tested.

	This test tested that texi2any would work with several manuals 
	to process given to it on the command line.  I suspect this 
	feature is rarely used.  The extra complexity this gave to the 
	test suite is not worth it IMHO.
	Now the many_input_files subdirectory only contains the 
	latex2html and tex4ht tests, which are not run by default.

	I checks that the output for the index_table.texi file was the 
	same by checking the same files were output and that the 
	contents were the same, with a command like
	  for f in * ; do echo DIFF $f ;
	  diff $f ../../../many_input_files/indices_res/$f ; done

2019-01-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Use 'id' instead of 'name' attribute.

	* tp/Texinfo/Convert/HTML.pm (_convert_footnote_command),
	(_default_contents):
	Use 'id' instead of 'name' attribute on <a> tag.

2019-01-27  Gavin Smith  <gavinsmith0123@gmail.com>

	Comments in parsetexi header files.

	* tp/Texinfo/XS/parsetexi: Add a brief comment at the start of 
	each header file.
	* tp/Texinfo/XS/parsetexi/tree_types.h,
	* tp/Texinfo/XS/parsetexi/conf.h (CONF): Move to conf.h.
	* tp/Texinfo/XS/parsetexi/errors.c: Remove #define _GNU_SOURCE.

2019-01-27  Gavin Smith  <gavinsmith0123@gmail.com>

	Header file changes and small fixes for parsetexi.

	* tp/Texinfo/XS/parsetexi/tree_types.h,
	* tp/Texinfo/XS/parsetexi/macro.h (INFO_ENCLOSE, MACRO):
	Move to text.h.
	* tp/Texinfo/XS/parsetexi/close.c (close_command_cleanup): Fix 
	incorrect comparison of enum values.
	* tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): 
	Remove an unused variable.
	* tp/Texinfo/XS/parsetexi/tree_types.h,
	* tp/Texinfo/XS/parsetexi/errors.h (enum error_type):
	Move to text.h.

2019-01-26  Bruno Haible  <bruno@clisp.org>

	Fix test failures on HP-UX.

	Reported by Richard Lloyd in
	<https://lists.gnu.org/archive/html/bug-texinfo/2013-02/msg00030.html>.

	* install-info/tests/ii-0041-test: Simulate zdiff.
	* install-info/tests/ii-0050-test: Likewise.

2019-01-25  Gavin Smith  <gavinsmith0123@gmail.com>

	Make "texi2dvi --command" work without @setfilename in file.

	* util/texi2dvi (insert_commands, usage):  Insert commands given 
	with --command even if no @setfilename line is present.
	* doc/texinfo.texi (Format with texi2dvi) <--command>: Remove 
	mention of @setfilename.

2019-01-25  Gavin Smith  <gavinsmith0123@gmail.com>

	Attempt to make test suite parallel safe.

	* tp/maintain/regenerate_cmd_tests.sh: Use 'mkdir -p' instead
	of testing whether directory exists.
	* tp/tests/run_parser_all.sh: Use 'mkdir -p' instead of testing 
	if a directory exists.  Do not delete a temporary directory at 
	the end.  Redirect stdin with "exec" instead of just redirecting 
	a "while" loop in order to avoid problem with redirecting output 
	under Solaris 10 shell.

	Andreas Schwab reported that the test suite was not parallel 
	safe.

2019-01-24  Gavin Smith  <gavinsmith0123@gmail.com>

	Pass on -D flags to texi2dvi.

	* tp/texi2any.pl: If calling texi2dvi, only pass along the 
	values of flags before the file is parsed: not the values after 
	the file is parsed.  These values might be wrong for the start 
	of the file.

	Stefan Husmann found that the Tramp manual wouldn't build with 
	pretest texinfo-6.5.91

2019-01-20  Gavin Smith  <gavinsmith0123@gmail.com>

	Check for gawk version for rebuilding texindex.awk.

	* configure.ac: Use AM_MISSING_PROG to look for gawk.
	* texindex/Makefile.am (texindex.awk, ti.twjr): Use $(GAWK) 
	instead of $(AWK).
	* texindex/jrtangle: Add a check for the version number of gawk 
	and, if too old, exit with status 63 in order to let the 
	"missing" script know it is too old.

	Bruno Haible reported that the rule to regenerate texindex.awk
	was being run on OpenBSD 6.3 where there was no gawk.

2019-01-16  Gavin Smith  <gavinsmith0123@gmail.com>

	Documentation of colons in index entries.

	* doc/texinfo.texi (Index Commands):
	Water down the proscription of colons in an index entry, as this
	works with some Info readers.

2019-01-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Split code into separate file.

	* tp/Texinfo/XS/parsetexi/conf.c: New file, along with header.  
	This helps us to avoid declaring the 'conf' variable in two 
	different header files.

2019-01-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Rearrange header files.

	* tp/Texinfo/XS/parsetexi/debug.c: Include header file 
	containing declarations of functions in this file.
	* tp/Texinfo/XS/parsetexi/end_line.c,
	* tp/Texinfo/XS/parsetexi/separator.c: Remove an unnecessary #include.

2019-01-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove unused API functions.

	* tp/Texinfo/XS/parsetexi/Parsetexi.xs (element_type_name)
	(num_contents_children, num_args_children, contents_child_by_index):
	Remove ununused XSUB's.

	* tp/Texinfo/XS/parsetexi/api.c (num_contents_children) 
	(num_args_children): Remove unused.

2019-01-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi/Parsetexi.pm: Remove a generated comment.

2019-01-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Move function declarations to header file.

	* tp/Texinfo/XS/parsetexi/Parsetexi.xs: Move function 
	declarations to header file, api.h.  This means the compiler can 
	check the declarations are consistent with the definitions in 
	api.c.

2019-01-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove an unnecessary #include.

	* tp/Texinfo/XS/parsetexi/input.c,
	* tp/Texinfo/XS/parsetexi/parser.c: Remove an unnecessary 
	#include "api.h".

2019-01-14  Gavin Smith  <gavinsmith0123@gmail.com>

	Move a function between files.

	* tp/Texinfo/XS/parsetexi/api.c,
	* tp/Texinfo/XS/parsetexi/parser.c (element_type_name): Move to 
	parser.c.

2019-01-13  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove some unused variables.

	* tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace):
	Remove some unused variables.

2019-01-13  Gavin Smith  <gavinsmith0123@gmail.com>

	pretest 6.5.91.

	* configure.ac: version

2019-01-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c: Include stdio.h.

2019-01-12  Hans-Bernhard Bröker  <HBBroeker@t-online.de>  (tiny change)

	Fix some warnings.

	* tp/Texinfo/XS/parsetexi/close.c: Initialize a variable.

2019-01-12  Hans-Bernhard Bröker  <HBBroeker@t-online.de>  (tiny change)

	Fix some warnings.

	* tp/Texinfo/XS/parsetexi/end_line.c: Fix an unterminated 
	comment.
	(check_empty_node): Avoid reaching end of undefined function.
	* tp/Texinfo/XS/parsetexi/parser.c (register_global_command): 
	Add default cases.
	* tp/Texinfo/XS/parsetexi/multitable.c (gather_previous_item):
	Correct enum type in variable declaration.

2019-01-12  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove unused variables.

	* tp/Texinfo/XS/parsetexi/api.c (element_to_perl_hash),
	* tp/Texinfo/XS/parsetexi/parser.c (register_global_command)
	(process_remaining_on_line),
	* tp/Texinfo/XS/parsetexi/convert.c (expand_cmd_args_to_texi),
	* tp/Texinfo/XS/parsetexi/end_line.c (parse_line_command_args)
	(end_line_starting_block, end_line_misc_line),
	* tp/Texinfo/XS/parsetexi/macro.c (expand_macro_body),
	* tp/Texinfo/XS/parsetexi/handle_commands.c (handle_other_command),
	* tp/Texinfo/XS/parsetexi/def.c (split_delimiters, split_def_args)
	(parse_def): Remove declarations of unused variables.

2019-01-12  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove an unused variable.

	* tp/Texinfo/ParserNonXS.pm (_parse_texi): Remove an unused 
	variable.

2019-01-12  Gavin Smith  <gavinsmith0123@gmail.com>

	Add a default case.

	* tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): 
	Add an empty default clause in switch block.

2019-01-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi: Fix implicit function declarations.

2019-01-07  Gavin Smith  <gavinsmith0123@gmail.com>

	Make Parsetexi XS module conditional on iconv.

	* tp/Texinfo/XS/configure.ac: Add an AM_CONDITIONAL checking 
	whether gnulib found that iconv worked.
	* tp/Texinfo/XS/Makefile.am: Make building Parsetexi module 
	conditional.

2019-01-07  Gavin Smith  <gavinsmith0123@gmail.com>

	Set PERL_EXT_var in configure.ac.

	* tp/Texinfo/XS/configure.ac,
	* tp/Texinfo/XS/Makefile.am: Move setting of CFLAGS, CPPFLAGS 
	and LDFLAGS from PERL_EXT_CFLAGS, PERL_EXT_CPPFLAGS and 
	PERL_EXT_LDFLAGS from Makefile.am to configure.ac in order that 
	they are used during the Gnulib checks.  Report from Bruno Haible.

2019-01-07  Gavin Smith  <gavinsmith0123@gmail.com>

	No buffering for pseudotty output.

	* info/pseudotty.c: Set VMIN value on the c_cc array in the 
	termios structure to 1, meaning 'read' can return with a single 
	byte.  (The default value on Solaris 10 was found to be 4, which 
	may be C-d for end-of-file.)  Also set VTIME to 0.

2019-01-07  Gavin Smith  <gavinsmith0123@gmail.com>

	Turn off canonical input processing in pseudotty.

	* info/pseudotty.c [HAVE_TERMIOS_H]: Clear the ICANON and ECHO 
	flags.

	In the test suite, if bytes were passed through the pseudotty 
	program before ginfo could make this change, they could be 
	subject to undesired processing.  This was not apparent as info 
	treated '\n' the same as '\r'.  This could be shown by using a 
	"dribble" file and inserting a "sleep" in one of the test scripts.
	Tests were failing on Solaris 10 and Solaris 11 because bytes 
	that were supposed to be sent to ginfo were being buffered, 
	awaiting a newline.

2019-01-07  Gavin Smith  <gavinsmith0123@gmail.com>

	Do not send debug output to infodebug file.

	* info/session.c (vinfo_debug): Always sent debugging output to 
	stderr.
	(close_debugfile, debug_file): Remove.
	* doc/info-stnd.texi (Invoking Info): Update.
	* NEWS: Mention change.

	This is to make all the debugging output from info appear 
	together in a log files when output is diverted from a test 
	script.

2019-01-07  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid possible infinite loop in info test suite.

	* info/t/replace-viewed.sh: Replace a loop that waits for ginfo 
	to create a file with a "sleep" statement.  If the file weren't 
	created, this would be an infinte loop.

2019-01-07  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove useless code in info test suite.

	* info/t/replace-viewed.sh,
	* info/t/resize-in-completions: Do not check for a variable 
	having a value that no code sets it to.  This has been the case 
	since the way the PID of the process was found changed.

2019-01-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix info tests under Solaris.

	* info/pseudotty.c [__sun]: Additionally perform a "ttycompat"
	ioctl on the slave fd.  This is what is done in the gnulib 
	openpty module.  Since these ioctls were no longer guarded by 
	isatty, it would lead to some of the info tests failing.  I 
	don't know under what conditions the ioctls are actually needed 
	under Solaris: possibly they aren't needed at all.

2019-01-05  Gavin Smith  <gavinsmith0123@gmail.com>

	Include iconv.h unconditionally.

	* tp/Texinfo/XS/parsetexi/input.c: Do not depend on HAVE_ICONV 
	for #include <iconv.h>.  Use of iconv_t, iconv_open etc. later 
	on in the file is not conditional, and we don't have a way to 
	avoid using these.  It's possible that gnulib set HAVE_ICONV to 
	0 because it found that iconv.h was buggy, even if it existed.

2019-01-05  Gavin Smith  <gavinsmith0123@gmail.com>

	Don't use variable in SOURCES in Makefile.am.

	* tp/Texinfo/XS/Makefile.am (Parsetexi_la_SOURCES, BUILT_SOURCES):
	Write out "parsetexi" explicitly instead of hiding it inside $p.
	Although the latter works with automake 1.16 (which we are 
	using), the OpenCSW buildbot still uses automake 1.15.1, leading 
	to build failures.

2019-01-05  Gavin Smith  <gavinsmith0123@gmail.com>

	Integrate parsetexi with gnulib.

	* tp/Texinfo/XS/parsetexi/input.c: Do not define ICONV_CONST.

2019-01-05  Gavin Smith  <gavinsmith0123@gmail.com>

	Fall back to pure Perl module when TEXINFO_XS_PARSER is set.

	* tp/Texinfo/Parser.pm, tp/Texinfo/ParserNonXS.pm: Rename file.
	* tp/Texinfo/ParserNonXS.pm: Make module symbols available under 
	both Texinfo::Parser and Texinfo::ParserNonXS.
	* tp/Texinfo/ModulePath.pm.in: If TEXINFO_XS_PARSER is not set, 
	load Texinfo/ParserNonXS.pm instead of Texinfo/Parser.pm.
	* tp/Texinfo/XS/parsetexi/Parsetexi.pm: Pass Texinfo::ParserNonXS
	as a fallback module to Texinfo::XSLoader::init.  Comment out 
	line to reset_parser in END block, as this won't work if 
	Texinfo::ParserNonXS is loaded.

2019-01-05  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix info test suite hang under HP-UX 11.31.

	* info/pseudotty.c [HAVE_STROPTS_H]: Do not call isatty on 
	pseudoterminal file descriptor.  Bruno Haible reported that this 
	made a test hang.  Do not use HAVE_STROPTS_H condition: replace 
	with "#if defined(__hpux) || defined(__sun)", as is done in 
	gnulib.  Remove some commented-out code.
	* configure.ac (AC_CHECK_HEADERS): Do not check for stropts.h.

2019-01-05  Gavin Smith  <gavinsmith0123@gmail.com>

	Improve XS loading error message.

	* tp/Texinfo/XSLoader.pm: Improve error message in the case that 
	a module couldn't be loaded.

2019-01-05  Bruno Haible  <bruno@clisp.org>

	Fix build errors on AIX 7.1.

	* info/Makefile.am (LDADD),
	* install-info/Makefile.am (LDADD): Add $(LIBTHREAD).

2019-01-05  Gavin Smith  <gavinsmith0123@gmail.com>

	Check for Data::Dumper.

	* configure.ac: Check for Data::Dumper as well as Encode.  Bruno 
	Haible reported that Data::Dumper was missing on CentOS 7.3.

2019-01-05  Gavin Smith  <gavinsmith0123@gmail.com>

	Combine Makefiles for XS modules.

	* tp/Texinfo/XS/configure.ac (AC_CONFIG_FILES): Remove Makefile 
	in parsetexi subdirectory.
	* tp/Texinfo/XS/Makefile.am: Merge in contents of 
	tp/Texinfo/XS/parsetexi/Makefile.am.
	* tp/Texinfo/XS/parsetexi/Makefile.am: Remove file.

	This means that passing -lperl when linking will always be 
	conditional on HOST_NEEDS_NO_UNDEFINED.

2019-01-04  Gavin Smith  <gavinsmith0123@gmail.com>

	pretest 6.5.90.

	* configure.ac: version

2019-01-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/parsetexi: Include config.h in all files.

2019-01-04  Gavin Smith  <gavinsmith0123@gmail.com>

	Update texinfo-tex-test.texi.

	* doc/texinfo-tex-test.texi (Final page of index hard to balance):
	Update the description of what the output should look like.  
	(Changed on 2017-11-16).

2019-01-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/Makefile.am (EXTRA_DIST): List texinfo-tex-test.WIDOWs.

2019-01-04  Gavin Smith  <gavinsmith0123@gmail.com>

	Update copyright years.

	* info/info.c (main),
	* texindex/ti.twjr: 2019.

2019-01-04  Gavin Smith  <gavinsmith0123@gmail.com>

	Prepare for pretest release.

	* util/srclist-txi: Remove EMACSSRC.
	Add a per-user override.
	* util/srclist.txt: Remove info.texi, as this is not distributed 
	with Texinfo any more.  Update to three-column format used now 
	by gnulib srclist-update.  Update locations of automake files.
	* README-hacking: Update instructions for git.
	* configure.ac (TEXINFO_DTD_VERSION): Increase to 6.6.
	* doc/refcard/txirefcard.tex: Update version and copyright year.  
	Document @& and @ampchar.

2019-01-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: automake 1.16.

2019-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Remove some obsolete or personal instructions.

2019-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/multiple-completions.sh: New test.

2019-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix unclosed @inlinefmtifelse.

	* tp/Texinfo/XS/parsetexi/separator.c (handle_comma): If we run 
	out of input inside @inlinefmtifelse, exit the function.  This 
	matches change to Perl code made on 2018-10-29.

2019-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Update instructions to use git.

2019-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Update gnulib.

	* (top-level), tp/Texinfo/XS: Run gnulib-tool --add-import.

2019-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove documentation of \ifusebracesinindexes conditional.

	* doc/texinfo.tex: Add a comment at definition of 
	\ifusebracesinindexes.
	* doc/texinfo.texi: Remove use of \usebracesinindexestrue.
	(Details of texindex): Remove the documentation of it.
	* NEWS: Mention that this is not required any more.

2019-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Update refcard.

	* doc/refcard/txirefcard.tex: @setfilename is no longer 
	mandatory.  Do not mention @validatemenus or explicitly giving 
	@node pointers, as these are not very important features.  

2019-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/sectioning/Makefile.am: Update file list.

2019-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Finish removing 'FIX_TEXINFO'.

	* tp/Texinfo/Common.pm (@variable_string_settables): Remove 
	'FIX_TEXINFO'.

2019-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Update NEWS.

	* NEWS: Mention change to use 'id' attribute.  Mention that 
	texi2any can pass flags set with -D on to TeX.

2019-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove SVN keyword.

	* util/texi2dvi (version): Do not use '$Revision$' keyword as 
	this doesn't work with git.

2019-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Update instructions for git.

2019-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Ignore .git directories in dist-hook.

	* Makefile.am (dist-hook),
	* tp/Makefile.am (dist-hook),
	* tp/tests/Makefile.am (dist-hook),
	* tp/tests/contents/Makefile.am (dist-hook),
	* tp/tests/coverage/Makefile.am (dist-hook),
	* tp/tests/formatting/Makefile.am (dist-hook),
	* tp/tests/indices/Makefile.am (dist-hook),
	* tp/tests/layout/Makefile.am (dist-hook),
	* tp/tests/many_input_files/Makefile.am (dist-hook),
	* tp/tests/nested_formats/Makefile.am (dist-hook),
	* tp/tests/sectioning/Makefile.am (dist-hook),
	* tp/tests/tex_html/Makefile.am (dist-hook): Remove .git directories
	instead of removing .svn directories.

2019-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove obsolete comment.

	* util/texi2dvi: Remove comment about use of file descriptors
	3 and 4.  (See info node '(autoconf)File Descriptors'.)  Remove 
	comment about EGREP variable alluding to the fact that the 
	'egrep' command is not in Posix.

2019-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove texi2html and C makeinfo.

	* makeinfo, texi2html: Remove subdirectories.
	* Makefile.am (po-check): Update list of skipped subdirectories.
	* README-hacking: Remove mention of these subdirectories.

2019-01-02  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove unused variable in test suite.

	* tp/maintain/regenerate_cmd_tests.sh: Do not set 'srcdir_test' 
	in generated test scripts, as this variable is no longer used 
	anywhere.
	* tp/tests/run_parser_all.sh: Remove commented-out code.

2019-01-02  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove commented-out code.
	
	* tp/tests/parser-tests.sh: Remove commented-out code.

2019-01-02  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix Makefile rule for out-of-source builds.

	* tp/tests/many_input_files/Makefile.am
	(copy-tests, copy-tex-html): Work properly in out-of-source builds.

2019-01-02   Per Bother  <per@bothner.com>

	Use 'id' attribute instead of 'name' on <a>.

	* tp/Texinfo/Convert/HTML.pm:
	(_convert_float_command, _convert_item_command)
	(_convert_index_command, _contents_inline_element)
	(_convert_element_type, _convert_heading_command):
	Use '<span id>' instead of '<a name>'.
	(_convert_printindex_command, _convert_def_line_type):
	Add 'id' attribute to <th> and <dt> elements, and remove
	<a name>.

	The 'name' attribute of <a> to define a hyperlink target is 
	deprecated in the HTML 5 standards.  'id' for this purpose was 
	specified by HTML 4 (in 1997) and can be expected to be 
	supported by all browsers.

2019-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Document SECTION_NAME_IN_TITLE.

	* doc/texinfo.texi (HTML Customization Variables),
	* NEWS: Document SECTION_NAME_IN_TITLE.

2019-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	New customization variable SECTION_NAME_IN_TITLE.

	* tp/Texinfo/Common.pm (@variable_string_settables),
	* tp/Texinfo/Convert/HTML.pm (%defaults):
	Add SECTION_NAME_IN_TITLE.
	* tp/Texinfo/Convert/HTML.pm (_file_header_information): For 
	split output, if SECTION_NAME_IN_TITLE is set, try to use the 
	argument of the chapter structuring command instead of @node for 
	the contents of <title>.  Feature suggestion from Akim Demaille
	(help-texinfo, Nov. 2018).

2019-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix error message from texinfo-js.

	* js/texinfo-js.in: Remove extra `-' from an error message.  
	Report from Stefan Husmann.

2018-12-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Document 'TEXINFO_XS_PARSER'.

	* NEWS: Mention the XS parser implementation.
	* tp/Texinfo/Parser.pm: Note that this module can be overridden.
	* doc/texinfo.texi (texi2any Environment Variables):
	Add TEXINFO_XS_PARSER.

2018-12-29  Gavin Smith  <gavinsmith0123@gmail.com>

	Pass on -D to texi2dvi.

	* tp/texi2any.pl: If calling texi2dvi, pass along the values of 
	any flags set with -D on the command line.  Suggestion from 
	Olivier Dion.

2018-12-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove implementation of @cropmarks in texi2any.

	* tp/Texinfo/Common.pm (%line_commands): Remove 'cropmarks'.
	* tp/Texinfo/XS/parsetexi/command_data.txt: Remove cropmarks.
	* tp/t/xml_tests.t (commands_and_spaces),
	* tp/t/08misc_commands.t (also_not_line),
	* tp/t/50value.t (value_in_misc_commands),
	* tp/t/60macro.t (macro_in_misc_commands):
	Remove @cropmarks from tests.

2018-12-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove documentation of @cropmarks command.

	* doc/texinfo.texi (Cropmarks and Magnification, Magnification):
	Rename and remove mention of @cropmarks.

2018-12-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove @cropmarks command.

	* doc/texinfo.tex (\cropmarks, \ifcropmarks, \onepageout): 
	Remove implementation of @cropmarks.
	* NEWS: Mention @cropmarks removal.

	This command has hardly ever been used and it is questionable 
	whether it has worked correctly for many years.  See bug-texinfo 
	discussion November 2018.
	The code was introduced in 1986 by Pierre MacKay for use by 
	"Near East Publications".

2018-12-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Tidy up info test suite infrastructure.

	* info/t/Init-test.inc: Do not set GINFO_NAME variable as it is 
	not used.  Do not set infodir variable.  Do not try to set 
	srcdir, as it is already set.  Change some shell variables to be 
	lower-case, to avoid confusion with variables exported to the 
	environment.  Remove unused variable GINFO_OPTIONS.

2018-12-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Select correct cross-reference.

	* info/session.c (info_menu_or_ref_item): If there is more than 
	one cross-reference in the line after the point and no 
	cross-reference contains the point, use the first 
	cross-reference after the point, not the last one in the line.  
	This means that the cross-reference that is highlighted as 
	"active" will be the one that is used.

2018-12-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Avoid memory leak for malformed files.

	* info/nodes.c (info_load_file): Free 'contents' and 'encoding' 
	fields of file structure in case the node table couldn't be 
	built.

2018-12-28  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix call to info_find_file.

	* info/nodes.c (info_get_nodes_with_defaults): Restore the value 
	of the 'fullpath' field of a file structure before calling 
	info_find_file.  Otherwise, info_find_file will not recognize 
	that a file has been loaded, and load it again.  This can lead 
	to a file buffer being freed incorrectly in 
	gc_file_buffers_and_nodes, leading to a segmentation fault.  
	Segmentation fault reported by Keith Thompson.

2018-12-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Makefile.am (Makefile.docstr): Fix to work out-of-source.

2018-12-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix info/t/all-only.sh test in out-of-source builds.

	* info/dir.c (dir_entry_of_infodir): Prefix a non-absolute path 
	with "./" so that other parts of the code recognize it is the 
	full path.

2018-12-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Development now uses git.

2018-10-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <inline conditionals>:
	Avoid an infinite loop when skipping an unexpanded conditional
	in case we run out of input.
	* tp/t/55conditionals.t (inlineifset_false_not_closed): New test.

2018-10-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <@inlinefmtifelse>:
	Avoid an infinite loop if there is no more input.
	* tp/t/55conditionals.t
	(inlineiffmtifelse_not_closed, inlineiffmtifelse_not_closed_two_arg)
	(inlineiffmtifelse_not_closed_three_arg): New tests.

2018-10-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_check_line_directive): Fix code for
	checking if input is coming from a file.

2018-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_next_text, _new_line): Do not pass
	$current as an argument, as it is not used any more now the
	check for the #line directive has been moved out.

2018-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/80include.t (cpp_lines): Add test of macro where a
	line that looks like a #line directive is not the very first
	line, as these may be treated differently by Parser.pm.

2018-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_check_line_directive, _save_line_directive)
	(_next_text): Split out sub from _next_text.
	(_parse_texi) <BEGIN LINE>: Call _check_line_directive and
	_save_line_directive.  The condition for #line being meaningful 
	is the same as what was in _next_text.  

2018-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (#line directive) <CPP_LINE_DIRECTIVES>:
	Add a missing ).

2018-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (@obsolete_variables): Remove.
	(obsolete_option): Remove.
	(%customization_variable_classes): Remove 'obsolete_variables'.
	* tp/texi2any.pl (set_from_init_file, set_from_cmdline),
	* tp/Texinfo/Convert/Converter.pm (set_conf, force_conf):
	Do not call Texinfo::Common::obsolete_option.
	* NEWS: Mention that obsolete customization variables are no 
	longer recognized.

	* tp/Texinfo/Parser.pm (_setup_parser): Do not look at 
	'INLINE_INSERTCOPYING'.

	If more variables are deprecated, then it may be worth 
	reinstating some of this code.

2018-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_command_with_command_as_argument):
	Remove code checking for a case where the command has two 
	elements in 'args', the first all whitespace, as this case never 
	seems to happen.

2018-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@titlefont @center @sp):
	Do not mention the possibility of using these outside of a title 
	page.

2018-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%in_index_commands): New hash, 
	containing only 'sortas'.
	* tp/Texinfo/Parser.pm (%in_full_text_commands): Do not 
	specially remove 'sortas'.
	(_setup_parser, _parse_command_line_args): Use 
	%in_simple_text_commands for the commands that may appear in 
	index commands.  This was done until 2017-04-01.
	(_parse_texi) <brace commands>: Move check for valid nesting of 
	@sortas here.  Change error message to mention index entry.

2018-10-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <in heading commands>:
	Do not set an 'invalid_nesting' value.

2018-10-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_check_valid_nesting): New sub, split 
	out from _parse_texi.
	(_parser_texi): Call it.
	(%in_full_line_commands): Remove useless variable, as the same
	as %in_full_text_commands.

2018-10-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (%in_full_text_commands): Do not
	allow @indent, @noindent.
	(%in_full_line_commands): No exception for @indent, @noindent.
	* NEWS: Mention change in allowed nesting.

2018-10-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (%simple_text_commands): Add all the 
	commands that have a number >= 1 as their argument type in
	%brace_commands, except for inline conditional commands.  This 
	includes @inforef which wasn't included before.  This leaves 
	only @shortcaption and @math as explicitly listed commands.

2018-10-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (%no_command_commands): Remove this list 
	of commands that shouldn't contain any other commands.  Although 
	it is valid, it makes the picture of which commands can contain 
	others more complicated for the sake of only a few commands.
	Introduced on 2016-07-09 for @errormsg and @U.

2018-10-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%brace_commands): Change meaning of 1
	as a value.  Now only commands that were in
	%simple_text_commands in Parser.pm have 1.  Use words as well as 
	numbers, as is done for %line_commands.  Accent commands get 
	'accent'.  Style commands get 'style'.  Context brace commands
	get 'context'.  Various other brace commands get 'other'.
	(_parse_line_command_args): Commands defined by @definfoenclose
	get 'style'.

	* tp/Texinfo/Parser.pm
	(%simple_text_commands): Change initialising code to use 
	%brace_commands for some brace commands. This shortens a 
	seemingly arbitrary list.

	(%full_text_commands): Update initialising code for new meaning 
	of %brace_commands.

	(_parse_texi): Change two conditions to compare values of 
	%brace_commands hash, without needing to look at 
	%simple_text_commands.  Remove an unnecessary conditional.

	* tp/Texinfo/Parser.pm (_parse_texi),
	* tp/Texinfo/Convert/Plaintext.pm (%brace_no_arg_commands):
	Use "eq '0'" instead of "== 0" for %brace_commands values.

	No functional changes intended.  This brings the implementation
	closer to the C version under tp/Texinfo/XS/parsetexi.

2018-10-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (%simple_text_commands): Add 'sortas'.
	(%full_text_commands): No special case for 'sortas'.
	(_parse_texi) <@copying in @insertcopying>: Undefine a variable.

2018-10-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_isolate_last_space): Set 
	'comment_at_end' value on element instead of parent.  As well as 
	gaining consistency with 'spaces_after_argument', this means 
	that a comment at the end of a brace command argument is not 
	lost or output at the wrong place.  Add a comment noting that 
	comments should not be inside brace commands anyway.

	* tp/Texinfo/Convert/TexinfoXML.pm (_convert_argument_and_end_line),
	* tp/Texinfo/Convert/Texinfo.pm (convert, _expand_cmd_args_to_texi):
	* tp/Texinfo/Convert/Converter.pm _expand_cmd_args_to_texi): 
	Access 'comment_at_end' in the new place.

2018-10-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm: Change 'same than' to 'same as' in
	comments.

2018-10-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (%simple_text_commands): Remove @ctrl.
	(_end_line): Change a comment.

2018-10-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm,
	* tp/Texinfo/Structuring.pm,
	* tp/Texinfo/Transformations.pm,
	* tp/Texinfo/Convert/Converter.pm,
	* tp/Texinfo/Convert/DocBook.pm,
	* tp/Texinfo/Convert/NodeNameNormalization.pm,
	* tp/Texinfo/Convert/Plaintext.pm,
	* tp/Texinfo/Convert/TexinfoXML.pm,
	* tp/Texinfo/Convert/Text.pm,
	* tp/Texinfo/Convert/TextContent.pm:
	Change 'misc_line_arg' to 'line_arg'.

	* tp/Texinfo/Parser.pm
	(%begin_line_commands, %in_full_text_commands):
	Initialising code changed.

	* tp/Texinfo/Convert/Common.pm (@inline_types): Remove 
	'misc_command_arg', as no such element type is used anywhere.

	The reason for this change is that "line command" is more 
	descriptive than "miscellaneous command".  No functional changes 
	intended.

2018-10-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi): Check for unknown command
	right after reading the command.

2018-10-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/sectioning/list-of-tests
	(node_footnote_end, node_footnote_use_node, node_footnote_separated)
	(equivalent_nodes, equivalent_nodes_no_node)
	(nodes_after_top_before_chapter)
	(nodes_after_top_before_chapter_use_nodes_chapter)
	(nodes_after_top_before_section)
	(nodes_after_top_before_section_use_nodes)
	(nodes_after_top_before_section_use_nodes_chapter)
	(sectioning_frames, placed_things_before_element)
	(more_sections_than_nodes, two_footnotes_in_nodes)
	(two_footnotes_in_nodes_separated, top_node_up_implicit)
	(top_node_up_explicit):
	Remove tests.

	* tp/t/96moresectioning.t: New test file.  Add equivalent tests.

	I checked the results were the same by running:

	for T in \
	  node_footnote_end \
	  node_footnote_use_node \
	  node_footnote_separated \
	  equivalent_nodes \
	  equivalent_nodes_no_node \
	  nodes_after_top_before_chapter \
	  nodes_after_top_before_chapter_use_nodes_chapter \
	  nodes_after_top_before_section \
	  nodes_after_top_before_section_use_nodes \
	  nodes_after_top_before_section_use_nodes_chapter \
	  sectioning_frames \
	  placed_things_before_element \
	  more_sections_than_nodes \
	  two_footnotes_in_nodes \
	  two_footnotes_in_nodes_separated \
	  top_node_up_implicit \
	  top_node_up_explicit
	do
	  echo TEST $T
	  (cd t/results/moresectioning/$T/res_html
	   for f in * ; do
	     echo diff $f
	     diff $f ../../../../../tests/sectioning/res_parser/$T/$f
	   done)
	done

2018-10-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi):
	Issue an error message right after checking for an invalid 
	nesting.  This produces little functional change but is intended 
	to make the code easier to understand.
	(_mark_and_warn_invalid): Remove.

2018-10-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_mark_and_warn_invalid): Do not set 
	'invalid_nesting'.

2018-10-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (find_innermost_accent_command):
	Do not check for invalid nesting.
	* tp/Texinfo/Convert/HTML.pm (_convert): Remove some 
	commented-out code.
	* tp/t/accents.t (command in accent): Remove test.

2018-10-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: @ctrl removed.

	* tp/Texinfo/Common.pm (%brace_commands, %deprecated_commands):
	Remove @ctrl.
	* tp/Texinfo/Convert/HTML.pm (_convert_ctrl_command): Remove.
	* tp/Texinfo/Convert/Plaintext.pm (@asis_commands): Remove @ctrl.

	* tp/t/03coverage_braces.t (ctrl): Remove test.
	* tp/tests/coverage_macro.texi: Remove test of @ctrl.

	(Karl, bug-texinfo 2012-04-01).

2018-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%line_commands): Change a comment.
	(%other_commands): Set from %in_heading_commands.

2018-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%other_commands): Remove 'itemx'.  
	@itemx is always a line command.
	* tp/Texinfo/Parser.pm (_parse_texi) <misc commands>:
	Only @item can sometimes be an 'other' command', not @itemx.  
	Error message for incorrectly nested @item or @itemx.
	(_end_line): Add a check for an undefined value.

2018-10-20  Gavin Smith  <gavinsmith0123@gmail.com>


	* tp/Texinfo/Common.pm (%line_commands): Add all the sectioning, 
	index and def commands.
	* tp/Texinfo/Parser.pm (%misc_commands): Remove.
	(%line_commands): Add.
	(_setup_parser, simple_parser): Set 'line_commands' on parser 
	rather than 'misc_commands'.
	(_end_line, _parse_texi, _parse): Update.

2018-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <misc commands>:
	Deal with the commands that do not take a whole line as an 
	argument separately from those that do, using %other_commands 
	hash from Common.pm.  Reinstate error message for @insertcopying 
	inside @copying.

2018-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_item_line_parent): If current element 
	is an @item or @itemx, do not check the parent of the parent of 
	the current element.  This leads to a false positive for a 
	@table nested within an @enumerate.  It is possible that this 
	was intended to account for the parent element being a 
	'table_term' element, but the condition is not met in the entire
	test suite.  (The false positive was not hit in practice due to 
	_item_container_parent being called before _item_line_parent.)

2018-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%line_commands, %deprecated_commands): 
	Remove @quote-arg and @allow-recursion.
	* NEWS: Mention this change.

2018-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%misc_commands)
	(%line_commands, %other_commands): Split %misc_commands into two 
	hashes.

2018-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%misc_commands):
	Change @insertcopying argument type from 'noarg' to 'skipline'.
	* NEWS: Mention this change and the warning for @multitable.

2018-10-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line) <@multitable>: Give a warning 
	messaage for any @-command appearing on the multitable line 
	outside of a braced prototype.

2018-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/sectioning/list-of-tests: Do not run every test
	twice, once with '--html', once with '-c TEXI2HTML'.  Only use 
	the latter.

2018-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/run_parser_all.sh: Do not substitute a
	"@PATH_SEPARATOR@" sequence in the list-of-tests files.
	It is only used in one test so is not worth the complication.
	* tp/tests/sectioning/list-of-tests (test_two_include):
	Remove this test.
	
	* tp/defs.in: Do not set PATH_SEPARATOR.

2018-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/sectioning/list-of-tests:
	(no_section_no_top, no_section_no_top_no_node)
	(more_nodes_than_sections, one_node_no_node, one_node)
	(no_node_chapter_split):
	Remove.  Similar tests exist under tp/t/30sectioning.t.

2018-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/defs.in: Do not set srcdir if it is already set.

	"make distcheck" works again now.

2018-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/sectioning/list-of-tests (test_two_include): Move an 
	input file to this directory.

2018-10-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/test_utils.pl: Create the output directory for the test
	before running the conversion.  This means that if the test 
	needs to create output files, the directory to contain them will 
	exist.  It didn't exist the first time a test file was run when 
	the very first test in the file needed to create output.
	If there are conversion errors from texi2any, print them instead 
	of just printing a message "Warning: output generated".

2018-10-18  Gavin Smith  <gavinsmith0123@gmail.com>
	
	* tp/tests/formatting/list-of-tests
	(documentlanguage_set_option, documentlanguage_set_unknown):
	(formatting_documentlanguage_set_option_info)
	(formatting_split_for_format_not_split)
	Remove.
	* tp/t/92formatting.t: Add the same tests.

	* tp/tests/formatting/list-of-tests
	(simple_with_menu_docbook_info): Remove.  This tested the 
	combination of "--docbook --info" which is equivalent to just 
	"--info".

2018-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/run_parser_all.sh: Source 'defs' before setting 
	srcdir.

2018-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* README: State that we may use a range like 2008-2010 in 
	listing copyright years.  (The GNU maintainers guide requires 
	such a statement.)

2018-10-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/defs.in: Add srcdir.
	* tp/maintain/all_tests.sh (generate): Run test scripts in srcdir.

2018-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (parse_node_manual): Don't lose a leading (
	in the case of incorrectly nested parentheses.

2018-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (parse_node_manual): Set parent fields on 
	new elements.

2018-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (parse_node_manual): Overwrite the 
	contents array of the element in the main tree.

2018-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/06columnfractions.t (invalid): New test.
	* tp/Texinfo/Parser.pm (_parse_line_command_args) <@columnfractions>:
	Change regex for a valid column fraction.

2018-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_line_command_args) <@definfoenclose>:
	Add new command to %brace_commands.  This avoids having to check
	whether a command has been added with @definfoenclose in several 
	places.

2018-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/09indices.t (def_existing_index): New test.

2018-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/55conditionals.t (false_format_not_closed): New test.

2018-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_expand_macro_arguments): Avoid using a 
	regex.

2018-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/60macro.t (empty_macro_argument): New test.

2018-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <@titlepage>: Do not save
	'@author' as a global command.

2018-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_register_global_command): Remove an 
	argument.  Callers updated.

2018-10-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (labels_information): Avoiding creating 
	'extra' hash by mistake.

2018-10-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm,
	* tp/Texinfo/Common.pm (labels_information): Move to Common.pm 
	so that it can be called from tp/Texinfo/XS/parsetexi/Parsetexi.pm.

2018-10-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm,
	* tp/Texinfo/Encoding.pm,
	* tp/Texinfo/Parser.pm,
	* tp/Texinfo/Report.pm,
	* tp/Texinfo/Structuring.pm,
	* tp/Texinfo/Transformations.pm,
	* tp/Texinfo/Convert/Converter.pm
	* tp/Texinfo/Convert/DocBook.pm,
	* tp/Texinfo/Convert/HTML.pm,
	* tp/Texinfo/Convert/IXIN.pm,
	* tp/Texinfo/Convert/NodeNameNormalization.pm,
	* tp/Texinfo/Convert/Plaintext.pm,
	* tp/Texinfo/Convert/Texinfo.pm,
	* tp/Texinfo/Convert/TexinfoSXML.pm,
	* tp/Texinfo/Convert/TexinfoXML.pm,
	* tp/Texinfo/Convert/Text.pm,
	* tp/Texinfo/Convert/Unicode.pm:

	Remove generated content such as "Mention other useful 
	documentation" and "Items to export into callers namespace by 
	default" (presumably from h2xs).  Remove copyright and license 
	from POD section at ends of files, as the copyright statement is 
	at the beginning of each file.  Update copyright years.

2018-10-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (%global_multiple_commands): Remove 'author'.
	(_register_global_command): No exception for 'author'.

2018-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/sectioning/list-of-tests,
	* tp/tests/contents/list-of-tests,
	* tp/tests/indices/list-of-tests,
	* tp/tests/tex_htmlindices/list-of-tests,
	Use -c instead of --set-customization-variable, for brevity.

2018-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/indices/list-of-tests
	(split_chapter_index, index_split, index_split_nodes)
	(index_no_node, nodes_before_top, nodes_before_top_nodes)
	(nodes_before_top_no_nodes, nodes_before_top_and_sections_monolithic):
	Remove tests.

	* tp/t/95moreindices.t: Add the same tests.

	I checked test results were unchanged by running commands like:

	   T=split_chapter_index
	   (cd t/results/moreindices/$T/res_html ; for f in * ; do \
	   echo diff $f ; \
	   diff $f ../../../../../tests/indices/res_parser/$T/$f ; \
	   done )

2018-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/95moreindices.t: New test file.
	* tp/t/95moreindices.t (double_index_entry): Add.
	* tp/tests/indices/list-of-tests (double_index_entry): Remove.

2018-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/formatting/list-of-tests
	(simplest_test_prefix, simplest_test_prefix_info)
	(simplest_test_date_in_header, float_copying):
	Remove.
	* tp/t/92formatting.t: Add the same tests here.

2018-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/formatting/list-of-tests
	(split_nocopying, split_nocopying_split): Remove.
	* tp/t/92formatting.t
	(split_nocopying, split_nocopying_split): Add.

2018-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/README: Add advice about out-of-source builds.

2018-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/test_utils.pl: If -g flag is given to regenerate 
	reference test results, do so in srcdir rather than builddir.

2018-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/formatting/list-of-tests (direntry_dircategory_info_split):
	Remove.
	* tp/t/92formatting.t (direntry_dircategory_info_split): Add.

2018-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/Makefile.am (Makefile.onetst): Fix rule to work
	in out-of-source builds.

2018-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/formatting/list-of-tests (defcondx_Dbar, defcondx_Ubar):
	Remove.
	* tp/t/92formatting.t (defcondx_Dbar, defcondx_Ubar): Add.

2018-10-13  Gavin Smith  <gavinsmith0123@gmail.com>
	
	* tp/Texinfo/Parser.pm (%default_customization_values): Remove
	'GLOBAL_COMMANDS' array as it is not used anywhere.
	(_setup_parser): Do not access 'GLOBAL_COMMANDS' conf value.

2018-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Makefile.am: List files under tp/t/include_reference.
	* tp/maintain/regenerate_file_lists.pl: Do not automatically 
	generate a list of these files.

2018-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/maintain/regenerate_file_lists.pl:
	Do not generate the variable 'test_copied_include_files'.  
	Remove copyright notice from generated file as the year is 
	out-of-date.

2018-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/test_utils.pl: Remove code copying 't/include_reference'
	to build directory.  Do not include any directories in the 
	current directory in the include path.
	* tp/Makefile.am (all-local): Do not depend upon these copied files.

2018-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/test_utils.pl, tp/t/nodenormalisation.t:
	Put tp/t/include_reference in srcdir in include path.

	* tp/t/80include.t (test_paths, test_include_directories): 
	Remove tests.
	* tp/t/converters_tests.t (verbatiminclude_paths):
	test_include_directories): Remove tests.
	* tp/t/info_tests.t (image_file_search): Remove test.
	test_include_directories): Remove tests.

	* tp/maintain/regenerate_file_lists.pl: Do not generate rules to 
	copy files to tp/t/include_dir in build directory.

	This avoids the hassle of copying all the include files to the 
	build directory for out-of-source builds and avoids the 
	confusion of which of "t/include", "t/include_dir" or 
	"t/include_reference" a test file is to be added to.  This 
	feature of the test suite is not used enough IMHO to be worth 
	the complexity.

2018-10-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: Remove AM_CONDITIONAL for TEXI2HTML.
	* Makefile.am (dist-local): Remove reult for updating 
	translations for texi2html.

2018-10-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_parse_htmlxref_files) [TEST]:
	Strip leading directories from file name in order to have 
	reliable reference test results for out-of-source builds.

2018-10-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line) <@columnfractions>: Set the 
	'columnfractions' extra value to the element for the 
	@columnfractions command, rather than to the 'misc_args' array 
	of that element.  This is to make a 'misc_args' array only 
	referenced by one element, which makes it possible to free the 
	memory properly in the C rewrite.

	* tp/Texinfo/Convert/DocBook.pm (_convert),
	* tp/Texinfo/Convert/HTML.pm (_convert_tab_command),
	* tp/Texinfo/Convert/Plaintext.pm (_convert),
	* tp/Texinfo/Convert/TexinfoXML.pm (_convert): Update.

2018-10-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/README: Add more advice.

2018-09-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/test_utils.pl: Set 'TEST' to 1 for converters.

2018-09-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/htmlxref
	* tp/tests/htmlxref-only_mono,
	* tp/tests/htmlxref-only_split: Remove.
	* tp/tests/Makefile.am: Remove rules for copying htmlxref.cnf to 
	the build directory.
	* configure.ac (AC_CONFIG_FILES): Don't list Makefiles in 
	removed directories.
	* autogen.sh: Excise htmlxref and coverage subdirectories.

2018-09-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/94htmlxref.t (htmlxref_only_mono, htmlxref_only_mono_nodes)
	(htmlxref_only_split, htmlxref_only_split_nodes): Add.

2018-09-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/94htmlxref.t (htmlxref_nodes): Add test.

2018-09-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/94htmlxref.t: New file.
	* tp/t/94htmlxref.t (htmlxref): New test.

	* tp/Texinfo/Convert/HTML.pm [TEST]: If HTMLXREF is set, look 
	for file in various directories.

2018-09-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Converter/Converter.pm (%all_converter_defaults):
	Remove 'htmlxref_files' and 'FIX_TEXINFO'.  Add
	'language_config_dirs'.

	* tp/texi2any.pl: Do not set an 'htmlxref_files' configuration 
	value.  Save the 'language_config_dirs' array in the converter 
	options.
	* tp/Texinfo/Convert/HTML.pm (_load_htmlxref_files): Move code 
	here from texi2any.pl.

	* tp/texi2any.pl, tp/Texinfo/Common.pm (locate_init_file):
	Move to Common.pm.

2018-09-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl: Get class of converter from string value, 
	rather than calling ref on a subroutine.  This subroutine would
	actually be called, which is not the intention.

2018-09-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/layout/list-of-tests, tp/t/93layout.t
	(navigation_section_no_header navigation_node_no_header)
	(navigation_chapter_vertical navigation_section_vertical)
	(navigation_node_vertical navigation_chapter_no_header_vertical)
	(navigation_section_no_header_vertical)
	(navigation_node_no_header_vertical):
	Move tests to 93layout.t.

2018-09-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/93/layout.t: (navigation, navigation_no_header)
	(navigation_vertical, navigation_no_header_vertical)
	(navigation_chapter, navigation_section, navigation_node)
	(navigation_chapter_no_header): New tests.
	* tp/tests/layout/list-of-tests: Remove the same tests.

	I checked the results were the same with a script like the 
	following:

	  OTHER=../../../../../tests/layout/res_parser

	  (for d in *[^.][^.][^.]? ; do echo "CHANGING TO $d" ; pushd  \
	  $d/res_html ; for f in * ; do echo DIFFING $f ; diff $f      \
	  $OTHER/$d/$f ; done ; popd ; done ) |& less

2018-09-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/93layout.t: New file.
	* tp/t/93layout.t (no_monolithic): New test.
	* tp/tests/layout/list-of-tests (no_monolithic): Remove test.

	I checked the results were the same by running the following in
	the results directory:

	  OTHER=../../../../../tests/layout/res_parser/no_monolithic
	  for f in * ; do diff $f $OTHER/$f ; done

2018-09-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (parse_node_manual):
	Do not call trim_spaces_comment_from_content.

2018-09-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/layout/list-of-tests: Use -c instead of 
	--set-customization-variable in the interests of concision.

2018-09-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/init/chm.pm (chm_init): Do not refer to a 'misc_content' array.

2018-09-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/nested_formats/generate_all_texi.pl: Refer to 
	list-of-tests rather than tests-parser.txt.

2018-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line): Do not set 'misc_content'.

2018-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/Makefile.am (base_tests): Remove 'coverage'.

2018-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/coverage/formatting.texi
	* tp/tests/coverage/simplest.texi
	* tp/tests/coverage/f--ile.e--xt,
	* tp/tests/coverage/f--ile.jpg: Move to t/tests/layout.

	* tp/tests/layout/list-of-tests,
	* tp/tests/tex_html/list-of-tests:
	Reference formatting.texi in new location.
	* tp/tests/layout/f--ile.gif,
	* tp/tests/layout/f--ile.jpeg: Remove.

	* tp/tests/coverage/list-of-tests (formatting): Test moved from 
	here, to:
	* tp/tests/layout/list-of-tests (formatting): Here.

	This leads to "simplest.texi" being included in the output of 
	some the 'formatting_regions' test, and different image files 
	being referenced in 'formatting_regions' and 
	'formatting_docbook'.

2018-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/coverage/list-of-tests (formatting): Test moved from 
	here, to:
	* tp/tests/layout/list-of-tests (formatting): Here.

2018-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/Makefile.am: Do not generate 'coverage_macro-cr.texi'.
	It doesn't appear to be used for anything.

2018-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (_copy_tree): Change a comment.
	* tp/Texinfo/Structuring.pm (_print_root_command_texi),
	* tp/Texinfo/Transformations.pm (insert_nodes_for_sectioning_commands)
	(print_down_menus): Use 'args' instead of 'misc_content'.
	* tp/Texinfo/Transformations.pm (fill_gaps_in_sectioning): Do 
	not set 'misc_content'.

2018-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Converter.pm 
	(_sectioning_command_normalized_filename),
	* tp/Texinfo/Convert/DocBook.pm (_convert),
	* tp/Texinfo/Convert/HTML.pm
	(command_text _convert_quotation_command, output),
	* tp/Texinfo/Convert/Info.pm (_info_header),
	* tp/Texinfo/Convert/Plaintext.pm (_contents, _convert):
	Use 'args' instead of 'misc_content'.

2018-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line) <misc command>:
	Do not call _trim_spaces_comment_from_content.  This leads to a 
	change in the 'misc_args' in a few cases of invalid nesting of 
	line commands.
	(_trim_spaces_comment_from_content): Remove wrapper for
	Texinfo::Common::trim_spaces_comment_from_content.

2018-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi): Remove a comment.
	(_merge_text, _abort_empty_line, _parse_texi_regex): Add a 
	comment noting these subs have XS overrides.
	(_gather_def_item, _close_commands, _end_line, _parse_texi)
	(_gather_previous_item): Remove commented-out debugging 
	statements.

2018-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/run_parser_all.sh: Delete 'staging_res' directories 
	once finished.

2018-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/run_parser_all.sh: Don't store string 
	"raw_out_parser" in a variable.

2018-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/run_parser_all.sh: Only use flags for latex2html in 
	the latex2html tests.

2018-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/run_parser_all.sh: Put flags for latex2html inside a 
	variable so they are less distracting when reading the code.
	Use -c instead of --set-customization-variable in the interests 
	of concision.  Put code post-processing the output files in a 
	separate shell function.

2018-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line) <misc command with text argument>:
	Do not call _trim_spaces_comment_from_content.

2018-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/run_parser_all.sh: Remove some commented-out code.

2018-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Mention changes for newer versions of Perl.

2018-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/formatting/list_of_tests
	(texi_glossary, texi_bib_example, texi_cond, cond, cond_xml):
	(cond_no-ifhtml_no-ifinfo_no-iftex, cond_ifhtml_ifinfo_iftex)
	(cond_info, cond_info_no-ifhtml_no-ifinfo_no-iftex)
	(cond_info_ifhtml_ifinfo_iftex): Removed.
	* t/92formatting.t
	(texi_glossary, texi_bib_example, texi_cond, cond, cond_xml):
	(cond_no-ifhtml_no-ifinfo_no-iftex, cond_ifhtml_ifinfo_iftex)
	(cond_info, cond_info_no-ifhtml_no-ifinfo_no-iftex)
	(cond_info_ifhtml_ifinfo_iftex): Added.

2018-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (parse_texi_file): Save name of subdirectory
	containing input file.
	* tp/Texinfo/Common.pm (parse_renamed_nodes_file): Check for 
	noderename.cnf in subdirectory containing input file first.
	* t/92formatting.t (unknown_nodes_renamed): Output a file for 
	the test and use a renamed nodes file.  This restores an error 
	message that was present in the test this one replaced.

2018-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/formatting/list-of-tests
	(unknown_nodes_renamed, one_line, empty): Remove.
	* tp/t/92formatting.t
	(unknown_nodes_renamed, one_line, empty): New tests.

	* tp/maintain/regenerate_cmd_tests.sh: Wipe tests directory.
	* tp/tests/README: Do not mention wiping tests directory.  
	Explain which other files to delete.

2018-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/92formatting.t: New file.
	* tp/t/92formatting.t (one_line_no_content): New test.
	* tp/tests/formatting/list-of-tests (one_line_no_content): Remove test.

2018-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/maintain/regenerate_cmd_tests.sh: Remove code dealing with 
	"texi" as a special test case name.  Do not use separate '$arg' 
	and '$name' variables in the test scripts.

2018-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/PlainTexinfo.pm: Do not pass a 
	'FIX_TEXINFO' value into Texinfo.pm.
	* tp/Texinfo/Convert/Texinfo.pm (convert, _expand_cmd_args_to_texi):
	Remove '$fix' argument.
	* tp/t/fix_texinfo.t: Remove test.

	* doc/texinfo.texi (Other Customization Variables): Remove 
	'FIX_TEXINFO'.

	* NEWS: 'FIX_TEXINFO' customization variable has been removed.

2018-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line): Reparent an empty argument 
	of a block command to the contents before possibly processing a 
	float command, instead of after.
	(_parse_float_type): Allow args to be undefined.  Do not use
	_trim_spaces_comment_from_content.

2018-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_line_command_args): Do not call
	_trim_spaces_comment_from_content.

2018-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_isolate_last_space): Isolate the last 
	space on a misc_line_arg if it has a 'type' set, including
	'empty_line_after_command'.

2018-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_isolate_last_space): Simplify code by 
	taking out conditionals that are common to two blocks.

2018-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <@sortas>: Don't call
	_trim_spaces_comment_from_content.

2018-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <@U>: Don't call
	_trim_spaces_comment_from_content.
	* t/02coverage.t (invalid_U): Add use of @U with whitespace 
	surrounding argument.

2018-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <@errormsg>: Don't call
	_trim_spaces_comment_from_content.
	* t/02coverage.t (test_errormsg): Add use of @errormsg with 
	whitespace surrounding error message.

2018-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <',' seen for inline commands>:
	Use text in 'args' directly instead of calling 
	_trim_spaces_comment_from_content.

2018-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/run_parser_all.sh: Remove all code dealing with a 
	test case specially if its name was 'texi'.
	* tp/tests/README: Don't mention a 'texi' special case.

2018-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/formatting/list-of-tests (texi_glossary):
	Define test using '-c TEXINFO_OUTPUT_FORMAT=plaintexinfo'.  This 
	leads to an extra error message due to more processing taking 
	place after '-c DUMP_TEXI=1' would have been processed.

2018-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/README: Explain how to run tests with run-parser-all.sh.

2018-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/formatting/list-of-tests
	(texi_bib-example, texi_cond, texi_ignore_and_comments):
	Define tests using '-c TEXINFO_OUTPUT_FORMAT=plaintexinfo'.

2018-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/nested_formats/list-of-tests (texi, texi_nested_formats):
	Rename test and use '-c TEXINFO_OUTPUT_FORMAT=plaintexinfo' to
	get a macro-expanded Texinfo output instead of using the special
	test name "texi".  This means that the output will have the 
	".txi" extension instead of "texi", and in the out_parser_info
	directory, the output format will be info instead of texi.

2018-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl: Allow '-c TEXINFO_OUTPUT_FORMAT' to override 
	'-c TEXI2HTML'.

2018-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/README: Update to mention list-of-tests file.

2018-09-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%no_brace_commands): Add '&'.
	(%brace_commands): Add 'ampchar'.
	* tp/Texinfo/Convert/Converter.pm
	(%defaul_xml_commands_formatting): Add 'ampchar'.
	* tp/Texinfo/Convert/TexinfoXML.pm (%commands_formatting): Add 
	'&', 'ampchar'.
	* tp/Texinfo/Convert/Text.pm (%text_brace_no_arg_commands): Add 
	'ampchar'.
	* tp/Texinfo/Convert/Unicode.pm (%unicode_map): Add 'ampchar'.
	* tp/Texinfo/XS/misc.c (xs_parse_texi_regex),
	* tp/Texinfo/Parser.pm (_parse_texi_regex): Include & as a 
	single letter command.

	* tp/t/19def.t (ampchar): New test.

	* util/texinfo.dtd: Add 'ampchar'.
	* configure.ac (TEXINFO_DTD_VERSION): Increase to '6.4dev'.

	* doc/texinfo.tex (\ampchar): Define.

	* doc/texinfo.texi (Inserting an Ampersand): New section.

	* NEWS: Mention @&, @ampchar{}.

2018-09-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi):
	Do not set a 'spaces_after_command_elt' value.
	(_abort_empty_line): Do not clear a 'spaces_before_argument_elt' 
	value.
	* tp/Texinfo/XS/misc.c (xs_abort_empty_line): Make the same change.

2018-09-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_start_empty_line_after_command):
	Do not set a 'spaces_after_command_elt' value.
	(_abort_empty_line): Do not clear a 'spaces_after_command_elt' value.
	* tp/Texinfo/XS/misc.c (xs_abort_empty_line): Make the same change.

2018-09-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/maintain/regenerate_cmd_tests.sh: Less indirection in test 
	scripts.

2018-09-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_remove_empty_content_arguments):
	Remove function.
	(_register_command_arg): Remove function.
	(module documentation section): Remove mention of 
	'block_command_line_contents'.
	(_end_line): Do not set or access 'block_command_line_contents' 
	extra value.

	This is intended to simplify the parse tree.  Reducing 
	duplication of information makes it easier to track what data 
	leads to output at later stages of processing.  It reduces 
	memory use and may increase speed.  It makes it easier to 
	inspect data structures that are "dumped" to a text stream.  It 
	is also easier to handle memory allocation in a rewrite in 
	another programming language if the data structures are less 
	cyclic.

2018-09-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/91morecoverage.t: New file.
	* tp/t/91morecoverage.t (texi_formatting, formatting_fr):
	New tests.
	* tp/tests/coverage/list-of_tests (texi, formatting_fr): Remove.
	Moving some tests into the test framework under tp/t is intended
	to reduce the running time for the tests.
	* tp/tests/README: Add advice on deleting a test.

2018-09-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/README: Add a note about how to check test results.

2018-09-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/maintain/regenerate_cmd_tests.sh,
	* tp/tests/run_parser_all.sh:
	Rename file with the specifications of tests to be run from
	'tests-parser.txt' to 'list-of-tests'.

2018-09-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/DocBook.pm (_convert):
	Do not use the 'block_command_line_contents' array: use the 
	'args' array directly.

2018-09-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_convert)
	<@quotation, @item, @listoffloats>:
	Do not use the 'block_command_line_contents' array: use the 
	'args' array directly.

2018-09-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_quotation_arg_to_prepend):
	Do not use the 'block_command_line_contents' array: use the 
	'args' array directly.

2018-09-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_convert_item_line_command),
	* tp/Texinfo/Convert/TexinfoXML.pm (_convert):
	Do not use the 'block_command_line_contents' array: use the 
	'args' array directly.

	* tp/Texinfo/Parser.pm (_end_line): Include an inserted 
	'command_as_argument' element in the 'args' with the type 
	'command_as_argument_inserted'.
	* tp/Texinfo/Convert/Texinfo.pm (@ignored_types): Ignore
	'command_as_argument_inserted'.
	(_expand_cmd_args_to_texi): Avoid outputing a comma after an 
	ignored element.

	* tp/Texinfo/Common.pm: Remove mention of 
	'block_command_line_contents' from a comment.

2018-09-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_isolate_last_space): Remove useless 
	argument.  Callers updated.
	(module documentation section): Remove mention of 
	'space_at_end_block_command'.
	* tp/Texinfo/Convert/TexinfoXML.pm (_index_entry): Remove code 
	stripping final whitespace.
	(_convert): Remove a commented-out statement for debugging.

2018-09-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_isolate_last_space): For all element
	types except 'menu_entry_node', store trailing spaces as a 
	'spaces_after_argument' value.  This was already done for
	'brace_command_arg'.

	* tp/Texinfo/Convert/Texinfo.pm (convert, _expand_cmd_args_to_texi):
	Check for and output these spaces.

	* tp/Texinfo/Convert/Converter.pm (_end_line_or_comment): Look 
	for these spaces in new location.
	* tp/Texinfo/Convert/Converter.pm (_convert_argument_and_end_line):
	Replace with two new subroutines, one in DocBook.pm, one in
	TexinfoXML.pm.  This allows end-of-line spaces to continue to be 
	ignored in DocBook output.

	* tp/Texinfo/Convert/TexinfoXML.pm (_end_line_spaces): Check for 
	end-of-line spaces in new location.
	(_convert): Check for and output 'spaces_after_argument' in a 
	few places.

2018-09-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/TexinfoXML.pm (_index_entry): Remove
	trailing spaces from the text of an index entry.

2018-09-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/TexinfoXML.pm (_convert) <def line>: Remove 
	trailing spaces from bracketed terms.

2018-09-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Converter.pm (_end_line_or_comment): Do
	not call _tree_without_comment.
	* tp/Texinfo/Convert/TexinfoXML.pm (_texinfo_line):
	Do not call _tree_without_comment.
	* tp/Texinfo/Convert/Converter.pm (tree_without_comment): Remove.

2018-09-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_isolate_last_space): If @c or @comment 
	is the last in the line, remove it from the 'args' and store it
	as 'comment_at_end' extra value.

	* tp/Texinfo/Convert/TexinfoXML.pm ():
	(_end_line_spaces): Do not handle the case of a comment being in 
	the 'args'.
	(_convert) <@item or @itemx in @table>: Check for and output a 
	comment.

	* tp/Texinfo/Convert/Converter.pm (_end_line_or_comment)
	(_tree_without_comment, _convert_argument_and_end_line):
	Meaning of arguments changed.  Check for a comment in the new 
	location.  Callers updated.

	* tp/Texinfo/Convert/Texinfo.pm (_expand_cmd_args_to_texi): 
	Check for and output a comment.

2018-09-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line) <@multitable>:
	Call _isolate_last_space.

2018-09-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_abort_empty_line): Always get the
	element that refers to the space element through the 'command'
	value.  This saves the trouble of looking at $current, 
	$current->{'parent'}, $current->{'parent'}->{'parent'} etc.
	Delete the 'spaces_after_command_elt' value properly.
	(_parse_texi): Set 'command' on created 
	'empty_spaces_before_argument' elements.
	* tp/Texinfo/XS/misc.c (xs_abort_empty_line): Make the same 
	change.

2018-09-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_start_empty_line_after_command):
	Refer to spaces element at start of line as
	'spaces_after_command_elt' instead of 'spaces_after_command'.
	Refer back to the main element for the command as 'command'.
	(_abort_empty_line): Use 'command' extra value to find an 
	element that refers to the spaces element
	as 'spaces_after_command'.  If found, change the reference to 
	the element to a reference to a simple string.  This was already
	done for 'spaces_before_argument_elt' but is now done for 
	'spaces_after_command_elt' too.
	* tp/Texinfo/XS/misc.c (xs_abort_empty_line): Make the same change.

	* tp/Texinfo/Structuring.pm (new_block_command),
	* tp/Texinfo/Transformations (fill_gaps_sectioning):
	Update to store spaces after the command in 'spaces_before_argument'.

	* tp/Texinfo/Convert/TexinfoXML.pm (_leading_spaces, _convert):
	Update to access 'spaces_after_command'.

	* tp/Texinfo/Common.pm (move_index_entries_after_item):
	Insert a newline in the 'spaces_before_argument' value if it is 
	present.

	* tp/Texinfo/Convert/Texinfo.pm (_expand_cmd_args_to_texi):
	Output a space in 'spaces_before_argument' if it is present.

	* tp/t/collect_spaces.t: Test removed.

2018-09-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi, _close_brace_command),
	* tp/Texinfo/Convert/Texinfo.pm (_expand_cmd_args_to_texi),
	* tp/Texinfo/Convert/TexinfoXML.pm (_convert):
	Save the delimiter character of @verb as the 'delimiter' extra
	value, instead of putting in 'type'.

2018-09-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (module documentation): Update.

2018-09-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/TexinfoXML.pm (_convert),
	* tp/Texinfo/Convert/DocBook.pm (_convert): Leave an 
	'empty_line_after_command' element alone just as 
	'empty_spaces_after_command' is left alone.

2018-09-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/maintain/regenerate_cmd_tests.sh: Do not print diffs if
	perl exited with a non-zero exit status, as the diffs will be 
	out of date and this could hide a syntax error.

2018-09-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_def): Update 'parent' on
	elements of a 'def_aggregate'.

2018-09-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_def): Leave an 
	'empty_line_after_command' element alone just as 
	'empty_spaces_after_command' is left alone.

2018-09-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/maintain/all_tests.sh <generate>: Use "set -e" to make
	script stop if a test script stops.

2018-09-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_def): Set 'parent' on 
	'def_aggregate' element.

2018-09-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_def, _split_def_args)
	(_split_delimiters): Set 'parent' on new elements.

2018-08-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line): Do not set 'def_args'
	extra value.

2018-08-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/TexinfoXML.pm (_convert),
	* tp/Texinfo/Convert/DocBook.pm (_convert): Use the def args in
	the main tree instead of the 'def_args' extra array.

2018-08-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_def): Include inserted content on
	def line in main tree.
	* tp/Texinfo/Convert/Texinfo.pm (convert): Ignore this inserted 
	content when converting back to Texinfo.

2018-08-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_def, _split_def_args),
	* tp/Texinfo/Convert/TexinfoXML.pm (_convert): Give inserted 
	elements at front of def line the types 'bracketed_inserted'
	and 'spaces_inserted' instead of 'bracketed_def_content' and
	'spaces'.

2018-08-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Text.pm (_convert),
	* tp/Texinfo/Convert/Plaintext.pm (_convert),
	* tp/Texinfo/Convert/HTML.pm (_convert_def_line_type):
	Refer to 'def_parsed_hash' instead of 'def_args'.

2018-08-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (definition_arguments_content)
	(definition_category): Refer to 'def_parsed_hash' instead
	of 'def_args'.

2018-08-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_def): Copy the element label in
	a 'def_args' pair into the 'def_role' extra value on the 
	element.

2018-08-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_def): Collect adjacent 
	non-whitespace elements into a 'def_aggregate' element and
	make this change in the main tree as well as in the 'def_args'
	array.

2018-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_def): Use the same hashes in the
	main tree as in the def_args array for the arguments on a
	@def* line.  This means that delimiter characters are in their 
	own elements now.

2018-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_def): Change the type
	of final spaces elements to 'spaces_at_end'.  This leads to
	the spaces being ignored in some output formats.
	(_next_bracketed_or_word): Remove unused.
	* tp/Texinfo/Convert/TexinfoXML.pm (_convert) <def commands>:
	Strip off a final newline.

2018-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_split_delimiters): New function.
	(_parse_def): Do not produce def_args array via an intermediate
	array of a similar format.  Use "map" with _split_delimiters to
	place [](), in separate elements, before processing the 
	arguments on the line.

2018-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_def): Reorder some code.

2018-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_split_def_args): New function.
	(_parse_def): Use "map" with _split_def_args to create the
	array of def line contents.  This does all at once what
	_next_bracketed_or_word did across all the times it was called.
	(_next_bracketed_or_word): Collect elements from the array that
	has already been processed.

2018-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Structuring.pm (new_block_command)
	* tp/Texinfo/Parser.pm (_parse_texi, _end_line):
	Do not set 'command' extra value on 'empty_line_after_command'
	or 'empty_spaces_after_command'.

2018-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/TexinfoXML.pm (_convert): Remove 
	conditional block that checks for a raw formatting command (e.g.
	@html if --html is given to texi2any) that is being expanded.  
	It appears that this code is never executed as an earlier clause
	of the "if" statement is executed if this format is being expanded.

2018-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <CLOSED raw>: Do
	not add a 'command' extra value on the 'empty_line_after_command'.

2018-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line) <after @end verbatim>:
	Do not use 'command' extra value to check if we are after
	@end verbatim.

2018-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl: Set top_srcdir as well as top_builddir in case
	these are not defined.  This compensates for a recent change in
	Texinfo::ModulePath.

2018-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm
	(parse_def): Split up text elements in the main tree into 
	separate elements.  This means in most cases, the elements in 
	the 'def_args' hash and the elements in the main tree will be 
	the same.  (The exceptions are when "(" or ")" is split into a 
	"delimiter" element in def_args, and when there is trailing 
	whitespace on a line before the LF.)
	(next_bracketed_or_word): Include any trailing newline in the 
	returned values.
	(parse_def): Avoid adding elements with a trailing newline to 
	'def_args'.

	This change should only affect the main tree, not the value of 
	the 'def_args' hash, or the output from any of the converters.
	It is intended to reduce duplication of information in the parse 
	tree, and to make handling of allocated memory simpler in the C 
	replacement for this module.

2018-08-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/htmlxref.cnf: Remove gcj, info.  Add cvs.  Report from 
	Ineiev <ineiev@gnu.org> and Thérèse Godefroy <godef.th@free.fr>.

2018-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/xspara.c (xs_unicode_text, xs_process_text):
	Use static buffers to avoid memory leaks.

2018-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/xspara.c (xspara_get_pending, xspara_add_pending_word)
	xspara_end, xspara_add_next, xspara_add_text): Save storage for 
	text buffers in static variables to avoid memory leak.
	* tp/Texinfo/XS/text.c (text_reset): New function.

2018-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/misc.c (xs_parse_texi_regex): Retain all memory
	allocated on the heap in static pointers.  Perl does not free 
	them, as when SV's are initialized with sv_setpv, the data 
	pointed to is copied, not the pointer itself.  This memory leak 
	is visible with valgrind, e.g. run TEXINFO_XS=debug PERL_DESTRUCT_LEVEL=2 valgrind --log-file=val.log --leak-check=full perl -w t/02coverage.t commands

2018-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Makefile.am (EXTRA_DIST) Do not distribute tp/Makefile.PL 
	or tp/MANIFEST.
	* tp/Texinfo/XS/Makefile.am: Do not distribute Makefile.PL,
	MANIFEST or prepare_standalone_perl_module.sh.

	This is to reduce confusion about whether these files are needed 
	for "make dist".

2018-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/README: Clarify purpose of regenerate_file_lists.pl.  Do 
	not mention prepare_perl_module_files.sh.

2018-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS: Run "gnulib --add-import strndup".

2018-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS: Run "gnulib --add-import iconv".
	* tp/Texinfo/XS: Run "gnulib --add-import strchrnul".

2018-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS: Put subdirectories 'lib' and 'm4' inside new 
	subdirectory 'gnulib' (as is done in the top-level gnulib 
	import).
	* tp/Texinfo/XS/Makefile.am (AM_CPPFLAGS, ACLOCAL_AMFLAGS, SUBDIRS)
	(EXTRA_DIST),
	* tp/Texinfo/XS/configure.ac (AC_CONFIG_MACRO_DIR, AC_CONFIG_FILES):
	Update.

2018-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Makefile.am (AM_LOG_T_FLAGS): Remove -I flags.

2018-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XSLoader.pm (_find_file): Skip @INC hooks.

2018-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/configure.ac (AC_CONFIG_FILES):
	Add parsetexi/Makefile.
	* tp/Texinfo/XS/Makefile.am (SUBDIRS): Add parsetexi.

2018-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/ModulePath.pm.in: Add 'parsetexi' directory to 
	@INC.
	<TEXINFO_XS_PARSER environment variable set>: Add a subroutine 
	to @INC to override Texinfo::Parser with Parsetexi.pm.

2018-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl <finding version number>: Refer to 
	Texinfo::Common instead of Texinfo::Parser.

2018-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl: Do not check for module files relative to the
	installed location.

2018-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/ModulePath.pm.in: Do not account for the case of 
	one of $top_builddir and $top_srcdir being set but not the 
	other.

2018-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/Makefile.am: Do not install TestXS.pm, as this 
	is useless.

2018-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl: Only call fileparse once (used for both 
	finding modules and translation files).  Do not add a directory 
	to @INC that Texinfo::ModulePath takes care of adding.  Add a 
	comment.

2018-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* autogen.sh: Initialise tp/Texinfo/XS directory.

2018-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac (xs_srcdir): Update path from XS builddir to 
	srcdir.
	* tp/Texinfo/XS/fail.pl: update path to TestXS module.

2018-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XS/Makefile.am (modulesdir): Change to new 
	location.
	(CLEANFILES, EXTRA_DIST, xs_LTLIBRARIES): Add MiscXS files.
	(MiscXS_la_CFLAGS): Define.

	* tp/Texinfo/MiscXS/MiscXS.pm,
	* tp/Texinfo/MiscXS/miscxs.h,
	* tp/Texinfo/MiscXS/misc.c: Move to tp/Texinfo/XS.
	* tp/Texinfo/MiscXS: Remove subdirectory.

	* tp/Texinfo/ModulePath.pm.in: Refer to Texinfo/XS instead of 
	Texinfo/MiscXS.

	* tp/Makefile.am (SUBDIRS, DIST_SUBDIRS): Remove Texinfo/MiscXS.
	* configure.ac: Do not configure in tp/Texinfo/MiscXS.

2018-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph, tp/Texinfo/XS:
	Move subdirectory. This is intended to be a subdirectory for all 
	XS modules and to remove the duplication that exists between
	tp/Texinfo/Convert/XSParagraph and tp/Texinfo/MiscXS.

	* configure.ac,
	* tp/Makefile.am,
	* tp/Texinfo/Convert/Paragraph.pm,
	* tp/Texinfo/ModulePath.pm.in,
	* tp/Texinfo/XS/XSParagraph.xs,
	* tp/Texinfo/XS/TestXS.pm:
	Refer to Texinfo/XS subdirectory instead of 
	Texinfo/Convert/XSParagraph and namespaces beginning 
	"Texinfo::XS" instead of "Texinfo::Convert::XSParagraph".

2018-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-test.inc: Do not check whether the terminal needs 
	to be reset with stty, because the command that caused this 
	problem ("read -t") is not being used any more.

2018-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/01use.t: Inline file tp/t/manual_tree.pl.

2018-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/ModulePath.pm.in (init): Remove subroutine 
	prototype.
	* tp/Texinfo/ModulePath.pm.in (import): Wrap 'init' to allow 
	using module with "use Texinfo::ModulePath".

2018-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/01use.t, tp/t/02coverage.t, tp/t/03coverage_braces.t, 
	tp/t/04verb.t, tp/t/05paragraph.t,
	tp/t/06columnfractions.t, tp/t/08misc_commands.t, tp/t/09indices.t,
	tp/t/10menu.t, tp/t/16raw.t, tp/t/181quotation.t, tp/t/18itemize.t,
	tp/t/19def.t, tp/t/20preformatted.t, tp/t/21multitable.t,
	tp/t/22xtable.t, tp/t/25regions.t, tp/t/27float.t, tp/t/28heading.t,
	tp/t/30sectioning.t, tp/t/50value.t, tp/t/55conditionals.t,
	tp/t/57invalid_nestings.t, tp/t/58alias.t, tp/t/60macro.t,
	tp/t/70value_and_macro.t, tp/t/80include.t, tp/t/accents.t,
	tp/t/automatic_menus.t, tp/t/automatic_nodes.t, tp/t/collect_spaces.t,
	tp/t/converters_tests.t, tp/t/do_master_menu.t, tp/t/docbook_tests.t,
	tp/t/fix_texinfo.t, tp/t/html_tests.t, tp/t/index_before_item.t,
	tp/t/info_tests.t, tp/t/languages.t, tp/t/nodenormalization.t,
	tp/t/paragraph.t, tp/t/plaintext_tests.t,
	tp/t/protect_character_in_texinfo.t, tp/t/reference_to_text_in_tree.t,
	tp/t/test_brace_count.t, tp/t/test_fill_gaps_in_sectioning.t,
	tp/t/test_is_content_empty.t,
	tp/t/test_protect_hashchar_at_line_beginning.t, tp/t/test_sort.t,
	tp/t/test_tree_copy.t, tp/t/xml_tests.t:
	Add "use lib '.'" to add current working directory to @INC, the 
	Perl module include path.  This directory is not present in @INC 
	in recent versions of Perl, which makes running tests from the 
	command-line (like "perl -w t/02coverage.t") difficult.  Require 
	Texinfo::ModulePath to add all the other required directories to 
	@INC.  As tp/Texinfo/ModulePath.pm is generated in the builddir, 
	this should work for out-of-source builds.

2018-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/01use.t: Use Texinfo::ModulePath.

2018-08-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (parser): Remove code allowing calling 
	this function in an object-oriented way.

2018-08-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (parser, duplicate_parser): Move code out 
	for duplicating an existing parser to a new function.
	* tp/Texinfo/Convert/HTML.pm (output) <renamed nodes>: Call 
	'duplicate_parser'.

2018-08-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%default_parser_state_configuration):
	Remove 'gettext' and 'pgettext'.
	* tp/texi2any.pl ($parser_default_options): Remove 'gettext' and 
	'pgettext'.
	* tp/Texinfo/Parser.pm (%parser_default_configration_subs):
	(%parser_default_configration_no_subs): Remove.  There are no
	subroutines in the parser configuration any more.
	(_setup_parser_default_configuration): Remove.
	(parser, simple_parser): Call dclone directly instead of 
	_setup_parser_default_configuration.  Do not check for CODE 
	values on the parser hash object when duplicating a parser.
	(_setup_conf): Do not check for CODE values on the parser hash 
	object when copying a parser configuration.
	(MODULE DOCUMENTATION SECTION): Remove mention of 'gettext' 
	configuration.
	* tp/Texinfo/Common.pm (warn_unknown_language, warn_unknown_split):
	Do not take a 'gettext' argument.  Callers updated.
	* tp/Texinfo/Report.pm (new): Do not set 'gettext' or 'pgettext' 
	on object.
	* tp/Texinfo/Convert/Converter.pm (converter): Do not set 
	'gettext' or 'pgettext' on object.

2018-08-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (__, __p): Copy functions from 
	texi2any.pl.  Place these in @EXPORT.
	(%default_parser_state_configuration): Refer to __ and __p
	for 'gettext' and 'pgettext' instead of stub functions.
	* t/test_utils.pl: Call Locale::Messages::bindtextdomain for 
	'texinfo' domain as well as 'texinfo_document'.
	* tp/texi2any.pl (__, __p): Remove definitions.

	* tp/Texinfo/Report.pm (__, __p): Do not take a first argument 
	that is a parser object.  Do not look at 'gettext' and 
	'pgettext' configuration values: call the functions in 
	Locale::Messages directly.

	* tp/Texinfo/Common.pm,
	* tp/Texinfo/Structuring.pm,
	* tp/Texinfo/Parser.pm,
	* tp/Texinfo/Convert/Converter.pm,
	* tp/Texinfo/Convert/Docbook.pm,
	* tp/Texinfo/Convert/HTML.pm,
	* tp/Texinfo/Convert/IXIN.pm,
	* tp/Texinfo/Convert/Info.pm,
	* tp/Texinfo/Convert/Plaintext.pm,
	* tp/Texinfo/Convert/TexinfoXML.pm:
	Do not call __ or __p as methods on a parser object: use the
	functions exported from Common.pm instead.

	The only effect of this change should be in the test suite where 
	the default stub values for 'gettext' and 'pgettext' were used 
	for Texinfo.  This should have no user-visible effect.  The name 
	of the translation domain ("texinfo") is no longer set from the 
	name of the package in texi2any.pl, but this was already 
	hard-coded in Texinfo/Report.pm.

2018-08-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/test_utils.pl (test): Avoid method call syntax for 
	calling Texinfo::Parser::parser.

2018-08-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Customization Variables for @-Commands):
	Mention that these variables are not passed on to TeX.  Comment 
	out commands that only do anything for TeX.  Report from Karl.

2018-08-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_parse_node_and_warn_external):
	Call 'parse_node_manual' from Texinfo::Common instead of 
	Texinfo::Parser.

2018-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Report.pm (gdt): Remove unused call to pgettext.

2018-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/60macro.t (line_after_recursive_call): New test.

2018-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Transformations.pm (_new_node): Call 
	'parse_node_manual' from Texinfo::Common instead of 
	Texinfo::Parser, and do not call Texinfo::Parser::register_label.

2018-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%default_parser_state_configuration):
	Do not allow customizing the root parser context.
	* tp/Texinfo/Parser.pm (parser, simple_parser, _parse_texi): 
	Hard-code '_root' as the root context.
	* tp/t/accents.t (test_accent_stack, test_enable_encoding):
	Do not set 'context' on created parser.  Allow for an extra 
	level of element nesting on the tree returned from the parser.

2018-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_register_label): Remove a useless 
	variable assignment.  Remove an unused argument.  Do not return 
	a value.

2018-08-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Infokey-config: Use C-x for aborting in echo area in 
	test suite.
	* info/t/echo-area-no-completions.sh,
	* info/t/index-apropos.sh: Update.

2018-08-07  Vitezslav Crhonek <vcrhonek@redhat.com>  (tiny change)

	* info/info.c (get_initial_file) <man page fallback>: Avoid
	leaking memory.

2018-08-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-test.inc (run_ginfo, timeout_test): Record process 
	ID of background process that does the timing out, and kill this 
	process if ginfo exited first.

2018-08-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infomap.c (default_emacs_like_ea_keys)
	(default_vi_like_ea_keys): Remove ineffectual key bindings.
	Remove key bindings for sequences beginning with ESC, as these 
	have not worked since ESC was made an abort key.  Remove binding 
	for "C-x o" as it is not possible to escape the echo area any 
	more.  Remove bindings for SPC and ? which are self-inserting.

2018-08-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc: File removed.  All contents moved into
	Init-test.inc.

2018-08-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc (init_interactive_test): New function,
	containing commands that were at the top-level of this file.

2018-08-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc (run_ginfo): Run ginfo inside a subshell 
	with parentheses instead of using "sh -c".  This enables the use 
	of "$@" and avoids the need for an extra level of quoting when 
	calling run_ginfo.  Time out the process outside of the 
	subshell.

2018-08-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/echo-area-no-completions.sh: New test.

2018-08-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/echo-area.c, info/session.c (pause_or_input):
	Move to session.c.  Do not pause if there is already buffered 
	input waiting.

2018-08-07  Vitezslav Crhonek <vcrhonek@redhat.com>  (tiny change)

	* info/echo-area.c (info_read_completing_internal): Avoid memory leak.

2018-07-13  Niko Tyni <ntyni@debian.org>  (tiny change)

	Perl 5.28 introduced thread-safe locales, where 'setlocale'
	only affects the locale of the current thread. External code
	like 'mbrtowc' isn't aware of this thread specific locale,
	so we need to explicitly modify the global one instead.
	
	Without this we could enter a busy loop in xspara__add_next
	(Texinfo::Convert::XSParagraph) for UTF-8 documents when mbrtowc
	returned -1.

	* tp/Texinfo/Convert/XSParagraph/xspara.c (xspara_init)
	[Perl version >= 5.28]: Call 'switch_to_global_locale' and 
	'sync_locale'.

2018-07-13  Niko Tyni <ntyni@debian.org>  (tiny change)

	* tp/Texinfo/Parser.pm (_parse_special_misc_command) <@clickstyle>:
	Escape braces in regex to be compatible with recent Perl 
	versions.

2018-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Transformations.pm (_reference_to_arg):
	Refer to 'args' array instead of 'brace_command_contents'.
	(Makes a couple of tests failing since 2017-10-29 pass.)

2018-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_convert):
	When checking if a node name in a cross-reference includes a
	`.', do not include in the check any manual name that may have 
	already been stored inside the paragraph formatter.  Rical Jasan 
	reported that an error message mentioning the "node name" would 
	be given for output like "(gcc.info)Debugging Options" which is 
	confusing as the `.' is not in the node name "Debugging 
	Options".  (bug-texinfo 2018-02-09)

2018-06-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_node_of_tag_ext): Always call 
	node_set_body_start regardless of the value of 
	preprocess_nodes_p.  Benno Schulenberg reported that searching 
	commands could find matches in the node information line if the 
	use set "hide-note-references=On".

2018-06-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\pdfgettoks): Add a comment.

2018-03-10  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/texinfo.tex, contrib/psfonts-bronger.tex: Replace 
	"write-file-hooks" with "before-save-hook".
	See https://lists.gnu.org/r/bug-gnulib/2018-03/msg00008.html.

2018-01-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Mention js/ subdirectory.
	* js/README: Explain how to get git history of this project and 
	refer to some background info on the web.

2018-01-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\definefontsizexi, \definefontsizex):
	Add new set of fonts \sevenrm, \seventt, \sevenbf, \sevenit,
	\sevensl, \sevensf \sevensc, \seventtsl, \seveni, \sevensy.
	(\resetmathfonts): Use them for math mode superscript.
	Vincent Lefevre reported that @var didn't work in superscript in 
	math mode (bug-texinfo, 2017-11-27).

2018-01-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\assignfonts): Add a comment explaining 
	purpose of \ifont and \syfont.

2017-12-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\setupmarkupstyle): Remove conditionals used 
	for checking "markup styles in effect".  They are not used 
	anywhere.

2017-12-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\codequoteright, \codequoteleft): Check if we 
	are still in a monospace font in case we are inside @r, like
	@code{@r{`}}.  Report from rms.

2017-12-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\resetmathfonts): Revert last change.  Wrong 
	font used in footnote superscripts reported by Mohammad Akhlaghi.

2017-12-18  Bruno Haible  <bruno@clisp.org>

        * util/htmlxref.cnf: Use https for sourceware.org, puszcza.gnu.org.ua,
        gcc.gnu.org, www.complang.tuwien.ac.at, www.gmplib.org, www.gnupg.org,
        ftp.gwdg.de, www.nano-editor.org, cran.r-project.org, tug.org.
        Update info for avl, flex, myserver, readline.

2017-12-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/htmlxref.cnf: Use https instead of http for links to 
	manuals on gnu.org.  Report from Bruno Haible.

2017-12-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\resetmathfonts): Define \scriptfont and 
	\scriptscriptfont in addition to \textfont.  Vincent Lefevre 
	reported that @var didn't work in superscript in math mode
	(bug-texinfo, 2017-11-27).

2017-11-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\enddoublecolums): Correct a conditional 
	checking \pagetotal.

2017-11-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\balancecolumns): If it appears that we have
	been called on to balance too much material for the final page 
	of the double column material, output some of it using 
	\doublecolumnout and leave remainder on current page.
	Otherwise, two problems occurred with the output: first, that
	the material on the last page of the index extended too low on 
	the page (see "Final page of index hard to balance" case in
	texinfo-tex-test.texi); and second, a blank page could occur 
	before the final page of the index (report from Arnold Robbins) 
	(this happened because of marks output in \savemarks and 
	\restoremarks).
	
	(\enddoublecolumns): Only change the output routine back to the 
	usual one and reset all the formatting variables if no extra 
	material has been added to the current page.  Otherwise, repeat.

2017-11-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\pagesizes): Add one inch to height and width 
	so that text will still fit on the page if @pagesizes is used
	with a small width.  Report from Christopher Diemech
	2017-10-12.

2017-10-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi): Remove all calls to
	_register_command_arg that added elements to 
	'brace_command_contents' array.  Look at 'args' instead
	of 'brace_command_contents'.
	(_remove_empty_content_arguments): Do not check for a 
	'brace_command_contents' array.
	(module documentation section): Remove mention of
	brace_command_contents.
	* tp/Texinfo/Report.pm (_substitute): Do not look at
	'brace_command_contents' array.
	* tp/Texinfo/Convert/Converter.pm (_table_item_content_tree):
	Do not call _register_command_arg.

	The effect of this change is to make the parse tree less cyclic,
	which should make it easier to understand, for example when it 
	is printed.  It may also reduce memory use.

2017-10-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/DocBook.pm (_convert):
	Use 'args' array instead of 'brace_command_contents' array.

2017-10-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_image),
	* tp/Texinfo/Convert/IXIN.pm (output_ixin),
	* tp/Texinfo/Convert/HTML.pm (_convert_explained_command, output):
	Use 'args' array instead of 'brace_command_contents' array.

2017-10-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_convert)
	(_image_formatted_text, _image):
	Use 'args' array instead of 'brace_command_contents' array.

2017-10-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/TexinfoXML.pm (_convert): Check if array 
	elements are defined to avoid creating them accidentally.

2017-10-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/TexinfoXML.pm (_convert): Replace use
	of 'brace_command_contents' array in the 'extra' hash with
	the 'args' in the main tree.

2017-10-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_isolate_last_space): For 
	'brace_command_arg' only, save trailing spaces in 
	'spaces_after_argument' extra value instead of adding a 
	'spaces_at_end' element to the main tree.
	* tp/Texinfo/Convert/TexinfoXML.pm (_convert),
	* tp/Texinfo/Convert/Texinfo.pm (_expand_cmd_args_to_texi):
	Update to look at 'spaces_after_argument' after an argument to
	a brace command.
	* tp/Texinfo/Convert/Converter.pm
	(_collect_leading_trailing_spaces_arg): Check for a
	'spaces_after_argument' record to find trailing spaces.

2017-10-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/TexinfoXML.pm (_leading_spaces_arg): Remove 
	unused.

2017-10-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/MiscXS/misc.c (xs_abort_empty_line): Update to
	match Perl implementation.
	* tp/Texinfo/Parser.pm (import): Re-enable XS overrides.

2017-10-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi): Rename reference to spaces 
	element from 'spaces_before_argument' to 'spaces_before_argument_elt'.
	(_abort_empty_line): Replace 'spaces_before_argument_elt' value
	with 'spaces_before_argument', a simple string value.
	(_close_current),
	(_parse_texi) <new line>: Call '_abort_empty_line' to remove 
	spaces element.

	* tp/Texinfo/Convert/Converter.pm
	(_collect_leading_trailing_spaces_arg),
	* tp/Texinfo/Convert/Texinfo.pm (convert, _expand_cmd_args_to_texi),
	* tp/Texinfo/Convert/TexinfoXML.pm (_leading_spaces_before_argument):
	Access 'spaces_before_argument' as a string value.

2017-09-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_abort_empty_line): Change code to
	keep track of which element refers to space element in its
	'extra' hash.  No functional change intended.

2017-09-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_abort_empty_line): Change the name of a 
	variable.  Use a variable to simplify the code.

2017-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_abort_empty_line): Remove
	'empty_spaces_before_argument' element from main tree.
	(import): Temporarily disable XS overrides.
	(_parse_texi) <new line>: Remove an 
	'empty_spaces_before_argument' element.
	Otherwise it will not be removed in '_abort_empty_line' because 
	a 'new_line' element is in the way.
	Do not call '_abort_empty_line' for a continuation with @ inside
	a def command, as this leads to an 'empty_spaces_before_argument'
	element being removed when it was not before.
	(close_current) <bracketed>: Remove an 
	'empty_spaces_before_argument' element.  This happens for some 
	cases of malformed input.

	* tp/Texinfo/Convert/Texinfo.pm (convert, _expand_cmd_args_to_texi):
	Check for a 'spaces_before_argument' extra value, and output the 
	spaces in it.
	* tp/Texinfo/Convert/TexinfoXML.pm (_leading_trailing_spaces_arg):
	Call _leading_spaces_before_argument to check for 
	'spaces_before_argument' extra value.
	
	* tp/t/test_tree_copy.t: Disable all tests, temporarily.
	* tp/Texinfo/Convert/Converter.pm
	(_collect_leading_trailing_spaces_arg): Check for 
	'spaces_before_argument' extra value.

	The effect of this change is to make the parse tree less cyclic,
	which should make it easier to understand.

2017-09-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <after ',' separating arguments>:
	Save 'spaces_before_argument' on element corresponding to argument.
	* tp/Texinfo/Convert/TexinfoXML.pm (_convert): Call 
	_leading_spaces_before_argument instead of _leading_spaces_arg.  
	This uses the 'spaces_before_argument' element we saved in 
	'_parse_texi'.

2017-09-22  Mathieu Lirzin  <mthl@gnu.org>

	* Makefile.am (CLEANFILES): Remove $(noinst_SCRIPTS) to
	keep 'pre-inst-env' when doing 'make clean'.

2017-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <'{' seen>: Set 
	spaces_before_argument on element for the argument itself, not 
	for the element corresponding to the command, which is the 
	parent element.
	* tp/Texinfo/Convert/TexinfoXML.pm (_convert): Allow 'spaces' 
	attribute to be set for the element output for the first 
	argument to a brace command.

2017-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/maintain/change_perl_modules_version.pl: Account for 
	letters after version number.

2017-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: Increase version to 6.5dev.

2017-09-22  Mathieu Lirzin  <mthl@gnu.org>

	* build-aux/pre-inst-env.in: New file, for launching programs 
	from build directory.
	* Makefile.am (noinst_SCRIPTS, CLEANFILES): Add pre-inst-env.

2017-09-16  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/texinfo.tex: Use 'https' in preference to 'http' in comments.

2017-09-12  Gavin Smith  <gavinsmith0123@gmail.com>

	6.5 release.
	* configure.ac, NEWS, util/texi2dvi, util/texi2pdf,
	doc/refcard/txirefcard.tex: Version number.

Copyright 2017, 2018 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.
