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.
