2017-09-12  Gavin Smith  <gavinsmith0123@gmail.com>

	6.5 release.
	* configure.ac, NEWS, util/texi2dvi, util/texi2pdf,
	doc/refcard/txirefcard.tex: Version number.

2017-09-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* pretest 6.4.92
	* configure.ac: Update version.

2017-09-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Makefile.am (AM_T_LOG_FLAGS): Add "-I .".
	* tp/tests/run_parser_all.sh: Add "-I ." to perl invocations.
	Attempt at getting tests to work if . is not in @INC.  Report 
	from Patrice Dumas.

2017-09-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infokey.c (compile): Support "1 menu-digit" in .infokey
	file in case this default binding is disabled for some reason.
	Clark Wang reported that "1 menu-digit" didn't work.

2017-08-29  Patrice Dumas  <pertusus@free.fr>

	* autogen.sh: update regeneration of tests makefile fragment to
	match the change in tp/Makefile.am associated with the removal
	of "long tests" in 2016-10-23.

2017-08-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/pseudotty.c: Open slave end of pseudoterminal outside of 
	a conditional block so that it will be open even if that block 
	is not executed.  Otherwise we could fail to turn off the 
	special interpretation of some characters (C-u, C-s) to the 
	terminal in time, leading some tests to fail.  Assaf Gordon 
	reported test failures for several platforms.

2017-08-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* pretest 6.4.91
	* configure.ac: Update version.

2017-08-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Add a couple of news items.

2017-08-25  Mathieu Lirzin  <mthl@gnu.org>

	* tp/Texinfo/Convert/HTML.pm (_default_node_redirection_page)
	(_default_begin_file): Move '$encoding' to the top of the '<head>'
	element.  This removes a warning in recent browsers that check if
	the encoding declaration is present in the first 1024 bytes of the
	file.  See
	https://www.w3.org/TR/html5/document-metadata.html#character-encoding-declaration

2017-08-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\entry): When splitting the text across 
	multiple lines, do not simply set \leftskip and \parindent to 
	values, alter the existing values instead.  Otherwise, long 
	entries in a table of contents would not be indented properly, 
	because \leftskip had been set to a positive value.  Arnold 
	Robbins reported that this happened for the gawk manual.  Add or 
	change some comments.

2017-08-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\partentry): Add stretch and a bonus for 
	breaking the page before the part heading in the table of 
	contents.  Arnold Robbins reported that the page could be broken
	immediately after the part heading, which separated it from the 
	entry for the first chapter in that part, which didn't look 
	good.

2017-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* po_document: Run fix-translations.sh.
	* tp/t: Update test results.

2017-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* po_document/fix-translations.sh: Add file.

2017-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/maintain/change_perl_modules.sh: Get version number from
	configure.ac instead of from Makefile, as then Makefile doesn't
	have to be regenerated before it runs.  (Otherwise, there could
	be a failure in 'make distcheck' due to a version number 
	mismatch.)

2017-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Text.pm (@ISA). Add Texinfo::Convert::Converter.
	Report from Randall Sawyer 2017-07-31.

2017-07-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl <DUMP_TREE>: Check if tree is defined, as 
	happened before.

2017-07-31  Randall Sawyer  <strandallsawyer@hushmail.me>  (tiny change)

	* tp/texi2any.pl: Exchange two conditional blocks, so that we 
	check if 'DUMP_TREE' was given as an option before 'parse' being 
	the output format, so that

	  makeinfo -c DUMP_TREE=1 -c TEXINFO_OUTPUT_FORMAT=parse document.texi

	works to dump the parse tree, as mentioned in the comments at 
	the end of Parser.pm.

2017-07-31  Randall Sawyer  <strandallsawyer@hushmail.me>  (tiny change)

	* tp/texi2any.pl (%formats_table)
	<textcontent, rawtext, plaintexinfo>: Change to use 'module' 
	value instead of a 'converter' value so that these values for 
	TEXINFO_OUTPUT_FORMAT work again.
	* tp/Texinfo/Convert/Text.pm: Add missing 'use File::Basename' line.

2017-07-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl (%formats_table): Remove 'debugcount' section
	as the corresponding module doesn't exist any more.

2017-07-23   Alexis Bienvenüe <pado@passoire.fr>  (tiny change)

	* tp/Texinfo/Common.pm (expand_today):
	Honour the SOURCE_DATE_EPOCH environment variable to get a 
	reproducible @today value for info output when it is set.
	See https://reproducible-builds.org/specs/source-date-epoch/.

2017-07-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* gnulib/m4/intlmacos.m4: Add this file, as gettextize doesn't 
	copy it.

2017-07-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* pretest 6.4.90
	* configure.ac: Update version.  Add dist-xz to options.

2017-07-10  Gavin Smith  <gavinsmith0123@gmail.com>

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

2017-07-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/Makefile.am (wwwdoc-build): Remove commands that could
	build the "info" manual.

2017-07-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Update with various news items.

2017-07-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_find_subfile): When looking for an 
	already-loaded file, check that the names match either exactly, 
	or as an initial substring followed by a period.  Previously,
	any loaded file which had an initial substring that was the name 
	of the sought file would be accepted, which would be incorrect
	for a case like "libc.info-11" matching when it was "libc.info-1"
	that was wanted.  Vitezslav Crhonek reported that this could 
	lead to failure when following cross-references.

	* info/t/subfile-initial-match.sh: New test.

2017-07-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_get_node_with_defaults): Only use the
	directory from the current node's fullpath if this function was 
	passed a filename as an argument.

2017-07-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c
	(get_filename_and_nodename, info_get_node_with_defaults):
	Merge get_filename_and_nodename into caller.

2017-07-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (build_tags_and_nodes): Call 'skip_node_separator'
	in order not to start reading the tag table in the middle of an
	"Indirect:" string.

2017-07-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_load_file): If calling 
	'build_tags_and_nodes' didn't set the 'tags' array for the file 
	buffer, fail to load the file.
	* info/info.c (add_initial_nodes): Check if info_load_file failed.

	* info/t/malformed-split.sh: New test.

2017-07-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc (run_ginfo): Shorten a comment.

2017-07-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_find_file): Do not convert the filename to 
	lowercase and check for it again if a file was not found.

	Note added 2017-08-30: This change was made for code 
	simplification, and not to fix anything.  The thinking behind 
	the original code was to support a case-insensitive filesystem
	that was mounted in a way that was not case-insensitive.

2017-07-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/inc-sea-bs.sh: New test.

2017-07-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/search.c (regexp_search): Call free_matches if the regex
	could be compiled, but there were no matches.  Free a string
	buffer used for displaying an error message.
	* info/session.c (info_search_in_node_internal): Do not call
	free_matches.  It could be called on uninitialised data leading
	to a crash if the regex had an error in it.  Marco Maggi reported
	a crash for incremental search when a single \ was entered.

2017-07-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (sorted_index_filter): Remove code to list files 
	created with bibtex, as then xref_files_changed requires them to 
	exist (since change on 2017-06-21) and they won't if bibtex is 
	not being used.  Report from Daniel Gerbet.

2017-07-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\unicodechardefs):
	Define U+25C7 as \diamond and remove definitions for U+25A1,
	U+2A1D, U+2201, U+2127, U+21BE, U+2290, U+22B4, and U+22B5 which 
	didn't work.  (Benno Schulenberg reported that U+25C7 didn't 
	work.)

2017-07-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <@image>: Save 
	'input_perl_encoding' value on @image element.
	* tp/Texinfo/Convert/Plaintext.pm (_image_text): Use it instead
	of looking at the current value of INPUT_PERL_ENCODING.

2017-07-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi_file): Set the parent key on 
	a created 'preamble' element.

2017-07-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/configure.ac (fetch_conf): Put
	all sed commands within an environment variable, 'sed_script'.
	Assign 'sed_script' from a double-quoted string, using shell 
	variables to include awkward characters.  This avoids there 
	being multiple level of quoting present which can be extremely 
	confusing, i.e., autoconf's quadrigraphs, quoting within the 
	backquoted string where sed is called, as well as sed's own 
	escaping of special characters.

	* tp/Texinfo/MiscXS/configure.ac (fetch_conf): Make the same 
	change.

2017-07-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/c-u-m-x-scroll-forward.sh, info/t/inc-sea-insensitive.sh, 
	info/t/search-split-after-index.sh, info/t/split-footnotes.sh, 
	info/t/star-note-non-whitespace.sh, info/t/tab-argument.sh, 
	info/t/xref-across-lines.sh: Quote argument to run_ginfo so that 
	quoting characters are preseved in the subshell that execs ginfo.

2017-07-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/xref-across-lines-2.sh: New test.

2017-07-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (scan_reference_label): Canonicalize the 
	whitespace in the nodename, otherwise links can't be followed if 
	the nodename is split across a line.

2017-06-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Converter.pm (_register_command_arg):
	Copy function here from Parser.pm.
	(_table_item_content_tree): Call it.

2017-06-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <menu>: Don't store
	a list of menus in 'unassociated_menus' array.
	* tp/Texinfo/Transformations.pm (_reassociate_to_node)
	(set_menus_to_simple_menu): Remove checks of 
	'unassociated_menus' array.

2017-06-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <macro expansion>:
	Add a check for the return value of _text_to_lines being empty.

2017-06-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/html_tests.t (simple_menu): Add @node and @top commands
	so that the menu is inside a node.

2017-06-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Transformations.pm (fill_gaps_in_sectioning): Call 
	Texinfo::Structuring::section_level to get sectioning level
	(used in tp/t/test_fill_gaps_in_sectioning.t).

2017-06-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_section_level),
	* tp/Texinfo/Structuring.pm (section_level): Move function to
	Structuring.pm.

2017-06-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi): Do not add 'level' value
	on sectioning commands.
	* tp/Texinfo/Structuring.pm (sectioning_structure): Add 'level' 
	value on element.
	* tp/Texinfo/Convert/HTML.pm (_convert_heading_command),
	* tp/Texinfo/Convert/Text.pm (heading):
	Account for the case when 'level' is not set.
	* texi2any.pl: Remove a comment.

2017-06-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line) <@copying>: Removing handling
	of INLINE_INSERTCOPYING variable.  Also remove from the module 
	documentation section at the end of the file.
	(%default_customization_variables): Remove INLINE_INSERTCOPYING.
	* tp/Texinfo/Parser.pm (@variable_string_settables)
	(@obsolete_variables): Move 'INLINE_INSERTCOPYING' to 
	@obsolete_variables.
	* tp/t/plaintext_tests.t (inline_copying_inline_and_paragraph):
	Remove.
	* NEWS: Mention removal.
	* doc/texinfo.texi (Other Customization Variables) 
	<INLINE_INSERTCOPYING>: Remove.

2017-06-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_text_to_lines): Do not return an array 
	containing a single empty string if the input is an empty 
	string; instead, return a completely empty array.  This means
	that parse_texi_line does not get as far into parsing for an
	empty input.
	
2017-06-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm <root commands>: Do not associate a @part 
	command with a following sectioning command if another @part 
	command appears first.  This means there is no special support
	for @part pages following each other immediately.

2017-06-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Timeout-test.inc,
	* info/t/Init-test.inc (timeout-test): Move code to timeout the
	test to a shell function.

2017-06-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc (run_ginfo): Time out test by running a 
	subshell in the background that kills the current shell inside 
	an "sh -c" command, and execing the ginfo program.  Do not use a 
	FIFO to communicate that the process has finished.

	* info/t/Timeout-test.inc: Do not use "read -t" to read from a 
	FIFO with a timeout.  Use the "wait" shell builtin to wait for
	the process to finish.

	* info/t/Init-test.inc (cleanup): Eliminate use of SUBSHELL,
	TIMED_OUT and FINISHEDFIFO variables.

2017-06-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc (run_ginfo): Remove use of pgrep to get 
	PID of process.  Get PID of ginfo process by running a subshell 
	with "sh -c", printing the value of $$ (the shell PID), and then
	exec'ing the ginfo program.

2017-06-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfor/Parser.pm, tp/Texinfo/Common.pm
	(complete_indices, _complete_indices): Move function to 
	Common.pm and rename.

2017-06-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line) <@verbatiminclude>: Save 
	value of 'input_perl_encoding' on the element.
	* tp/Texinfo/Common.pm (expand_verbatiminclude): Use the
	saved value of 'input_perl_encoding' instead of looking at
	'INPUT_PERL_ENCODING' conf value.

2017-06-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_get_node_with_defaults): Remove code that
	fell back to a man page.  This got in the way of the code in
	info_get_info_help_node that fell back to info-stnd.info if 
	info.info couldn't be loaded.  Also, this code is called from 
	many places where falling back to a man page would definitely 
	not be what was wanted, so removing the manpage fallback option 
	makes the program more robust and easy to understand.
	* NEWS: Mention info will not try to fall back to a man page if
	it failed to follow a cross-reference.

2017-06-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_convert) <def commands>:
	Change "@tie{ }" to "@tie{}" in document strings passed to gdt.
	* tp/Texinfo/Parser.pm (_parse_texi) <closing a brace command>:
	Don't check if we are being called from gdt and the closed 
	command was @tie.

2017-06-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi): Remove debugging code
	to dump parse tree every time a new line is read.

2017-06-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: Increase version to 6.4dev.  Remove "dist-xz" 
	option.

2017-06-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Change some instructions and remove some 
	others.

2017-06-23  Gavin Smith  <gavinsmith0123@gmail.com>

	6.4 release.
	* configure.ac, NEWS, util/texi2dvi, util/texi2pdf,
	doc/refcard/txirefcard.tex: Version number.
	* configure.ac (TEXINFO_DTD_VERSION): Change to 6.4.

2017-06-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (sorted_index_filter) <latex input>: Don't
	print the name of a *.fls recorder file, as then 
	'xref_files_changed' would require one to exist, which it may 
	not.

2017-06-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (xref_files_changed): Call 'sorted_index_files'
	to get a list of the sorted index files that should exist, and
	if any of them are missing, go around another cycle of 
	processing.

2017-06-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (filter_files): Comment changed.
	(add_all_filter): Do not print the argument of the file, so 
	using this with filter_files only prints secondary files.
	(add_all_filter, sorted_index_filter): Rename.
	(sorted_index_files): New function.
	(all_files): Use sorted_index_files instead of add_all_filter.

	No functional changes intended.

2017-06-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/TODO: Mention that some checks for incorrect nesting
	is done already.

2017-06-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Report.pm (gdt): Set an 'in_gdt' flag
	on the parser.
	* tp/Texinfo/Common.pm (%default_parser_state_configuration):
	Allow 'in_gdt' as a config value.
	* tp/Texinfo/Parser.pm (_parse_texi): Avoid issuing an error
	message in a couple of situations when being called from 'gdt'.
	(It would be thrown away anyway.)  This avoids the need for the 
	error message to be translated, so is slightly faster.

2017-06-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Report.pm (gdt): Remove code dealing with a
	'translated_paragraph' argument.  Condense code dealing
	with subroutine arguments to a single line.

2017-06-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Paragraph.pm: Remove check for UTF-8 locale 
	that runs "locale -a".
	xspara_init in tp/Texinfo/Convert/XSParagraph/xspara.c does its 
	own check which should be enough.

2017-06-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/MiscXS.pm: Remove check for UTF-8 locale, as
	"locale -a" can be slow to run (about 4.5 seconds on my computer 
	after disk caches are cleared), and tp/Texinfo/MiscXS/misc.c may
	not need it.  (Reverses change on 2017-03-12.)

2017-06-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* pretest 6.3.92
	* configure.ac: Update version.

2017-06-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (find_node_from_tag): Remove some unused 
	variables.

2017-06-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/configure.ac,
	* tp/Texinfo/Convert/XSParagraph/Makefile.am,
	* tp/Texinfo/MiscXS/configure.ac,
	* tp/Texinfo/MiscXS/Makefile.am:
	Change name of conditional from HOST_IS_WINDOWS to 
	HOST_NEEDS_NO_UNDEFINED.  Suggestion from Ken Brown.

2017-06-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* Texinfo/Convert/XSParagraph/configure.ac,
	* Texinfo/MiscXS/configure.ac: Check for cygwin when setting 
	HOST_IS_WINDOWS conditional.

2017-06-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/configure.ac,
	* tp/Texinfo/MiscXS/configure.ac: Copy code for HOST_IS_WINDOWS
	Automake conditional from top-level configure.ac.

	* tp/Texinfo/MiscXS/Makefile.am,
	* tp/Texinfo/Convert/XSParagraph/Makefile.am: Only put 
	-no-undefined -lperl in AM_FLAGS on MS-Windows systems.
	Li Er reported that linking against libperl is not necessary,
	and it won't work if perl is not built with a shared libperl
	library.

2017-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex
	(\dotheinsertindexentrybox, \dotheinsertentrybox)
	(\dotheinsertindexentryboxwithpenalty, \dotheinsertentryboxwithpenalty)
	(\insertindexentrybox, \insertentrybox)
	(\entryindexbox, \entrybox): Rename.

	(\dotheinsertentryboxwithpenalty): Simplify by not using 
	\aftergroup.  Move constant string definition outside of macro.
	Remove useless \long prefix from definition.

2017-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\finishentry, \dotheinsertindexentrybox):
	Use a control sequence \dotheinsertindexentrybox instead of 
	calling \insertindexentrybox and \entrywidowpenalty.  Do not 
	open a new group and then use \entrywidowpenalty to close the 
	group, (\entrywidowpenalty could be \let either to \egroup or 
	our macro \indexwidowpenalty which itself closed the group), as 
	this requires the reader of the code to understand the 
	definition of \entrywidowpenalty to follow what is going on.  No 
	functional changes intended; this change is for clarity only.
	(\entrywidowpenalty, \indexwidowpenalty): Remove.
	(\dotheinsertindexentryboxwithpenalty): Code from 
	\indexwidowpenalty moved here.  This is one possible value
	for \dotheinsertindexentrybox.
	(\printindex): Use \dotheinsertindexentryboxwithpenalty for
	\dotheinsertindexentrybox.  Do not set a value for 
	\entrywidowpenalty.

	(\printindex, \indexinputprocessing): Split code that checks the 
	first token of the next line into a new macro.  This should 
	improve clarity.

2017-06-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (scan_reference_label): Save filename
	and nodename components of the label separately.
	(scan_node_contents): Move code dealing with xrefs ending in
	"::" into this function out of 'scan_reference_target'.  Do
	not call 'info_parse_node' to get the filename and nodename
	of the target from the 'label' field; use the data that was
	already saved in 'scan_reference_label' instead.  Add a comment
	about possibly ill-formed xrefs.

	This change is to simplify the code slightly, and shouldn't
	result in any significant functional changes.

2017-05-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (info_short_help): Move right-hand column of 
	descriptions so that a word in an example in the left-hand 
	column doesn't line up with the edge of the right-hand column.

2017-05-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (info_short_help): Change "options" to 
	"frequently-used options" and remove documentation of several 
	options: --dribble, --raw-escapes, --no-raw-escapes, --restore,
	--strict-node-location, --vi-keys, --debug.  (All of these are
	still documented in full in the manual.)  Only show one example
	of loading a manual for the Info program.  Reformat one example.
	Remove a blank line from the output.

	* info/t/help.sh: Update.

2017-05-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@code): Fix grammar.  Change "variable such 
	as" to "variables, such as", and add commas around other uses of
	"such as".

2017-05-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@emph @strong): Make output of example 
	Texinfo code consistent with the input, as was the case before
	2012-09-06.  Inconsistency reported by Matan Nassau.

2017-05-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (tree_search_check_node) <no more matches>: Add
	the "Top" node to the window history, instead of using a
	menu entry in the current node (as the current node may not
	have a menu).  Otherwise, if a tree search was rooted at a node
	without a menu, 'active_menu' would be left with an invalid 
	value, leading to a crash if it was used again when the user did 
	a 'tree-search-next' command.  Report from Benno Schulenberg.

2017-05-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (info_short_help): Remove full stops from the ends 
	of lines describing options.

2017-05-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_xref_item): Give an error message if
	there are no cross-references in the node, to be consistent
	with 'menu-item'.  This happened in Texinfo 5.2 and earlier.
	Report from Benno Schulenberg.

2017-05-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Custom Key Bindings): Correct '\xr' to 
	'^xr'.  Report from Benno Schulenberg.

2017-05-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* pretest 6.3.91.
	* configure.ac: Update version.

2017-05-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (window_delete_window): Call 'free_matches' and 
	free 'search_string' field in order to avoid a memory leak.
	* info/t/close-window-after-search.sh: New test.

2017-05-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_search_in_node_internal): Call
	free_matches even after a failing search in order to avoid a 
	memory leak.

2017-05-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS (info): Add items about setting style variables and 
	--vi-keys.

2017-05-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infodoc.c (replace_in_documentation): Remove code
	setting variables whose value is no longer used anywhere.

2017-05-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS (info): Add item about the handling of Info files
	with CR-LF line endings.

2017-05-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infodoc.c (replace_in_documentation): Use functions 
	operating on a struct text_buffer object to keep track of
	whether there is enough space in the output buffer.
	Benno Schulenberg reported that there would be an out-of-bounds
	write when a message reporting an index match was output if the
	binding of ',' had been changed away from 'next-index-match'.

2017-05-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infodoc.c (replace_in_documentation): Explicitly compare 
	a pointed-to character to the only character value it can be 
	equal to other than null, for clarity.  Move code near other 
	code that uses the same variables.  Change comment for a special
	case to make it easier to ignore, and move the default case 
	before the conditional for the special case.  No functional 
	changes.

2017-05-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infodoc.c (replace_in_documentation):
	Remove code to handle numbers before command name, like
	"\\[6next-line]" meaning "M-6 M-x next-line", as it is not used 
	anywhere, and this simplifies the code.

2017-05-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/cr-tag-table.sh: Remove test.
	* info/t/inc-sea-bs-after-strip-cr: Remove test.

2017-05-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c, info/filesys.c (convert_eols): Function moved 
	between files.  Change arguments and modify text in place.  Do
	not realloc the buffer to make it smaller.
	* info/filesys.c (filesys_read_info_file)
	[__MSDOS__, __MINGW32__]: Call convert_eols and realloc buffer.
	This reinstates call that was removed on 2014-10-24, except now 
	it is MS-DOS/Windows only.

	* info/nodes.c (find_node_from_tag): Remove most of the code
	here that deals with conversion of end-of-lines, including
	code updating pointers to node contents in currently-displayed 
	windows.
	* info/nodes.c (adjust_nodestart): Do not take extra argument 
	giving the slack to search for a node.
	* info/nodes.h (N_EOLs_Converted): Remove.

	This reverses changes made on 2014-12-29.  Although there has 
	not been a report of any problems with this code, it is too 
	complicated and difficult to understand for what it achieves 
	(allow reading Info files whether CR bytes before LF bytes are 
	counted in the tag table or not).  It updates global data across 
	the program which could cause problems in the future if there 
	are changes elsewhere in the program.

2017-05-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_next_text):
	Do not strip \r from end of line.  This reverses the change
	on 2017-04-29.
	* tp/tests/test_scripts/coverage_formatting_cr.sh,
	* tp/tests/coverage (formatting_cr): Remove test.
	texi2any does not support CR LF line endings on GNU/Linux.
	* tp/tests/coverage/formatting_cr.texi: Removed.

2017-05-17  gettextize  <bug-gnu-gettext@gnu.org>

	* gnulib/m4/gettext.m4: New file, from gettext-0.19.8.
	* gnulib/m4/iconv.m4: Upgrade to gettext-0.19.8.
	* gnulib/m4/lib-ld.m4: Upgrade to gettext-0.19.8.
	* gnulib/m4/lib-link.m4: Upgrade to gettext-0.19.8.
	* gnulib/m4/lib-prefix.m4: Upgrade to gettext-0.19.8.
	* gnulib/m4/nls.m4: New file, from gettext-0.19.8.
	* gnulib/m4/po.m4: New file, from gettext-0.19.8.
	* gnulib/m4/progtest.m4: New file, from gettext-0.19.8.

2017-05-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* gnulib: run gnulib-tool to import 'gettext-h' module instead
	of 'gettext' module, as the 'gettext' module is deprecated in 
	Gnulib. run gettexize again to put the files back.

2017-05-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Node Commands) <global-prev-node>: Change 
	'forward or down' to just 'forward'.

2017-05-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Node Commands) <goto-node>:
	Re-write, describing completion and selection of nodes in other 
	files separately.  The old text implied that you could select a 
	node in another file without using a filename if that file had 
	been loaded already in the current Info session.
	Benno Schuleberg noticed that the text contained the phrase
	"the Info file of the other file", which was wrong.

2017-05-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Node Commands) <global-next-node>: Change 
	'forward or down' to just 'forward'.  Explain that the menu is 
	checked before the Next pointer, rather than the other way 
	around as it incorrectly stated.  Benno Schulenberg reported 
	that this was documented to happen the wrong way around.  In 
	addition, correct description of what happens when neither a 
	menu or a Next pointer is present.

2017-05-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Mention to always run change_perl_modules.sh
	even if it is a pretest release, as this is needed now there is
	module version checking.

2017-05-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infomap.c (default_vi_like_info_keys),
	* doc/info-stnd.texi (Custom Key Bindings):
	Bind 'b' to 'scroll-backward-page-only' instead of 
	'scroll-backward' for consistency with f, C-f and C-b.

2017-05-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (point_backwards_word): Remove unused variable.

2017-05-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_down_line, info_up_line): Call
	_scroll_backward and _scroll_forward with argument so that it
	possible for scrolling to change node, depending on the value
	of 'scroll-behaviour'.
	(mouse_event_handler): Call _scroll_backward and _scroll_forward
	instead of info_down_line, info_up_line so that mouse scrollwheel
	scrolling continues to be confined to an single node.
	* NEWS: Mention that 'down-line' and 'up-line' are affected by
	the value of 'scroll-behaviour'.

2017-05-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (infokey format): Add missing documentation 
	for 'C-x p' for 'prev-node' under --vi-keys.  Correct bindings
	of 'g' and 'G' to 'first-node' and 'last-node' respectively.
	* info/infomap.c (default_vi_like_info_keys): Re-add 'C-x n' for
	'next-node' (removed accidentally on 2014-06-10).

	Reports from Benno Schulenberg.

2017-05-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\xrdef): Place a \gdef using a \csname
	within a group to avoid save stack build-up for long aux files.

2017-05-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (info_next_index_match): Remove full stop from 
	end of message.  (Missed on 2017-05-13.  Report from Benno 
	Schulenberg.)

2017-05-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/sesson.c (point_backward_char): Change return type to int
	and return 0 on failure.  Make sure we always go backwards.
	(point_backward_word): Use point_backward_char to simplify code.

	This continues the fix of the bug of the point getting stuck
	at the start of a node (partially fixed on 2017-05-11).

2017-05-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Xref Commands, Parts of an Xref)
	(Selecting Xrefs): Change 'cross reference' to 'cross-reference'.

2017-05-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Variables) <scroll-last-node>: Remove full 
	stop from a quoted message.

2017-05-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (calculate_line_starts, window_compute_line_map):
	Add a comment and cast return value of a function to void to 
	make it clear that the return value is being discarded.

2017-05-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (info_index_search, info_next_index_match),
	* info/indices.h (APROPOS_NONE),
	* info/info-utils.c (copy_converting),
	* info/info.c (get_initial_file, add_initial_nodes, init_messages),
	* info/infodoc.c (describe_key, info_where_is),
	* info/m-x.c (info_execute_command),
	* info/session.c
	(menu_digit, info_menu_or_ref_item, info_follow_menus)
	(forward_move_node_structure, backward_move_node_structure)
	(info_view_file, dump_nodes_to_file, info_print_node)
	(info_toggle_regexp, info_search_internal)
	(tree_search_check_node, tree_search_check_node_backwards)
	(wipe_seen_flags, dispatch_error): Remove full stop from end
	of messages given to the user.  Inconsistent use of full stops
	reported by Benno Schulenberg.

2017-05-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (infokey format): Correct documentation of
	key binding for 'select-reference-this-line' command under --vi-keys.

2017-05-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (point_forward_char): Make sure that we always 
	advance the position of the point on the display.  The point 
	could get stuck at the very start of a node if the 'nodeline' 
	variable was set to 'pointers'.  Report from Benno Schulenberg 
	on 2017-04-27.

2017-05-03  Jason Hood  <jadoxa@yahoo.com.au>

	Allow style variables to be described and set.
	(Patch originally submitted 2017-01-29 on bug-texinfo.)

	* info/variables.c (rendition_variable): Remove.
	(rendition_choices): New variable.
	(info_variables): Use rendition_choices for the style variables.
	(rendition_to_string): New variable.
	(describe_variable, set_variable, set_variable_to_value): 
	Special handling for style variables.

2017-05-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: When checking for Perl XS support, set
	TEXINFO_XS environment variable in order to get more
	information printed (and also to negate any pre-existing
	definition for this variable).

2017-05-01  Eli Zaretskii  <eliz@gnu.org>

	* tp/Texinfo/MiscXS/misc.c (xs_unicode_text): Fix a typo in a
	comment.

2017-04-30  Eli Zaretskii  <eliz@gnu.org>

	* info/terminal.c [HAVE_TERMCAP_H]: Don't take this branch for
	MinGW, as some MinGW ports of ncurses install termcap.h in
	addition to ncurses/termcap.h.

	* tp/Texinfo/Convert/XSParagraph/xspara.c [_WIN32]: Include
	ctype.h, to work around MinGW compilation errors due to Gnulib
	replacement of wint_t type.
	(iswspace, iswupper) [_WIN32]: Rename to call w32_iswspace and
	w32_iswupper, to avoid conflicts with system headers, due to
	Gnulib replacement of wint_t type.
	(iswupper) [_WIN32]: Copy argument from wint_t variable to a
	wchar_t variable, which is what GetStringTypeW expects.

	* tp/Texinfo/MiscXS/misc.c [_WIN32]: Include ctype.h, to work
	around MinGW compilation errors due to Gnulib replacement of
	wint_t type.
	(xs_unicode_text): Use dTHX to avoid perl error about undefined
	"my_perl" due to Perl's 'malloc' being used.

2017-04-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_next_text): Strip \r from end of line.
	This produces changes in the results of the
	test_scripts/coverage_formatting_cr.sh test.  (Eli Zaretskii
	reported that the results of this test were different under 
	MinGW on MS-Windows.)

2017-04-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi_regex),
	* tp/Texinfo/MiscXS/misc.c (xs_parse_texi_regex): Do not
	consider any whitespace other than space, tab or newline
	to be a possible Texinfo command.

2017-04-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (tree_search_check_node)
	(tree_search_check_node_backwards): Adjust failure message 
	according to whether a search match was previously found.  
	Suggestion by Benno Schulenberg.

2017-04-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (display_process_line): Avoid possibly
	dereferencing a null pointer.  This could happen if the 
	'match-rendition' value was set to an empty value in .infokey.
	Report by Benno Schulenberg.

2017-04-26  Benno Schulenberg  <bensberg@justemail.net>  (tiny change)

	* info/session.c (info_tree_search): Mark a message for 
	translation and add note for translators.

2017-04-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_search_internal): Search starting node at 
	most twice in order to be able to find matches before starting 
	offset in starting node.  Otherwise searches do not wrap around 
	the first and last nodes in a file if all the matches are in a 
	single node.  Report from Benno Schulenberg.

2017-04-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/tests/texi2dvi_empty_text.sh: Remove test, as it does not
	work if TeX is not installed.  Report by Assaf Gordon.

2017-04-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* pretest 6.3.90.
	* configure.ac: Update version.  Add dist-xz to options.

2017-04-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* texindex/ti.twjr,
	* info/info.c,
	* tp/texi2any.pl: Copyright 2017.

2017-04-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* po/POTFILES.in: Remove info/tilde.c and add 
	tp/Texinfo/Convert/Text.pm.

2017-04-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Macro Details): Mention possibility of 
	interchanging a macro and a conditional.

2017-04-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* Makefile.am (po-check): Change parsetexi/ to tp/parsetexi.

2017-04-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_complete_indices): New function.
	* tp/Texinfo/Structuring.pm (do_index_keys): Move code from
	do_index_keys to _complete_indices to complete index entries for 
	@defop and similar, and also code to set the 'in_code' value for 
	index entries.
	* tp/Texinfo/Parser.pm (_parse_texi): Call it after parsing
	the whole input.
	* tp/Texinfo/Structuring.pm, tp/Texinfo/Parser.pm
	(_non_bracketed_contents): Move function to Parser.pm.

	* tp/texi2any.pl: Do not call do_index_keys.  This avoids a 
	duplicate error message for an empty index entry sort key.

2017-04-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/maintain/regenerate_cmd_tests.sh: In test scripts generated 
	in tp/tests/test_scripts directory, include a comment saying
	it is a generated file

2017-04-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XSLoader.pm: Add more debugging messages.

2017-04-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Inserting Quotation Marks): Include sort 
	keys for two index entries (< and <<).

2017-04-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* Makefile.am, README-hacking: Remove mention of 'long-checks',
	as these don't exist anymore.

2017-04-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Makefile.am: Correct the name of an included file in a 
	comment.

2017-04-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/maintain/regenerate_docstr.sh: Use Makefile in build 
	directory to build .gmo files.  Report from Hans Bernhard-Bröker.

2017-04-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/MiscXS.pm: Call Texinfo::XSLoader::init with the
	real name of the package with the XS routines.

2017-04-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm,
	* tp/Texinfo/Parser.pm,
	* tp/Texinfo/Convert/Unicode.pm:
	Move calls to Texinfo::XSLoader::override to a custom 'import'
	method, wrapping the one from the Exporter module, instead of 
	occurring inside a UNITCHECK block.  This is to try to work
	on older versions of Perl where UNITCHECK didn't exist.

2017-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

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

2017-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* po_document/LINGUAS: Add cs, da.

2017-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Update instructions for updating translation
	files.

2017-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac, README-hacking: Change instructions for
	upgrading gettext.

2017-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Add news items.

2017-04-14  gettextize  <bug-gnu-gettext@gnu.org>

	* gnulib/m4/progtest.m4: Upgrade to gettext-0.19.8.
	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.19.8.

2017-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\enablebackslashhack, \fixbackslash):
	Revert to usual definitions after a line command parsed with
	\parsearg.  This led to an error when a @synindex command was
	used near the start of a file, reported by Mathieu Lirzin.

2017-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_convert_enumerate_command): 
	Handle case of labelling list entries with letters, using 'type' 
	and 'start' attributes on the <ol> tag.  This worked in the 
	makeinfo implementation from Texinfo 4.13 and earlier.  Report
	from Andreas Schwab.

2017-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_convert_enumerate_command):
	Check if the 'enumerate_specification' is defined, rather than
	true, as if the value is '0', this is considered to be false.
	Enumerated lists starting at 0 broken reported by Andreas Schwab.

2017-04-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (match_in_match_list): Take a argument to say
	which direction to search in, instead of using the order of the
	start and end arguments.
	(info_search_in_node_internal): Update, and make sure that both
	the start and end of the search area are after the 'body_start'
	of the node.

2017-04-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/search.c (match_in_match_list): Use helper functions
	at_end_of_matches and match_by_index.

2017-04-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_search_in_node_internal): Always save
	the updated match state for a window.

2017-04-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/search.c (match_in_match_list): Combine code for 
	searching backwards and forwards, and do not get all the matches 
	in the node if searching backwards.

2017-04-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/file-index-colons.sh: New test of reading an index 
	entry with a colon.

2017-04-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (display_update_one_window): Update modeline 
	before anything else.

2017-04-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (scan_reference_label): If inside an index 
	node, scan forward to the last colon on the line to get the
	index entry, instead of the first colon.

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

	* tp/Texinfo/Structuring.pm (do_index_keys): Strip '-', '\',
	'<', '@' if there has been @set txiindexhyphenignore,
	txiindexbackslashignore, txiindexlessthanignore,
	or txiindexatsignignore respectively.

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

	* tp/Texinfo/Parser.pm (%command_ignore_space_after): Add 
	'sortas', in order to ignore spaces after its argument.

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

	* tp/Texinfo/Parser.pm (_parse_texi) <@sortas>: Check if inside 
	index entry differently.

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

	* tp/t/09indices.t (explicit_sort_key): New test.

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

	* tp/Texinfo/Parser.pm (_parse_texi) <close brace, @sortas>: Set 
	'sortas' value on index entry element.
	(_enter_index_entry): Set 'sortas' value on index entry from 
	'extra' value on element.

	* tp/Texinfo/Structuring.pm (_do_index_keys): Check for 'sortas' 
	value on index entry and, if present, use that as the sort key 
	instead of using the text of the index entry.

	* tp/Texinfo/Parser.pm (%in_index_commands): New hash,
	containing 'sortas'.
	(_parse_line_command_args) <@defindex, @defcodeindex>: Use 
	%in_index_commands instead of %in_simple_text_commands for valid 
	nestings hash.
	(%no_command_cmds): Add 'sortas'.
	(%in_full_text_commands, %full_text_commands): Remove 'sortas'.

2017-03-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Test of index sort keys): New example.

2017-03-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\smallbook, \smallerbook, \afourpaper)
	\afivepaper): Remove paper-size-specific values of \hfuzz.  Set 
	\hfuzz at top-level to 1pt.  Suggestion from Karl Berry.

2017-03-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/search.c (at_end_of_matches): Avoid calling 
	'extend_matches' if not necessary.

2017-03-21  Gavin Smith  <gavinsmith0123@gmail.com>

	Implement lazy search match lists.

	* info/window.h (MATCH_STATE): Add 'regex' field of type regex_t.
	Add fields 'match_alloc', 'finished', 'buffer' and 'buflen'.
	* info/search.c (free_matches): Update for new fields.
	(regexp_search): Do not call regfree on regex_t variable; copy
	it to MATCH_STATE object instead.  Set new fields on MATCH_STATE.
	(extend_matches): New function, split out from regexp_search.
	(regexp_search, match_in_match_list, match_by_index)
	(at_end_of_matches): Call extend_matches as necessary.

2017-03-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/search.c (copy_binding): Remove this function, which is
	not used much.  Remove comment before this function.
	* info/nodes.c (get_nodes_of_tags_table): Use struct assignment 
	to a local struct instead of copy_binding.

2017-03-21  Gavin Smith  <gavinsmith0123@gmail.com>

	Access list of search matches through accessor functions only.

	* info/window.h (MATCH_STATE): New struct type.
	(WINDOW): Use it for new field 'matches', replacing previous 
	'matches' and 'match_count' fields.

	* info/search.c (match_by_index, free_matches, matches_ready)
	(at_end_of_matches):
	New functions.
	* info/session.c (info_search_in_node_internal, put_node_in_window)
	(info_search_internal, info_clear_search, incremental_search),
	* info/window.c (window_set_node_of_window, tree_search_check_node),
	* info/display.c (display_process_line): Use them.

	* info/session.c, info/search.c (match_in_match_list): Move 
	function to search.c, and take MATCH_STATE argument.
	* info/search.c (regexp_search): Return result via a pointer to 
	a MATCH_STATE.

	* info/display.c, info/search.c (decide_if_in_match): Move to
	search.c.
	* info/display.c (matches): Variable is of type MATCH_STATE *.

	This opens the way to not calculating an entire list of matches
	in one go, which may take a long time if there are too many (thus
	leading to the need for the 'min-search-length' variable).

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

	* doc/texinfo.texi (HTML Customization Variable) <WORDS_IN_PAGE>:
	Add index entry "Navigation footer" to make this information 
	easier to find.

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

	* info/info.c: If not loading any nodes at all, and outputting
	an error message, exit with a non-zero status.

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

	* doc/info-stnd.texi (Invoking Info): Mention combination of 
	--all and --index-search.
	* NEWS: Mention this feature.

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

	* info/info.c (virtual_index_p): Remove variable.
	(long_options): Remove "--virtual-index".
	(main): Don't check for --virtual-index option.  Use the
	combination of --index-search and --all for this functionality.

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

	* tp/Texinfo/ModulePath.pm.in ($VERSION): Define variable.

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

	* tp/texi2any.pl: Compare version of this file and the version
	of loaded modules.  If they differ, abort.

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

	* tp: Run maintain/change_perl_modules.sh.

2017-03-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/MiscXS.pm: Check for UTF-8 locale, copied from
	tp/Texinfo/Convert/Paragraph.pm.
	* tp/Texinfo/XSLoader.pm (init): Allow argument with name of
	XS module to be undefined.

2017-03-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Cursor Commands): Move text out of 
	footnote into main text.
	(Searching Commands): Add a missing ')'.

2017-03-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Update with news since last release.

2017-03-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (texi2any Environment Variables): New node.
	Document TEXINFO_XS.

2017-03-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\begindoublecolumns): Reduce \vsize to
	account for what has appeared on the page so far.
	(\doublecolumnout): Do not subtract the height of what has
	appeared on the page so far before dividing \vsize in two.
	Add it back on again before exiting the output routine.
	(\enddoublecolumns): Restore \vsize from \txipageheight.

	This fixes a problem with the formatting when the index material 
	would not fit on the page after the partial page, but there was
	not enough of it to make the output routine (\doublecolumnout)
	fire before the output routine was changed to \balancecolumns.
	Hence \balancecolumns was caused to balance too much material 
	and would output a box that was too tall for the page.

2017-03-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Medium length index): New test
	of index formatting.

2017-03-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\doublecolumnout, \balancecolumns):
	Use \PAGE instead of literal 255 for the box number.

2017-03-06  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo-ja.tex: Fix error message for XeTeX.

2017-03-05  Mathieu Lirzin  <mthl@gnu.org>  (tiny change)

	* util/tests/texi2dvi_empty_text.sh: New test.
	* util/Makefile.am (AM_TESTS_ENVIRONMENT): Use 'texinfo.tex'
	from "$(top_srcdir)/doc".

2017-03-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\internalpagesizes) <dvi output>: Output
	a \special setting the page size.  This has the effect that a
	completely empty page can be output if a document has nothing in
	it.  This changed on 2015-08-25 when index files were no longer 
	opened automatically.  This made a test in the Automake 
	distribution fail, reported by Mathieu Lirzin.

2017-03-04  Thien-Thi Nguyen  <ttn@gnu.org>  (tiny change)

	* doc/texinfo.texi (@noindent): Spell "@noindent" correctly.

2017-02-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infomap.c (default_vi_like_ea_keys): Add ESC as an
	abort key, and remove bindings ESC 1 ... ESC 9 that conflict
	with this.

2017-02-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infomap.c (default_vi_like_ea_keys): Interchange the 
	meanings of M-h and M-l to match line editing commands of GNU 
	Less.  (The former bindings appear to have been in place since 
	the beginning, so likely no-one has ever used them).
	* doc/info-stnd.texi (infokey format): Interchange M-h and M-l
	in sample infokey file.

2017-02-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Cursor Commands, Scrolling Commands)
	(Node Commands, Selecting Xrefs, Miscellaneous):
	Remove documentation of --vi-keys key bindings, except for
	M-1 ... M-9 as these can't be specified in .infokey.

2017-02-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (infokey format): Document the --vi-keys 
	key bindings here.
	(Invoking Info) <--vi-keys>: Refer to 'infokey format' node.
	(Miscellaneous Commands) <get-info-help-node>: Don't say that
	info.texi is distributed with GNU Info.

2017-02-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (forward_move_node_structure) 
	(backward_move_node_structure): Don't do anything for a man page.

2017-02-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/tilde.c (tilde_expand): Delete function, as it is not 
	actually called anywhere.
	(tilde_additional_prefixes, tilde_additional_suffixes)
	(tilde_find_prefix, tilde_find_suffix): Remove.

2017-02-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/tilde.c (tilde_additional_prefixes, tilde_additional_suffixes):
	Declare as static arrays, as they are not set anywhere else.

2017-02-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/tilde.c (tilde_expansion_failure_hook): Remove unused 
	variable.
	(tilde_expand_word): Do not look at tilde_expansion_failure_hook.

2017-02-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/tilde.c [TEST] (main, xmalloc, xrealloc): Remove.

2017-02-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/echo-area.c (initialize_input_line): Don't consider
	possibility that the prompt argument is null.  This removes the
	appearance that we call 'strlen' on a pointer when it could be 
	null.  (Report from Hans-Bernhard Bröker.)
	(info_read_in_echo_area): Don't mention the possibility of a 
	null prompt argument in a comment.
	* info/variables.c (read_variable_name): Declare as static.

2017-02-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infodoc.c (replace_in_documentation): Remove redundant 
	assignment.  (Report from Hans-Bernhard Bröker.)

2017-02-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/m-x.c (info_execute_command): Remove code printing an 
	error message that would use a freed pointer.  (It is not 
	actually executed because info_read_completing_in_echo_area will 
	not return anything outside the list of permissible completions.)
	(Report from Hans-Bernhard Bröker.)

2017-02-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_search_internal): Initialize some 
	variables so they do not appear to be used uninitialized.  (They 
	were not actually used uninitialized because if they were not 
	initialized, the loop where they were used was broken out of 
	beforehand.)  (Report from Hans-Bernhard Bröker.)

2017-02-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_intuit_options_node): Do not free a 
	pointer to a node record if following a menu entry to the next 
	node failed.  (Report from Hans-Bernhard Bröker.)

2017-02-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (add_initial_nodes): Avoid a condition on an 
	uninitialized value.  (Report from Hans-Bernhard Bröker.)

2017-02-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (window_change_window_height): Simplify some 
	conditions to avoid appearing to possibly dereference a pointer
	after it has been checked for being null.
	(Report from Hans-Bernhard Bröker.)

2017-02-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/search.c (skip_line): Remove unused function (which had a
	useless null pointer check in it.) (Report from Hans-Bernhard Bröker.)

2017-02-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (next_index_match): Return a value instead of
	passing a pointer to a value to be set so that it is clear that
	calling code does not depend on an uninitialized value.  All 
	callers updated.  (Report from Hans-Bernhard Bröker.)

2017-02-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (display_update_one_window): Remove a useless
	check of a null pointer.  Report from Hans-Bernhard Bröker, 
	found using static code analysis with clang.

2017-01-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/tag.c (tag_expand): Take a pointer as an argument 
	pointing to the end of the buffer that is being processed, and 
	check against this pointer to make sure we don't read too far.  
	Invalid read reported by Hanno Böck.

2017-01-29  Jason Hood  <jadoxa@yahoo.com.au>

	* info/pcterm.c
	(norm_attr, inv_attr, xref_attr, current_attr): Define as WORD 
	instead of SHORT.
	(w32_info_prep): Enable underline, if available.
	(highvideo): Invert the normal foreground intensity, instead of
	just setting it.
	(normvideo): Remove underline attribute.  Use the normal
	intensities, instead of just removing them.
	(blinkvideo): Invert the normal background intensity, instead of
	using highvideo.
	(underline): New function.
	(textcolor, textbackground): Preserve underline attribute.
	(pc_begin_underline, pc_end_underline): Use underline if it is
	available, instead of the colour blue.
	(convert_color, pc_set_fg_color, pc_set_bg_color): Use the 
	normal intensities.
	(pc_initialize_terminal): Use the normal background for 
	'xref_attr', instead of black.  Support underline in 
	INFO_COLORS.  Really end all modes, not just standout.

	* info/terminal.c (terminal_begin_blink): Use
	'terminal_begin_blink_hook'.

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

	* tp/Texinfo/Convert/XSParagraph/xspara.c (xspara_init): Remove
	error message printed if a UTF-8 locale couldn't be found, so
	that we fall back to the pure Perl module.  This error message
	caused tests comparing the output on standard error to fail on 
	systems where a UTF-8 locale couldn't be found.  Reported by
	Michael Deutschmann for uClibc with locales compiled out.

2017-01-29  Jason Hood  <jadoxa@yahoo.com.au>

	* info/echo-area.c (pause_or_input) [__MINGW32__]: Add a
	working implementation of this function, allowing echo area 
	messages to be seen.
	* info/pcterm.c (gettextinfo):  Windows 10 can now apparently 
	seek console input, so just use GetConsoleMode to determine 
	that.
	(pc_initialize_terminal) [_WIN32]: Sets the 'term_??'
	definitions for KEY_HOME, KEY_END (and KEY_INSERT), allowing 
	Home and End to be used in the echo area (rather than having to
	explicitly define 'M-<' and 'M->').
	(w32_our_tty): Shorten function.

2017-01-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (scan_node_contents): Use 'strncmp' instead 
	of 'memcmp' when checking for "* Menu:" string to avoid possibly 
	looking past the end of the file buffer, detected with 
	'-fsanitize=address' passed to gcc.  Invalid read reported by 
	Hanno Böck.

2017-01-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (scan_reference_label): Properly check 
	return value of 'read_quoted_string' to avoid reading past the 
	end of the buffer.  Invalid read reported by Hanno Böck.

2017-01-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (adjust_nodestart): Check that both the start and 
	end of the region where we search for the node separator are
	within the file buffer, to avoid invalidly reading memory in 
	case the file tags table had an incorrect offset.  Invalid read
	reported by Hanno Böck.

2017-01-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (get_tags_of_indirect_tags_table): Check if 
	'tags' field of file buffer record is null.  This avoids 
	dereferencing a null pointer.  (Report from Hanno Böck.)

2017-01-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_file_header_information):
	Place name of manual in parentheses after the name of the page, 
	instead of before it.  This is so that if several pages from a 
	single manual are displayed in separate browser tabs, the user
	will be able to distinguish them if only part of each page title 
	is shown in each tab.
	Suggestion from Bryan Ferris <saffronsnail@hushmail.com>.

2017-01-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (build_tags_and_nodes): Check that a buffer 
	offset isn't 0 before subtracting 1 from it.  This is to avoid 
	reading outside allocated memory for malformed input.  (Report 
	from Hanno Böck.)

2017-01-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (build_tags_and_nodes): Simplify code by moving 
	code inside a 'while' loop up one level, as the loop never 
	executes more than once.

2017-01-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (read_quoted_string): If no 177 byte is
	found to close a string, return 0 as intended.  This is intended 
	to avoid reading past the end of allocated memory, which could 
	happen for malformed input.  (Hanno Böck, bug-texinfo 2016-10-18.)

2017-01-21  Jason Hood  <jadoxa@yahoo.com.au>  (tiny change)

	* info/infomap.c (fetch_user_maps) [__MINGW32__]: Try to get
	home directory from value of 'USERPROFILE' environment variable.

2017-01-21  Jason Hood  <jadoxa@yahoo.com.au>  (tiny change)

	 * doc/info-stnd.texi (Colors and Styles): Correct "nocolour" to 
	 "bgnocolour".

2017-01-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c (xrefs_of_manpage): Check that names of man pages
	only contain certain characters, and don't allow "0" as the 
	section number.  This reduces the chance of incorrectly
	identifying text in a man page as a cross-reference.

2017-01-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c (xrefs_of_manpage): Fix code finding end of the
	name of a man page (broken on 2016-10-09).

2017-01-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/run_parser_all: Include ${srcdir} when replacing
	"@PATH_SEPARATOR@" so that test will work when run out-of-source
	(used only in tp/tests/sectioning/tests-parser.txt).  Include 
	$srcdir/$testdir as well as $test dir when running texi2any.pl.

2017-01-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/MiscXS/configure.ac: Remove calls to gl_EARLY and 
	gl_INIT.  (Report from Hans Bernhard Bröker.)

2017-01-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Open or close group in a macro): 
	More examples with @comment.
	(Braceless at end of line) New section.

2017-01-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Paragraph.pm (import): New function to
	export symbols.  Set it in the symbol table of the paragraph 
	formatting module.
	* tp/Texinfo/XSLoader.pm (init): Return name of module that was 
	loaded as a string.  Override module the same way regardless of
	whether it is the XS or non-XS module that was loaded.
	* tp/t/paragraph.t, tp/Texinfo/Convert/Plaintext.pm,
	tp/Texinfo/Convert/Info.pm: Do not import symbols from 
	Texinfo::Convert::Paragraph explicitly.

2017-01-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (new_formatter): Call 
	Texinfo::Convert::Paragraph::new directly instead of using 
	Texinfo::Convert::Line or Texinfo::Convert::UnFilled.

2017-01-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_convert, _convert_element)
	(_process_text): Remove debugging statements.

2017-01-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Macro Details): Remove mention of a 
	difference between @comment and @c.

2017-01-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\endlineisspace): New.
	(\defmacro) <0 arguments> Skip any whitespace after the macro 
	name.
	(\scanmacro): Remove code for propagating a final @comment in
	a macro body.
	(\comment): Give the same definition as \c.

2017-01-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/xspara.c (xspara_set_state),
	* tp/Texinfo/Convert/XSParagraph/XSParagraph.xs (xspara_new):
	Use an integer-valued SV to represent a paragraph formatting
	state instead of a blessed reference to an integer-valued SV.

2017-01-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Info.pm:  Remove usage of method call
	syntax when calling subroutines in the 
	Texinfo::Convert::Paragraph module.

2017-01-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/paragraph.t: Avoid using method call syntax to call 
	subroutines in Texinfo::Convert::Paragraph.  Only run each test 
	once.  Remove tests using 'lines_counter' value on paragraph 
	hash.

2017-01-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm:  Remove remaining usage
	of method call syntax when calling subroutines in the
	Texinfo::Convert::Paragraph module.

2017-01-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/MiscXS/Makefile.am,
	* tp/Texinfo/MiscXS/configure.ac: Remove code for using gnulib, 
	as it isn't required for this module, and this saves the 
	complication of having an extra gnulib checkout.
	* tp/Texinfo/MiscXS/lib,
	* tp/Texinfo/MiscXS/snippet: Remove all files.
	* tp/Texinfo/MiscXS/m4: Remove all gnulib files.

2017-01-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm: Import some symbols for 
	subroutines from the Texinfo::Convert::Paragraph module.  Reduce
	usage of method call syntax when calling subroutines in the
	Texinfo::Convert::Paragraph module.

2017-01-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/xspara.c (xspara_end): Clear
	'in_use' on 'state' structure as well as in the 'saved_states'.
	This avoids the storage being lost if 'xspara__switch_state' 
	copies 'state' into 'saved_states'.

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

	* tp/Texinfo/MiscXS/miscxs.c,
	* tp/Texinfo/MiscXS/misc.c: Rename file in order to avoid 
	clashing with MiscXS.c (file generated from MiscXS.xs by xsubpp)
	on case-insensitive file systems.

2017-01-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/xspara.c (PARAGRAPH): New 
	configuration fields 'no_final_newline' and 'add_final_space'.
	(xspara_new): Set 'in_use' on state so that it is saved properly.
	(xspara_init_state): Remove some out-of-date comments.  Retrieve
	'no_final_newline' and 'add_final_space' values.
	(xspara_end): Use 'no_final_newline' to decide whether to add
	a final newline, and pass value of 'add_final_space' to
	_add_pending_word.

	* tp/Texinfo/Convert/ParagraphNonXS.pm (end): Use 
	'no_final_newline' to decide whether to add a final newline, and 
	pass value of 'add_final_space' to _add_pending_word.

	* tp/Texinfo/Convert/Line.pm: Replace with wrapper around 
	Texinfo::Paragraph.
	* tp/Texinfo/Convert/UnFilled.pm (new): Use 'no_final_newline'
	option.

	* tp/t/paragraph.t (line count line tests): Remove, as the
	'lines_counter' information isn't available any more.

2017-01-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/xspara.c (add_next): If given
	empty argument, set 'invisible_pending_word'.

2017-01-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_convert) <@image>: Call
	'add_next' with an empty string argument so that any spaces 
	following the command aren't lost.

2017-01-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/ParagraphNonXS.pm,
	* tp/Texinfo/Convert/XSParagraph/xspara.c (add_text): If
	there is an empty pending word at the very start of a line,
	allow spaces to be output after it.

2017-01-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/XSParagraph.xs: Uncomment calls
	to xspara_set_state, and remove calls to xspara_get-state.  
	Receive paragraph object as an SV *, not an HV *.
	(xspara_new): Create and return a reference to an integer scalar 
	value.

	* tp/Texinfo/Convert/XSParagraph/xspara.c
	(xspara_set_state, xspara_init_state): Rename function.
	(xspara_set_state, xspara_new): Keep array of paragraph 
	formatting states, and copy them to and from 'state' depending 
	on which is currently active.
	(state_array, state_array_size, current_state, xspara__switch_state):
	New.
	(PARAGRAPH): New field 'in_use'.

2017-01-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/ParagraphNonXS.pm
	(add_pending_word) <unfilled>: Include leading spaces after 
	indent.
	(add_text) <unfilled>:
	Do not detect end of sentence, save spaces at beginnings of 
	lines, do not condense multiple spaces to one space.
	(add_next): Call '_add_pending_word' to make sure a leading line
	indent is added.
	(end) <unfilled>: No newline at end of output.
	(new): Initialize 'unfilled' value.

	These changes nearly match the behaviour of the C 
	implementation, except for a test failure where the C code 
	doesn't handle nested formatters correctly
	(t/results/raw/raw_expanded_in_style.pl).

2017-01-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_convert, convert_unfilled): 
	Remove commented-out code incrementing and decrementing a 'code' value.

2017-01-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/xspara.c (PARAGRAPH): New
	configuration field 'unfilled'.
	(xspara_set_state): Set 'unfilled' from argument.

	(xspara__add_pending_word): Include leading spaces after indent 
	if 'unfilled' is on.

	(xspara__add_next): Call 'xspara__add_pending_word'.  This 
	shortens the code and makes sure that a leading line indent is added.

	(xspara_add_text) <unfilled>: Record spaces at the beginning of 
	lines, do not convert newlines to spaces, and no end of sentence 
	detection.

	(xspara_end) <unfilled>: Don't append a newline.

	Note: ParagraphNonXS.pm not done yet.

	* tp/Texinfo/Convert/UnFilled.pm: Remove code of module, and 
	replace with wrapper around Texinfo::Paragraph using the 
	'unfilled' option.

	* tp/Texinfo/Convert/Plaintext.pm (_convert)
	<@sp, node names in menus>: Call 'add_pending_word' to flush 
	output.

	This change leads to some changes in output:
	  Spaces included at ends of lines in @verbatiminclude.
	  Spaces lost at ends of lines in most other contexts, like
	menus.  Spaces were already removed at the end of a line,
	but not consistently.

	* tp/t/paragraph.t (unfilled lines_counter tests): Remove tests,
	as 'lines_counter' is not available any more.

2017-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/MiscXS/miscxs.c (xs_parse_texi_regex): Use malloc
	and memcpy instead of strndup for better portability.

2017-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_output_old): Remove unused 
	function.
	Whole file: Get subroutine arguments by assigning from @_.

2017-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi, _parse_texi_regex): Split 
	out several regexes used at the start of the remaining part of 
	the line.
	* tp/Texinfo/MiscXS/MiscXS.xs,
	* tp/Texinfo/MiscXS/miscxs.c (xs_parse_texi_regex): New function.
	* tp/Texinfo/Parser.pm: Add a 'UNITCHECK' section to override 
	'_parse_texi_regex'.

2017-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/automatic_nodes.t: Use the "Texinfo::ModulePath" module.

2017-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/MiscXS/MiscXS.xs,
	* tp/Texinfo/MiscXS/miscxs.c (xs_process_text): New function.
	* tp/Texinfo/Convert/Plaintext.pm: Add a 'UNITCHECK' section to 
	use 'Texinfo::MiscXS::process_text' inside '_process_text' function.

2016-12-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/MiscXS/miscxs.c (xs_abort_empty_line)
	(xs_merge_text): Use 'bytes_to_utf8' instead of calling 
	'sv_utf8_upgrade'.  The latter appears to cause strange results 
	under perl 5.10.1 (possibly involving the value of $1), and 
	there is a warning about using 'sv_utf8_upgrade' in the perlguts
	man page.
	* tp/Texinfo/MiscXS/MiscXS.xs (xs_abort_empty_line): Check
	if an argument is defined with SvOK.

2016-12-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/configure.ac,
	* tp/Texinfo/MiscXS/configure.ac: Use 'test -n' instead of
	'test -v' for better portability.  Clear another cache variable 
	used internally by autoconf.

2016-12-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/MiscXS/miscxs.c (xs_merge_text, xs_abort_empty_line):
	Use 'av_len' instead of 'av_top_index' for compatibility with 
	older versions of Perl.

2016-12-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: If XS modules are enabled, configure in 
	tp/Texinfo/MiscXS directory.
	* autogen.sh: Run autoreconf in MiscXS directory.

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

	* tp/Texinfo/Convert/XSParagraph/fail.pl: Change path given for 
	TestXS module so that it will be found when source is configured
	for an out-of-source build.
	* tp/Makefile.am (SUBDIRS, DIST_SUBDIRS): List MiscXS.pm and 
	MiscXS subdirectory.

2016-12-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/TestXS.pm: Use 
	Texinfo::XSLoader module.
	* configure.ac: Change path passed with "-I" to perl so 
	Texinfo::XSLoader module can be found.

2016-12-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_convert): Don't use method 
	call syntax for recursive calls.
	* tp/DebugTexinfo/DebugCount.pm: Remove, as it isn't used much.
	* doc/texinfo.texi (Customization Variables and Options) 
	<TEXINFO_OUTPUT_FORMAT>: Remove mention of
	'debugcount'.
	* tp/t/test_count.t: Delete test.
	* tp/t/test_utils.pl: Don't use "DebugTexinfo::DebugCount" 
	module.

2016-12-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (whole file): Use assignment from @_
	for subroutine arguments instead of "shift".  This shortens the
	code and may be slightly more efficient.

2016-12-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/MiscXS/miscxs.c (merge_text): Call C function
	'xs_abort_empty_line' directly instead of going through Perl 
	subroutine call infrastructure.

2016-12-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/MiscXS/MiscXS.xs,
	* tp/Texinfo/MiscXS/miscxs.c (abort_empty_line): New function.
	* tp/Texinfo/Parser.pm: Add a 'UNITCHECK' section to override
	'_abort_empty_line' with Texinfo::MiscXS::abort_empty_line.

2016-12-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_convert): Remove some statements for 
	debugging.  Shorten access to data structures by using 
	variables.

2016-12-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/MiscXS/MiscXS.xs,
	* tp/Texinfo/MiscXS/miscxs.c (merge_text): New function.
	* tp/Texinfo/Parser.pm: Add a 'UNITCHECK' section to override
	'_merge_text' with Texinfo::MiscXS::merge_text.
	(_merge_text): Reorder a condition to make executing a regex
	less likely.

2016-12-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* 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: Use 
	Texinfo::ModulePath.

2016-12-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <@menu> Check if parent
	command is defined before using it as a hash key.

2016-12-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/ModulePath.pm.in (init): Take extra argument 'updirs'
	allowing to find 'top_srcdir' from the path of the currently
	running Perl script.

	* tp/t/test_sort.t, tp/t/accents.t, tp/t/automatic_menus.t, 
	t/collect_spaces.t, tp/t/do_master_menu.t, tp/t/fix_texinfo.t, 
	t/index_before_item.t, tp/t/nodenormalization.t: Use 
	Texinfo::ModulePath module instead of adding directories to @INC
	manually.

2016-12-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XSLoader (override): Check if source subroutine is
	defined.

2016-12-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/MiscXS.pm: New file.
	* tp/Texinfo/MiscXS/,
	tp/Texinfo/MiscXS/configure.ac,
	tp/Texinfo/MiscXS/Makefile.am,
	tp/Texinfo/MiscXS/MiscXS.xs,
	tp/Texinfo/MiscXS/miscxs.c,
	tp/Texinfo/MiscXS/miscxs.h: New files.
	* tp/Texinfo/ModulePath.pm.in: Add 'Texinfo/MiscXS' directory to
	module search path.
	* tp/Texinfo/XSLoader (override): New function.
	* tp/Texinfo/Convert/Unicode.pm: Add 'UNITCHECK' section calling
	'Texinfo::MiscXS::unicode_text' to override 'unicode_text'.

2016-12-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_count_added): Inline call
	to _add_lines_count and use variable to shorten expressions.

2016-12-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl: Set '$Texinfo::XSLoader::disable_XS'
	instead of '$Texinfo::Paragraph::disable_XS'.

2016-12-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_def): Avoid an unnecessary
	call to 'parse_texi_line'.

2016-12-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line) <@include> If in the tests, 
	strip off leading directories when recording filename.  This is 
	to be consistent with what is done in 'parse_texi_file'.

2016-12-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_def): Instead of calling 'gdt' on 
	inserted text, add an 'untranslated' element containing the 
	untranslated text.
	* tp/Texinfo/Convert/HTML.pm (_convert),
	* tp/Texinfo/Convert/Text.pm (_convert):,
	For 'untranslated' elements, call 'gdt' on the text.

	This results in some changes to the test results:
	  Strings not translated in the results from Text.pm, but they
	weren't properly translated before either.
	  Strings inside @copying translated according to document
	language at time of @insertcopying, not time of @copying.


2016-12-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%def_map): Don't surround values 
	containing spaces with braces.
	* tp/Texinfo/Parser.pm (_parse_def): Always create a 'bracketed' 
	element to contain prepended text.

2016-12-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Text.pm (_convert): Delete disabled code 
	used for debugging.

2016-12-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Structuring.pm (do_index_keys): Explicitly list the 
	commands to get the text of index entries for.

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

	* tp/Texinfo/Parser.pm (_end_line): For some index commands
	(e.g., @defcv), do not record the text of the index entry in
	order to avoid needing to call Texinfo::Report::gdt, which
	would be difficult to do in the XS rewrite.  Store
	the current document language for the index entry.

	* tp/Texinfo/Structuring.pm (do_index_keys): Fill in the text
	of the index entries where missing.  Account for the $self 
	argument being either a Texinfo::Parser object or a converter 
	object.

	* tp/Texinfo/Parser.pm, tp/Texinfo/Structuring.pm 
	(_non_bracketed_contents): Move function to Structuring.pm.

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

	* tp/Texinfo/Structuring.pm (merge_indices): Remove some 
	commented-out statements for debugging.

2016-12-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XSLoader.pm,
	* tp/Texinfo/Convert/Paragraph.pm: Move check for UTF-8 locale 
	into Paragraph.pm, and allow it to pass strings into XSLoader.pm 
	to print messages for debugging purposes.

2016-12-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/XSLoader.pm: New file.
	* tp/Texinfo/Convert/Paragraph.pm: Move all the code into 
	XSLoader.pm.  This is intended to allow the code for loading XS 
	modules to be shared among multiple modules.

2016-12-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/terminal.c (terminal_switch_rendition): If turning off 
	either foreground or background colour, call 
	'terminal_default_colour' and reinstate any remaining foreground 
	or background colour afterwards.  This fixes a bug where 
	foreground colour might not be turned on again if background 
	colour was turned off.

2016-12-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_convert): Remove extra blank 
	line inserted after a menu that has been created.

2016-12-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi): Call 'labels_information' 
	to initialize some data for the first time.
	(labels_information): Use presence of $self->{'targets'} to 
	decide whether 'labels' has been initialized, because it is 
	possible that 'labels' could be initialized to an empty hash, 
	which would still test as false.

2016-12-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc: Always use ':' as the path separator, 
	instead of trying to check whether ';' should be used.  Ken Brown
	reported that this check was broken due to an undefined variable.

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

	* info/t/Init-inter.inc: Use mkfifo instead of mknod for better 
	portability.

2016-12-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Report.pm (errors): Do not sort errors by line 
	number, as this can cause error continuations to be separated 
	from the first error line.

2016-12-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/paragraph.t (two_words_dot_paren_dot, two_words_dot_dot)
	(three_newlines): New tests.
	* tp/t/plaintext.t (punctuation_in_sc): New test.

2016-12-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/ParagraphNonXS.pm
	(add_text): Do not remove end-of-sentence flag here, as adding 
	more spaces later on would cancel the doubled space.
	    When adding spaces, leave existing spaces untouched.
	    Do not handle end-of-sentence disinhibition in this
	function, as it is dealt with in '_add_next'.
	    Use 'last_char' value from before calling '_add_next' to
	decide whether we've reached the end of a sentence, along with a 
	different regular expression.
	(_add_next): Remove any backspace marker characters, not just 
	the last one.

	These changes are intended to match the implementation under 
	tp/Texinfo/Convert/XSParagraph.

2016-11-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Structuring.pm (_do_index_keys, do_index_keys): 
	Rename, and remove second argument.
	* tp/texi2any.pl: Call 'do_index_keys' so that the data set in 
	this function, for example the 'in_code' value on index entries, 
	will be set in case 'do_index_keys' is not called again.

2016-11-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/ModulePath.pm.in: Correct a condition.

2016-11-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_expand_macro_arguments, _parse_texi):
	Treat form feed as other whitespace when parsing macro usage.

2016-11-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (@obsolete_variables): Add 
	'MACRO_BODY_IGNORES_LEADING_SPACE'.
	(@variable_string_settables): Remove the same.

	* tp/Texinfo/Parser.pm (%default_customization_values): Remove 
	'MACRO_BODY_IGNORES_LEADING_SPACE'.
	(_strip_macrobody_leading_space): Remove function.
	* tp/t/60macro.t (leading_spaces_ignore): Remove test.

	* doc/texinfo.texi (Other Customization Variables): Remove 
	mention of this variable.

	The 'MACRO_BODY_IGNORES_LEADING_SPACE' variable attempted to
	match a failing of the implementation of macros in texinfo.tex
	where spaces at the start of a line could be ignored, but it 
	didn't match it perfectly: specifically, a macro used inside
	a command like @example where the catcode of space had been 
	changed didn't have leading spaces skipped.

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

	* tp/Texinfo/Parser.pm (_parse_macro_command_line): Permit _ in 
	macro name.

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

	* tp/Texinfo/Parser.pm (_parse_special_misc_command) <@set>: 
	Treat form feed characters the same as any other whitespace.

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

	* tp/Texinfo/Parser.pm (_parse_texi): Supply 'contents' and 
	'parent' for empty @value element.
	* tp/Texinfo/Report.pm (_substitute_element_array): Add a case
	for values not defined.

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

	* tp/t/test_brace_count.t: Disable some tests.

2016-11-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (_count_opened_tree_braces): Don't
	check for parentheses in the arguments or contents when 
	balancing parentheses.
	(parse_node_manual): If parentheses do not balance, consider the 
	whole argument to be the node name.

2016-11-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_abort_empty_line): Include element type
	in "ABORT EMPTY" debugging message.
	(_parse_node_manual): Update comment.
	(_parse_texi): Remove unnecessary deletion of 'normalized'
	value.
	* tp/Texinfo/Structuring.pm (nodes_tree): Create a new parser 
	object to parse the "TOP_NODE_UP" string.

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

	* doc/texinfo.texi (@example): Add missing ) after @pxref.
	(@cartouche): Make example and output match.
	(@table): Remove superfluous closing quote (`indicating'' to 
	`indicating').
	(Internationalization): Change the word "yourself" to "the one".
	(@documentlanguage): Add missing closing quote.
	(Testing for Texinfo Commands): Change "consider true X" to
	"consider X to be true".
	(Format with texi2dvi): Add missing ) after @pxref.
	(Invoking texi2any): Change "texi2any accept" to "texi2any 
	accepts".
	(HTML Translation): Add missing ) after @pxref.

	All reports by Wensheng Xie <xiewensheng@gmail.com>.

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

	* doc/texinfo.texi (Top): In @detailmenu for Info format 
	description, refer to nodes with their names instead of shorter 
	labels.  This is so that, for example, "info texinfo printindex"
	goes to the index entry for "printindex" instead of the
	"Info Format Printindex" node.
	(Other Customization Variables): Remove 
	'TEXINFO_COLUMN_FOR_DESCRIPTION' and 'indent_menu_descriptions'.

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

	Delay node name normalization until after parser is finished.

	* tp/Texinfo/Common.pm (parse_node_manual): Do not record 
	'normalized' value in return value.
	(%default_parser_state_configuration): Add array value 'targets'.

	* tp/Texinfo/Convert/HTML.pm (_parse_node_and_warn_external):
	Call 'normalize_node' and set 'normalized' value on return value.

	* tp/Texinfo/Parser.pm
	(_register_label): Store target in 'targets' array, instead
	of in 'labels' hash.  Don't do any error checking.
	(labels_information): If 'labels' hash is not already set on 
	parser object, generate it from the 'targets' array.  Check for 
	empty and duplicate node names.  Create 'nodes' array.
	(_check_empty_node): Remove check for empty node name after
	expansion.

	(_end_line) <@float, @node>: Always call _register_label, with
	less error checking.  Do not record node in 'nodes' array.

	* tp/Texinfo/Transformations.pm (_new_node): Set 'normalized'
	for the new node that is being created, and store it in the
	'labels' hash.
	* tp/Texinfo/Structuring.pm (nodes_tree)
	(associate_internal_references, new_node_menu_entry): Set 
	'normalized' values on tree elements.

	* tp/t/automatic_nodes.t: Add several calls to 
	'associate_internal_references'.
	(index entry reassociated duplicate node ignored): Disable test.

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

	* info/indices.c (create_virtual_index): Split function out from
	'info_virtual_index'.
	* info/info.c (virtual_index_p): New variable.
	(long_options): New option "--virtual-index".
	(main): If --virtual-index given, then call create_virtual_index
	and output the result, either in an interactive session or to
	an output file.

2016-11-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_register_extra_menu_entry_information):
	Delete 'normalized' value of 'menu_entry_node' hash.
	(_enter_menu_entry_node): Add menu entry to 'internal_references'
	array.
	* tp/Texinfo/Structuring.pm (associate_internal_references): 
	Check for menu entries in the 'internal_references' array
	and set 'normalized' on them.  Shorten code by storing a 
	reference in a variable.
	* t/automatic_menus.t,  t/do_master_menu.t: Call 
	'associate_internal_references' in order to have the 'normalized'
	values set.

2016-11-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_register_label): Remove exemption for
	recording 'normalized' names for floats.  Reverses change on
	2016-11-01.

2016-11-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Report.pm (errors): Sort the errors by filename and 
	line number.

2016-11-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <cross-reference commands>:
	Don't record 'normalized' for @inforef, and for any reference 
	that is not recorded in the 'internal_references' array.

2016-11-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <cross-reference commands>:
	Don't record 'normalized' value on command if cross-reference is
	to another manual.
	(_check_empty_node): Check that 'normalized' value is defined.
	* tp/Texinfo/Convert/TexinfoXML.pm (_convert): Call normalize_node
	to compensate.

2016-11-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/DocBook.pm (_convert) <xref commands>: 
	Instead of using 'normalized' value to see if the 
	cross-reference refers to the "Top" node, convert the first 
	argument to the command (into DocBook) and check if the 
	resulting string is "Top".  Later on in function, re-use this
	value for the contents of the <link> element.

2016-11-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Structuring.pm (associate_internal_references): 
	Remove unused arguments.

2016-11-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/ModulePath.pm.in: Set $top_builddir from 
	$top_srcdir as well as the other way around.  This is so that
	XS modules can be used from tests run from the command-line.

2016-11-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (output): Check for existence of a 
	string before testing equality.

2016-11-01  Gavin Smith  <gavinsmith0123@gmail.com>

	Experimental change to reduce use of normalized labels.

	* tp/Texinfo/Parser.pm (_register_label): For @float's only,
	do not save the normalized HTML target name.  (This does not
	gain anything at the moment because the normalized name is still
	calculated in Parser.pm.)
	* tp/Texinfo/Structuring.pm (number_floats): Check that 
	'node_content' value exists for float instead of 'normalized'.
	* tp/Texinfo/Convert/TexinfoXML.pm (_convert) <@float>,
	* tp/Texinfo/Convert/DocBook.pm (_convert) <@float>: Call
	Texinfo::Convert::NodeNameNormalization::normalize_node to 
	compensate for loss of 'normalized' value.
	* tp/Texinfo/Convert/HTML.pm (_node_id_file),
	* tp/Texinfo/Convert/Converter.pm (_node_filename): Fall back to
	use 'node_content' if 'normalized' is not available.

2016-10-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_get_target, command_text)
	(_node_id_file): Comments added or changed.

2016-10-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac (TEXINFO_DTD_VERSION): Bump version to 6.3dev.
	Although the DTD hasn't changed, the meaning has due to change
	in 'type' attribute of 'float' element on 2016-10-16.
	* util/texinfo.dtd: Add 2016 copyright year.

2016-10-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Structuring.pm,
	* tp/Texinfo/Transformations.pm
	(fill_gaps_in_sectioning, insert_nodes_for_sectioning_commands)
	(add_node_menu_if_missing, complete_node_menu)
	(complete_tree_nodes_menus, new_master_menu, regenerate_master_menu)
	(menu_to_simple_menu, set_menus_to_simple_menu): Move some 
	less-used functions out into a new file, Transformations.pm.

	* tp/Texinfo/Structuring.pm,
	(_new_block_command, new_block_command): Rename.
	(_new_node_menu_entry, new_node_menu_entry): Rename.
	(add_missing_menus): Remove, as it isn't used anywhere.

	* Pod-Simple-Texinfo/pod2texi.pl: Call functions in their new 
	locations.

2016-10-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Structuring.pm (nodes_tree): Use a hash reference
	that is inside a variable for brevity.

2016-10-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm: Rename 'ids' hash to 'seen_ids'
	and use 1 as its values instead of references to tree elements.

2016-10-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm
	(_new_sectioning_command_target): Do not set 'id' on target 
	record: only set 'target'.  Do not set 'contents_id' or
	'shortcontents_id'.
	(_prepare_special_elements): Don't call 
	Texinfo::Config::special_element_target_file_name with $id
	argument, and don't set 'id' on target record.
	(_prepare_index_entries): Don't set 'id' on target record 
	separately from 'target'.
	(_prepare_contents_element): Don't set 'id' on target records.
	Don't call Texinfo::Config::special_element_target_file_name
	with 'id' argument.
	(_get_target): Comment updated.

	(_node_id_file): Don't call Texinfo::Config::node_target_name with
	$id argument, and don't include $id in return value.
	(_set_root_commands_targets_node_files): Don't get $id from 
	return value of '_node_id_file', and don't set 'id' on target 
	records for the "root commands".

	(command_target): Check if the element has an 'associated_node',
	and if so, use it instead.
	(command_id): Use 'target' value on target record instead of 'id'.
	(command_contents_id): Remove function.
	(_default_contents): Call command_contents_target instead.
	(_element_direction): Do not accept 'id' as the $type argument.
	(_convert_printindex_command): Pass 'target' to 
	_element_direction instead of 'id'.

	(_prepare_footnotes): Previously, in the 'targets' record for 
	the footnote, the anchor name for the footnote was in 'target' 
	and the anchor name for linking back to the main text was in 
	'id'.  Now, only store the anchor name for the footnote itself.
	(_convert_footnote_command): Get the anchor name for linking 
	back to the main text from the anchor name for the footnote.

	* tp/t/init/only_toc_out.init (special_element_target_file_name):
	Remove '$id' from both argument list and return value.

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

	* tp/Texinfo/Convert/HTML.pm (_get_target, command_href)
	(label_command, _node_id_file): Comments added.

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

	* tp/Texinfo/Convert/Plaintext.pm (_convert),
	* tp/Texinfo/Convert/HTML.pm (convert_heading_command):
	Call 'menu_of_node' with first argument undef instead of 
	creating a new Texinfo::Parser object.

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

	* tp/Texinfo/Structuring.pm (_new_node_menu_entry): Set 
	'menu_entry_node' and 'menu_entry_separator' extra values on 
	menu entry directly instead of calling 
	'Texinfo::Parser::_register_extra_menu_entry_information'.

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

	Reinstate change made on 2016-10-08 and reverted on 2016-10-23.

	* tp/Texinfo/Parser.pm (_parse_texi): If 'menu' element is not 
	directly under a "root element" (@node or sectioning), don't 
	record it in the list of menus for that node, and issue a warning.

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

	* tp/texi2any.pl: Remove code for calling 'add_missing_menus' if 
	'validatemenus' is off.  It can add menus incorrectly if all the 
	menus in the node are not recorded, which could be the case
	for menus incorrectly nested inside another command.

	* tp/Texinfo/Convert/Structuring.pm (add_node_menu_if_missing)
	Split out new function 'menu_of_node'.

	* tp/Texinfo/Convert/HTML.pm
	(_convert_menu_command): Record that a menu has been seen in the
	current node.
	(_convert_heading_command): If no menu has been seen in the 
	node, call 'menu_of_node' and convert the result.

	* tp/Texinfo/Convert/Plaintext.pm
	(_menu): Record that a menu has been seen in the current node.
	(_convert): If no menu has been seen in the node, call 
	menu_of_node and convert the result.

	* tp/t/30sectioning.t (no_menu): Test 'info' format instead of
	'plaintext'.

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

	* tp/Texinfo/Convert/Plaintext.pm (count_bytes): Call throughout
	without using method call syntax.
	(_align_lines): Remove some commented-out lines of code.

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

	* tp/Texinfo/Structuring.pm (nodes_tree): If 'validatemenus' is 
	not on, do not complain about a node lacking a menu item if that 
	node has no menu at all.  If 'validatemenus' is not on, in order 
	to complain about the menu structure not matching the section 
	structure, the nodes must be associated with sections and 
	contain menus.  Some comments changed.

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

	* tp/Texinfo/Structuring.pm (nodes_tree): Only check whether 
	node is in a menu if 'validatemenus' is on.

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

	* tp/t/30sectioning.t (no_menu): New test.

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

	* tp/tests/Makefile.am (long-checks, long-checks-all): Remove.
	(tex-html-checks tex-html-check): Remove use of LONG_TESTS.
	(long_tests): Add contents to 'base_tests' variable and 
	remove.
	(copy-long): Remove.
	(Makefile.onetst, DIST_SUBDIRS, clean-tests): Remove use of 
	'long_tests' variable.
	* tp/tests/README: Remove discussion of "long tests".

	* tp/Makefile.am (long-checks): Remove target.
	* tp/maintain/regenerate_cmd_tests.sh: Remove handling of "long 
	tests".

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

	* tp/Texinfo/Parser.pm (_parse_texi): Record menu regardless of 
	where it occurred.  (Revert change on 2016-10-08 in order to 
	avoid failure of "long tests" under tp/tests.)

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

	* tp/Texinfo/Structuring.pm (sectioning_structure): Use 'next' 
	instead of putting whole body of loop within a condition.  
	Change comment at start of function.  Delete some code used for 
	debugging.

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

	* tp/Texinfo/Structuring.pm (_next_content, _collect_structure):
	Remove unused functions.

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

	* tp/Texinfo/Structuring.pm (_check_menu_entry): Remove 
	'$check_menu_entries' argument, and don't return anything.  
	Callers updated.
	(nodes_tree): Some comments changed.

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

	* tp/Texinfo/Parser.pm (_parse_float_type): Convert type of
	float with Texinfo::Convert::Texinfo instead of with 
	Texinfo::Convert::NodeNameNormalization.
	* tp/Texinfo/Parser.pm (_end_line) <@listoffloats>: Remove 
	commented-out code.

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

	* tp/Texinfo/Convert/Info.pm (output) <anchors and nodes>,
	(_node): Don't refer to 'normalized' value on an element defining an
	xref target; use 'node_content' instead.
	(output) <anchors and nodes>: Convert the anchor with _node_line
	to check for duplicates, instead of using the 'normalized' value.
	* tp/Texinfo/Convert/Plaintext.pm:
	Remove "use Texinfo::Convert::NodeNameNormalization".
	(_footnotes): Don't set 'normalized' on the elements we create
	representing footnote anchors.
	(_convert) <float>: Use 'node_content' instead of 'normalized'
	to check if this float should be an anchor.

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

	* tp/Texinfo/Convert/Plaintext.pm (_convert): For 'float'
	elements, change check on 'content' value back to check on 
	'normalized' value on 'type' hash.

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

	* tp/Texinfo/Convert/Plaintext.pm (_align_lines, _convert):
	Remove some commented-out lines for debugging purposes.  Reduce 
	references to 'normalized' values on elements.  For 'float' 
	elements, use the 'content' key instead.

2016-10-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (get_initial_file): Don't fall back to the dir node.
	(main): Quit if there are no nodes to show.
	* info/t/dir-dangling-entry.sh: Update to match this new behaviour.

2016-10-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (parse_top_node_line):  Check if the
	buffer ends before the end of the first line.  Out-of-bounds
	read reported by Hanno Böck.  Some comments changed.
	* info/nodes.c (node_set_body_start): Don't try to advance the
	'body_start' past the end of the first line of the node: it is 
	not necessary, and the current code breaks if the buffer ends 
	during the first line.

2016-10-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c (xrefs_of_manpage): Allow SGR sequence in manpage
	name, and fix code checking for two-character manpage section.

2016-10-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* Texinfo/Parser.pm (_next_bracketed_or_word): When returning
	a bracketed element, change the type of the in-tree element
	from 'bracketed' to 'bracketed_def_content' instead of creating
	a new 'bracketed_def_content' with the same contents.  Do not
	pass 'empty_space_at_end_def_bracketed' to _isolate_last_space.

	* Texinfo/Convert/Texinfo.pm (convert): Handle 
	'bracketed_def_content' the same as 'bracketed'.

	* Texinfo/Convert/DocBook.pm (%ignored_types),
	* Texinfo/Convert/HTML.pm (%ignored_types),
	* Texinfo/Convert/NodeNameNormalization.pm (%ignored_types),
	* Texinfo/Convert/Plaintext.pm (%ignored_types),
	* Texinfo/Convert/Text.pm (%ignored_types),
	* Texinfo/Convert/TextContent.pm (%ignored_types):
	Remove 'empty_spaces_at_end_def_bracketed'.

2016-10-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c (find_reference_section): Remove this unused function.
	(xrefs_of_manpage): Allow only two characters in manpage section.

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

	* tp/Texinfo/Parser.pm (_end_line) <def commands>: Remove parent 
	values pointing to 'root_line' element returned from 'gdt'.

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

	* tp/Texinfo/Parser.pm (_parse_texi): Include 'parent' on 
	'menu_star' element.

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

	* tp/Texinfo/Parser.pm (_parse_texi): If 'menu' element is not 
	directly under a "root element" (@node or sectioning), don't record
	it in the list of menus for that node, and issue a warning.

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

	* tp/Texinfo/Convert/Plaintext.pm
	(indent_menu_descriptions, indent_one_menu_descriptions):
	Remove.  This feature has not worked in any released version of 
	Texinfo due to calling 'indent_menu_descriptions' (itself) 
	instead of 'indent_one_menu_descriptions'.  This also simplifies
	matters, as the 'menus' list for each node is not used anywhere
	else in the modules under tp/Texinfo/Convert/.
	* tp/texi2any.pl: Don't call indent_menu_descriptions if 
	'indent_menu_descriptions' was present in TREE_TRANSFORMATIONS.
	* tp/t/indent_menu_descriptions.t: Remove.
	* doc/texinfo.texi (Other Customization Variables) 
	<TREE_TRANSFORMATIONS>: Remove mention of 'indent_menu_descriptions'
	feature.
	<TEXINFO_COLUMN_FOR_DESCRIPTION>: Remove mention.
	* tp/Texinfo/Converter/Converter.pm (%all_converters_defaults),
	* tp/Texinfo/Converter/Common.pm (@variable_string_settables):
	Remove 'TEXINFO_COLUMN_FOR_DESCRIPTION'.

2016-10-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (build_tag_table): Check if node name in tag table
	is empty (possible for malformed input).  Crash reported
	by Hanno Böck.

2016-10-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/t/XSParagraph.t: Remove unused 
	file.
	* tp/tests/htmlxref-only_split/Makefile.am,
	* tp/tests/Makefile.am: Remove reference to removed .texinfo 
	subdirectory.

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

	* tp/Texinfo/Convert/HTML.pm,
	* tp/Texinfo/Convert/Plaintext.pm,
	* tp/Texinfo/Structuring.pm: Remove 'use locale' directives for 
	older Perl versions.  There were subtle differences,
	for example whether German eszet uppercased to "SS" or
	itself.  It would also need the locale to be set and restored 
	everywhere it mattered.
	* tp/Texinfo/Structuring.pm (_do_index_strings): Call 
	utf8::upgrade on the index entry sort key.

2016-09-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm: Remove commented out "use POSIX" 
	declaration.
	* tp/Texinfo/Report.pm (gdt): Remove commented-out calls to 
	POSIX::setlocale.

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

	* tp/Texinfo/Convert/HTML.pm,
	* tp/Texinfo/Convert/Plaintext.pm,
	* tp/Texinfo/Structuring.pm: Test perl version and only
	"use feature 'unicode_strings'" if perl version is at
	least 5.012.  Otherwise, "use locale;" and try to set a
	Latin-1 locale.

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

	* doc/texinfo-tex-test.texi (Fonts): More tests of fonts.  Add 
	section testing glyph commands.

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

	* README-hacking: Remove note about updating texi2html tests, 
	and note about building standalone modules for CPAN.  Move
	advice on updating web pages together.

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

	* tp/Texinfo/Convert/XSParagraph/configure.ac,
	tp/Texinfo/Convert/XSParagraph/TestXS.pm: Change version number 
	to "0" as (a) alphabetic characters in the version don't work 
	here, and (b) this saves us having to update the version here.
	* README-hacking: Remove note to update the version number in 
	these two files.

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

	* configure.ac, tp/Texinfo/Convert/XSParagraph/configure.ac,
	tp/Texinfo/Convert/XSParagraph/TestXS.pm: Bump version to 6.3dev.
	Remove "dist-xz" option for testing.

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

	* tp/Texinfo/Convert/XSParagraph/configure.ac, configure.ac
	(PERL_EXT_CC): New variable to override compiler used to build 
	XS extension.

2016-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Customization Variables and Options): Remove 
	index entries for some customization variables with index 
	entries duplicated elsewhere.  These variables are 
	'documentlanguage', 'HEADERS', and 'SHOW_MENU'.
	(Other Customization Variables): Add index entry for 'HEADERS'.

2016-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (indices_information): Do not return
	'merged_indices' hash, as this information is not used anywhere.  
	Callers updated.
	* tp/t/test_utils.pl: Don't use 'merged_indices' hash.

2016-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Report.pm (line_error): Remove 'error continuation' 
	functionality.  Callers updated.  This has few user-visible 
	changes, except that the continuation lines will be printed for
	'-c NO_WARN=1', and that processing may be aborted sooner when
	'ERROR_LIMIT' is used due to multi-line errors counting as more
	than one.
	(gdt): Remove some commented-out statements for debugging.

2016-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm,
	* tp/Texinfo/Convert/Plaintext.pm,
	* tp/Texinfo/Structuring.pm: Add a "use feature 'unicode_strings'"
	directive.

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

	* tp/Texinfo/Parser.pm (_parse_line_command_args) <@synindex>: 
	Update $self->{'merged_indices'} for any indices already merged
	into the source index.

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

	* tp/Texinfo/Parser.pm (_parse_line_command_args) <@synindex>:
	Remove 'contained_indices' hash when an index is merged into 
	another index.  This simplifies the result in the following 
	situation: Index B is merged into index A, then index C is 
	merged into index B.  Previously, index C would not be in the 
	'contained_indices' of index B: it would only be in those of 
	index A.  Had index C been merged into index B first, index C 
	would have been recorded as being in both.  Eliminating the 
	'contained_indices' hash on the intermediate indices removes the 
	dependency on the order that the '@synindex' commands occurred.

2016-09-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_line_command_args): Add a comma 
	to a message.

2016-09-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi): Don't store the line 
	number for a command defined with @definfoenclose, even if it 
	was previously a built-in command.
	(_parse_line_command_args) <@definfoenclose>: Add a comment 
	warning about redefining a built-in command.

2016-09-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Documentlanguages.pm: Regenerate by running
	maintain/regenerate_documentlanguages.pl.
	* README-hacking: Mention running this command for a new 
	release.

2016-09-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_check_contents_location): Remove unused 
	function.

2016-09-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_special_misc_command): Change
	"a @-command" to "an @-command" in a message.
	(_parse_line_command_args): Comment changed.

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

	* tp/Texinfo/Convert/Plaintext.pm (_compute_spaces_align_line):
	Change a ">" to a ">=" to avoid the possibility of a negative 
	return value when $line_width equals $max_column exactly.  Error 
	message "Negative repeat count does nothing" reported by
	Paul Eggert.

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

	* info/indices.c (info_virtual_index): Put text within a
	call to gettext so that it can be translated.

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

	* doc/texinfo.tex (\definefontsetatsize): New macro to reduce 
	repetition in \textfonts, \titlefonts etc.
	(\reducedrm): Comment changed.

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

	* doc/texinfo.tex (\ifrmisbold): Define with \newif.
	(\switchtolsize, \switchtolllsize): Define for each font size.  
	If \ifrmisbold is true, override \rmfont with \bffont.  This 
	guarantees that the roman font will be overridden, instead of 
	having to call \rmisbold everywhere large font sizes are used.
	It also ensures that superscripts are in bold for large font 
	sizes when style commands are nested.
	(\textfonts, \titlefonts, \chapfonts, \secfonts, \subsecfonts)
	(\reducedfonts and \smallfonts, \smallerfonts \textfonts)
	(\titlefonts, \chapfonts, \secfonts): Specify \rmisboldtrue or
	\rmisboldfalse.
	(\rmisbold): Remove macro, and replace with \rm everywhere it is 
	used.
	(\selectfonts): Use \switchtolllsize, \switchtolsize instead.

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

	* doc/texinfo.tex (\assignfonts): New macro, in order to reduce
	duplicated code in \textfonts, \titlefonts, \chapfonts, 
	\secfonts, \subsecfonts, \reducedfonts and \smallfonts, 
	(\smallerfonts \textfonts, \titlefonts, \chapfonts, \secfonts)
	(\subsecfonts, \reducedfonts, \smallfonts, \smallerfonts):
	Use \assignfonts.
	(\ttslfont): Assign correctly (previous patch called it \ttfontsl
	by mistake).
	(\df): Refer to \ttslfont.

2016-09-17  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex
	(\latonechardefs, \latninechardefs)
	(\lattwochardefs, \unicodechardefs):
	Add missing braces for symbol insertion commands with no arguments.

2016-09-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex
	(\tenrm, \tenit, \tensl, \tenbf, \tentt, \tensf, \teni)
	(\tensy, \tenttsl):
	Rename as \rmfont, \itfont, \slfont, \bffont, \ttfont, \sffont,
	\ifont, \syfont and \ttslfont respectively, because these fonts 
	are not always ten points in size.  No functional changes intended.
	(\setfontstyle, \selectfonts, \rmisbold)
	(\rm, \it, \sl, \bf, \tt, \sf, \ttsl): Move after section on PDF 
	CMaps and font definitions so that \setfontstyle is closer to 
	the definition of the fonts it uses, and \rm etc. are closer to 
	\textfonts etc. which use them.
	(\li): Remove synonym of \sf.
	(\shortcontrm, \shortcontbf, \shortcontsl, \shortconttt): Move 
	to be with the other fonts defined with \setfont.

2016-09-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Non-existent target): New example 
	of an @xref.
	(Fonts): New test of the fonts used.

2016-09-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\|): Remove definition for changebars, as it is
	not used, doesn't work for multiple lines, and isn't supported 
	in texi2any.

2016-09-11  Gavin Smith  <gavinsmith0123@gmail.com>
	
	* doc/texinfo.tex: Remove 'arch-tag' marker at end of file.
	(Added on 2003-10-09 for use by Miles Bader in arch mirror of 
	emacs sources.)

2016-09-10  Gavin Smith  <gavinsmith0123@gmail.com>

	6.3 release.
	* configure.ac, NEWS, util/texi2dvi, util/texi2pdf,
	doc/refcard/txirefcard.tex, texindex/texindex.awk:
	Version number.
	* tp/Texinfo: Update version numbers in modules.
	* tp/Texinfo/Convert/XSParagraph/TestXS.pm,
	* tp/Texinfo/Convert/XSParagraph/configure.ac: Version number.

2016-09-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/README: Mention that the tests must be run before the 
	reference results can be updated.

2016-09-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Add note about updating the version number 
	under tp/Texinfo/Convert/XSParagraph.

2016-09-10  Gavin Smith  <gavinsmith0123@gmail.com>

	6.2 release.
	* configure.ac, NEWS, util/texi2dvi, util/texi2pdf,
	doc/refcard/txirefcard.tex, texindex/texindex.awk:
	Version number.
	* tp/Texinfo: Update version numbers in modules.
	* po, po_document: Synch with translationproject.org and run 
	"make update_po".
	* build-aux/texinfo.tex: Update from doc/texinfo.tex.

2016-09-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* pretest 6.1.92

2016-09-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Add note about checking svn checkout is 
	up-to-date.

2016-09-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* pretest 6.1.91

2016-09-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* po, po_document: Synch with translationproject.org and run 
	"make update_po".

2016-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Mention LINGUAS files and "svn status .".

2016-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/htmlxref-only_mono/test_scripts,
	* tp/tests/htmlxref-only_split/test_scripts,
	* tp/tests/htmlxref/test_scripts:
	Remove unused directories.

2016-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (window_make_modeline): Do not make modeline 
	depend on whether preprocess_nodes_p is set.

2016-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (scan_reference_target): Remove code that 
	altered the line number of an index entry if 
	preprocess_nodes_p=1, because this is is independent of whether 
	the first line of the node is displayed or not.

2016-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* po/el.po: Commit file.
	* po/LINGUAS: List el.

2016-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* po_document/LINGUAS: List ca, de, el, hr, pt, pt_BR.

2016-08-30  Gavin Smith  <gavinsmith0123@gmail.com>

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

2016-08-28  Emanuele Giaquinta  <emanuele.giaquinta@gmail.com>  (tiny change)

	* util/texi2dvi (cleanup): Fix cleanup for "clean" build mode.  
	Bug introduced on 2016-05-03.

2016-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\entry): Disable output of marks for whole 
	entry, instead of just for the page number.  This is intended to 
	prevent an infinite loop in \ourunvbox when @uref is used in an 
	index entry (reported by Karl Berry for latex refman manual).

2016-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Mention gnulib import in XSParagraph subdirectory.

2016-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* pretest 6.1.90

2016-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Document encoding): Test glyph 
	commands in section title.

2016-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\indexnofonts): Eat the {} following glyph 
	commands, and add definitions for \atchar, \lbracechar and 
	\rbracechar.
	(\definedummies): Add dummy for @atchar.
	* doc/texinfo-tex-test.texi (Document encoding): Test some glyph 
	commands in section title.

2016-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\balancecolumns): When making bottoms of the 
	two columns flush, use \unskip to remove glue from bottom of 
	columns.  Remove code which ignored glue at the bottom of 
	columns when balancing columns, because this glue was there to 
	help to break before an index initial.

	* doc/texinfo-tex-test.texi
	(Final page initial at top of both columns): New example of 
	index formatting.
	(Short indices): Add text saying what to look at for short 
	indices.
	(\commenceindex, \finishindex): Move use of \smallfonts in order 
	not to cancel the change to \baselineskip done in 
	\begindoublecolumns.

2016-08-08  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\setpdfdestname): New macro for XeTeX.
	(\pdfdestname): Escaped PDF destination name
	is set by \setpdfdestname.
	(\setpdfoutlinetext): New macro for XeTeX.
	(\pdfoutlinetext): Converted and escaped outline text
	is set by \setpdfoutlinetext.
	(\pdfmkdest): Use \setpdfdestname.
	(\dopdfoutline): Use \setpdfdestname and \setpdfoutlinetext.
	(\xrefX): Use \setpdfdestname.

2016-08-08  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\setpdfdestname): New macro for pdfTeX and LuaTeX.
	(\pdfdestname): Escaped PDF destination name
	is set by \setpdfdestname.
	(\setpdfoutlinetext): New macro for pdfTeX and LuaTeX.
	(\pdfoutlinetext): Converted and escaped outline text
	is set by \setpdfoutlinetext.
	(\pdfmkdest): Use \setpdfdestname.
	(\dopdfoutline): Use \setpdfdestname and \setpdfoutlinetext.
	(\xrefX): Use \setpdfdestname.

2016-08-07  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\pdfescapestrutfsixteen):
	Rename from \pdfescapestring for LuaTeX.
	(PDFescstr): New Lua function.
	(\pdfescapestring): New macro for LuaTeX.
	(\txiescapepdfutfsixteen): New macro.
	(\dopdfoutline): LuaTeX:
	Use UTF-8 encodings instead of UTF-16 for PDF destination names.

2016-08-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\doublecolumntopgap, \pagesofar)
	(\begindoublecolumns): Remove use of \doublecolumntopgap 
	dimension.
	(\begindoublecolumns): Don't touch \topskip or alter \vsize 
	other than doubling it.
	(\balancecolumns): Use a different height for boxes when 
	splitting double column material roughly in two.
	* doc/texinfo-tex-test.texi (Final page of index hard to balance):
	Update so that test works properly.

2016-08-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\entry): Remove stretch added before entry 
	here.
	(\begindoublecolumns): Put stretch into \baselineskip, so it can
	appear between the lines of a multi-line entry as well as 
	between entries.  This results in more even line spacing.
	(\indexwidowpenalty): Remove \unskip, because the glue it 
	removed isn't there anymore.
	(\balancecolumns): Use \leftskip instead of indenting lines with
	\parshape (which is equivalent to using \moveright), because 
	this is lost when the box is taken apart with \lastbox.
	Change comment about use of \parshape.  Do not set \hangindent 
	either.
	(\ourunvbox): New macro to take apart a vbox with \lastbox and 
	re-add the boxes to the current vertical list.
	(\insertindexentrybox): Use it to add the text of the index entry
	to the current vertical list.
	(\entrylinedepth): Remove \dimen.

2016-08-05  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\pdfmkdest, \dopdfoutline, \xrefX):
	Change the method of destination name switching
	Unicode or ASCII for pdfTeX and LuaTeX.

2016-08-04  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\iftxiuseunicodedestname):
	Add initializing for pdfTeX and LuaTeX.

2016-08-04  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\pdfmkdest, \dopdfoutline, \xrefX):
	Change the method of destination name switching
	Unicode or ASCII for XeTeX.

2016-08-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Test of index widow elimination):
	New test.
	* doc/texinfo-tex-test.WIDOWs: Add file used in test.

2016-08-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\indexdummies): Put "{}" after use of 
	\lbracechar and \rbracechar in index in order to avoid 
	whitespace following a @{ or @} command in an index being lost 
	when the index file is read back in.

2016-08-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\balancecolumns) <right-hand column higher>:
	Use height of right-hand column to avoid possibly overlapping
	following text.
	(\indexwidowpenalty): Rename from \indexwidowpenalty.
	(\documentencoding): Change the spelling of a word in a message.
	
2016-08-03  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\pdfmkdest):
	Fix LuaTeX PDF destination names.
	LuaTeX can handle Unicode characters for destination names.
	So pass through Unicode characters for LuaTeX.

2016-08-03  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\xref):
	Fix pdfTeX PDF destination names.
	In order to replace Unicode characters with ASCII,
	it is necessary that \edef\pdfxrefdest{#1} is
	before \turnoffactive.

2016-08-03  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\documentencoding):
	Add warning for XeTeX with non-UTF-8 encodings.

2016-08-03  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\xref):
	Fix XeTeX PDF destination names when \txiuseunicodedestnamefalse.
	In order to replace Unicode characters with ASCII,
	it is necessary that \edef\pdfxrefdest{#1} is
	before \turnoffactive.

2016-08-02  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\urlcolor, \linkcolor, \endlink):
	Fix XeTeX PDF color support
	by copying from the definition for pdfTeX.

2016-08-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line) <"misc text" commands>:
	Convert @@, @} and @{ commands, so there is a way to include 
	these characters in filenames.  (Previously this was done by the
	Texinfo::Convert::Text module.)

2016-08-01  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex
	(\rgbDarkRed, \rgbBlack, \setcolor, \maincolor, \thiscolor)
	(\lastcolordefs, \makefootline, \makeheadline):
	Copy from the definition for pdfTeX.
	(\pdfsetcolor): Add XeTeX PDF color support.

2016-07-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\balancecolumns): Reduce height limit for 
	splitting the final double-column material.  Remove glue from 
	bottom of both left and right columns when comparing heights.
	Compare heights of columns differently.  When not making the 
	bottoms of the two columns flush, use the obtained height of the 
	taller left column for the height of both columns.  (Otherwise, 
	an overful column box could overlap material below.)  An example
	of broken formatting due to this was reported in the AucTeX manual
	by Arash Esbati.
	Change some comments and edit for clarity.

2016-07-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/Makefile.am (TXI_XLATE): Add txi-ja.tex.
	(EXTRA_DIST): Add texinfo-ja.tex and short-sample-ja.tex.

2016-07-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\printindex): Set catcode of @ to 12 instead 
	of 11 so that e.g. "\@math" is not viewed all as one control 
	sequence when it should begin with the control letter "\@".

2016-07-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/refcard/txicmdcheck: Ignore @setcontentsaftertitlepage.
	* doc/refcard/txivarcheck: Ignore HTMLXREF.
	* doc/texinfo.texi (Customization Variables for @-Commands): Remove
	@setcontentsaftertitlepage.

2016-07-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Test of @synindex): Add section.

2016-07-30  Gavin Smith  <gavinsmith0123@gmail.com>

	Remove --javascript-ref option, because nobody is using it.

	* tp/texi2any.pl ($result_options): Remove option 
	--javascript-ref.
	($cmdline_options): Remove value 'JAVASCRIPT_REFS'.
	* tp/Texinfo/Convert/HTML.pm
	(default_javascript_lines): Remove function.
	(%default_formatting_references): Remove 'javascript_lines'.
	(output): Don't call default_javascript_lines.
	(_file_header_informations): Don't use 'JAVASCRIPT_LINES' conf 
	value.
	(_default_begin_file, default_node_redirection_page): Don't 
	include lines referring to a JavaScript file in the file header.
	* tp/Texinfo/Common.pm (@variable_string_settables): Remove
	'JAVASCRIPT_LINES'.
	(@variable_other_settables): Remove 'JAVASCRIPT_REFS'.

2016-07-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%block_commands, %block_item_commands)
	(%item_line_commands): Remove 'ktable'.
	(%command_index): Remove 'ktable'.
	* tp/Texinfo/Parser.pm (module documentation part): Remove @ktable.
	* tp/Texinfo/Convert/HTML.pm (%default_commands_conversion):
	Remove conversion for @ktable.
	(_convert_before_item_type): Add 'ktable' to a condition.
	* tp/Texinfo/Convert/Plaintext.pm (%item_indent_format_length):
	Remove 'ktable'.
	* tp/t/22xtable.t (ktable): Remove test.

	@ktable is being removed because nobody wants it anymore.

2016-07-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Remove @ktable.
	* doc/texinfo.texi (Command List) <@asis, @ktable>: Remove
	@ktable.
	(@ftable @vtable): Remove mention of @ktable.

2016-07-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\ktable): Remove.

2016-07-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\dosynindex): Call \requireopenindexfile so 
	that we copy a working file descriptor for the index.  Remove code
	that closes the file for the index getting redefined.  Fixes 
	broken @synindex and @syncodeindex commands, reported by
	Ralph Schleicher.

2016-07-28  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex
	(\pdfdest, \dopdfoutline, \pdflink, \xrefX):
	Fix XeTeX PDF destination name for consistent with pdfTeX.

2016-07-27  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex:
	Improve some Unicode and XeTeX, LuaTeX related comments
	by Werner Lemberg's suggestion.

2016-07-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\indexdummies): Use \definedummyletter\@ 
	instead of outputting "@@" as "@" in index file.
	(\mylbrace, \myrbrace): Remove out-of-date comment.
	(\rbracecmd, \lbracecmd, \rbraceatcmd, \lbraceatcmd):
	Remove unused macros.
	(\atdummies): Use \definedummyletter for \{ and \} instead of 
	using \lbraceatcmd and \rbraceatcmd.
	(\atdummies, \indexdummies): Use \definedummyletter for 
	\(SPACE).

	* doc/texinfo-tex-test.texi (Test of macros with @ in index): 
	New test.

2016-07-20  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex:
	Add XeTeX `dvipdfmx:config' special
	for avoiding PDF destination name replacement.

2016-07-20  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\pdfdest):
	Fix XeTeX PDF destination.

2016-07-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <misc commands>: Add 
	condition on call to _register_global_command.

2016-07-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <root commands>: Initialize 
	contents here, so it will always be set.
	(_end_line) <root commands>: Don't set contents here.

2016-07-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (apropos_in_all_indices): Only free file buffer 
	if we had to load it.  Otherwise the file buffer could still be 
	referenced.  Fixes crash reported by "mtsio@cryptolab.net".
	* info/nodes.c (check_loaded_file): Function split out from 
	info_find_file.

2016-07-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* dco/texinfo-tex-test.texi (Test of auxiliary files): Add test
	of macro used in index entry.

2016-07-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\macrolist, \addtomacrolist, \unmacro): Store
	list of macros with "\commondummyword" instead of 
	"\definedummyword", so that we remove the macro when writing an 
	index sort key.  Otherwise, texindex can produce a broken sorted 
	index file.  This fixes bug introduced on 2016-05-28, when the 
	macros used in \commondummiesnofonts were changed.

2016-07-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\ktable): Add to implement @ktable, following 
	pattern of \ftable and \vtable.

2016-07-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/dir.c (build_dir_node): Save contents of dir node.  This 
	avoids a memory leak when hide-node-references=On due to 
	scan_node_contents overwriting node->contents.

2016-07-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/dir-merge.sh: New test.

2016-07-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Command List) <@copying>: Correctly say
	to end with "@end copying".  Reported by Daniel Birket.

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

	* doc/texinfo.tex (\defmacro): Remove separate code for 
	recursive and non-recursive macros, because the code is 
	identical now (except possibly for macros of more than 9 
	arguments).

2016-07-11  Brandon Invergo  <brandon@gnu.org>

	* util/htmlxref.cnf (gnat_ugn_unw, gnat_ugn): Change manual name 
	and location.

2016-07-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (forward_to_info_syntax): Avoid reading past 
	end of string.  Report by Hanno Böck.

2016-07-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Mention @ktable.
	* doc/texinfo.texi (Command List) <@asis, @ktable>: Mention 
	@ktable.
	(@ftable @vtable): Change section heading to "@ftable, @vtable 
	and @ktable".  Keep node name the same.  Add index entry for 
	@ktable.  Mention @ktable throughout.  Delete some unnecessary 
	words.

2016-07-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%block_commands, %block_item_commands)
	(%item_line_commands): Add 'ktable'.
	(%command_index): Add 'ktable'.
	* tp/Texinfo/Parser.pm (module documentation part): Mention 
	@ktable and small grammar changes.
	* tp/Texinfo/Convert/HTML.pm (%default_commands_conversion):
	Add conversion for @ktable.
	(_convert_before_item_type): Add 'ktable' to a condition.
	* tp/Texinfo/Convert/Plaintext.pm (%item_indent_format_length):
	Add 'ktable'.
	* tp/t/22xtable.t (ktable): New test.

	@ktable requested by Robert Weiner, following pattern of @vtable 
	and @ftable.

2016-07-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Texinfo.pm: Remove commented-out debugging 
	statements.

2016-07-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS, doc/texinfo.texi (Conditional Commands) <@errormsg>: 
	Update to reflect fact that @-commands inside @errormsg is no 
	longer supported.
	* NEWS: Move a news item to the right place.

2016-07-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <@errormsg, @U>: Don't use
	Texinfo::Convert::Text::convert to get argument, because the 
	dependence on Texinfo::Convert::Text is a significant 
	complication.
	(top level): Remove "use Texinfo::Convert::Text" directive.
	(%default_valid_nestings): Don't allow anything inside @errormsg 
	or @U.
	(__): Remove commented-out definition of '__' sub.
	(parser): Remove commented-out loop printing values.

2016-07-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm: Add "use" directive for 
	Texinfo::Convert::NodeNameNormalization instead of relying on 
	this module being pulled in indirectly.

2016-07-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm: Remove comment referring to 
	'raw_formats_stack'.
	(_parse_texi): Add debugging statement if the condition in an 
	inline command is missing.

2016-06-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi, _register_global_command)
	(_register_label, _enter_index_entry, _end_line)
	(_parse_line_command_args, _parse_special_misc_commands): Remove 
	uses of _ignore_global_commands.  Remove some commented-out 
	lines of code.
	(parser, simple_parser): Remove reference to 
	$self->{'expanded_formats_stack'}.
	(_ignore_global_commands): Removed.

2016-06-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi): For raw block commands 
	(like @tex) and raw inline commands (@inlinefmt), skip over the 
	part of the conditional that isn't expanded, instead of parsing 
	it as usual and using a stack of expanded conditionals.  Add a 
	dummy argument to the parse tree for the skipped-over argument.
	This will mean that there is no use for the 
	_ignore_global_commands function.  This change is intended to 
	make implementation of the parser module in C easier, and should 
	also make the Perl module itself simpler.

	(_close_current, _close_commands): Do not refer to 
	$self->{'expanded_formats_stack'}.

	(_ignore_global_commands): Always return 0.

2016-06-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/test_utils.pl (set_converter_option_defaults): Set 
	default expanded formats hash for converter even if this was 
	given in the parser options.  This helps to make the parser 
	options and converter options separate.

	(test) If expanded formats not defined in the parser options, 
	expand all of the formats except 'tex'.

	* t/16raw.t,
	* t/50value.t,
	* t/55conditionals.t,
	* t/57invalid_nestings.t,
	* t/60macro.t,
	* t/converters_tests.t,
	* t/html_tests.t,
	* t/plaintext_tests.t:
	Add 'expanded_formats' configuration values where required to 
	minimize changes to the results of the tests.

2016-06-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line, _parse_texi): Remove some 
	commented-out code.

2016-06-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <@value>: Don't handle 
	arrays or hashes as values any more.  These used to be used for 
	string translation.

2016-06-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Final page of index hard to balance):
	Add section testing the problematic situation reported by Robert 
	Weiner.

2016-06-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Test of characters in section title):
	New section testing characters in a section title.

2016-06-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\balancecolumns): If the left column is 
	longer than the page height, split the last double column 
	material roughly in half.  Otherwise, a blank page could appear 
	before the last page of an index.  Blank page in index reported 
	by Robert Weiner.

2016-06-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <@U>: Change the error 
	message given when argument exceeds size of integer.  (This is 
	for consistency with the C implementation which may have a 
	different size of integer.)

2016-06-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <closed raw block command>: 
	Do not call _start_empty_line_after_command, and add an 
	'empty_line_after_command' element.  This led to an inconsistent 
	meaning for the 'spaces_after_command' extra value, and an 
	existing extra value could be overwritten, for example for a 
	@verbatim block, where the 'spaces_after_command' could be 
	immediately after the '@verbatim' line, or after the entire 
	block.

2016-06-13  Vincent Belaïche  <vincentb1@users.sourceforge.net>

	* util/texi2dvi (run_tex): Inline function listing unusual 
	characters and pass through literal backslash-newline sequence 
	to sed by use of single quotes.  Also, pass input file as a 
	separate argument for the benefit of MSYS path conversion.

2016-06-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_print_tree),
	* tp/Texinfo/Common.pm (print_tree): Move implementation
	to Common.pm.

2016-06-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/NodeNameNormalization.pm: Remove 
	commented-out code.

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

	* tp/Texinfo/Parser.pm (_end_line) <@end, @include>
	<@documentencoding, @documentlanguage>: Do not call 
	Texinfo::Convert::Text::convert to get the argument to the 
	command.  Instead, call _trim_spaces_comment_from_content to 
	find the element containing the text for the command.  Give an 
	error message if there are excessive elements in the argument 
	(e.g. @-commands).

	This has the consequence that @@ can no longer be used to
	refer to an @-sign in an @include command (similarly for "@ " 
	for " ", and some other @-commands).

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

	* doc/texinfo.texi (@setfilename): Fix typo.

2016-06-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/TextContent.pm: Remove commented-out and 
	disabled code.

2016-06-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-text-test.texi (@set and @value): Add a chapter 
	for tests of @set and @value.  Add a test of a value in an index 
	entry which is only defined after the index entry.

2016-06-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Remove line referring to "parsetexi" 
	subdirectory.

2016-06-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Structuring.pm (nodes_tree): Refer to
	Texinfo::Common::parse_node_manual instead of
	Texinfo::Parser::_parse_node_manual.
	* tp/t/test_utils.pl (cmp_trimmed): Put module name "Test::Deep"
	in front of function "cmp_deeply" which comes from it.

2016-06-07  Gavin Smith  <gavinsmith0123@gmail.com>
	
	* doc/texinfo.tex (\dopdfoutline): For display string for PDF 
	bookmark, check if encoding is Latin-1, and if so, call 
	\passthroughcharstrue.

2016-06-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\pdfmkdest): Call \passthroughcharsfalse in 
	order to use ASCII approximations in destination names.

2016-06-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\txiescapepdf) <\pdfescapestring not defined>:
	Completely expand argument, as is done in the other case.

2016-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (run_tex): Use \ followed by newline instead of 
	"\n" in replacement text of 'sed' 's' command.  Problem with 
	some versions of sed reported by Vincent Belaïche.

2016-06-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\UTFviiiLoop): Add a missing % character in 
	definition of non-initial bytes in UTF-8 sequences.
	(\DeclareUnicodeCharacterUTFviii): Move definition of 
	\UTFviiiTwoOctets (and others) out of this macro and rename 
	them.  Add more comments.

2016-06-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (run_tex): Only check for certain unusual 
	characters in the filename, using 'sed'.  (Suggestion from 
	Vincent Belaïche.)  Loop through any that occurred and change the
	catcode to 12 within a TeX group.

2016-05-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (cd_dir): Check if argument is absolute, and if 
	so, make all the path variables absolute.  Fix test of whether a 
	variable is absolute or not.  Absolute path given to --build-dir 
	broken reported by Daniel Gerbert.
	(cd_orig): If cdd_prefix is empty, don't try to remove it.

2016-05-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/test-utils.pl (@avoided_keys_tree): Don't compare 
	'remaining_args' values.  This is for the XS module, which 
	doesn't output them.

2016-05-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_macro_command_line): Order of 
	error messages changed.

2016-05-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <@acronym, @abbr>: Don't
	set 'explained_commands' hash or 'explanation_contents' extra 
	value on elements.
	* tp/Texinfo/Convert/HTML.pm (_convert_explained_command): Move 
	the code for keeping track of previous acronym explanations
	here.

2016-05-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <@novalidate>,
	* texi2any.pl <option processing>,
	* tp/Texinfo/Structuring.pm (nodes_tree)
	(associate_internal_references),
	* tp/Texinfo/Common.pm (%default_parser_state_configuration): 
	Use $self->{'info'}->{'novalidate'} instead of
	$self->{'novalidate'}.  Delete some commented-out code.

2016-05-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\indexnofontsvalue): New definition for a 
	@value when expanded in an index entry sort key.
	(\indexnofonts): Call it.
	(\dummyvalue): If @value is undefined, pass through an 
	unexpanded @value command to the auxiliary file.

2016-05-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\commondummies): Move definitions of 
	\definedummyword, \definedummyletter, \definedummyaccent out of 
	\commondummies.  Reorder a comment to put content about control 
	words next to content about \definedummyword.  Rename this macro 
	\definedummies, to reduce confusion with \commondummiesnofonts.

	(\commondummiesnofonts): Use different names for the parameters.
	Add a comment saying what is listed here.

2016-05-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Test of auxiliary files): Note 
	where cross-references should definitely work.  Add section 
	testing `-' and `_' in a @value.

2016-05-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\setref): Give \value a definition to match 
	those in \xrdef, \refx and \xrefX, to fix @value in 
	cross-reference targets.

2016-05-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\dummyvalue): New definition of @value for 
	writing to auxiliary files.  Expand the @value at the time of 
	writing, reversing change on 2016-05-07.
	(\commondummies): Use \dummyvalue definition for @value.
	Files using @value's in section titles broken when value was 
	@set after the table of contents, reported by Paul Eggert.

2016-05-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_abort_empty_line): Look for a 
	'spaces_after_command' empty extra value on the parent element 
	as well to stop an 'empty_line_after_command' element lingering.

2016-05-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <@definfoenclose command>: 
	Don't overwrite any 'extra' values, such as 'invalid_nesting'.

2016-05-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Update with news since 6.1 release.

2016-05-22  Ingo Feinerer  <feinerer@logic.at>  (tiny change)

	* util/texi2dvi (run_tex, make_openout_test): Use parentheses 
	around "eval" command in order not to exit prematurely due to 
	"set -e" with ksh under OpenBSD.

2016-05-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <@abbr and @acronym>: Don't 
	set 'normalized' values on elements.  Remove commented-out code.
	(module documentation): Don't document that a list of the 
	elements is kept in $self->{'explained_commands'}.  

2016-05-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Structuring.pm (associate_internal_references): 
	Avoid adding an undefined 'label' value under certain 
	circumstances.

2016-05-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_abort_empty_line): Remove a 
	'spaces_after_command' empty extra value, just as an empty
	'spaces_before_argument' value is removed.  This stops an 
	'empty_line_after_command' element lingering as an extra value.

2016-05-07  John Collins  <jcc8@psu.edu>  (tiny change)

	* doc/texinfo.tex (\typeout): New macro defined like in LaTeX for
	ensuring message are identical in format as those output by
	latex/pdflatex.
	(\requireopenindexfile): \typeout trace Writing index file.
	(\printindex) \typeout trace No file.

2016-05-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\mylbrace, \myrbrace): Avoid use of \ecfont, 
	because the user may not have it installed.  Use \lbrace and 
	\rbrace from plain TeX instead.
	* doc/texinfo-tex-test.texi (Test of non-alphanumeric characters):
	New section.

2016-05-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\commondummies): Define \value as a dummy.
	Do not call \makevalueexpandable.
	(\xrdef, \refx, \xrefX): Give \value a definition so we can get 
	rid of it when making a control sequence name for a 
	cross-reference target.  Comments changed.

	* doc/texinfo-tex-test.texi (Test of auxiliary files): New 
	section testing uses of @value in index entries and anchors.

2016-05-07  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo-ja.tex (\writetocentry):
	Fix XeTeX PDF link page number duplicates.
	For XeTeX, change \pdfmakepagedesttrue timing to after TOC writing.

2016-05-06  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo-ja.tex: New File.
	Japanese texinfo.tex loader.
	Some CJK packages are necessary to load before texinfo.tex.
	* doc/txi-ja.tex: New File.
	Japanese translations and font definitions for texinfo.tex.
	* doc/short-sample-ja.tex: New File.
	Short sample of Japanese Texinfo support files.

2016-05-05  Vincent Belaïche  <vincentb1@users.sourceforge.net>, and
	    Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (make_tex_cmd): Remove use of 'catcode_special'
	variable for filenames containing a tilde.  Do not append
	"\input" to the command-line to TeX.
	(run_tex): Check whether the filename contains a funny character 
	like a tilde.  If so, change the TeX category codes of some 
	characters within a group, and use \expandafter to input a file 
	outside of the group.  Append \input to the command-line.

	(option parsing): Make -~ do nothing.
	(make_openout_test): Don't refer to 'catcode_special' variable.

2016-05-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (cd_orig, cd_dir): Use SED variable instead of 
	sed directly.

2016-05-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (usage): Change wording of documentation of 
	--mostly-clean option.
	(input_file_name_decode): Remove unused 'in_dir_abs' variable.
	(cd_orig): Don't use ${VAR#WORD} feature because it doesn't 
	exist in some older shells.  Use sed instead.
	(cd_dir): Don't use \+ feature of sed because it is said not to 
	be portable.
	(move_to_dest): Remove commented-out echo line.

2016-05-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (cd_dir): New function, to change directory
	while updating variables containing paths.
	(cd_orig): Reverse the changes to these variables made in cd_dir.

	(run_tex_suite, make_openout_test): Use 'cd_dir' instead of 
	'cd'.

	(input_file_name_decode, main program loop): Don't change 
	variables t2ddir, in_dir to be absolute.  This could cause 
	problems passing filenames to TeX if the absolute path to the 
	input file contained a space or another unusual character.  
	(Problem found following report by Stephen Dawson.)

	(run_tex) [--tidy]: Remove code that uses a symbolic link to the 
	file being processed.  This meant that --command didn't work 
	along with --tidy due to the path to the file with the inserted 
	commands being overridden.  It is less necessary when absolute 
	paths aren't used.  (Problem found following report by
	Guo Yixuan).

	(cleanup): Refer to 'clean' and 'tidy' variables instead of 
	'build_mode'.  (No functional change.)
	(compile): Change a comment.

2016-05-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (usage): Streamline help message.  Don't mention 
	option '-@' (but don't touch the implementation of this option 
	to avoid breaking anything).  Don't mention pdftexi2dvi or 
	--dvipdf in the summary.  Don't mention --silent as a synonym 
	for --quiet, and don't mention --texinfo for --command.  Move 
	mention of @setfilename next to --command.  Remove mention of 
	AUC-TeX.  Only mention -E for --expand, and not -e.

2016-04-25  Theodore Ts'o  <tytso@mit.edu>  (tiny change)

	* util/texi2dvi (make_tex_cmd): Check whether 'catcode_special' 
	variable is equal to 'false' instead of 'maybe', so it doesn't 
	get set to 'false' on the second round when the variable has the 
	value 'true'.  Otherwise it breaks if the path to the file 
	contains a tilde.
	
2016-04-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (make_openout_test): Place double quotes around 
	expansion of shell variable to be more resilient in case path to 
	file contains spaces.  Problem reported by Stephen H. Dawson.

2016-04-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_expand_macro_body, _parse_texi):
	Place 'args_index' hash as a value in the elements of
	$self->{'macro'}, instead of being stored as an 'extra' value.
	This change is because the 'arg_index' hash is not used outside 
	of Parser.pm.

2016-04-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_expand_macro_arguments)
	(_expand_macro_body, _end_line <insertcopying>, parse_texi):
	Make $self->{'macros'} hash contain hashes which refer to the 
	elements that define the macro with the 'element' key, instead 
	of containing the elements themselves.  Define 'macrobody' on 
	the elements of $self->{'macros'}, instead of defining it as an 
	'extra' value.  This change is because the 'macrobody' is not 
	used outside of Parser.pm.

2016-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line),
	* tp/Texinfo/Structuring.pm (number_floats): Set
	$float->{'extra'}->{'float_section'} instead of
	$float->{'float_section'}, where $float is a @float element.

2016-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_next_bracketed_or_word): Don't set 
	parent field on created bracketed_def_content element.

2016-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\scanmacro): Set catcode of @ to 0 so that 
	@-commands in macro expansions aren't printed literally in an 
	index, where \ is the escape character.
	(\tex, \printindex): Don't set \escapechar.
	Broken formatting reported by Christophe Rhodes and Norbert Preining.

2016-04-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_node_manual): Move implementation 
	of function to tp/Texinfo/Common.pm.

2016-04-09  Gavin Smith  <gavinsmith0123@gmail.com>

	Reduce references to Texinfo::Parser module.

	* tp/Texinfo/Parser.pm (_parse_def): Remove commented-out code.
	* tp/Texinfo/Convert/HTML.pm: Refer to 
	Texinfo::Common::_print_current instead of 
	Texinfo::Parser::_print_current.
	(command_filename, _convert_key_command) 
	(_convert_indicateurl_command, _convert_ctrl_command)
	(_convert_titlefont_command, _convert_style_command)
	(_convert_float_command): Remove commented-out code.
	* tp/Texinfo/Parser.pm (_parse_node_manual): Add a comment.

	* tp/Texinfo/Convert/Converter.pm (_bug_message),
	* tp/Texinfo/Convert/DocBook.pm (_convert),
	* tp/Texinfo/Convert/TexinfoXML.pm (_convert):
	Refer to Texinfo::Common::_print_current instead of 
	Texinfo::Parser::_print_current.

2016-04-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%index_names): Don't set a 'prefix' 
	array on each member.
	(%command_index_prefix): Replace with a new variable called 
	%command_index.
	(definition_category, %index_type_def): Update.

	* tp/Texinfo/Parser.pm (%command_index_prefix, %command_index): Update.
	(_enter_index_entry, _register_index_commands): Don't use 
	$self->{'prefix_to_index_name'}.  Don't set 'index_prefix' on 
	index entry record.
	(_end_line) <def commands>,
	(_end_line) <@item, @itemx>,
	(_parse_texi) <@ifcommanddefined>,
	(parser, simple_parser): Use %command_index instead of 
	%command_index_prefix.
	(_register_index_commmands): Don't use 'prefix' array on index 
	record.  Inline into calling sites.

2016-04-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (parse_texi_file, _parse_texi): Set 
	'parent' field on created elements in the main tree.

2016-04-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <brace commands>: Define 
	'contents' for all brace commands again (changed on 2016-03-28).  
	(_end_line) <@itemize, @table>: Add 'contents' for @asis and 
	@bullet elements.

2016-04-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_line_command_args) <@exampleindent>:
	Don't permit trailing text after a numeric argument.

2016-04-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm: Use "closing brace" instead of "close 
	brace" in messages, and use "the beginning of a line" instead of 
	"a line beginning".

2016-04-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line) <@multitable prototypes>: Don't
	set parent field for created 'bracketed_multitable_prototype' 
	element.

2016-04-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_end_line) <@multitable prototypes>: Don't
	save a 'prototypes_line' extra value for the multitable element.
	* tp/Texinfo/Convert/TexinfoXML.pm (_convert) <@multitable>: 
	Reconstruct the information that was in 'prototypes_line'.

2016-03-29  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\skipspaces, \getfilename):
	Copy from the definition for pdfTeX.
	(\xrefX): Add XeTeX @xref PDF link support.

2016-03-29  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\pdfmkdest, \dopdfoutline):
	Add \txiescapepdf for XeTeX.

2016-03-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_node_extra_to_texi): Move to 
	tp/Texinfo/Convert/Texinfo.pm and rename 'node_extra_to_texi'.

2016-03-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_abort_empty_line): Check if 
	'spaces_before_argument' extra value needs to be removed from 
	parent as well as from current element.

2016-03-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (parse_texi): Always set parent on 
	element of type 'empty_spaces_before_argument'.

2016-03-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (%keep_line_nr_brace_commands): Keep line 
	number for all brace commands.
	(_parse_texi) <open brace separator>: Don't save line number 
	here.

2016-03-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <commands with commands as 
	arguments>: Don't remove 'contents'.

2016-03-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (%keep_line_nr_brace_commands): Add 
	accent commands, so that the line number always recorded for 
	accent commands (previously only done if the accent command took 
	an argument in braces).
	(_parse_texi) <brace commands>: Never define 'contents' for an 
	accent command.

2016-03-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm: Add line
	"use Texinfo::Convert::NodeNameNormalization" instead of relying 
	on module being pulled in indirectly.

2016-03-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* parsetexi, tp/parsetexi: Move subdirectory in preparation for 
	integration into texi2any as an XS module.

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

	* tp/Texinfo/Report.pm (_subsititue, _substitute_element_array): 
	New functions.
	(gdt): Only pass @value's to parser if they are simple strings.
	before running parser.  This will be necessary when we use the
	XS parser, which we can't pass complex Perl data structures to.
	Call _substitute afterwards on the resulting tree to fill in 
	@value's.
	* tp/Texinfo/Parser.pm (_parse_texi) <undefined @value>: Call 
	_abort_empty_line as is done for the other cases.  Add a comment 
	explaining when we'll get an undefined @value.
	* tp/t: Update reference test results.  No empty elements ("{}") 
	after value subsititutions any more.  Empty line elements before 
	unknown values removed.

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

	* tp/Texinfo/Convert/XSParagraph/configure.ac (lookup_perl_flags):
	Remove AC_DEFUN and use lookup_perl_conf instead.  Processing of
	flags broken if one of them took an argument, e.g. '-arch'.  
	Broken build for Darwin reported by Jack Howart.

2016-03-23  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\internalpagesizes):
	Add XeTeX PDF paper size support.

2016-03-23  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\urefbreakfinish):
	Add XeTeX \urefurlonlylinktrue support.

2016-03-23  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\email, \doemail):
	Copy from the definition for pdfTeX.
	Add XeTeX @email support.

2016-03-23  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\pdfgettoks, \pdfaddtokens, \adn, \poptoks) 
	(\maketoks, \makelink, \pdflink, \done):
	Copy from the definition for pdfTeX and modify for XeTeX.
	Add XeTeX PDF table of contents page number link support.

2016-03-22  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\pdfurl, \endlink):
	Copy from the definition for pdfTeX and modify for XeTeX.
	Add XeTeX PDF URL link support.

2016-03-22  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\iftxiuseunicodedestname): New switch.
	(\pdfmkdest, \dopdfoutline, \pdfmakeoutlines):
	Add XeTeX Unicode PDF destination name support.

2016-03-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\scanexp): Simply call \scanmacro instead of 
	expanding argument with \edef.
	(\Efloat) <xref label for @float>: Don't call \scanexp.  Remove 
	a comment.  Change some tabs to spaces.
	* doc/test-texinfo-tex-texi.tex (Copying and captions): New 
	section testing @float and @copying.

	Broken Unicode character in @copying reported by Masamichi 
	Hosoda.

2016-03-21  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex: Combine sections with XeTeX support.

2016-03-21  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\ifxeteximgpdf): Remove.
	(\doxeteximage): Improve XeTeX @image support.

2016-03-21  Thomas Klausner  <tk@giga.or.at> (tiny change)

	*  tp/Texinfo/Convert/XSParagraph/xspara.c (xspara_add_text):
	Do not call text_append_n with (size_t)-1.  Fix typos.

2016-03-20  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\ifpassthroughchars):
	Remove duplicated definition.

2016-03-07  Karl Berry  <karl@freefriends.org>

	* util/texi2dvi (version): add +dev, since the release has happened.

2016-03-06  Gavin Smith  <gavinsmith0123@gmail.com>

	Control expansion of non-ASCII bytes with a conditional.

	* doc/texinfo.tex (\gdefchar): New macro.  If 
	\ifpassthroughchars, output a token with catcode "other" for 
	each byte instead of expanding into the TeX code to display the 
	character.
	(\latonechardefs, \lattwochardefs): Use \gdefchar instead of 
	\gdef.
	(definitions for bytes in UTF-8 sequences): Check value of 
	\ifpassthroughchars, and if true, output a token with catcode 
	"other".  Give definitions for bytes that could appear after the 
	first in a UTF-8 sequence.  Use \gdef instead of \xdef when 
	using \UTFviiLoop.  Add some comments.

	(\passthroughcharacters): Remove macro, and replace uses of it 
	with "\passthroughcharstrue".
	(\nonasciistringdefs): Remove.

	(\setcharscatcodeothernonglobal): Remove.
	(\nativeunicodecharscatcodeothernonglobal): Remove.
	(\scanctxt): Replace use of \setcharscatcodeothernonglobal with 
	\passthroughcharstrue.
	(\setupdatafile): Don't call \setcharscatcodeothernonglobal.  
	(The existing call appeared not to do anything because it took 
	place within a group.)

2016-03-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi: Add example with a closing brace 
	following an empty macro argument.  Update remark about what is 
	expected for space trimming from macro arguments.

2016-03-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\defmacro): Don't attempt to strip spaces at 
	the start of the argument to a macro taking only one argument.  
	This could lead to an error ("Argument of @gobblespaces has an 
	extra }") for an empty argmuent.  Reported by Norbert Preining 
	for ESS manual.
	(\gobblespaces): Removed.
	(\parsemargdef, \scanmacro, \defmacro): Put "\xeatspaces" in 
	body of macro, instead of "\processmacroarg".  For 
	single-argument macros, make it disappear instead of letting it 
	equal to \eatspaces.

2016-03-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infokey.c (compile): Check if key sequence was defined as 
	"invalid" in infokey file, and if so, record it by saving a 
	pointer to a null InfoCommand structure.  Broken handling of 
	"invalid" reported by Ken Brown.

2016-03-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/dir-example,
	* install-info/install-info.c (ensure_dirfile_exists): Update 
	message in dir node.

2015-03-04  Ken Brown  <kbrown@cornell.edu>

	* info/dir.c (build_dir_node): Update message in dir node to 
	account for change in binding for '?' key, and use 'H' instead.

2016-02-27  Vincent Belaïche  <vincentb1@users.sourceforge.net>

	* util/texi2dvi (make_openout_test): make compilation of openout
	test in batch mode with using batch variable, rather than taking
	input from /dev/null, so that there is no clash with --batch
	command line option.

2016-02-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/long-tests.sh,
	* tp/tests/tex_html_tests.sh,
	* tp/tests/parser_base_tests: Remove unused scripts for running 
	tests.

2016-02-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* po/Makevars, po_document/Makevars (DIST_DEPENDS_ON_UPDATE_PO): Set
	to "no" to prevent "make distcheck" or "make dist" dirtying the
	output of "svn diff".

2016-02-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/htmlxref/Makefile.am,
	* tp/tests/htmlxref-only_mono/Makefile.am,
	* tp/tests/htmlxref-only_split/Makefile.am: Remove unused rules.  
	Don't use Makefile.onetst (no longer created) to say what to 
	distribute.

2016-02-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (@variable_string_settables): New 
	customization variable HTMLXREF.
	* tp/texi2any.pl: If HTMLXREF given on the command line, use it 
	as the location of the htmlxref.cnf file.
	* tp/Texinfo/Common.pm (parse_htmlxref_files): Move function to 
	tp/Texinfo/Convert/HTML.pm.

	* tp/tests/htmlxref/tests-parser.txt,
	* tp/tests/htmlxref-only_mono/tests-parser.txt,
	* tp/tests/htmlxref-only_split/tests-parser.txt:
	Set HTMLXREF customization variable.

	* tp/tests/htmlxref/Makefile.am:
	tp/tests/Makefile.am: Don't build in htmlxref, htmlxref-only_mono,
	htmlxref-only_split directories using a recursive make.  Run the 
	tests in those directories the same way that all of the others 
	are, except many_input_files.

	* tp/tests/README: Remove section on subdirectories.

2016-02-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (info_get_menu_entry_by_label): Always check 
	case-insensitively, so that manpages are not preferred to a 
	case-insensitive dir match when invoking.  Problem reported by 
	Vincent Lefevre.

2016-02-24  Vincent Belaïche  <vincentb1@users.sourceforge.net>

	* util/texi2dvi (filter_files): Ensure that this function does not
	make any non zero return status when the list of new xref files is
	empty. Otherwise that causes a prematurate exit of calling
	function, notably run_index. Remember texi2dvi is running under
	set -e regime.

2016-02-22  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex: Fix PDF outline cmap for XeTeX.

2016-02-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/contents/tests-parser.txt: Remove tests
	'double_contents_setcontentsaftertitlepage',
	'double_contents_setcontentsaftertitlepage_inline',
	'double_contents_setcontentsaftertitlepage_book',
	'double_contents_setcontentsaftertitlepage_book_chapter', and
	'double_contents_setcontentsaftertitlepage_book_info'.

2016-02-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/test_utils.pl (test): When using an out_ directory (like 
	out_info or out_html), delete its contents to prevent test 
	failures from left-over files.

2016-02-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%misc_commands): Move 
	'setcontentsaftertitlepage' and 'setshortcontentsaftertitlepage'
	to obsolete section.
	(%deprecated_commands): Add these two commands.

	* tp/Texinfo/Common.pm (%document_settable_unique_at_commands): 
	Remove these two commands.
	* tp/Texinfo/Convert/Converter.pm (converter): Remove handling 
	of these two commands.

	* tp/Texinfo/Convert/HTML.pm (@informative_global_commands): 
	Remove these two commands.
	* tp/Texinfo/Convert/Plaintext.pm (@informative_global_commands):
	Remove these two commands.
	(_convert) <sectioning commands, @contents, @shortcontents>:
	Remove handling of these two commands.
	(_prepare_special_element, _prepare_contents_elements)
	(_convert_informative_command): Remove handling of these two 
	commands.
	(_contents_short_contents_in_title): Removed.

	* tp/t/30sectioning.t (setcontentsaftertitlepage)
	(setshortcontentsaftertitlepage): Remove tests.
	(section_in_unnumbered_plaintext, section_in_unnumbered_info): Remove
	use of @setcontentsaftertitlepage in tests.

2016-02-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\setchapterstyle): Remove implementation.  
	(Obsolete since at least 3.8 release, September 1996).

2016-02-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\setcontentsaftertitlepage)
	(\setshortcontentsaftertitlepage): Replace definitions with a 
	message saying that these aren't Texinfo commands any more.
	(\Etitlepage): Remove handling of @setcontentsaftertitlepage.
	and @setshortcontentsaftertitlepage.
	(Karl Berry, bug-texinfo 2016-02-03).

	* doc/texinfo.texi (@-Command Details, Obsolete @-Commands): New 
	section node of appendix.
	(Obsolete @-Commands): Add @setcontentsaftertitlepage and
	@setshortcontentsaftertitlepage.
	(Command List): Remove the same.
	(Contents): Move information about @setcontentsaftertitlepage 
	and @setshortcontentsaftertitlepage to appendix.

	NB not done in texi2any yet.

2016-02-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (get_initial_file): Handle --file option here 
	instead of in 'main', as well as handling invocation as "info 
	'(FILE)NODE'", and the full path to FILE as the "initial file".  Use 
	"dir" as the last resort for the initial file.  Don't add a node to the 
	list of nodes to load.
	(add_initial_nodes): Add "Top" node to list of nodes to load if no 
	others are given.  Remove error message for initial_file undefined.
	(main): Handle --where option separately for --all given and not given.
	* info/session.c (info_follow_menus): Free initial node if following 
	menus strictly and a menu entry is dangling.
	* info/t/node-no-file.sh: Change expected error message.

	This is so that "info --output -" outputs the dir node, as used to 
	happen.  Vincent Lefevre reported that it doesn't happen for
	Texinfo 6.1.

2016-02-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\setchapterstyle, \headings, \setchapternewpage)
	(\everyheadingmarks, \everyfootingmarks): Define with 
	\parseargdef to read argument on the line instead of delimiting 
	the argument with a space.  This is necessary in case newlines 
	are active, which is the case at the very start of the file due 
	to the definitions in \enablebackslashhack.  Broken 
	@setchapternewpage reported by Norbert Preining.
	(\enablebackslashhack): Turn off special meanings after two 
	active newlines instead of after three, and add comments to 
	explain what is going on.

2016-02-15  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex: Add LuaTeX PDF outline Unicode strings 
	support.
	(UTF16oct): New Lua function.
	(\pdfescapestring): New macro.
	(\dopdfoutline): Add Unicode support for LuaTeX.

2016-02-15  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex: Add LuaTeX >= 0.85 support.
	(\txipagewidth): Rename from \pagewidth.
	(\txipageheight): Rename from \pageheight.
	(\pdfdest, \pdfoutput, \pdfliteral, \pdfcatalog, \pdftexversion)
	(\pdfximage, \pdfrefximage, \pdflastximage, \pdfendlink, \pdfoutline)
	(\pdfstartlink, \pdffontattr, \pdfobj, \pdflastobj)
	(\pdfpagewidth, \pdfpageheight, \pdfhorigin, \pdfvorigin): 
	Definitions for LuaTeX.

2016-02-15  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex: Fix PDF outline cmap for XeTeX.

2016-02-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/TexinfoXML.pm (output): Add a comment.

2016-02-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Tips): Add missing word "to".

2016-02-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Structuring.pm (split_by_node): Add a comment.
	* tp/Texinfo/Convert/HTML.pm (_prepare_elements, output)
	(_convert_contents, _protect_space, _convert)
	(_convert_element_type): Add some comments and blank lines in 
	source.  Remove some commented-out lines of code.  Add some 
	capital letters in comments.
	(%ignored_types): Remove commented-out variable.
	(%default_types_conversion): Add a comment.

2016-02-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (dump_nodes_to_file): Argument changed from 
	flags argument to a simple Boolean to say whether to dump 
	subnodes.
	* info/session.h (DUMP_SUBNODES): Remove definition.

2016-02-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.h, info/echo-area.h, info/filesys.h, info/window.h,
	info/indices.h, info/info-utils.h, info/search.h, info/session.h,
	info/variables.h: Remove unnecessary "extern" modifier for 
	function declarations.
	
	* info/window.h: Remove declaration of removed function 
	'process_node_text'.

2016-02-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (calculate_line_starts): Only look in first line 
	of node for Info keywords.

2016-02-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (nodeline_print): Move to info/window.c.
	(parse_top_node_line): Remove code altering start of node 
	depending on value of nodeline_print.
	* info/window.c (calculate_line_starts): Use nodeline variable 
	to decide where to start displaying the node.
	(window_line_of_point): Comments changed.

2016-02-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_node_of_tag_ext): Don't save a pointer into 
	the file buffer in the tag table, because it could continue 
	after the file buffer was garbage collected.  Change the logic 
	around so that the NODE field of the TAG structure is 
	initialized from the NODE object we return, instead of vice versa.
	* info/nodes.h (FILE_BUFFER, TAG): Comments changed.
	* info/t/search-split-after-index.sh: New test.

2016-02-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Customization Variables and Options): Move 
	@vindex commands after @item, so that the index entries refer to 
	the right row of the @multitable.

2016-02-13  Gavin Smith  <gavinsmith0123@gmail.com>

	Implement --javascript-ref option, suggested by Per Bothner.

	* tp/texi2any.pl ($result_options): New option --javascript-ref.
	($cmdline_options): New value 'JAVASCRIPT_REFS'.
	* tp/Texinfo/Convert/HTML.pm
	(default_javascript_lines): New function.
	(%default_formatting_references): Add 'javascript_lines', and 
	comment changed.
	(output): Call default_javascript_lines (indirectly).
	(_file_header_informations): Look at and return 
	'JAVASCRIPT_LINES' conf value.  Callers updated.
	(_default_begin_file, default_node_redirection_page): Include 
	lines referring to a JavaScript file in the file header.
	* tp/Texinfo/Common.pm (@variable_string_settables): Add 
	'JAVASCRIPT_LINES'.
	(@variable_other_settables): Add 'JAVASCRIPT_REFS'.

2016-02-09  Karl Berry  <karl@freefriends.org>

	* doc/texinfo.texi (Output Formats) <XML>: explicitly mention that
	web browsers cannot display our XML output, but just give an error.

2016-02-09  Masamichi Hosoda  <trueroad@trueroad.jp>

        * doc/texinfo.tex: Fix XeTeX PDF outline support.
        (\dopdfoutline): Add braces.

2016-02-08  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex:
	Native Unicode replace switching instead of re-definition.

	(\ifpassthroughchars): New switch.
	(\DeclareUnicodeCharacterNative):
	Integrate \DeclareUnicodeCharacterNativeThru.
	Add capable to switch replace / pass-through characters.
	(\DeclareUnicodeCharacterNativeThru): Remove.
	(\nativeunicodechardefsthru): Remove.
	(\passthroughcharacters):
	Use switch instead of \nativeunicodechardefsthru.

2016-02-08  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex:
	Improve XeTeX PDF outline support.
	(\pdfmkdest): Add \indexnofonts and \makevalueexpandable.
	(\dopdfoutline): Add \turnoffactive.
	(\pdfmakeoutlines): Add some comments. Use \let instead of \def.

2016-02-07  Masamichi Hosoda  <trueroad@trueroad.jp>

	* doc/texinfo.tex (\unicodechardefs): Comment out end of lines 
	to prevent extra space at the start of the page when native 
	Unicode support is used.

2016-02-07  Masamichi Hosoda  <trueroad@trueroad.jp>

        * doc/texinfo.tex:
	Add PDF outline support for XeTeX.
	(\pdfdest): set destination.
	(\pdfmkdest): set destination.
	(\dopdfoutline): make outline element.
	(\pdfmakeoutlines): make PDF outline.

2016-02-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\throughcharactersdefs): Rename to 
	\passthroughcharacters, and change comment.
	(\nonasciistringdefs): Change comment.
	(\documentencoding) <UTF-8>: Change comment.
	(\DeclareUnicodeCharacterUTFviii): Change comment.
	(\nativeunicodechardefsthru, \DeclareUnicodeCharacterNativeThru):
	Change comment, and move definition.
	(\DeclareUnicodeCharacterNativeAtU): Change comment, and move 
	definition.
	(\setcharscatcodeothernonglobal): Comment changed.
	(\DeclareUnicodeCharacterNative): Move definition.

2016-02-07  Masamichi Hosoda  <trueroad@trueroad.jp>

        * doc/texinfo.tex:
	Add native Unicode support for XeTeX and LuaTex.

	(\iftxinativeunicodecapable): New switch.
	(\iftxiusebytewiseio): New switch.

        (\setbytewiseio): Set I/O by bytes instead of UTF-8 sequence
	for XeTeX and LuaTex non-UTF-8 (byte-wise) encodings.

	(\documentencoding): Remove input by bytes settings for XeTeX.
	Add I/O by bytes settings for single-byte encodings.
	Add native Unicode settings for UTF-8 encoding.

	(\U): Any Unicode characters can be used by native Unicode.

	(\DeclareUnicodeCharacterUTFviii): Rename from
	\DeclareUnicodeCharacter.
	(\DeclareUnicodeCharacterNative): For native Unicode,
	Definition macro to replace the Unicode character.
	(\DeclareUnicodeCharacterNativeThru): For native Unicode,
	Definition macro not to replace (through) the Unicode character.
	(\DeclareUnicodeCharacterNativeAtU): For native Unicode,
	Definition macro that is used by @U command.
	(\DeclareUnicodeCharacterNativeOther): For native Unicode,
	Definition macro that is set catcode other non global.

	(\unicodechardefs): Rename from \utfeightchardefs.
	(\utfeightchardefs): UTF-8 byte sequence definitions (replacing and
	@U command). It makes the setting that replace UTF-8 byte sequence.
	(\nativeunicodechardefs): Native Unicode character replacing
	definitions. It makes the setting that replace the Unicode characters.
	(\nativeunicodechardefsthru): Native Unicode character ``through''
	definitions. It makes the setting that does not replace
	the Unicode characters.
	(\nativeunicodechardefsatu): Native Unicode @U command definitions.
	(\nativeunicodecharscatcodeothernonglobal):
	Native Unicode catcode other non global definitions.
	(\setcharscatcodeothernonglobal):
	Catcode (non-ascii or native Unicode) are set to other non global.

	(\throughcharactersdefs): Character ``through'' definitions.
	It makes the setting that does not replace the characters.

2016-02-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: Update version to 6.1dev.

2016-02-06  Eli Zaretskii  <eliz@gnu.org>

	* tp/Texinfo/Convert/XSParagraph/xspara.c (popen, pclose)
	[_WIN32]: Redefine to their non-Posix counterparts _popen and
	_pclose, to countermand Perl redirections in XSUB.h.

2016-02-06  Gavin Smith  <gavinsmith0123@gmail.com>

	6.1 release.
	* configure.ac, NEWS, util/texi2dvi, util/texi2pdf,
	doc/refcard/txirefcard.tex, texindex/texindex.awk,
	texindex/texindex.in: Version number.
	* build-aux/texinfo.tex: Update from doc/texinfo.tex.

2016-02-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Update notes about making a release.  Move 
	"make po-check" line.  Remove "rm ti.texi" for updating texindex 
	version.  Move gnulib-tool --add-import and util/srclist-txi, 
	and say what the latter is for.  Move "official releases only" 
	section only so that the "make distcheck" line above can be the 
	final command to produce the release tarball.  Move upload 
	instructions after this command.  Move instructions about 
	tagging source tree.  Combine instructions about checking DTD.

2016-02-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi,
	* doc/Makefile.am,
	* doc/info-stnd.texi,
	* Makefile.am,
	* info/Makefile.am: 2016.

2016-02-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Change "cross reference" to "cross-reference"
	throughout.

2016-02-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Mention that behaviour is unchanged for comma or full 
	stop following closing brace of @xref command.  Text from Karl Berry.
	* NEWS: Change word 'makeinfo' to 'texi2any'.
	* doc/texinfo.texi (Cross Reference Parts): Mention how to avoid 
	an unwanted comma after the cross-reference when processing with 
	TeX.

	* NEWS, doc/texinfo.texi (Cross Reference Parts): Move example 
	of comma insertion.  Suggestion from Karl Berry.

2016-02-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\xrefX): Check for some commands following 
	the closing brace of an @xref command which add space.  
	Suggestion from Karl Berry.

	* doc/texinfo-tex-test.texi (Cross-references): Add examples 
	with tab, newline, @SPACE, @TAB, @NL, @*, and @: following 
	@xref.

2016-02-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@inforef): Remove statement saying that 
	@inforef must be followed by a comma or a full stop.  Reported 
	by Karl Berry.

2016-02-05  Masamichi Hosoda  <trueroad@trueroad.jp>

        * doc/texinfo.tex (\doxeteximage):
        @image support for XeTeX.
        (\image): @image support for XeTeX.

2016-02-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Move NEWS about XS earlier and mention that pure Perl 
	modules can still be used by default.  Suggestion from Karl Berry.

2016-02-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: Add "(XS)" after "Perl extension" in message to 
	make it easier to find in configure output.  Repeat message 
	after output from trying to build and run an extension module so 
	it's clear what 'yes' or 'no' refers to.  Possible confusion 
	reported by Karl Berry.

2016-02-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\chapmacro): Allow this macro to occur inside 
	\titlepage, in case \setcontentsaftertitlepage is used.  Report 
	of error message from Akim Demaille.

2016-02-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\xrefX): Don't expand a control sequence 
	following \if.  Report of possible problem from Karl Berry.

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

	* doc/texinfo.tex (\xrefX): Add a comma after the page number 
	only if the cross-reference command is followed by a space, 
	instead of listing possible punctuation characters.  Suggestion 
	from Karl Berry.

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

	* doc/texinfo.tex (\indexnofonts): Add % after \} and \{ because 
	spaces are not skipped there.

2016-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	6.0.93 pretest.

	* configure.ac: 6.0.93 pretest.

2016-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\utfeightchardefs): Comment out empty lines 
	to prevent an end of paragraph.  Reported by Masamichi Hosoda.

2016-01-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/pseudotty.c: Call fpathconf to get value to disable a 
	special character in the termios structure.

2016-01-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/replace-viewed.sh: Skip test if no process could be 
	found, because it may not have started properly.

2016-01-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc: Remove line accidentally added on 2016-01-13.

2016-01-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (gc_file_buffers_and_nodes): Don't free file 
	buffers corresponding to files that aren't there any more, 
	because a node may still refer to them.
	* info/nodes.c (forget_info_file): Overwrite filename of field 
	with empty string to avoid a memory leak.

2016-01-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_node_of_tag_ext): Check that references for 
	node haven't already been initialized before calling 
	scan_node_contents, to prevent a memory leak if a node from a 
	previously garbage collected file is loaded again.

2016-01-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/configure.ac: Clear cache 
	variable with 'unset'.

2016-01-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Paragraph.pm: Check if using Windows, and 
	if so, bypass 'locale -a' check for a UTF-8 locale.

2016-01-23  Karl Berry  <karl@freefriends.org>

	* contrib/perldoc-all/GNUmakefile (install): no need for grep,
	since we don't install the split HTML any more.
	($(texi_pod_doc_incl)): mention failure to get uniprops et al.

2016-01-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/lib,
	* tp/Texinfo/Convert/XSParagraph/m4: Add gnulib module 'getline'.

	* tp/Texinfo/Convert/XSParagraph/Makefile.am (AM_CPPFLAGS): 
	Change to right path to include directories.

2016-01-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Paragraph.pm: Add a check for a UTF-8 
	locale in output of "locale -a".  Change 'stand-alone' to 
	'standalone' in a string.  Remove some commented-out code.
	* tp/Texinfo/Convert/XSParagraph/xspara.c (xspara_init): If we 
	fail to set a UTF-8 locale by other means, look at the output of 
	"locale -a" and use the first line of output with "UTF-8" in it 
	as the name of the locale to use.  Failure when no UTF-8 locale 
	could be set reported by Kiyoshi Kanazawa.

2016-01-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Move note about @copying next to the news for the 
	release it was added in (Texinfo 4.2, April 2002).

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

	* tp/Texinfo/Convert/HTML.pm (_protect_space_codebreak): Rename 
	to '_protect_space'.  Remove check for 'allowcodebreaks', as 
	this led to broken URL's and a broken <title>.  Report from 
	Padraig Brady via Karl Berry.
	(%css_map): Remove CSS style for 'span.nocodebreak'.

2016-01-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\xrefX): Move and edit a comment.

2016-01-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\indexnofonts): Replace definitions of @{ and
	@} so that \indexnofonts can be used for constructing a control
	sequence name with \csname, as is done in \xrefX.  Give them
	different values in order not to cause problems should two xref
	names differ only by replacing @{ with @}.
	(\dosubindwrite): Override definitions of @{ and @} set in 
	\indexnofonts to their previous definitions in \indexnofonts.
	@{ in xref broken reported by Karl Berry.

2016-01-17  Gavin Smith  <gavinsmith0123@gmail.com>

	6.0.92 pretest.

	* configure.ac, README, NEWS: 2016.
	* configure.ac: 6.0.92 pretest.

2016-01-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/configure.ac: Get Perl conf 
	value 'ccdlflags' for flags for linking the extension.

2016-01-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/TestXS.pm: Re-add line for 
	debugging output, for better trouble-shooting.

2016-01-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/README: Add example of how to update long tests.

2016-01-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/configure.ac: Get 'libperl' 
	Perl config value, and transform it into a -l flag for libtool.
	* tp/Texinfo/Convert/XSParagraph/Makefile.am (AM_LDFLAGS): Use 
	this flag along with -L$(PERL_INC).

2016-01-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Info Format Specification): Mention that 
	keywords in Info format should be read case-insensitively.  
	Suggestion for manual from Karl Berry.
	Move disclaimer about actual practice to the end of the node.

2016-01-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/configure.ac: Move check for 
	xsubpp to before gl_INIT, in order not to waste time running the 
	gnulib checks if the extension isn't going to be built anyway.

2016-01-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc (synch_with_program): Remove function.
	* info/t/c-u-m-x-scroll-forward.sh,
	* info/t/inc-sea-forward.sh,
	* info/t/inc-sea-history.sh,
	* info/t/inc-sea-insensitive.sh,
	* info/t/inc-sea-forward-nonregex.sh,
	* info/t/gc-split.sh: Don't call it.  It could lead to an 
	infinite loop if the program had already exited, and also slowed 
	down the tests.
	* info/pseudotty.c: Call tcsetattr to turn off special 
	characters like C-u and C-s.

2016-01-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/configure.ac: Print error if 
	"xsubpp" program is not found.  This avoids an attempt to later
	execute a "typemap" program when $(XSUBPP) -typemap is done.

2016-01-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex: For LuaTeX, output bytes instead of UTF-8 
	multi-byte characters.  Add comment to say this is a problem 
	with XeTeX which we haven't fixed.  Problem under LuaTeX and 
	XeTeX reported by Masamichi Hosoda.

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

	* gnulib: Run gnulib-tool --add-import, omitting the "mkstemp" 
	module which isn't used any where (possibly used in texindex.c, 
	which isn't distributed any more).

	* gnulib: Run gnulib-tool --add-import, omitting "memmem".

2016-01-07  Masamichi Hosoda  <trueroad@trueroad.jp> (tiny change)

        * doc/texinfo.tex: For XeTeX, fix input by bytes instead of
        by UTF-8 codepoints. Settings for subsequent files to be read.
	(\documentencoding): Settings for the document root file.

2016-01-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/Makefile.am (install-data-hook):
	Remove TestXS module files after they are installed.

2016-01-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_convert_preformatted_type): Add an
	extra newline after a <pre> tag if the contents begins with a 
	newline.

2016-01-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/README,
	* tp/tests/README: 2016 in copyright dates.

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

	* doc/texinfo.tex (\enableemergencynewline): New macro.
	(\fixbackslash): Use it, in order to give newline a default
	active definition.

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

	* doc/texinfo.tex, NEWS: For XeTeX and LuaTeX, use input by 
	bytes instead of by UTF-8 codepoints.  Documents encoded in 
	UTF-8 reported broken by Werner Lemberg.

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

	* tp/Texinfo/Convert/HTML.pm (%css_map): Use 'font-family: initial'
	instead of 'font-family: serif' for @r.  Suggestion from Karl Berry.

2016-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* INSTALL: Some words about XS.
	* README-hacking: Words about translation updates.

2016-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Makefile.am,
	* tp/Texinfo/Convert/XSParagraph/Makefile.am,
	* tp/texi2any.pl: Replace uses of pkglibexecdir with pkglibdir.
	Modules installed under pkglibexecdir weren't being found due 
	not being substituted by configure script.  Reported by
	Andreas Schwab.  Probably related to AC_SUBST in 'gl_CONFIGMAKE'
	in 'configmake' gnulib module overriding the default definition.

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

	* info/info-utils.c (copy_converting): Don't check whether a 
	value of type size_t is negative in loop condition, because 
	size_t is unsigned.  Always loop instead.

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

	* info/terminal.c (term_mm, terminal_has_meta_p): Remove unused 
	variables.
	* info/terminal.c (terminal_initialize_terminal),
	* info/pcterm.c (pc_initialize_terminal): Don't refer to removed 
	variables.

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

	* doc/texinfo.texi (Node Menu Illustration): Change "copy of 
	diagram" to "diagram".

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

	* tp/tests/run_parser_all.sh: Run sed on file logging standard 
	error of program to account for variant output under MS-Windows, 
	reported by Eli Zaretskii.

2016-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/text.c (text_destroy): New 
	function.
	* tp/Texinfo/Convert/XSParagraph/xspara.c (xspara_add_text): Use 
	it instead of calling free directly, because free may have been 
	redirected to Perl's version.

2016-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/xspara.c (xspara_new): Don't 
	call free on TEXT objects, but reuse the storage.  Attempt at 
	fixing 'Freed to wrong pool' error reported by Eli Zaretskii.

2016-01-01  Eli Zaretskii  <eliz@gnu.org>

	* tp/Texinfo/Convert/XSParagraph/xspara.c (mbrtowc): Don't try to
	convert more bytes than a single UTF-8 sequence at the beginning
	of the argument string: otherwise MultiByteToWideChar fails.

2016-01-01  Karl Berry  <karl@gnu.org>

	* makeinfo/README,
	* tp/Texinfo/Convert/Converter.pm,
	* util/dir-example,
	* build-aux/texinfo.tex: sync.
	
	* info/dir.c,
	* info/echo-area.h,
	* info/filesys.c,
	* info/indices.c,
	* info/indices.h,
	* info/info-utils.h,
	* info/infodoc.c,
	* info/infomap.c,
	* info/nodemenu.c,
	* info/search.c,
	* info/search.h,
	* info/session.h,
	* info/termdep.h,
	* info/window.h,
	* system.h,

	* Pod-Simple-Texinfo/pod2texi.pl,
	* doc/refcard/txirefcard.tex,
	* doc/texinfo.texi,
	* info/info.c,
	* install-info/install-info.c,
	* texindex/ti.twjr,
	* tp/maintain/regenerate_cmd_tests.sh,
	* tp/maintain/regenerate_docstr.sh,
	* tp/maintain/regenerate_file_lists.pl,
	* tp/maintain/template.pod,
	* tp/texi2any.pl,
	* util/pdftexi2dvi,
	* util/texi-elements-by-size,
	* util/texi2dvi,
	* util/texi2pdf,
	* util/texindex.bat: 2016.

2016-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/Makefile.am: Remove out-of-date 
	comment at start of file and add copyright notice.
	* tp/Texinfo/Convert/XSParagraph/configure.ac: Add copyright 
	notice.

2016-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/Makefile.am
	(XSParagraph_la_LDFLAGS, TestXS_la_LDFLAGS): Add -no-undefined flag,
	for MS-Windows.  Report from Eli Zaretskii.

2016-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/xspara.c (xspara_add_text)
	(xspara__add_next): Supply third argument to mbrtowc to say how 
	many bytes are left.  Same for second argument to mbrlen.
	Suggestion from Eli Zaretskii.

2016-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/run_parser_all.sh: Remove TEXINFO_XS=omit line.
	* tp/tests/coverage/tests-parser.txt: Skip 
	formatting_utf8_enable_encoding test.

2015-12-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/run_parser_all.sh: Set TEXINFO_XS=omit to avoid failure
	in test_scripts/coverage_formatting_utf8_enable_encoding.sh.

2015-12-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* pretest 6.0.91.
	* configure.ac: versionn

2015-12-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Short Sample): Remove use of "-*-texinfo-*-"
	and "%** start of header", "%** end of header" from example.
	Change "names the file" to "names the manual" since @setfilename isn't
	here any more.
	(Short Sample Texinfo File): Same changes to complete example 
	without interleaved commentary.
	(Sample Beginning): Remove the same parts.
	(Texinfo File Header): Don't say that "-*-texinfo-*-" is 
	required.  Delete word "generally".
	(First Line): Mention optional "-*-texinfo-*-" here, for when 
	the file type isn't detected from the file extension.
	(Beginning and Ending a File): Don't say that the name of the 
	output file has to be specified in a Texinfo file.

	Suggestions from Per Bothner, Eli Zaretskii and Mathieu Lirzin.

2015-12-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Inserting Accents, Inserting Quotation Marks):
	Remove index entries for 'documentencoding'.

2015-12-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (copy_converting): When using ASCII 
	downgrade for unknown sequences, call 'iconv' with 2nd and 3rd 
	arguments null to flush any converted character before using 
	another iconv conversion state on the input.  Reorder switch
	statement to put the only case that falls through to the end 
	last.

2015-12-25  Eli Zaretskii  <eliz@gnu.org>

	* info/pcterm.c (blinkvideo, textcolor, textbackground) [_WIN32]:
	New functions.
	(pc_begin_blink, pc_default_color, convert_color)
	(pc_set_fg_color, pc_set_bg_color): New functions, to support
	capabilities added to terminal.c.
	(pc_initialize_terminal): Make the xref_attr use the lightcyan
	color, to be more prominent.
	(pc_initialize_terminal): Add hooks for the new attributes: bold,
	blink, and foreground/background colors.

	* info/info-utils.c (copy_converting): When 'iconv' finishes
	conversion, call it with 2nd and 3rd arguments NULL to make sure
	it flushes the last converted character to the output buffer.
	This avoids losing the last character when libiconv conversion is
	stateful.  Restore the input pointer before calling copy_direct if
	'iconv' failed to convert a character.
	(text_buffer_iconv): Use ICONV_CONST to avoid compiler warnings on
	platforms where the 2nd argument to 'iconv' should have the
	'const' qualifier.  Use the passed 'iconv_state' argument rather
	than the global 'iconv_to_output'.

	* info/info-utils.h (text_buffer_iconv): Adjust the prototype to
	use ICONV_CONST.

2015-12-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/search.c (looking_at_line): Check line case-insensitively 
	in case Info file has different capitalization for sequences like
	"End Tag Table".  Failure to read file reported by Luc Maranget
	for ocaml manual generated by hevea.

2015-12-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* install-info/tests/defs.in: Put LC_ALL=C to get messages in 
	English.  Test failures reported by Norbert Preining.

2015-12-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Paragraph.pm: Remove empty function from 
	end of file.  This is intended to fix a problem where an error 
	message "Can't call mro_method_changed_in() on anonymous symbol 
	table" would be printed for some versions of Perl.  Error 
	reported by Nelson Beebe for several systems.

2015-12-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (display_update_node_text): Move an assignment 
	to a variable back where it was before, moved on 2015-12-19.  
	Fixes problem with display reported by Benno Schulenberg.

2015-12-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl: Remove spurious space at end of #! line.

2015-12-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* pretest 6.0.90.
	* configure.ac: version.

2015-12-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/Makefile.am (dist-hook): Remove backup files from t/infodir
	subdirectory.

2015-12-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\begindoublecolumns): If not much space left 
	on page, start a new page.

2015-12-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/test_scripts/coverage_formatting_utf8_enable_encoding.sh: 
	Turn off XS paragraph module because this causes the test to fail.

2015-12-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Move instructions for updating version earlier 
	in file.  Add instructions for updating texindex version.

2015-12-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/variables.c (set_variable_to_value),
	* info/man.c (get_manpage_node),
	* info/info-utils.c (scan_reference_marker): Remove unused variables.
	* info/display.c (display_update_node_text): Move variable 
	declaration to start of block.

2015-12-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* gnulib: Run gnulib --add-import.

2015-12-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\begindoublecolumns): Remove \global 
	qualifier from an assignment to \vsize.
	(\enddoublecolumns): Some comments updated to reflect the fact 
	that \balancecolumns now saves its output in a box.

2015-12-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <misc commands>: If command
	@indent or @noindent is seen, start a new paragraph after the 
	spaces following the command.
	(_merge_text): Don't merge text into an 
	empty_spaces_after_command element.
	(Problem with starting a paragraph with an @image reported by 
	Per Bothner.)

	Changes to results of tests:
	* tp/t/macro.t (unknown_macro_in_line_command): Non-whitespace 
	text is not adjoined to empty spaces element.
	* tp/t/xml_tests.t (comments_on_misc_command_line): Comment 
	after @indent is inside a paragraph.

2015-12-17  Gavin Smith  <gavinsmith0123@gmail.com>

	Suppress chapter titles for single-page indices.

	* doc/texinfo.tex (\savemarks, \restoremarks): New \def's, split 
	out from \begindoublecolumns.
	(\begindoublecolumns): Use them.
	(\balancecolumns): Instead of outputting page so far, save it in 
	a box.
	(\enddoublecolumns): Use \savemarks inside output routine 
	followed by \restoremarks outside, before adding the box that 
	\balancecolumns saved.
	(\onepageout): Use \topmark to get chapter title on previous 
	page and \firstmark to get chapter title on current page.
	(\domark): Comments changed.

2015-12-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\math): If in math mode, do nothing, so
	nested @math work.

2015-12-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* install-info/tests/ii-0058-test: Remove test, because empty 
	dir file is already covered by ii-0018-test and ii-0019-test.
	* install-info/tests/ii-0018-test,
	install-info/tests/ii-0019-test: Update to account for fact that 
	an empty dir file now causes the dir file to be re-created.

2015-12-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* install-info/tests/ii-0058-test: Work like other tests, for 
	consistency.
	* install-info/tests/Makefile.am: List files relating to this 
	test.

2015-12-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (get_initial_file): Change "info" to "info-stnd" 
	if given as first non-option argument.

2015-12-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* Mention gettext and automake versions in NEWS.

2015-12-15  gettextize <bug-gnu-gettext@gnu.org>

	* gnulib/m4/gettext.m4: Upgrade to gettext-0.19.6.
	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.19.6.

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

	* tp/t/README: Add remark about numbers being removed for test 
	result subdirectories.

2015-12-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (key_time, get_input_key_internal): Change 
	interpretation of key-time=0 to mean 0 timeout instead of 
	infinite timeout.  When key-time=0 and at least three bytes
	come in at once the first of which is an ESC, yield the ESC as a 
	key.  This should allow specifying byte sequences for special 
	keys in .infokey, reported by Robert Ross not to work since 
	Texinfo 6.0.

	* doc/info-stnd.texi (Variables),
	* NEWS: Meaning of key-time=0 has changed.

2015-12-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@setfilename): Some reordering.  Mention 
	that @setfilename may still be required.
	
	* doc/texinfo.texi (Info Format Regular Nodes): Add 
	cross-reference to INFO_SPECIAL_CHARS_QUOTE.
	(Info Format Cross Reference): Correct mention of node name 
	quoting.

2015-11-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Refer to PDF reference.

2015-11-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (PDF Link colours): New example.

2015-11-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\inserintindexentrybox): Save depth of last 
	subbox of box containing index entry.  Set \prevdepth to this 
	value at the start of the next box for an index entry.
	(\begindoublecolumns): Start off the saved depth as 0.
	(\entry): Remove struts for multi-line index entries.
	(\entry): Turn off marks for \pdflink.

	(\pdfsetcolor): Update comment to match code re PDF operators
	k, K, rg and RG.

	(|, _, "): Minor formatting and comment changes for active 
	characters code.

	(\scanexp): Comment added to say this is for copying and captions.

2015-11-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\spaceisspace): Comment changed and \chardef 
	removed.
	(\ampChar, \colonChar, \commaChar, \dotChar, \questChar)
	(\semiChar, \hashChar, \lquoteChar, \rquoteChar): Remove these 
	\chardef's, and use literal constants instead.

2015-11-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/terminal.h
	(BGCOLOUR_MASK, BGCOLOUR_BLACK, BGCOLOUR_RED, BGCOLOUR_GREEN)
	(BGCOLOUR_YELLOW, BGCOLOUR_BLUE, BGCOLOUR_MAGENTA, BGCOLOUR_CYAN)
	(BGCOLOUR_WHITE): New symbols.
	* info/variables.c (set_variable_to_value): Add styles for 
	background colours.
	* info/terminal.c (terminal_switch_rendition): Handle background 
	colour changing.
	(terminal_set_bgcolour): New function.

	* info/info-stnd.texi (Colors and Styles): Document background 
	colour customization.

2015-11-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* install-info/tests/ii-0058-test: New test, for an empty dir 
	file.

2015-11-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* install-info/install-info.c (open_possibly_compressed_file): 
	If file is empty, try to create it if passed a callback for 
	doing so.  Problem with zero-sized dir files reported by
	Pedrum Mohageri.
	(format_entry): Use xmalloc instead of malloc.  Allocate an 
	extra byte.  Crash with strncat under Mac OS X Yosemite reported 
	by Alan Wehmann.

2015-11-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infodoc.c (info_get_info_help_node): Resort to 
	"(info-stnd)" if "(info)" isn't found.  Look for "(info)" 
	instead of "(Info)".

2015-11-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\onepageout): Use \thischapterheading for 
	\thischapter but sometimes blank, and don't change \thischapter.
	This means that @everyheading @thischapter @| @| does what it 
	did before.
	(\HEADINGSdouble, \HEADINGSsingle, \HEADINGSdoublex, \HEADINGSsinglex):
	Use \thischapterheading.

2015-11-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/xspara.c: Change // comments 
	to /* ... */ style.  Remove commented-out lines for debugging.

2015-11-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/variables.c (info_variables): Rename
	hl-ref-rendition to active-link-style,
	ref-rendition to link-style,
	match-rendition to match-style.
	* NEWS: Update.
	* doc/info-stnd.texi (Colors and Styles): Update.

2015-11-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/ParagraphNonXS.pm (_add_next): Don't count 
	DEL bytes in width of word.
	* tp/t/results/plaintext_tests/
	quote_node_names/res_plaintext/quote_node_names.txt: Update.

2015-11-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/README: Mention run_all function.
	* tp/t/test_utils.pl (test, run_all, output_texi_file): Comments 
	added.

2015-11-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/plaintext.t (quote_node_names): New test.
	* tp/t/input_files/nodequote.texi: Input file.
	* tp/t/results/plaintext_tests/
	quote_node_names/res_plaintext/quote_node_names.txt: Reference 
	output file.
	* tp/Makefile.am (test_files): Add nodequote.texi.

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

	* README-hacking: Mention problem with "make dist" and XS modules.

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

	* doc/texinfo-tex-test.texi: Add examples of space between macro 
	name and opening brace.

2015-11-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\entry): For multi-line entries, use a \strut 
	on first and last lines.  Comments changed or removed.
	(\insertindexentrybox): Set \lineskip to 0pt.

2015-11-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\passargtomacro): Rewrite to operate purely 
	at TeX's expansion stage.
	(\defmacro): Use \passargtomacro for macros of more than one 
	argument.
	(\macroargctxt): Change catcode of space.
	(\scanmacro): Don't call \passargtomacro because macro arguments 
	have already been processed.
	(\pdfurl, \commondummiesnofonts): Remove definition of 
	\xprocessmacroarg.

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

	* doc/texinfo-text-test.texi: Add examples of spaces in macro 
	arguments, and nested macro use.

2015-11-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Paragraph.pm: Change a couple of instances 
	of "environmental variable" to "environment variable."

2015-11-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Makefile.am (do_subst): Substitute @enable_xs@ in 
	texi2any.pl as intended.

2015-11-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl (BEGIN): Check if top_srcdir environment 
	variable is defined.

2015-11-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: Use _AC_OUTPUT_SUBDIRS macro inside a subshell.

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

	* configure.ac: Use _AC_OUTPUT_SUBDIRS macro to configure in 
	subdirectory.

2015-11-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: Handle srcdir being an absolute path for 
	building in XSParagraph subdirectory.  Used code from Autoconf's 
	_AC_SRCDIRS macro (release 2.69).

2015-11-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Add hints about the interdependencies between 
	subdirectories.

2015-11-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: Pass on all the options we were passed when 
	calling configure in the XSParagraph subdirectory.  Don't use 
	AC_CONFIG_SUBDIRS for this subdirectory, to save configuring
	it twice.  When testing if we can build and load Perl extension 
	modules, pass -I flags to Perl to put directories containing 
	files at start of module search path.  Account for out-of-source 
	builds by using srcdir variable.

2015-11-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/TestXS.pm: Remove mentions of 
	"XSParagraph" in comments and messages.  Comment out line for 
	debugging output.

2015-11-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl: Use srcdir as well as builddir to set module 
	search path.
	* man/Makefile.am (MAKEINFO_ENVIRONMENT): Set value of 
	top_builddir correctly.
	(mi_env): Use MAKEINFO_ENVIRONMENT, as it wasn't used otherwise.

2015-11-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl: Add 'use Texinfo::Convert::Converter' as this 
	module may not be loaded.

2015-11-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/XSParagraph.xs,
	* tp/Texinfo/Convert/XSParagraph/TestXS.xs: Add "PROTOTYPES: ENABLE"
	line to get rid of a warning.

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

	* tp/Texinfo/Convert/XSParagraph/XSParagraph.xs,
	* tp/Texinfo/Convert/XSParagraph/text.c,
	* tp/Texinfo/Convert/XSParagraph/xspara.c: Add copyright and 
	licence text.

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

	* tp/t/paragraph.t: Access paragraph formatting modules via a 
	string with the name of the module in it.  Aliasing a module's 
	namespace to switch between modules doesn't seem to work 
	reliably.

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

	* tp/Texinfo/Convert/XSParagraph/TestXS.pm: Always print 
	debugging output, and remove fallback code copied from 
	XSParagraph.pm.

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

	* tp/Makefile.am (test_files): Add east_asian_in_w.texi.
	* tp/t/README: Mention listing test input files in Makefile.am.  
	Mention another way of running a single test.

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

	* tp/Texinfo/Convert/XSParagraph/Makefile.am (EXTRA_DIST): Add 
	fail.pl.

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

	* tp/Texinfo/Convert/XSParagraph/TestXS.pm: Change package name.
	Remove comments copied from XSParagraph.pm.  Remove unused 
	functions, also copied here.  Rename $VERSION variable to avoid 
	it being altered by maintenence scripts.

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

	* install-info/install-info.c (format_entry): Add comment for 
	local variable, and goto label.

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

	* install-info/install-info.c (format_entry): Use a local 
	variable to avoid dereferences of output variable.

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

	Comments and formatting changes.
	* install-info/install-info.c (parse_input): Combine a comment 
	with comment at start of function, and add more information.
	Change another comment.
	(install_entry_here): Formatting changes.
	(main) <not deleting>: Comment changed for grammar.

2015-11-03  Gavin Smith  <gavinsmith0123@gmail.com>

	Prevent line breaks in Chinese text in cross-refereces, reported 
	by Brendan O'Dea.	
	
	* tp/Texinfo/Convert/ParagraphNonXS.pm
	(set_space_protection): New parameter, 'double_width_no_break'.
	(add_text) <double-width character>: If 'double_width_no_break' 
	flag is on, accumulate double-width characters just as if 
	'protect_spaces' were on.
	* tp/Texinfo/Convert/Plaintext.pm (_convert) <Cross-reference 
	commands>.  Call set_space_protection to set 
	'double_width_no_break' for the output for the cross-reference.

	* tp/Texinfo/Convert/XSParagraph/xspara.c 
	(xspara_set_space_protection, xspara_add_text): Likewise.

2015-11-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/plaintext.t (east_asian_in_w): New test.
	* tp/t/input_files/east_asian_in_w.texi: Input file.
	* tp/t/results/plaintext_tests/
	east_asian_in_w/res_plaintext/east_asian_in_w.txt: Reference 
	output file.

2015-11-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/xspara.c:
	(xspara_add_text) <double-width character>: If protect_spaces is 
	on, accumulate double-width characters instead of sticking them 
	in the output right away.
	(xspara__add_pending_word): Comment changed.
	* tp/Texinfo/Convert/ParagraphNonXS.pm (add_text) <double-width
	text>: Likewise.

2015-11-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Paragraph.pm: Use the correct symbol name 
	for the XS bootstrap function.  Print the name of the loaded 
	library file if debug output is on, as well as the name of the 
	bootstrap function.  Delay aliasing the loaded module to 
	Texinfo::Convert::Paragraph, as accessing the "init" function 
	right away seems not to work.

2015-11-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Makefile.am: Remove a commented-out line.
	* Texinfo/Convert/XSParagraph/configure.ac: Comment out or 
	delete messages printing results and use AC_MSG_CHECKING and 
	AS_MSG_RESULT.

2015-11-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/Makefile.am: Remove commented-out lines and 
	formatting.

2015-10-31  Gavin Smith  <gavinsmith0123@gmail.com>

	Fix compiler warnings.
	* info/variables.h (VARIABLE_ALIST): Change type of 'value' 
	field from int * to void *.  All uses updated to cast as 
	appropriate.
	* info/variables.c (highlight_searches): Type changed to int *.
	* info/display.c (wrap_terminal_switch_rendition): Cast from 
	long * to char *.

2015-10-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/README: Remove.

2015-10-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Add more items.

2015-10-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* install-info/tests/defs.in: Add commented-out for running with 
	valgrind.

2015-10-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Mention purposes of subdirectories, couple of 
	more checks for a release.

2015-10-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* install-info/install-info.c (parse_input): Initialize 
	missing_basename field of spec_entry structure.
	(ensure_dirfile_exists): Don't call close on a negative value.

2015-10-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@display, @table): Move advice about using 
	@table inside @display to @table node.
	(@small...): Move later in chapter.
	(@verbatiminclude): Move to Include Files chapter.
	(@lisp): Remove footnote suggesting that C or Fortran could be 
	embedded inside Texinfo files.

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

	* tp/tests/README: Mention purpose of htmlxref, 
	htmlxref-only_mono and htmlxref-only_split subdirectories.  
	(Info from Patrice.)

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

	* doc/texinfo.tex (\utfeightchardefs): More definitions for 
	mathematical symbols, from Karl, from Jim Hefferon.

2015-10-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\DeclareUnicodeCharacter): If character 
	already defined, print a warning, but don't make it a fatal 
	error.  Suggestion from Oliver Heimlich, 2nd October (bug-texinfo).

2015-10-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\utfeightchardefs): Add the rest of the Greek 
	alphabet.
	* doc/texinfo-tex-test.texi: Add some Greek text.

2015-10-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\begindoublecolumns): Set \topskip to 0pt.  
	This avoids a smaller gap appearing at the top of a column due 
	to a long index entry in a vbox with a large height.
	(\pagesofar): Add a gap above the columns close to what \topskip 
	did before.
	(\entry): Increase threshold for a long line.
	(\insertindexentrybox): Reduce \lineskip.

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

	* doc/texinfo.tex (\entry): When deciding whether an entry will 
	fit in a single line, don't include the left and right margins.  
	Allow for \rightskip in arguments to \parshape.  Reduce 
	allowable stretch into margin.  Formatting.

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

	* doc/texinfo.tex (\entry): Use a \vbox instead of a \vtop, for 
	better column balancing and to stop an index entry overlapping 
	text after the index.

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

	* doc/texinfo.tex (\entry): Permit hyphenation.

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

	* doc/texinfo.tex (\entry): Ragged right for long entries.

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

	* doc/texinfo-tex-test.texi (Long index entries): New section.

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

	* doc/texinfo.tex (\entry): Fix display of TOC entries for part 
	pages, which don't have line numbers, so that they are not 
	stretched across the whole width of the page.

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

	* doc/texinfo.texi (Not Ending a Sentence): Remove example of 
	incorrect input to make it easy to spot the correct input.  Add 
	'@findex :'.  Remove mention of typing on a typewriter.  Change 
	an "or" to a comma.  Be more explicit about which case is which 
	for when the extra space is wanted.  Remove words "after a 
	period" when we mentioned earlier in the sentence other 
	punctuation marks than the period.  Use a numbered list of 
	situations where @: should be used.  Move mention of HTML and 
	DocBook output to end of node.  Mention a mnenomic to remember 
	whether we are forcing an end of sentence or suppressing one.
	Remove statement about not using braces after the command, as 
	this should be obvious.
	(Ending a Sentence): Mention a trick along the same lines for 
	remembering what @. does.

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

	* doc/texinfo.texi (Indexing Commands): Update to mention 
	txiindexhyphenignore etc.

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

	* doc/texinfo.tex (\scanmacro, \commondummiesnofonts): Remove 
	definition of \xeatspaces, because this control sequence isn't 
	used any more.

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

	* tp/TestXS: Move test extension into tp/Texinfo/Convert/XSParagraph
	and remove directory.  This should make the test more reliable 
	as the conditions of building are more similar to those of the 
	real extension.  It should make the package a little smaller as 
	we have one fewer configure script, Makefile and libtool program.

	* tp/Texinfo/Convert/XSParagraph/TestXS.pm,
	tp/Texinfo/Convert/XSParagraph/TestXS.xs
	tp/Texinfo/Convert/XSParagraph/fail.pl: New locations of files.

	* configure.ac, tp/Makefile.am, 
	tp/Texinfo/Convert/XSParagraph/Makefile.am: Update.

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

	* doc/info-stnd.texi (Invoking Info): Change mention of 
	command-line variable to match synopsis.  Fix an ungrammatical 
	sentence.

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

	* doc/info-stnd.texi (Top): Move cross-reference to (info) to 
	Stand-alone Info node.  Add advice to press H for a list of key 
	bindings and explain how to move forward and backward in manual.

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

	* info/terminal.c, NEWS, doc/info-stnd.texi (Variables): Turn 
	mouse variable off by default.

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

	* doc/texinfo.texi: Remove "@paragraphindent 2" line and add
	"@set txiindexhyphenignore".
	* NEWS: Update with txiindexbackslashignore etc.  Mention that 
	info.info is no longer distributed.

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

	* tp/Texinfo/Convert/Paragraph.pm,
	tp/Texinfo/Convert/ParagraphNonXS.pm: Rename.
	* tp/Texinfo/Convert/XSParagraph/XSParagraph.pm,
	tp/Texinfo/Convert/Paragraph.pm: Move and rename.  This allows 
	code to refer to the Texinfo::Convert::Paragraph module, as it 
	did before (instead of Texinfo::Convert::XSParagraph::XSParagraph).

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

	* info/info-utils.c (parse_top_node_line): Adjust
	output_bytes_difference and node_offset according to how much of 
	the nodeline was printed.
	(scan_node_contents) <not rewriting node>: Adjust anchors with 
	output_bytes_difference.
	(scan_reference_marker): Avoid referring to output_bytes_difference.
	(copy_input_to_output): Formatting change.

	* info/nodes.h (NODE): Change type of 'display_pos' to signed.
	* info/nodes.c (info_node_of_tag): Check if the anchor position 
	we ended up has gone negative, and if so, set it to 0.
	* info/search.c (skip_node_separator): Comment changed.

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

	* doc/info.texi: Remove file, as it is distributed with Emacs.

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

	* tp/texi2any.pl (BEGIN): Look in @pkglibexecdir@ for loadable 
	modules, not @pkglibexecdir@/Texinfo.

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

	* doc/texinfo.tex (\image): Give \xprocessmacroarg a definition, 
	to try to stop an error when \image is used via a macro.

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

	* gnulib: Run gnulib-tool for updated Gnulib.

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

	* README-hacking: Mention dist-xz option for Automake.

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

	* Run gnulib-tool at top-level to remove vasprintf-posix module 
	and use vasprintf instead.  This is intended to reduce the 
	number of checks done in the configure script, including those 
	for math.h functions.

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

	Get 'make distcheck' to work:

	* tp/Texinfo/Convert/XSParagraph/Makefile.am: Remove XSParagraph.c
	from BUILT_SOURCES, and add it to CLEANFILES.  Use $< instead of 
	$*.xs in .xs.c rule.
	* configure.ac: Configure in tp/TestXS and in
	tp/Texinfo/Convert/XSParagraph unconditionally.  Update comment 
	referring to ignored TeX tests.

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

	* tp/t/README: Mention running maintain/regenerate_file_lists.sh.

2015-10-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Makefile.am (perl_specific_files): Remove 'Changes'.

2015-10-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Ignore @, \ and < when sorting index entries.

2015-10-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\indexnonalnumdisappear): Use variables 
	txiindexbackslashignore, txiindexhyphenignore, txiindexlessthanignore,
	txiindexatsignignore to ignore the corresponding characters in 
	an index sort key.
	(\indexnofonts): Move handling of txiindexlquoteignore to 
	\indexnonalnumdisappear.
	(\commondummiesnofonts): Comment updated.

2015-10-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Fonts): Put index entry for <lineannotation> 
	in @code.

2015-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Testing for Texinfo Commands): Add index 
	entry for 'txicommandconditionals' flag.

2015-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\indexnonalnumdisappear, \indexnonalnumreappear):
	Disable ignoring \, < and @ until we have options for them.

2015-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\entry): Get length of index entry text and 
	length of whole entry.  If it's too long, use \parshape to split 
	the entry across two lines.  Use \rightskip and \leftskip to 
	align first line of entry to the left, and last line to the 
	right.  Increase \hyphenpenalty to 10000.  Re-add a comment to 
	explain why the entry text isn't absorbed as a macro argument.
	(\indexdotfill): Increase stretchability of leaders to "filll" 
	level.

2015-10-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@setfilename): @setfilename not required.

2015-10-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Testing for Texinfo Commands): Use @@@@ in 
	example instead of @@ in order to output "@@".  Also use @@, @{ 
	and @} to match the other example.

2015-10-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi (Document Encoding): New test 
	chapter to test UTF-8 characters.

2015-10-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\utfeightchardefs): Add several missing 
	definitions, requested by Oliver Heimlich.

2015-10-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\documentencoding): Read argument with 
	altered catcodes.  This has been broken since 2015-09-03 when
	the catcode of - was changed.
	(\parseargdef): Comment changed.

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

	* tp/tests/Makefile.am: Remove a commented-outline, and move a 
	Make variable definition.
	* tp/tests/README: Mention test scripts in test_scripts 
	directory, and give a different method for updating test 
	results.

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

	* tp/Texinfo/Convert/HTML.pm (_convert_raw_command),
	* tp/Texinfo/Convert/Docbook.pm (_convert): Don't remove newline 
	from the last line of a raw format block.

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

	* doc/info-stnd.texi (Variables): Document 'nodeline' variable.
	* NEWS: Announce new variables.

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

	* doc/texinfo.texi (Macro Details): Mention problem with index 
	entries.

2015-10-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\part): Set \pchapsepmacro before using 
	\chapmacro to avoid extra blank pages following a part page.

2015-10-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Conditional Commands): Delete words "but 
	without the special historical case".

2015-10-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c (xrefs_of_manpage): Exclude first line of manpage.
	(get_manpage_node): Don't add an extra line to the manpage node.

2015-10-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Overview): Put contents of a footnote in the 
	main text.

2015-10-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\entry) <no page numbers>: Add a \hfill where 
	\indexdotfill would be.  This prevents a short part name being 
	split across lines in a table of contents.

2015-10-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\pdfurl): Define \xprocessmacroarg in case we 
	are in a macro expansion.  Problem with @email used via a @macro 
	in PDF output reported by Arnold Robbins.

2015-10-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/variables.c (info_variables): New user variable 'nodeline'.
	* info/info-utils.c (parse_top_node_line): Depending on value of 
	user variable 'nodeline', include more or less of the nodeline 
	in the displayed node.
	(scan_node_contents): Set inptr after calling parse_top_node_line.
	* info/nodes.c (info_node_of_tag): Check contents field of a tag 
	table entry to see if the node has to be (re-)scanned.  Don't 
	null contents field after scan_node_contents returns.
	* info/session.c (gc_file_buffers_and_nodes): Clear contents 
	field of tags table when gc'ing a file buffer.
	* info/t/Infokey-config: Set 'nodeline'.

	* info/session.c (info_keep_one_window):
	Call gc_file_buffers_and_nodes.

2015-10-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (ref_rendition, hl_ref_rendition, match_rendition):
	Use non-plain default renditions.
	(display_update_node_text): Still highlight cross-references if 
	hl_ref_rendition is given but ref_rendition isn't.

2015-10-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Defining Macros, Macro Details): Advice on 
	ending a macro body with '@c'.

2015-10-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/30section.t: Add new test 'loweredheading'.

2015-10-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Mention the last @lowersections fix, and mention macro 
	changes in texinfo.tex (newlines in a macro argument, relevant 
	for gcc manual).

2015-10-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Structuring.pm (_section_level): Function moved to 
	tp/Texinfo/Parser.pm.  All uses updated to access 'level' value 
	of element instead.
	* tp/Texinfo/Parser.pm (_end_line) <command is in in 
	command_structuring_level>: Don't set 'level' value.
	(_parse_texi) <sectioning commands>: Set 'sections_level' extra 
	value on element, and set 'level' value by calling _section_level.
	Do it for all sectioning elements, and not just those that are 
	"root commands", to include @heading and similar.  This is 
	intended to make @heading affected by @lowersections and 
	@raisesections, reported by Quinn Greer not to work.

2015-10-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Changes: File deleted.

2015-10-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Text.pm (heading): Add a comment.

2015-10-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/README: Remove instructions that don't work any more.

2015-09-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/index-apropos.sh, info/t/split-footnotes.sh: Send an 
	extra q to quit.

2015-09-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/echo-area.c (ea_rubout),
	* TODO: Abort echo area read if backspace at start of area and 
	user input is empty.

2015-09-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/echo-area.c (input_line_prompt): Remove unused variable.
	(PUSHED_EA): Remove unused field 'prompt'.

2015-09-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (parser) <INLINE_INSERTCOPYING>: Change
	"insercopying" to "insertcopying".

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

	* NEWS: Mention q can close a window, mention index and TOC 
	formatting changes, mention @deffn formatting change.

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

	* info/session.c (info_quit),
	* TODO: Make q close a window if there's more than one on the 
	screen.

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

	* info/infomap.c (default_emacs_like_info_keys),
	* info/info-stnd.texi (Searching Commands): Make '?' search 
	backwards, for consistency with 'less'.

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

	* info/infomap.c (default_emacs_like_info_keys),
	* info/info-stnd.texi (Miscellaneous Commands):
	Make C-h scroll backwards, in case the terminal sends C-h for 
	the delete or backspace key.

2015-09-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@table): Change "tables" plural to "table" 
	singular.  Remove word "Texinfo" qualifying "command".  Add a 
	comma before "such as".  Change "It" to "This command".  Change 
	"definition lists" in quotation marks to "list of definitions".
	Join second and third paragraphs to reduce ambiguity about what 
	"This command" refers to.  Change "that goes into" into "in", 
	and delete "and thus determines how it will be highlighted." and 
	delete "of each item".  In paragraph about @asis, Delete word 
	"also", and change a semicolon into a colon.  Delete word 
	"normally", and change "but" to "although".  Change "first 
	column text" to "text for the first column", and "second column 
	text" to "text for the second column".  Move material about an 
	empty second column to end of paragraph, and change "column 
	entry" to "column".  Join two paragraphs about empty lines.
	Begin paragraph introducing example with "For example", and 
	change "a @samp command" to "the @samp command".

2015-09-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/DocBook.pm:
	Add "use Texinfo::Convert::Plaintext" declaration.
	
	* tp/Texinfo/Structuring.pm (add_node_menu_if_missing): Account 
	for the case that there are no children nodes.

2015-09-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/README: Mention -F option to makeinfo.
	* tp/Texinfo/Convert/Plaintext.pm (_convert) <xref commands>:
	Conditionalize a call to _count_added.

2015-09-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/README: Mention tests under tp/tests.  Remove "texinfo/" 
	from start of a path.
	* tp/tests/README: Change a word "one" to "a".  Add headings
	"Regenerating test results" and "Checking test results".  Add an 
	example to show how to investigate a test failure.  Change 
	"content" to "contents" and "files" to "file", and "line 
	oriented" to "line-oriented".

	* tp/t/tests/test_scripts/layout_formatting_regions.sh: Update 
	results for this "long-checks" test (more to come).

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

	* info/session.c (incremental_search)
	(window_set_state, window_get_state): Refer to nodes by their 
	filename and nodename instead of with a NODE object.
	(window_set_state): Use info_set_node_of_window instead of 
	window_set_node_of_window, in order to put the node in the 
	window history.
	(incremental_search): Call cleanup_history to adjust the 
	window's history at the end of the incremental search.
	(cleanup_history): Null final entry in history array.

	* info/t/inc-sea-bs-after-strip-cr.sh: New test.

2015-09-24  Vincent BelaÃ¯che  <vincent.belaiche@gmail.com>

	* util/texi2dvi: Exempt msys as well as cygwin from using 
	semicolon as a path separator.
	(list_concat_dirs, absolute_filenames): Replace a literal colon 
	with an expansion of a variable.

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

	* util/texi2dvi (generated_files_get): Print a warning if the
	filename recorder is used along with an index file with an "fl"
	extension.
	(input_file_name_decode): Comment tweaked.

2015-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (comment_iftex, uncomment_iftex): Move in file 
	closer to where they are used.

2015-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (generated_files_get_from_fls): Avoid exiting 
	script with 'set -e' if file list is empty.

2015-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (generated_files_get_from_fls): Exclude files 
	ending in any of the extensions 'dvi', 'log' or 'pdf'.

2015-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (check_openout_in_log_support): Allow any file 
	number after '\openout' in the log, not just 0, because \openout2
	appeared with LaTeX.

2015-09-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Format with texi2dvi): Update to reflect new 
	default for TEXI2DVI_USE_RECORDER.

2015-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\requireopenindexfile, \printindex): If
	index is called "fl", use file extensions "f1" and "f1s" 
	instead, because "fls" conflicts with the extension for the 
	filename recorder.

2015-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (decide_aux_files_method): Default to not using 
	recorder.
	(run_core_conversion): Eliminate all renaming to handle indexes 
	called "fl".  When \openout lines are missing from the log file, 
	this will be dealt with by changes to texinfo.tex.
	(generated_files_get_from_fls): Use fls extension (not flz).

	(generated_files_get): Don't add extra files to the list or 
	filter it at all.  Don't take any arguments.
	(filter_files): New function, using the filtering logic that was 
	in generated_files_get.
	(aux_file_p, bibtex_file_p, index_file_p): Make suitable for 
	using with filter_files by echoing file name if the predicate is 
	true of the file.

	(all_files, add_all_filter): Logic for finding generated files 
	moved from generated_files_get, used in mostly_clean function.
	(top-level part of script): Call generated_files_get to set 
	a value for xref_files_new before calling mostly_clean.
	(mostly_clean): Call all_files to get list of files to remove, 
	instead of generated_files_get.

	(generated_files_get_from_fls, generated_files_get_from_log): 
	Don't output names of log or recorder file.
	(xref_files_changed): Compare all files output, not just those 
	that pass xref_files_p (not including the *.log or *.fls files 
	themselves).  However, don't compare derivative files such as
	sorted index files.
	(xref_files_p): Add comment to say this function isn't used.
	(run_tex_suite): Call xref_files_save once at the beginning, and 
	then immediately after each use of xref_files_changed in the 
	main loop.  This reduces the chances of an infinite loop 
	happening if one of the output files is overwritten by mistake 
	in the meantime.
	(xref_files_save): Don't call generated_files_get; use value of 
	xref_files_new for the files to save.
	(run_index, run_bibtex): Call filter_files instead of 
	generated_files_get.

	(compile): Put working directory back at the start of TEXINPUTS, 
	as this is clearer, and it was reported that on some versions of 
	MikTeX, the working directory always took priority regardless.
	Remove backup directory from search path, as this was a trick 
	for processing fl indices that didn't work reliably.
	Redirect output of test for \openout lines in log file to /dev/null.

	(usage): Move some options that aren't "build modes" out of the 
	build mode section.

2015-09-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Optional Arguments): Remove use of @var from 
	example of @defspec with optional arguments.  Change a @samp to 
	@code around @dots{} to avoid unwanted inverted commas.

2015-09-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\requireopenindexfile): Use \immediate before 
	\openout.
	(\df): Also define a \defsl font in addition to \defttsl, so we get
	parameters in @deffn lines the same size as the name of the function.

	(\domakedefun): Comment changed.

2015-09-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\defmacro) <2-9 arguments> Define 
	\processmacroarg as \xprocessmacroarg, and make the latter 
	unexpandable.
	(\scanmacro): Define \xprocessmacroarg as 
	\passargtomacro\eatspaces, to reduce doubled backslashes to one.
	(\commondummiesnofonts): Give \xprocessmacroarg a definition.

	(\defmacro): Define helper macros with names ending in "@" 
	instead of "x", because this causes funny results when the file 
	contains two user-defined macros one of which has the same name 
	as the other with an extra "x" on the end.

	* doc/texinfo-tex-test.texi: Add examples with a macro with two 
	arguments.

2015-09-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\afterenvbreak): Copy from \aboveenvbreak.
	(\aboveenvbreak): Insert a penalty for page breaking above 
	environment, instead of a bonus.

	(\insertindexentrybox): Set \lineskip with stretch.

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

	* util/texi2dvi: Don't exempt mingw and djgpp from using ; as a 
	path separator.  Suggested by Eli Zaretskii.

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

	* doc/info-stnd.texi (Invoking Info, Printing Nodes): Use @env 
	in index entries and in text for environment variables.

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

	* doc/texinfo.tex (\entry): Use a finite \rightskip to encourage
	more words onto the earlier lines.  Increase \linepenalty and
	\hyphenpenalty.  No interword stretch.  Make hanging indent 1em
	instead of 2em.  Use a completely shrinkable space before the
	page number.
	(\indexdotfill): Reduce stretchability to balance stretch of 
	\rightskip in previous lines.

	(\initial): Move initial slightly to left.

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

	* util/texi2dvi (run_tex_suite): Call xref_files_changed right 
	after run_core_conversion to avoid one extra generation of the 
	sorted index files which isn't necessary.  Reported by
	Vincent Belaiche.
	(run_core_conversion): Backup and restore a sorted *.fls index 
	file to avoid it being overwritten by run_core_conversion, and 
	so it can be checked by xref_files_changed.

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

	* doc/texinfo.tex (\entry): Store index entry in a \vtop to 
	allow something else to be added first.
	(\entryorphanpenalty): Used by \entry, nothing by default.
	(\indexorphanpenalty): Check if index entry is followed by 
	another index entry: if not, insert a penalty before it, to 
	discourage orphaned index entries at the top of columns.
	(\printindex): Instead of reading entire file with \input, read 
	it line by line.  Set \entryorphanpenalty to \indexorphanpenalty.

	(\chapmacro): Don't cancel \topskip: this change was of dubious merit.
	(\initialglyphs): Print tilde in chapter size.

2015-09-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Mention INFO_SPECIAL_CHARS_QUOTE.

2015-09-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi
	(Customization Variables for @-Commands): Add @validatemenus.
	(Other Customization Variables): Mention INFO_SPECIAL_CHARS_QUOTE.

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

	* doc/refcard/Makefile: Put "./" in front of txicmdcheck and 
	txivarcheck.
	* README-hacking: Mention "make ccheck" and "make vcheck" for 
	refcard.
	* doc/refcard/txicmdcheck (read_refman): Look for @section line
	instead of @appendix.  Failure reported by Karl.

2015-09-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-utils.c (avoid_see_see): Function removed.
	(scan_reference_marker) <hide-note-references=On>: Hide "*note" 
	more enthusiastically.

2015-09-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\entryrightmargin): Define sequence with 
	\newdimen.
	(\startcontents): Instead of reducing \hsize, set 
	\entryrightmargin.
	(\entry): Set \rightskip and \parfillskip to add a margin at the 
	right which we can stretch into if needed, from the value of 
	\entryrightmargin.  Add setting for \linepenalty.  Set 
	\hangafter explicitly.
	(\finishentry): Remove \hfil glue before leaders.  Use 
	\thinspace before page number instead of `\ '.
	(\indexdotfill): Use a non-infinite stretch for the leaders.
	(\chapentry): Move page numbers to right slightly.

	(\chapmacro): Cancel \topskip glue before heading.
	(\appentry): Narrow the space after word "Appendix".

	(\indexdummies): Remove part of comment.

2015-09-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Macro Details): Reinstate discussion of 
	workaround for macro arguments with cedillas.  Also arguments to 
	macros with a single argument should be able to cross lines.

2015-09-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-texi.texi: Add example of chapter after a part 
	page, and examples of @pxref.

2015-09-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\part): Call \chapmacro in order to output a 
	mark on the page to clear \thischapter.

2015-09-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\onepageout): Check if we've just changed 
	chapter, and if so, blank \thischapter so the name of the 
	chapter isn't doubled in the headline.

	(\bindingoffset, \normaloffset, \pagewidth, \pageheight)
	(\finalout): No change, but move in file closer to the rest of 
	the output stuff.

	(\begindoublecolumns): Propagate information in \topmark and 
	\firstmark across first output routine.

	(\gettopheadingmarks, \getbottomheadingmarks, \onepageout)
	(\pagebody, \centerchap, \chappager, \chapoddpage, \chapmacro)
	(\headline, \footline): Add or change comments.

	(\initial): Increase pre-initial stretch from 0.5\baselineskip 
	to 1\baselineskip.
	(\balancecolumns): When not balancing final columns, allow glue
	in second column to stretch.

2015-09-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (@paragraphindent): Move sentence about 
	texinfo-format-buffer out of here, as it appears not to be 
	relevant.
	(texinfo-format commands): Move it here.

2015-09-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Mention comma insertion for cross-reference commands.  
	Add caveat about @setfilename removal.
	* doc/texinfo-tex-test.texi: Add examples for cross-references, 
	and part pages.
	* doc/texinfo.texi (One Argument, Two Arguments, Three Arguments)
	(Four and Five Arguments, @ref, @pxref, Cross Reference Parts)
	Update to reflect automatic comma insertion.
	(References, One Argument): Consolidate discussion of output of 
	cross-references in References node.

	(Three Arguments): Remove a couple of sentences.

2015-09-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (usage): Add reference to "info texi2dvi".
	* doc/texinfo.texi (Format with texi2dvi): Document 
	TEXI2DVI_USE_RECORDER.

2015-09-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (window_make_modeline),
	* doc/info-stnd.texi (The Mode Line): Remove *Tags out of Date* 
	message, because it often won't fit in the mode line, the user 
	won't know what it means, or be able to do anything about it.  
	Also remove "Subfile:" part for split files (the subfile can 
	still be shown with the "=" command.), and the "zz" part.

2015-09-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (usage),
	doc/texinfo.texi (Format with texi2dvi): Move discussion of the 
	pros and cons of --tidy.

	* doc/texinfo.texi (Format with texi2dvi): Mention that a line 
	can't start with "@c (_texi2dvi)" either.  In paragraph about 
	etex, change "they are" to "it is" in a sentence, and reorder a 
	sentence, and move this paragraph to the end.  Move --command 
	paragraph after discussion of output and input format options.
	Move mention of --help earlier.

2015-09-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (make_openout_test): Add a comment.

2015-09-08  Vincent Belaïche  <vincent.belaiche@gmail.com>

	* util/texi2dvi (make_openout_test): Save and restore 
	catcode_special, and use catcode_special=false for make_tex_cmd.

2015-09-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (make_openout_test): Put "./" in front of path 
	of test file.  Supply /dev/null as input of TeX engine.

2015-09-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Command Syntax): Make a section of an 
	appendix on @-commands.
	(@-Command Details): New appendix.
	(Command List, Command Contexts): Make sections of the new 
	appendix.
	(Conventions): Move some of the information from Command Syntax 
	here.
	(Short Sample): Reorder words in a heading.
	(Def Cmd Continuation Lines, Inserting an Atsign): Add 
	@sortas{@@} specifiers
	(@documentdescription): Add @code around "<meta>".

2015-09-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\indexnonalnumdisappear)
	(\indexnonalnumreappear): Disregard @ when sorting index 
	entries.
	Remove commented-out definition of \l.
	(\initial): Reduce end of column glue from 6 lines to 5 lines.
	(\group, \addgroupbox): Split out function.
	(\cartouche): Use \addgroupbox, in order to break the page if 
	there isn't enough room on the current page for the cartouche.

2015-09-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\itemizeitem): Check not in inner mode before 
	using \vadjust.

2015-09-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\macroargctxt): Do \catcode`\^^M=\other, to 
	preserve newlines in a macro argument.
	(\parsemargdef): Put \processmacroarg instead of \xeatspaces in 
	\macarg.ARG.
	(\gobblespaces): New macro.
	(\defmacro): If number of parameters is 1, don't use \eatspaces 
	on the argument, but do put \gobblespaces before it.

	(\getargs): Say in comment what this macro does.

	Move code to process macros with more than 9 arguments together 
	in the file.
	(\getargvals@@): Remove comment.
	(\setemptyargvalues@): Change a word in a comment.

	(\parsemacbody, \parsermacbody, \defmacro): Rename \temp to 
	\macrobody.

	(\texisavetoksstackpoint, \texirestoretoksstackpoint) 
	(\texionouternewtoks): Remove these macros which aren't used anywhere.

	* doc/texinfo-tex-test.texi: Add examples for a multi-line macro 
	argument, and trimming whitespace from a macro argument.

	Some of these changes are to handle better macros in the GNU tar 
	manual.

2015-09-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Re-add "@setfilename" line, required by 
	Automake 1.15.  Reported by Stefan Husmann.

2015-09-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Info Formatting, Comments, Minimum)
	(Sample Beginning, Texinfo File Header, Start of Header)
	(Writing a Menu, @var, @documentlanguage, documentencoding)
	(Sample Include File, Format with texi2dvi)
	(Formatting Partial Documents, Requirements Summary)
	(Preparing for TeX, A4 Paper, Command List)
	(Short Sample Texinfo File, GNU Sample Texts)
	(@setfilename),
	* NEWS: @setfilename is now no longer required.

2015-09-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\requireauxfile): New macro.
	(\refx, \Efloat): Use it.
	(\fixbackslash): Read texinfo.cnf here if it exists.
	(\setfilename): Do nothing.

2015-09-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\initialglyphs): Use chapter size for caret.  
	Change shape of underscore back to what it was in regular text.
	Increase end-of-column glue before initial heading from 3 lines 
	of stretch to 6.
	(\entry): Reduce stretch of glue before an entry from 1pt to 0.5pt.
	Remove an out-of-date comment, because '-' is always active now.
	(\initial): Put \secfonts inside the argument to \leftline.
	(\balancecolumns): Remove glue from bottom of first column to 
	make sure it is higher than the second.

2015-09-04  Vincent Belaïche  <vincent.belaiche@gmail.com>, and
	    Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi
	(generated_files_get_from_log): new function.
	(generated_files_get_from_fls): new function.
	(generated_files_get): Generate files based on log
	file or fls file whichever applicable according to variable
	generated_files_get_method.

	(make_tex_cmd): New function taking on preamble part of
	run_tex.  Insert -recorder option when applicable, based on 
	recorder_option_maybe variable.
	(run_tex): Delegate to make_tex_cmd making of the tex command.
	(make_openout_test): new function.
	(check_recorder_support): new function.
	(check_openout_in_log_support): new function.
	(set_aux_files_from_fls): new function.
	(set_aux_files_from_log): new function.
	(decide_aux_files_method): new function.
	(Main part/preamble to action): call decide_aux_files_method.
	(End of file): Add "Local Variables" comments to set indent 
	style for Emacs.

	(run_tex_suite): Call run_core_conversion before run_index, to 
	avoid overwriting a sorted index file.
	(run_core_conversion): If a recorder file was output, rename it 
	to avoid it being overwritten.
	(compile): Put backup directory at front of search path for TeX.
	(absolute_filenames): Don't prepend "." to the list.
	
	(xref_files_save): Comment changed.	

2015-09-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\dosubindwrite): If index sort key ends up as 
	empty, use a space.

2015-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Indexing Commands): Update documentation of 
	@sortas.
	(Command List): Add @sortas.
	* doc/refcard/txirefcard.tex: Add @sortas.
	* NEWS: Mention @sortas.

2015-09-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex: Let - always be active, and set it to 
	\normaldash.
	(\indexnonalnumdisappear, \indexnonalnumreappear): New control 
	sequences.  Make -, < and \ disappear by default for index sort
	keys.
	(\dosubindwrite): Call \indexnonalnumdisappear.
	(\indexwritesortas): Call \indexnonalnumreappear.
	(\indexwritesortas, \dosubindwrite): Cope better if @sortas{...}
	is not put at the very beginning of the argument.
	(\normalhyphen): Remove, and replace \normalhyphen with 
	\normaldash.

	* doc/texinfo.texi: Add @sortas keys for some index entries.  
	Remove it for \mathopsup.
	Correct entry <<' (umlaut accent)>> to <<' (acute accent)>>.

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

	* info/info-utils.c (printed_representation): Cast a char * to
	unsigned * so undisplayable bytes aren't always displayed as \377.
	(degrade_utf8): Add A", O" and U".
	* info/window.c (window_make_modeline) <preprocess_nodes_p>: Put
	"Info:" in status line, and eliminate space after closing 
	parenthesis.
	* TODO: Remove @sortkey suggestion, as this is in progress as 
	@sortas.  Add a couple of suggestions for Info browser.

2015-08-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\balancecolumns): Fix case of short final 
	column which we don't try to break.
	* NEWS: Mention a change to index formatting.

2015-08-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\initialfonts, \initialglyphs): Rename, and 
	add a missing %.
	(\balancecolumns): Make the columns have flush bottoms only if 
	their heights are not too different.
	* doc/texinfo-tex-test.texi: Add example to show flush column 
	bottoms in the middle of an index, and tweak examples of short 
	indices.

2015-08-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (display_process_line): Don't append codes to 
	line if we are still in the DEFAULT phase.

2015-08-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Colors and Styles): New chapter.

2015-08-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.h, info/variables.h (RENDITION): Move definition.
	* info/display.c (highlight_searches_p, xref_rendition_p): Remove.
	* info/variables.c (set_variable_to_value): Make highlight-searches=On
	equivalent to match-rendition=standout.
	* info/display.c (display_process_line): If hl-ref-rendition 
	hasn't been given, use ref-rendition for active links.

	* info/terminal.c (terminal_end_bold, terminal_end_blink): 
	Remove, repacing them with:
	(terminal_end_all_modes): New function.
	(terminal_switch_rendition): Manage to turn off boldface and 
	blinking without leaving everything else turned off as well.

2015-08-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/terminal.c (terminal_default_colour, terminal_set_colour):
	Add hooks.

2015-08-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/variables.c (set_variable_to_value): Handle rendition
	variables in user init file.
	(info_variables): Add user variables "ref-rendition",
	"hl-ref-rendition", "match-rendition".
	* info/display.h (RENDITION): New type.  Remove superfluous 
	"extern" modifers for function declarations.
	* info/terminal.h
	(COLOUR_MASK, COLOUR_BLACK, COLOUR_RED, COLOUR_GREEN)
	(COLOUR_YELLOW, COLOUR_BLUE, COLOUR_MAGENTA, COLOUR_CYAN)
	(COLOUR_WHITE, UNDERLINE_MASK, STANDOUT_MASK, BOLD_MASK)
	(ZERO1_MASK, BLINK_MASK): New symbols.
	* info/terminal.c (terminal_switch_rendition): New function.
	(terminal_default_colour, terminal_set_colour)
	(terminal_begin_blink, terminal_end_blink)
	(terminal_begin_bold, terminal_end_bold): New functions used by
	terminal_switch_rendition.
	(term_AF, term_AB, term_op, term_md, term_mb, term_me): New variables.
	(terminal_initialize_terminal): Set them.

	* info/display.c (wrap_terminal_switch_rendition): New function, 
	to wrap terminal_switch_rendition function.
	(wrap_terminal_begin_standout, wrap_terminal_end_standout)
	(wrap_terminal_begin_underline, wrap_terminal_end_underline): 
	Remove.

	(display_process_line): Instead of saying directly whether 
	underline or standout need to be turned on or off, decide which 
	sets of renditions should be in effect, the order of their 
	priority, and call wrap_terminal_switch_rendition with them.

2015-08-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\sortas): Use \ignorespaces.
	(\indexnofonts): Sort the letter thorn as "th".

2015-08-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Chapter Structuring): Remove reference to 
	node pointer deduction.  Abbreviate explanation of when to use 
	@node.
	(Nodes): Move some of that material here.
	(Menus): Make this chapter a section of the Nodes chapter.
	(@node): Merge this into Nodes node, raising level of 
	subsections to sections.  Move @findex line to Writing a Node.
	Move material about optional arguments to @node to Writing a Node.
	(Texinfo Document Structure): Make a section of the Nodes 
	chapter.  Surround "child nodes" in @dfn.  Don't say that the 
	first child has its parent as its Prev node, as this appears not 
	to be true.  Merge some material from Nodes into this section.

2015-08-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\pxref, \xref, \ref): If there isn't 
	punctuation after the argument when we output the page number,
	supply a comma after the page number.

	(\enablebackslashhack): Also use @c to turn off initial 
	definition of backslash.
	
	* doc/info-stnd.texi: Remove commas following cross-references 
	where they aren't needed.

2015-08-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Cross References): Don't mention nodes and 
	anchors in summary, for simplicity.
	(Cross Reference Commands): Say there are only three main 
	cross-reference commands, and not four, and also mention @uref.

	(Cross References) Refer to second and third arguments as 
	"online label" and "printed label", to show why they are separate.

	(Reference Syntax): Remove example output, because we had that 
	before in Cross Reference Parts.  Move references to @node and 
	@anchor nodes to Cross Reference Parts.  Merge the rest of it 
	into Cross Reference Parts and remove the node.

	(@xref): Remove material saying what the output looks like and 
	how it is used, because that was already covered in the 
	"References" node.

2015-08-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Top Node Naming)
	(Referring to a Manual as a Whole): Rename node and section.

2015-08-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/XSParagraph/text.c,
	tp/Texinfo/Convert/XSParagraph/xspara.c: remove unneeded
	_GNU_SOURCE.
	* doc/Makefile.am (EXTRA_DIST): correct typo in texinfo-tex-test.texi.

2015-08-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/XSParagraph/configure.ac (AC_CONFIG_HEADERS),
	tp/Texinfo/Convert/XSParagraph/XSParagraph.xs,
	tp/Texinfo/Convert/XSParagraph/text.c,
	tp/Texinfo/Convert/XSParagraph/xspara.c:
	revert to using config.h, as gnulib requires the header file
	to be called config.h.

2015-08-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/XSParagraph/configure.ac (AC_CONFIG_HEADERS),
	tp/Texinfo/Convert/XSParagraph/XSParagraph.xs,
	tp/Texinfo/Convert/XSParagraph/text.c,
	tp/Texinfo/Convert/XSParagraph/xspara.c: 
	Use xsparagraph_acconfig.h instead of config.h as the name for the
	header file generated by configure as an additional security against 
	using the config.h file in perl include directory.

2015-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\sortas): Expand to \eatspaces, to remove a 
	following space.
	* doc/texinfo.texi (\mathopsup): Use @sortas{mathopsup}.

2015-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Indexing Commands): Document @sortas{}.  
	Move example usage earlier.  Move discussion of typeface 
	earlier, leaving general advice on writing index entries at the 
	end.
	(Index Entries): Move to after Indexing Commands, and move 
	advice from there to here.

2015-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Writing a Texinfo File): Add a short blurb 
	to say what chapter is about.

2015-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Nodes, Cross References): Move @anchor node 
	between chapters.
	(Overview): Move Texinfo Document Structure node later, and
	Adding Output Formats later, and History earlier.
	(Adding Output Formats): Move material about man pages to the 
	end.  Reword slightly.
	(Output Formats) <Info>: Be slightly less detailed, because the 
	reader might not know what "nodes" are yet.
	(Six Parts, Short Sample): Merge Six Parts into Short Sample.
	<Header>: Mention that %**start of header is for the benefit of 
	Emacs, moved from Minimum.
	(Minimum): Remove use of @emph and the word "good".  Explain why 
	@bye is needed.  Put discussion of which file extensions are 
	preferred in a footnote.
	
	(Overview): Split off later sections into a new chapter, Writing 
	a Texinfo File.

	(Chapter Structuring): Move chapter after Nodes and Menus.

	* doc/texinfo.texi: Remove @shorttitlepage.

2015-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (%brace_commands): Add 'sortas'.
	* tp/Texinfo/Convert/Plaintext.pm (%ignored_commands): Add 
	'sortas'.
	* tp/Texinfo/Convert/HTML.pm (%default_commands_conversion): Set 
	conversion for @sortas to nothing, so command is ignored.

2015-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\setfilename): No longer call \openindices.
	(\openindices): Place body inline in texinfo.tex.
	(\requireopenindexfile): New macro.
	(\dosubind) <not @novalidate>: Use it.
	(\newindex, \newcodeindex): Don't open an index file, and record
	the file handle as a dummy value.

	* NEWS: Mention change for opening index files on demand.

2015-08-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\sortas): New macro.
	(\dosubindwrite): Give it a special definition.  Trim spaces
	from index entry.

2015-08-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* ti/ti.twjr (extract_initial): Read initials delimited by 
	balanced curly braces, to be compatible with older versions
	of texinfo.tex.
	(Special_chars): Remove backslash.
	(Problem reported by Norbert Preining, bug-texinfo, on 6 July.)

	* doc/texinfo.tex (\dosubindwrite): Output \ as 
	{\indexbackslash}, not {\tt \indexbackslash}.
	(\usemathbackslash): Removed.
	(\indexnofonts): Likewise, output { and } as braced sequences, 
	to be recognized by older versions of texindex.
	(\printindex): Give these braced sequences meaning.

2015-08-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi: Add more examples of short indices, 
	and show some index initial glyphs.

2015-08-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\balancecolumns): Increase height of column 
	that shouldn't be split.  Add a missing %.

	(\normalbackslash, \ttbackslash): Rename, to avoid confusion 
	with other \normal... commands that are defined to character 
	tokens with catcode other.

	(\initial): Define \\ for coming from a sorted index file.
	(\\): Remove definition, formerly used for user-defined macros.

	(\eatinput): Eat to end of line, to account for first line being
	`\input texinfo.tex' instead of merely `input texinfo'.
	(\enablebackslashhack): New definition.  Let \ to @eatinput and
	provide for it to be turned off after the first line.  Use it on
	the very last line of the file.
	(\setfilename): No longer use \fixbackslash.
	(\otherifyactive): Inline into single usage site.

2015-08-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\initial): Use \secfonts but within a group.  
	Use default glyph for double quote.  Add bonus for page break 
	before initial.
	(\balancecolumns): If final column is short, don't split it in 
	two.

	* doc/texinfo-tex-test.texi: Add examples for formatting 
	indices.

2015-08-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\initialfonts): Don't use \secfonts because 
	this changes \baselineskip.  Add % at end of some lines.
	(\balancecolumns): Add \vfill at the bottom of both columns.

2015-08-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\scanmacro): Alias \c with \texinfoc and use 
	it instead of \c at end of macro body.
	(\parsearg): Strip of a texinfoc comment as well.
	* doc/texinfo-tex-test.texi: Add example with a @macro expansion 
	inside @math.

	* NEWS: Mention change for non-alphanumeric index initials.

2015-08-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\indexdummies): Remove redefinition of 
	\endinput, since \endinput has not been added in \scanmacro 
	since 2010-12-23.

2015-08-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\scanargctxt): Put \catcode`\@=\other here as well.

2015-08-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Invoking Macros):  Remove duplicate material 
	about commas in the argument to a one-arg macro.  Mention that \ 
	escapes aren't used for whole-line arguments.  Mention that \{ 
	and \} don't work in TeX.

2015-08-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Macro Details): Remove two obsolete caveats.

2015-08-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\scanctxt, \macrobodyctxt): Move change of 
	catcode of @ to \macrobodyctxt, so that the , in @, doesn't 
	separate arguments to a macro.
	* doc/texinfo-tex-test.texi: Add example with @,c in a macro 
	argument.

2015-08-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Using Texinfo,  Overview): Merge Using 
	Texinfo into the introductory material for the containing 
	chapter.

2015-08-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\defmacro) <non-recursive 0-9 args>: Don't 
	call \scanmacro in a group.  Add comments to distinguish 
	recursive and non-recursive definitions.
	(\comment, \c): change catcode of carriage return to active, not 
	other. Ths doesn't have any effect, but reduces the number of 
	different catcodes that carriage return can take, so is simpler.  
	For \comment only, duplicate self past the end of a macro 
	expansion.
	(\scanmacro): Append \comment to argument to \scantokens.  Don't 
	change category codes before \scantokens or surround \scantokens 
	in a group.  Use a marker \aftermacro after the \scantokens 
	argument.
	(\gobblecr): Removed.
	(\scanexp): Add line changing catcodes before call to 
	\scanmacro, within a group, and comment it out for now.
	These changes appear to allow the macros to work in the manual 
	for groff, Edition 1.22.3, Autumn 2014.

	* doc/texinfo-tex-test.texi: Add example with opening and 
	closing a TeX group via a @macro.
	* doc/Makefile.am: Distribute texinfo-tex-test.texi.

2015-08-19  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/XSParagraph/Makefile.PL,
	tp/Texinfo/Convert/XSParagraph/Makefile.am,
	tp/Texinfo/Convert/XSParagraph/XSParagraph.pm,
	tp/Texinfo/Convert/XSParagraph/configure.ac: use a specific value
	for the XSParagraph XS interface version, instead of the project 
	version, and use it to match with bootstrap in XSParagraph.pm.
	Do not version the XSParagraph shared object, as it is only dlopened.

2015-08-19  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/XSParagraph/XSParagraph.xs, 
	tp/Texinfo/Convert/XSParagraph/*.c: protect #include <config.h> by
	#ifdef HAVE_CONFIG_H.

2015-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: Only configure in tp/Texinfo/Convert/XSParagraph
	subdirectory if building XS extensions is turned on.

2015-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/TestXS: New subdirectory, containing a test XS module to 
	test whether such can be built.
	* tp/Makefile.am: Distribute tp/TestXS.
	* configure.ac <--enable-perl-xs>: Make default value "check", 
	and for that value, build and test the TestXS module.  Subsitute 
	an 'enable_xs' output variable.
	* tp/texi2any.pl: Get 'enable_xs' Autoconf output variable.

2015-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/configure.ac: Wipe Autoconf 
	cache value for AC_PROG_CC.
	* tp/Texinfo/Convert/XSParagraph/README: Remove done issue.
	* tp/Texinfo/Convert/XSParagraph/Makefile.am: Remove mention of 
	fetch_conf.pl, and commented-out rules and variables.  
	Distribute XSParagraph.xs.
	* tp/Texinfo/Convert/XSParagraph/fetch_conf.pl: Delete.

2015-08-18  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/XSParagraph/XSParagraph.pm, 
	tp/Texinfo/Convert/XSParagraph/Makefile.PL: remove letters
	from $VERSION, as it breaks loading of module.  Fix undefined variables.
	* tp/MANIFEST, tp/Makefile.PL, tp/Makefile.am, 
	tp/maintain/clean_perl_module_files.sh, 
	tp/maintain/prepare_perl_module_files.sh: update.  Do XSParagraph
	recursively.

2015-08-17  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/XSParagraph/MANIFEST, 
	Texinfo/Convert/XSParagraph/Makefile.PL, 
	Texinfo/Convert/XSParagraph/XSParagraph.pm,
	Texinfo/Convert/XSParagraph/t/XSParagraph.t: update stand-alone
	perl module code.  Remove unneeded or generated files.
	* tp/Texinfo/Convert/XSParagraph/Makefile.am,
	tp/Texinfo/Convert/XSParagraph/prepare_standalone_perl_module.sh:
	script that can be used to build a stand-alone module.

2015-08-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\scanmacro): Strip a trailing active newline 
	from the macro body if newlines are active.
	* doc/texinfo-tex-test.texi: Add example.
	
2015-08-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\macrobodyctxt): Make catcode of space 
	\other, so they are preserved when expanded in a context like 
	@example.
	(\parsemacbody, \parsermacbody): Terminate macro body at line 
	with space with catcode \other.
	(\macroargctxt, \defmacro): Update comments.
	* doc/texinfo-tex-test.texi: Add example.

2015-08-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi: Add example with macro invocation 
	nested inside an argument.

2015-08-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo-tex-test.texi: Add test file.
	* README-hacking: Mention to check texinfo-tex-test.texi.

2015-08-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\passargtomacro): New macro, to convert 
	doubled backslashes into single backslashes in macro argument.
	(\braceorline) <braced argument>: Call \passargtomacro.
	(\macroargctxt): Make catcode of \ active (13) instead of escape (0).

2015-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/60macro.t: New test 'macro_expands_to_empty'.

2015-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl (%formats_table): Use the right key name to 
	store module names for 'debugtree' and 'debugcount'.

2015-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/configure.ac: Convert backward 
	slashes to forward slashes in Perl's configuration values.

2015-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (_parse_texi) <macro expansion>: If macro 
	expansion is empty, don't add to macro expansion stack.  Problem 
	with empty macro body, leading to error about recursive macro 
	usage, reported by Vincent Belaiche.

2015-08-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* autogen.sh: Run libtoolize before autoreconf.

2015-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* makeinfo/README,
	* texi2html/README: Refer to directory containing texi2any 
	implementation.

2015-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (printed_representation): Remove code 
	looking at value of ISO_Latin_p, which doesn't do anything.  (It 
	hasn't done much since the display routines became locale-aware.)
	* info/terminal.c (ISO_Latin_p): Move declaration of variable to 
	this file.
	* info/info-stnd.texi (Variables) <ISO-Latin>: Update.

2015-08-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Texinfo Mode): Move to an appendix.
	(Command Contexts): Make a top-level appendix.  Remove some 
	unnecessary words.
	(Command Syntax, Formatting Commands): Merge.  Distinguish 
	commands taking an argument on a line from commands starting a 
	block.  Also mention that there other exceptions than @refill, 
	like @tab.

2015-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@ftable @vtable): Mention that @itemx as 
	well as @item creates an index entry.

2015-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Variables): Replace @table with @vtable 
	and remove @vindex lines.

2015-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS, doc/info-stnd.texi (Variables): Document 'follow-strategy'.

2015-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/XSParagraph.xs,
	* tp/Texinfo/Convert/XSParagraph/xspara.c: Update some comments 
	and remove some commented-out code.

2015-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Info Format Specification): Uncomment 
	material on node quoting, and add advice not to use it until 
	it's more widely supported.

2015-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (@variable_string_settables): Add 
	'INFO_SPECIAL_CHARS_QUOTE'.
	* tp/Texinfo/Convert/Info.pm (_node) <INFO_SPECIAL_CHARS_QUOTE>: 
	Add quoting characters around node name if required.
	* tp/Texinfo/Convert/Plaintext.pm (_convert) <xrefs and menus>
	<INFO_SPECIAL_CHARS_QUOTE>: Add quoting characters around 
	segments of cross-references and menu entries if they contain 
	problematic characters.
	<xrefs> <INFO_SPECIAL_CHARS_WARNING>: Warn if a node name 
	contains a full stop even if it is not followed by whitespace, 
	as this still breaks readers.

2015-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm (_convert_enumerate_command): Use
	<ol start="NUMBER"> for numeric argument other than 1.

2015-08-12  Karl Berry  <karl@freefriends.org>

	* doc/texinfo.texi (@code{@@enumerate}): be clearer that
	@enumerate 0 is allowed, but signed numbers are not.

2015-08-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (scan_reference_target): Always canonicalize
	target nodename.
	* info/t/xref-across-lines.sh: New test.

2015-08-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (apropos_in_all_indices): Check if there is no 
	filename, to avoid crash with "info -k" when there is a 
	malformed dir entry.  Crash reported by Ivan Pacheco, and cause 
	of crash discovered by Sergey Poznyakoff.

2015-08-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Indices): Remove unnecessary cross-reference.

2015-08-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (_scroll_forward, _scroll_backward): Set point 
	at beginning (resp. end) of node if going backwards (resp.  
	forwards) failed.  If we did go backwards, put the cursor at the
	beginning of the window.  Change since Texinfo 5.2 reported by
	Benno Schulenberg.

2015-08-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (forward_move_node_structure): Don't go down a 
	menu for a dir node.  (Broken since 2015-07-13 when N_IsInternal 
	ceased to be set for dir nodes.)
	
2015-08-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Cursor Commands): Remove explanation for 
	having cursor movement commands in Info.  Change "have" to "has" 
	and "identical to" to "the same as".

	* doc/info-stnd.texi (Searching Commands, Index Commands): Split
	Searching Commands in two.

	* doc/info-stnd.texi (Top): Re-jig.
	(Stand-alone Info): Change "ASCII terminal" to "text terminal", 
	to cover e.g. UTF-8 and ISO-8859-1.

	* doc/info-stnd.texi (Search Commands): Move mention of 
	'min-search-length' to end.  Remove repeated information about 
	'}' and '{'.  Remove mention that default search string is 
	displayed between '[' and ']'.  Move paragraph about incremental 
	searching to be next to paragraph about non-incremental 
	searching.  Move description of 'search-next' and 
	'search-previous' commands earlier, and mention that regex use 
	(or not) is also maintained.  Remove unnecessary mention that 
	lines in the same node are not skipped.  Rely more on 
	description for 'search-next', and mention that 
	'search-previous' usually goes back to the same match after a 
	'search-next'.
	(Index Commands) <i>: Remove mention of unreliable feature.

	* doc/info-stnd.texi (Search Commands): Document 'tree-search'.
	* info/session.c (info_tree_search_prev, info_tree_search_previous):
	Rename.

2015-08-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/variables.c (info_variables): Help string for 
	"follow-strategy".

2015-08-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* TODO: Remove @else, obsolete problem with scrolling to bottom 
	of help, full text search and reference highlighting (both in 
	progress, unnecessary customization of which key to report in 
	help).  Add suggestion for another Info display mode.

2015-08-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Fonts): Remove obsolete paragraph about 
	using @t in a node name.

2015-08-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/variables.c (info_variables): New user variable 
	"follow-strategy".
	* info/nodes.c (info_get_node_with_defaults): If 
	follow-strategy=remain (the default), try to remain within the 
	same directory as the node we're coming from.

2015-08-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac,
	* tp/Texinfo/Convert/XSParagraph/configure.ac,
	* tp/Texinfo/Convert/XSParagraph/Makefile.am: Recognize
	PERL_EXT_CFLAGS, PERL_EXT_CPPFLAGS, PERL_EXT_LDLAGS as user 
	variables.

2015-08-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac,
	* tp/Texinfo/Convert/XSParagraph/configure.ac: Add 
	--enable-perl-xs option.  Record result via Autoconf output 
	variable and Automake conditional.
	* tp/Makefile.am: Substitute result into texi2any.pl.
	* tp/Makefile.am: If --disable-perl-xs was given, don't build in 
	XSParagraph subdirectory

	* tp/texi2any.pl: Substitute choice for --enable-perl-xs option, 
	and propagate to Texinfo::Convert::XSParagraph::XSParagraph module.
	* tp/Texinfo/Convert/XSParagraph/XSParagraph.pm: If 
	--disable-perl-xs was given to configure, disable use of Perl XS 
	modules.
	* README-hacking: Mention a case when you might want to run 
	tp/texi2any.

	* NEWS: Update with some work in progress.

2015-08-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (BEFORE_MENUS): New symbol.  Use it instead of 
	literal value.  Remove some commented-out code.

2015-08-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Short Sample Texinfo File): Remove some 
	unnecessary words.
	(Sample Texinfo Files): Reword slightly.
	(Short Sample): Remove some unnecessary words and sentences, and 
	rearrange some paragraphs.

2015-08-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Remove commented-out appendices.

2015-08-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\initialfonts): New macro.
	(\initial): Split into \initial and \initialx.  Use 
	\initialfonts in \initial, and use \egroup at the end of 
	\initialx.  Rely on the use of \secfonts in \initialfonts 
	instead of \let\tentt=\sectt etc.
	(\normalhyphen, \usemathbackslash): New control sequences.
	(\secrmnotbold): New font.

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

	* info/nodes.h (NODE): New field 'active_menu'.
	(N_SeenBySearch): New flag.

	* info/session.c (tree_search_check_node)
	(tree_search_check_node_backwards): New functions.
	(info_tree_search, info_tree_search_next, info_tree_search_prev): New
	user commmands (experimental).

	* info/session.c (put_node_in_window, forget_node_fast) 
	(wipe_seen_flags, info_set_node_of_window_fast) 
	(tag_of_reference): New utility functions.

	* info/nodes.c (find_node_from_tag): Preserve active_menu field 
	for nodes in window histories.
	* info/infomap.c (default_emacs_like_info_keys): Add bindings 
	for new commands.
	* info/window.c (window_line_of_point),
	* info/display.c (display_update_one_window): Calculate line 
	starts if needed.
	* info/window.c (calculate_line_starts): No longer static.
	* info/nodes.c (info_load_file): Store filename without file 
	extension.
	* info/window.h (WINDOW): Update a comment.

2015-08-01  Karl Berry  <karl@freefriends.org>

	* doc/texinfo.tex (\ctrl): remove this long-obsolete control sequence.
	(\hatchar): use this instead of \hat for the \chardef,
	to avoid conflict with plain's (math accent) \hat.
	(\activehat): use it.
	Based on ideas in (tiny change) bug-texinfo mail
	from Ralph Schleicher, 01 Aug 2015 21:37:58.

2015-07-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/ModulePath.pm.in: New file, to add directories to 
	module search path.
	* configure.ac: Process it to create ModulePath.pm.
	* tp/Makefile.am: List ModulePath.pm.in and ModulePath.pm.
	* tp/texi2any.pl (BEGIN): Use Texinfo::ModulePath module.  Don't 
	look at file extension of invoked program to decide whether to 
	use installed modules; instead, check whether strings like 
	@these@ have been substituted.
	* README-hacking: Update advice on running uninstalled texi2any 
	scripts.
	* tp/paragraph.t (BEGIN): Use Texinfo::ModulePath.
	* tp/t/test_utils.t (BEGIN): Use Texinfo::ModulePath.

	* tp/Texinfo/Convert/Info.pm,
	* tp/Texinfo/Convert/Plaintext.pm,
	* tp/Texinfo/Convert/XSParagraph/XSParagraph.pm,
	* tp/Texinfo/Convert/XSParagraph/XSParagraph.xs,
	* tp/t/paragraph.t: Uniformly refer to XSParagraph.pm
	as "Texinfo::Convert::XSParagraph::XSParagraph".

	* tp/Texinfo/Convert/XSParagraph/Makefile.am: Install 
	XSParagraph.pm under $(pkgdatadir)/Texinfo/Convert/XSParagraph.

	* tp/tests/htmlxref/Makefile.am,
	* tp/tests/htmlxref-only_mono/Makefile.am,
	* tp/tests/htmlxref-only_split/Makefile.am,
	* tp/tests/many_input_files/indices.sh,
	* tp/tests/many_input_files/tex_t4ht.sh,
	* tp/tests/run_parser_all.sh,
	* doc/Makefile.am,
	* man/Makefile.am:
	Set AM_TESTS_ENVIRONMENT to pass 'top_srcdir', 'top_builddir' 
	onto tests.  Don't specify location of directories containing 
	Perl modules with "-I" flags to Perl.

2015-07-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Mention improvements in speed and memory usage for Info.  
	(Changes on 2015-07-31 and 2015-07-13.)

2015-07-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_node_of_tag, info_node_of_tag_ext): Rename 
	and add an extra argument.  Call scan_node_contents 
	conditionally.
	(info_node_of_tag, info_node_of_tag_fast): New functions.
	* info/session.c (info_search_internal): Call 
	info_node_of_tag_fast to get node.
	(info_search_in_node_internal): If there is a match, fetch the 
	node and do the search again.
	(info_search_internal): Always free a node if it wasn't retained 
	in the window.

	* info/nodes.h (N_Simple): New flag.
	* info/session.c (regexp_search): Indicate search not found in 
	return value if that is the case.

2015-07-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Run M-x texinfo-master-menu in Emacs.

2015-07-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Printing Indices & Menus): Move node to 
	indices chapter.
	(Ending a File): Add cross-reference to Printing Indices & 
	Menus.
	(File End): Move into end of Ending a File.
	(Ending a File): Subordinate to Beginning a File chapter.
	(Beginning a File): Rename Beginning and Ending a File.  (This 
	also makes the document short table of contents fit on a single 
	page.)  Remove a sentence.

2015-07-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_node_of_tag): Don't save a pointer into a 
	file buffer, only an offset.

2015-07-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/XSParagraph.pm: Heed TEXINFO_XS
	environmental variable.  Idea by Karl Berry.

2015-07-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/xspara.c (add_text): Check for
	some non-breaking spaces.

2015-07-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/configure.ac: Check for
	Perl's CC before AC_PROG_CC so the automatic dependency checking 
	style will not be inappropriate.
	* tp/Texinfo/Convert/XSParagraph/Makefile.am: Move setting of CC 
	from here to configure.ac.

	* tp/texi2any.pl: Show error message if loading a module failed.

2015-07-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph: Run "libtoolize --copy --force"
	for libtool 2.4.6.

2015-07-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/texi2any.pl: Import fewer modules by default, for speed.  
	(texi2any --help changed from about 0.4 s to about 0.1 s.).
	(%formats_table): Store name of required module in 'module' 
	values of hashes.
	* tp/Texinfo/Convert/XSParagraph/XSParagraph.pm: Add
	"require Texinfo::Convert::Paragraph" for fall-back code.
	* tp/Texinfo/Convert/Plaintext.pm,
	* tp/Texinfo/Convert/Info.pm: Use Texinfo/Convert/Paragraph.pm 
	indirectly via Texinfo/Convert/XSParagraph/XSParagraph.pm.

2015-07-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/XSParagraph.xs
	(xspara_new): Optional conf parameter.
	(xspara_add_next): Propagate 'transparent' argument.
	* tp/Texinfo/Convert/XSParagraph/xspara.c
	(xspara_add_next, xspara__add_next): Update state.last_letter, 
	taking into account 'transparent' argument.

	* tp/t/paragraph.t: Run tests for XSParagraph module as well as 
	Texinfo::Convert::XSParagraph.

2015-07-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/xspara.c: Remove all comments 
	with out-of-date line numbers for Paragraph.pm.

	* tp/Texinfo/Convert/Paragraph.pm
	(inhibit_end_sentence, remove_end_sentence): Rename.
	(add_end_sentence): New function, split from _add_next.

2015-07-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Paragraph.pm,
	* tp/Texinfo/Convert/Line.pm,
	* tp/Texinfo/Convert/UnFilled.pm,
	* tp/Texinfo/Convert/XSParagraph/XSParagraph.xs,
	* tp/Texinfo/Convert/XSParagraph/xspara.c (add_next): Remove an 
	unused parameter.

2015-07-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/Makefile.am: Clear CFLAGS.
	* tp/Texinfo/Convert/XSParagraph/XSParagraph.pm: Don't goto a 
	label inside an if (0) { ... } block.

	* tp/Texinfo/Convert/XSParagraph/configure.ac (fetch_conf): New 
	function, to replace fetch_conf.pl script.  Use Perl executable 
	from ${PERL} instead of /usr/bin/env perl, to make it easier for
	the user to use a different perl.

2015-07-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (new_formatter): Uncomment 
	line using XSParagraph module.  Don't call XSParagraph::hello.
	* tp/Texinfo/Convert/XSParagraph/xspara.c (xspara_hello)
	(xspara_init): Rename.  Specify whether an error occurred in the 
	return value.
	* tp/Texinfo/Convert/XSParagraph/XSParagraph.pm: Place code in 
	BEGIN block.  Call XSParagraph::init, and on error, replace 
	XSParagraph module with Texinfo::Convert::Paragraph.

	* tp/t/converters_tests.t: Skip
	"at_commands_in_refs_utf8 file_info".

2015-07-24  Karl Berry  <karl@freefriends.org>

	* util/htmlxref.cnf (flex): no mono manual.

2015-07-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/refcard/txirefcard.texi: 'h' for Info tutorial, not 'H'.

2015-07-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Writing a Menu, Command List),
	* doc/refcard/txirefcard.tex: Document @validatemenus.

2015-07-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Nodes): Combine two sentences.  Move advice 
	on not renaming nodes to Node Names.  Remove sentence saying 
	that nodes don't impose a hierarchical structure.
	(@node): Change word "stretch" to "region".  Move remark on how 
	definition of node compares to definition of sections later.  
	Change wording of reference to Node Line Requirements.  Move 
	explanation of use of chapter structuring command earlier.  
	Reword paragraph about formatting for printing.  Move mention of 
	@anchor and cross-references to Nodes.  Move description of 
	optional arguments later in node.
	(makeinfo Pointer Creation): Move section to end of chapter.

2015-07-24  Carlos O'Donell  <carlos@redhat.com> (tiny change)

	* util/htmlxref.cnf (flex): Add entries pointing to
	http://flex.sourceforge.net.

2015-07-24  Arnold D. Robbins     <arnold@skeeve.com>

	* doc/texinfo.texi: Minor updates with respect to name / spelling
	of gawk and TexiWeb Jr.

2015-07-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (scan_reference_target): Remove quoting 
	characters from label.
	(scan_reference_label): Handle case of a manual name appearing 
	in a label along with a quoted node name.
	* info/t/quoted-manual-in-target.sh,
	* info/t/quoted-manual-in-label.sh: New tests.

2015-07-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Makefile.am: Reword comments about purpose of Makefile.tres 
	and Makefile.docstr.

2015-07-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (read_quoted_string) [QUOTE_NODENAMES]: Make 
	unconditional.
	(printed_representation): Suppress display of character \177.
	(parse_top_node_line): Get length of filename in node pointers 
	separately.
	(read_bracketed_filename): Update comment.  Allow out parameter 
	to take a null value.
	(info_parse_node): Call read_quoted_string to get node name.
	(scan_reference_label): Don't remove quoting.
	(scan_reference_target): Add TODO to remove it here instead.

	* info/session.c (info_handle_pointer): Call info_parse_node on 
	pointer text.
	(info_parse_and_select): Call info_parse_node.

	* info/nodes.c (get_filename_and_nodename): Don't call 
	info_parse_node.

2015-07-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/tests/Makefile.am: Give a clue for what "onetst" stands 
	for, and elaborate on purpose of tests-parser.txt files.
	* tp/maintain/regenerate_cmd_tests.sh: Say where this file is 
	run from.  Place some comments in the generated file.

2015-07-22  Gavin Smith  <gavinsmith0123@gmail.com>
	
	* tp/Texinfo/Convert/XSParagraph/mylib: Move all files up a 
	level.
	* tp/Texinfo/Convert/XSParagraph/lib/XSParagraph.pm: Move up a 
	level.
	* tp/t/test_utils.pl: Include builddir for XSParagraph in @INC.

2015-07-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/mylib/xspara.c (xspara_add_text):
	Remove space doubling at end of sentence within a @w.

2015-07-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Writing A Menu): Move node before "Menu 
	Location" node.
	(Menus, Menu Location): Move advice on writing short nodes to 
	Menu Location.
	(Menu Parts, Menu Location): Move advice on how to access menu 
	entries in Info to be next to the advice on how to access menu 
	entries in HTML.
	(Menu Location): Place obsolete advice within an @ignore block.	
	Move exhortation to use a hierarchical structure to Writing A 
	Menu, because that isn't to do with the menu location.
	(Menu Example): Move node to be just after Writing A Menu node.
	(Writing a Menu): Split paragraph about menu entries and menu 
	comments into two.
	(Writing a Menu, Menu Parts): Move advice about extraneous 
	whitespace from Writing a Menu.

2015-07-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Top): Add menu comment to separate 
	Appendices from Chapters.

2015-07-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Add \global\usebracesinindexestrue at start 
	of file.

2015-07-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Updating Nodes and Menus): Don't say that 
	updating node pointers is required, because makeinfo determines 
	them automatically.
	(Updating Requirements): Don't say that makeinfo requires menus.
	(Chapter Structuring): Remove aside about "sectioning 
	structuring".
	(Tree Structuring): Don't mention that node pointers are 
	implicit in example.
	(Raise/Lower Sections): Reword paragraph about a problem that 
	can arise to emphasize that menus need to match the sectioning 
	structure.
	(Node Names): Rename section title from "Choosing Node and 
	Pointer Names" to "Choosing Node Names".
	(Writing a Node): Reorder section to put description of node 
	pointers later.
	(Node Line Requirements): Move bullet point about node pointers 
	later in section.
	(@top Command): Remove mention of node pointers.
	(Node Menu Illustration): Delete an unecessary word.  Remove a 
	mention of implicitly determined node pointers.

2015-07-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Paragraph.pm (add_text): Don't double space
	after a full stop at the end of a line inside a @w{ ... }.

2015-07-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* contrib/nontests: New directory.  Move most of the files from 
	util/tests into it.  Suggestion from Karl Berry on 7th July.
	* contrib/tests/README: Say that tests were for util directory.

2015-07-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS: Mention new command @validatemenus.
	* tp/Texinfo/Common.pm (%default_parser_state_configuration): 
	Add validatemenus flag.
	(%misc_commands): Add 'validatemenus'.
	* tp/Texinfo/Parser.pm (_end_line) <@validatemenus>: Set flag on 
	parser.
	(_parse_line_command_args): Accept 'on' and 'off' as the 
	argument to @validatemenus.

	* tp/Texinfo/Structuring.pm (add_missing_menus): New function, 
	based on complete_tree_nodes_menus.
	(add_node_menu_if_missing): New function, based on 
	complete_node_menu.

	* tp/texi2any.pl: Call add_missing_menus if 'validatemenus' flag 
	is not turned on in parser object.

2015-07-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c (xrefs_of_manpage): An open parenthesis precededed 
	by a newline cannot be part of a man page cross-reference.

2015-07-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (display_update_node_text) <W_NoWrap>: Fix, 
	broken in last commit.

2015-07-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (display_update_window_1, display_update_node_text):
	Rename function.  Avoid outputting line with standout or underline if
	nothing has changed on it.
	(display_process_line): Function split out from 
	display_update_node_text.
	(writing_out): New file-level variable.

2015-07-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (find_node_from_tag) <resetting tag table>: Don't
	forget that tags for anchors refer to anchors.  Report from
	Eli Zaretskii.

2015-07-18  Eli Zaretskii  <eliz@gnu.org>

	* info/nodes.c (find_node_from_tag, info_node_of_tag): Use
	FILENAME_CMP to compare file names.

2015-07-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_find_file): If filename has slash, look for
	it in search path if it does not begin "./".
	* info/filesys.c (info_find_fullpath): Don't look for a filename 
	beginning "./" in the search path, but otherwise look for the 
	filename in the search path even if it contains a slash.
	(info_file_find_next_in_path): Prefix returned path with "./" if 
	it is relative to the current directory.
	(info_add_extension): Allow second argument to be null.

	* info/info.c (main) <--file or slash in argument>: If argument 
	not an absolute path, prefix it with "./".  Call 
	info_add_extension instead of info_find_fullpath for arguments 
	other than simple filenames.

2015-07-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/dir-entry-to-subdir.sh: New test.

2015-07-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/window-split-dir.sh: Check exit status of grep.

2015-07-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/xref-to-anchor.sh: New test.

2015-07-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (scan_node_contents): Always set 
	nodestart_adjusted for anchors in a node, whether rewriting the 
	node's contents or not.  Failure to follow a cross-reference to 
	an anchor reported by Ludovic Courtes.

2015-07-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.h (TAG): New field "cache".  Remove nodelen field.  
	All uses of TAG.nodelen changed to use TAG.cache.nodelen.
	* info/nodes.c (info_node_of_tag): Save information about node,
	like contents and reference list, in cache field.
	(find_node_from_tag): If reseting tag table entry, free and 
	clear contents and reference lists.  Use N_IsInternal flag 
	instead of N_WasRewritten to decide if a node has independent 
	data.
	(get_nodes_of_info_file, build_tag_table): Function renamed.

	* info/window.c (text_buffer_to_node): Set N_IsInternal flag on node.
	* info/dir.c (build_dir_node): Don't set N_IsInternal flag on 
	node.
	(get_dir_node): Don't do a deep copy of dir node.
	* info/indices.c (info_indices_of_file_buffer): Don't free 
	reference list of node returned from info_node_of_tag.
	(info_index_apropos): Free contents of apropos node if scanning 
	it changes it.  Don't set N_WasRewritten flag.
	* info/man.c (get_manpage_node): Don't set N_IsInternal flag for 
	man page node.  Don't return a new reference list each time the 
	same man page is requested.
	* info/window.c (test_buffer_to_node): Set N_IsInternal on 
	returned node.

	* info/session.c (info_split_window): Don't duplicate fields in 
	copied node, as they are recorded in the tag table.
	(free_history_node): Only free data in node if node is internal.
	(info_select_reference): Copy fields of argument.

	* info/window.c (calculate_line_starts): Have one line start at 
	end of node.

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

	* info/display.c (display_update_window_1): Sometimes highlight 
	a reference when the point is after its end.

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

	* run gnulib-tool --add-import --no-libtool
	* configure.ac (LT_INIT): Remove.
	* info/Makefile.am,
	install-info/Makefile.am: Change Gnulib library file from 
	libgnu.la to libgnu.a.
	* autogen.sh: Remove use of libtoolize.

	* tp/Texinfo/Convert/XSParagraph/Makefile.am: Refer to gnulib 
	files in subdirectory.
	* tp/Texinfo/Convert/XSParagraph/configure.ac: Run gl_EARLY and 
	gl_INIT.
	* tp/Texinfo/Convert/XSParagraph: Run
	gnulib-tool --libtool --import vasprintf.

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

	* tp/Texinfo/Convert/XSParagraph/XSParagraph.xs,
	tp/Texinfo/Convert/XSParagraph/mylib/xspara.c,
	tp/Texinfo/Convert/XSParagraph/mylib/text.c: Add
	an "#include <config.h>" line.
	* tp/Texinfo/Convert/XSParagraph/configure.ac (AM_CPPFLAGS)
	(XSParagraph_la_LIBADD): Refer to Gnulib headers and library.

	* install-info/Makefile.am: Change Gnulib library file from 
	libgnu.a to libgnu.la.

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

	* info/Makefile.am (LDADD): Change Gnulib library file from 
	libgnu.a to libgnu.la.
	* man/Makefile.am (mi_perl5lib_path): Look for produced library 
	in builddir.

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

	* tp/Texinfo/Convert/XSParagraph/mylib/xspara.c (hello): Use
	locale from environment if it is suitable.

2015-07-11  Eli Zaretskii  <eliz@gnu.org>

	* tp/Texinfo/Convert/XSParagraph/mylib/xspara.c (xspara_add_text):
	Use dTHX to avoid perl error about undefined "my_perl" due to
	Perl's "free" being used.

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

	* run gnulib-tool --add-import --libtool at top level
	* configure.ac (LT_INIT): Use.

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

	* tp/Texinfo/Convert/XSParagraph/mylib/xspara.c (xspara_hello):
	Use dTHX to avoid perl error about undefined "my_perl" due to 
	Perl's "malloc" being used.
	
2015-07-11  Eli Zaretskii  <eliz@gnu.org>

	* tp/Texinfo/Convert/XSParagraph/mylib/xspara.c [_WIN32]: Don't
	include langinfo.h.
	(w32_setlocale) [_WIN32]: A stub implementation for switching to a
	en_US.UTF-8 locale.
	(mbrlen, mbrtowc, iswspace, wcwidth, iswupper) [_WIN32]:
	Implementations of these functions that support UTF-8 multibyte
	sequences.

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

	* tp/Texinfo/Convert/XSParagraph/mylib/xspara.c 
	(xspara_add_text) <space doubling in @w>: Change a call to 
	iswspace to a call to isspace.  Reported by Eli Zaretskii.

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

	* tp/Texinfo/Convert/XSParagraph/mylib/xspara.c (xspara_hello): 
	If setting "en_US.UTF-8" as the locale fails, try basing a 
	locale name on the current locale name.

2015-07-11  Eli Zaretskii  <eliz@gnu.org>

	* info/pcterm.c (highvideo, normvideo) [_WIN32]: New functions.
	(pc_begin_underline, pc_end_underline, pc_begin_standout)
	(pc_end_standout): New functions.
	(pc_initialize_terminal): Set up hooks for standout and underlined
	text.
	(top level) <xref_attr>: Declare.
	(pc_initialize_terminal): Initialize xref_attr.

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

	* info/display.c (display_update_window_1): Better handling of 
	cross-references split across across lines.

2015-07-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (display_update_window_1) <xref-rendition=1>:
	Highlight the reference that we expect will be followed if the 
	user presses return.
	* info/session.c (read_and_dispatch) <xref-rendition=On>: Call
	display_update_one_window after each user command.

	* info/session.c (info_menu_or_ref_item): Fix condition for 
	multiple cross-references in one line.

2015-07-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/variables.c (info_variables): New user variable 
	'xref-rendition'.
	* info/display.c (xref_rendition_p): New variable.
	* info/terminal.c (terminal_begin_underline, terminal_end_underline):
	New functions.

	* info/info-utils.c (scan_reference_label): Don't place terminal 
	escape characters in text of node.  Alter expression used for 
	end of a label.

	* info/display.c (decide_if_in_reference): New function, based
	on decide_if_in_match.
	(display_update_window_1): Keep track of whether we are in a 
	cross-reference or menu item and turn on and off underlining 
	accordingly, if xref-rendition=On.

	* info/info-utils.c (printed_rep),
	* info/infodoc.c (pretty_keyseq),
	* info/nodemenu.c (format_node_info): Use { 0 } for null struct 
	initializer instead of {}.

	* info/info-utils.c (underlining_on, underlining_off): Removed.

2015-07-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Line.pm,
	* tp/Texinfo/Convert/Paragraph.pm: Rename 'underlying_text' key 
	to 'last_char'.  Add some comments.

2015-07-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (%index_style_commands): Add 'key'.
	* NEWS: Mention reduced text styles.

2015-07-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/Makefile.am (EXTRA_DIST): Distribute TESTS, but not
	all the contents of the test subdirectory, as this makes it 
	possible for *.trs files to be be distributed.

2015-07-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/Makefile.am (TESTS): Add variable.
	* util/tests/texi2dvi_helpversion.sh: Add test, based on 
	texindex/tests/ti-helpversion.sh.  Suggestion from Karl.

2015-07-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/t/test_utils.pl: Add directories containing XSParagraph 
	files to the module include path, so that running, e.g.,
	"perl -w t/80include.t" works.  Suggestion from Patrice.

2015-07-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Inserting Quotation Marks): Narrow prototype 
	text for rightmost column.

2015-07-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Change @t to @code, @command or @samp in 
	node names.

2015-07-05  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Structuring.pm (_sort_index_entries,
	_sort_index_entries_in_letter): use 'index_at_command'
	to sort index entries when 'number' is not enough.  Report
	from Norbert Preining and Chris Lamb.
	* tp/t/09indices.t: add corresponding test case.

2015-07-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm
	(new_formatter): Set 'suppress_styles' on formatter object.
	(_node_line, _printindex_formatted): Pass 'suppress_styles' 
	option to line formatter.
	(%index_style_commands): New hash.
	(_convert) <command has styles>: If styles are suppressed, 
	suppress styles unless the command is in %index_style_commands, 
	or it was defined with @definfoenclose.
	<cross-reference command>: Suppress styles for converting node 
	name.
	<menu entry>: Suppress styles for node names.

2015-07-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_convert) <brace commands 
	with no arguments>: Don't call 
	Texinfo::Convert::Text::brace_no_arg_command for @dots or 
	@enddots, to prevent the Unicode ellipsis character from being 
	used.

2015-07-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Makefile.am,
	* tp/tests/htmlxref/Makefile.am,
	* tp/tests/htmlxref-only_mono/Makefile.am,
	* tp/tests/htmlxref-only_split/Makefile.am,
	* tp/tests/many_input_files/Makefile.am,
	* tp/tests/run_parser_all.sh,
	* tp/tests/t/stdout.sh,
	* tp/tests/t/stdout_split.sh:
	Look for XSParagraph.la file in $builddir and XSParagraph.pm in
	$srcdir, to facilitate VPATH builds.

2015-07-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/configure.ac: Retrieve
	"privlibexp" Perl configuration value.
	* tp/Texinfo/Convert/XSParagraph/Makefile.am: Use it for 
	-typemap argument to xsubpp.

2015-07-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Change "a @node line" back to "an @node 
	line".

2015-07-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Mention gnupload --user and --replace.  Move 
	dtd version check earlier, and explanations of how to make diffs 
	and upload dtd file earlier.  Explanation of how to upload 
	texi2dvi.  Move explanations of release announcements together.

2015-07-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (local): Remove.  All usages removed.  Rename
	variables in some functions to reduce chances of a conflict.
	Failure to run on a Solaris 10 shell reported by Brian Ripley.

2015-07-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Updating Nodes and Menus)
	(Updating Commands, Printing)
	(@setfilename, @settitle, @titlefont @center @sp)
	(Heading Generation, The Top Node, @setchapternewpage)
	(@headings, @paragraphindent, @firstparagraphindent)
	(Chapter Structuring, Structuring Command Types)
	(@majorheading @chapheading, @section)
	(Raise/lower sections, @node, Writing a Node)
	(@top Command, Node Menu Illustration, Menu Location)
	(Writing a Menu, @ref, @pxref, @code, @kbd, @quotation)
	(@verbatim, @small..., @display, @format, @noindent, @table)
	(@ftable @vtable, Multi-column Tables, Multitable Rows)
	(@caption @shortcaption, @listoffloats, Footnote Styles)
	(@syncodeindex, @page, @need, Raw Formatter Commands, @set @value)
	(@ifset @ifclear, Macro Details, @definfoenclose)
	(#line Directive, Using Include Files, Include Files Requirements)
	(Requirements Summary, makeinfo Options)
	(Other Customization Variables, HTML CSS)
	(HTML Xref Link Preservation, Command List, Tips)
	(Heading Choice, Using texinfo-show-structure)
	(Info Format Preamble, Writing a Node, Showing the Structure):
	Change some instances of "an" to "a" before @-commands.

2015-07-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* man/Makefile.am (mi_perl5lib_path): Add directories containing 
	XSParagraph files.

	* tp/texi2any.pl (BEGIN): Change directories to look for modules 
	in.
	* tp/tests/run_parser_all.sh: Pass more -I flags when running 
	texi2any.
	* tp/Makefile.am (AM_T_LOG_FLAGS): -I flags changed.

2015-07-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/configure.ac: Retrieve "cc" 
	Perl configuration value.
	* tp/Texinfo/Convert/XSParagraph/Makefile.am: Use it as CC.

2015-07-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/Makefile.am: Change path in -I flag to makeinfo.

2015-07-02  Karl Berry  <karl@freefriends.org>

	* configure.ac (AC_INIT),
	* util/texi2dvi (version): go to 6.0dev since we are past the release.
	* README-hacking: mention it.

2015-07-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/configure.ac 
	(lookup_perl_flags): Strip any compiler flags that
	aren't -I or -D.
	* tp/Texinfo/Convert/XSParagraph/mylib/xspara.c (hello): Try a
	"en_US.UTF-8" locale.
	* tp/Texinfo/Convert/XSParagraph/lib/XSParagraph.pm: Reduce 
	required Perl version.

2015-07-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph/lib/XSParagraph.pm: Rewritten 
	to use DynaLoader module, instead of XSLoader.  Look for a 
	Libtool *.la file and extract the name of the loadable object 
	from it.
	* tp/Texinfo/Convert/XSParagraph/Makefile.am,
	tp/Texinfo/Convert/XSParagraph/configure.ac,
	tp/Texinfo/Convert/XSParagraph/fetch_conf.pl: New files.

	* tp/texi2any.pl (BEGIN) <in source run>, <not in source run>:
	Add directories to look for loadable modules in to @INC.

	* tp/Texinfo/Convert/Plaintext.pm: Uncomment import of 
	XSParagraph (but don't use it yet).

	* configure.ac (AC_CONFIG_SUBDIRS): Configure 
	tp/Texinfo/Convert/XSParagraph.
	* tp/Makefile.am (SUBDIRS): Add Texinfo/Convert/XSParagraph.
	(do_subst): Substitute also for "@pkglibexecdir@" in texi2any.pl.
	* doc/Makefile.am: Pass -I flag to makeinfo to find in-source 
	XSParagraph module.

	* autogen.sh: Run autoreconf in tp/Texinfo/Convert/XSParagraph.

2015-07-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/terminal.c (terminal_initialize_terminal): Save values of 
	LINES and COLUMNS environmental variables.
	(terminal_get_screen_size): Use saved values.
	* info/t/c-u-m-x-scroll-forward.sh: Correct use of 
	synch_with_program function.

2015-07-01  Karl Berry  <karl@freefriends.org>

	* doc/texinfo.tex: doc tweaks.

	* README-hacking: more doc updates for 6.0 release.

2015-06-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Line.pm, tp/Texinfo/Convert/Paragraph.pm,
	tp/Texinfo/Convert/UnFilled.pm (add_underlying_text): Remove.
	(add_text): Remove second argument.

2015-06-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Line.pm, tp/Texinfo/Convert/Paragraph.pm,
	tp/Texinfo/Convert/UnFilled.pm: (allow_end_sentence): New function.

	* tp/Texinfo/Convert/Line.pm, tp/Texinfo/Convert/Paragraph.pm,
	tp/Texinfo/Convert/UnFilled.pm (_add_text, add_next, _add_next): 
	Handle backspace as a marker to allow an end of sentence.

	* tp/Texinfo/Convert/Plaintext.pm (_protect_sentence_ends): New 
	function.
	(_process_text): Don't return a pair the second element of which 
	is the underlying text.  Instead, call _protect_sentence_ends on 
	the text.  No special handing of @code or @var.  Caller in 
	_convert updated.

	(new_formatter): Add commented-out line to use XSParagraph 
	instead of Texinfo::Convert::Paragraph.

	(_count_added): Reinstate a commented-out use of end_line_count 
	method.

	(_convert): Remove check for 'underlying_text' element, which 
	was only used for @acronym and @abbr.
	<@acronym and @abbr>: Don't cause underlying text to be saved in 
	the formatters.  Instead, call allow_end_sentence after 
	converting the argument, and return the result of the 
	conversion.
	<close @var and close monospace>: Call allow_end_sentence method 
	on formatter.
	<brace commands with no arguments> If command is not a single 
	character, call allow_end_sentence after converting.  Call
	allow_end_sentence if in @var or monospace.
	<accent commands>: Don't pass underlying text to the formatters.
	Always call allow_end_sentence in @var and monospace, and call 
	it when in @sc and the original output would have been not have 
	been an uppercase letter.

	* tp/texi2any.pl (BEGIN) <in-source run> Add directories for 
	XSParagraph to @INC.
	* tp/Makefile.am (AM_T_LOG_FLAGS): Add -I flags for XSParagraph.

	* tp/t/paragraph.t (underlying text lower case)
	(line underlying text lower case): Tests removed.

2015-06-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Notes on how to tag source tree and update 
	manual web pages.

2015-06-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* NEWS, util/texi2dvi, util/texi2pdf, 
	doc/refcard/txirefcard.tex, configure.ac: 6.0 release.

2015-06-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Multiple Spaces): Correct explanation of @NL.

2015-06-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.tex (\macrolineargctxt): New macro, based on 
	\macroargctxt.
	(\defmacro) <one argument non-recursive>,
	<one argument recursive>: Don't call \macroargctxt.
	(\braceorlinexxx) Call \macroargctxt only if a { follows the 
	macro name, otherwise call \macrolineargctxt.  (Various reports 
	from, inter alia, Werner Lemberg and David Kastrup.)

2015-06-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/DocBook.pm (@inline_elements): Add 
	'subscript' and 'superscript' so they can show up in a @def* 
	line.  Bug report from Per Bothner.

2015-06-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc (run_ginfo): Remove delay if PID of 
	process is unknown.
	
	* info/t/Init-inter.inc (synch_with_program): Add function.
	* info/t/c-u-m-x-scroll-forward.sh, info/t/gc-split.sh,
	info/t/inc-sea-forward-non-regex.sh, info/t/inc-sea-forward.sh,
	info/t/inc-sea-history.sh, info/t/inc-sea-insensitive.sh: Use 
	it.

2015-06-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/pseudotty.c: Define _XOPEN_SOURCE as 600 instead of 500.

2015-06-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/echo-area.c (info_read_in_echo_area)
	(info_read_completing_internal, info_read_maybe_completing)
	(info_read_completing_in_echo_area_with_exclusions): Add const
	qualifier to char * in parameter list.

2015-06-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* run gnulib --add-import

2015-06-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* pretest 5.9.95, 5.9.96
	* configure.ac: version.

2015-06-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/pseudotty.c: Attempt to register display size as 0 by 0.
	* info/t/c-u-m-x-scroll-forward.sh: Comment changed.

2015-06-20  Eli Zaretskii  <eliz@gnu.org>

	* info/pcterm.c (kill): Move prototype from here...
	* system.h: ...to here, conditioned by __MINGW32__.  This solves
	compiler warnings in signals.c.
	* info/pcterm.c	(wcwidth): Make function's signature consistent
	with Gnulib's prototype in gnulib/lib/wchar.h.

	* info/session.c (w32_read): Provide prototype, to avoid compiler
	warnings.

2015-06-18  Eli Zaretskii  <eliz@gnu.org>

	* tp/Texinfo/Common.pm (open_out): Call binmode on opened file 
	handle as intended.

2015-06-18  Karl Berry  <karl@freefriends.org>

	* pretest 5.9.94.
	* configure.ac: version.

2015-06-18  Eli Zaretskii  <eliz@gnu.org>

	Avoid "implicit declaration" warnings in pcterm.c.
	* info/pcterm.c: Include display.h.  Provide prototypes for
	'kill', 'reset_info_window_sizes', and 'redisplay_after_signal'.

2015-06-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Commom.pm (open_out): Add parameter which 
	conditionalizes the calls to "binmode" on file handle.
	* tp/Texinfo/Convert/Info.pm (_open_info_file): New function,
	wrapping Texinfo::Common::open_out.  Call 
	Texinfo::Common::open_out so that it calls "binmode".
	(output): Call _open_info_file instead of open_out directly.

2015-06-16  Karl Berry  <karl@freefriends.org>

	* texindex/tests/ti-helpversion: new test, in new subdir, with
	fingers crossed.
	* texindex/Makefile.am (TESTS): new variable setting.
	(EXTRA_DIST): include $(TESTS).

2015-06-15  Eli Zaretskii  <eliz@gnu.org>, and
            Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (open_out): Run "binmode" on file handle, 
	to disable conversion of LF to CR LF under MS-Windows.

2015-06-14  Karl Berry  <karl@freefriends.org>

	* doc/texinfo.tex (\tcfont, \etcfont): new macros.
	(\ecfont): call \etcfont now, so we can equally support tc* with ec*.
	(\latonechardefs) <a2,a4,a5,a6>,
	(\utfeightchardefs) <00A2,00A4,00A5,00A6>: can now support
	characters cents, currency, yen, broken bar (among others from
	the LaTeX TS1 encoding, but we'll leave it at that for now).

2015-06-13  Karl Berry  <karl@freefriends.org>

	* info/t/Init-test.inc: set -x so the t/*.log files have
	more tracing in case of debugging.

2015-06-11  Karl Berry  <karl@freefriends.org>

	* tp/Texinfo/Convert/UnFilled.pm (_add_text),
	* tp/Texinfo/Convert/Plaintext.pm (_contents):
        avoid negative repeat counts, which cause a warning in perl 5.22.0.

2015-06-10  Karl Berry  <karl@freefriends.org>

	* doc/refcard/txicmdcheck (read_refcard): \escape all the {
	due to new warning in perl 5.22.0.  Also \escape the }
	for consistency.

2015-06-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (info_virtual_index): Change type of a local 
	variable to match expected type of argument to next_index_match.
	* info/dir.c (dir_entry_of_infodir),
	* info/info-utils.c (info_get_menu_entry_by_label): Add 
	parentheses around assignment for clarity.
	* info/info-utils.c (printed_representation): Change declaration 
	of a variable from an unsigned char * to a char * and cast it 
	when we need to check the referent is in a range.

2015-06-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* gnulib: Add stdarg module, to try to fix compilations in C89 
	mode due to lack of va_copy.
	* README-hacking: Add note how to ignore files in SVN.

2015-06-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Timeout-test.inc: Also check that "time -t 0" produces 
	no output.  (Attempt at stopping failures under OpenBSD 5.5.)

2015-06-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac (AC_CHECK_HEADERS): Check for stropts.h.
	* info/pseudotty.c [HAVE_STROPTS_H]: Perform STREAMS ioctl's on 
	slave device, as recommended in the GNU C Library Reference 
	Manual.  (Attempt at stopping hang of test replace-viewed.sh 
	under Solaris 10.)

2015-06-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/c-u-m-x-scroll-forward: Synch with controlled program 
	before sending in typed input.  (Attempt at fixing test failures 
	under CentOS.)

2015-06-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/index-apropos.sh: Don't send C-g to controlled program.

2015-06-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/replace-viewed.sh: Use rm -f instead of rm.

2015-06-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (forget_info_file): Function replaced.  Don't 
	free the file buffer because it could still be referenced in a 
	displayed node.
	* info/Makefile.am (XFAIL_TESTS): Remove replace-viewed.sh.
	* info/nodes.h (N_Gone): New symbol.

2015-06-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/replaced-viewed.sh: New test.  (Bug reported by Benno 
	Schulenberg).
	* info/Makefile.am (TESTS, XFAIL_TESTS): Add it.

2015-06-07  Karl Berry  <karl@freefriends.org>

	* Pretest 5.9.93.

2015-06-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Timeout-test.inc: Check for "read -t" slightly 
	differently.

2015-06-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-test.inc,
	* info/t/Init-inter.inc: Check if running the test turned off 
	terminal echoing, and only run "stty sane" if that is the case.
	* info/t/Timeout-test.inc: Default exit status of test to 
	success.

2015-06-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/index-apropos.sh: Wait for 'index-apropos' command to 
	finish before we sent more key strokes.

2015-06-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-test.inc (cleanup): Run "stty sane" (interactive 
	tests only).
	* info/t/Init-inter.inc: Check for stty program.

2015-06-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/adjust-anchors.sh: Add comment about name of character 
	encoding.  Export LC_ALL instead of LANG.

2015-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/pseudotty.c: Check for failure from "write" call.  Don't 
	exit for an error communicating with controlled process; do exit 
	for error on control channel.
	* info/t/Init-inter.inc: Open FIFO for commmunicating that ginfo 
	has finished on both ends, to allow timeout to work.  Start 
	pseudotty with "exec" in case there is an intermediate shell, to 
	get its PID correctly.
	* info/t/README: Update.

2015-06-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Infokey-config: Set key-time=0 to try to increase 
	predictability of interactive tests.

2015-06-03  Karl Berry  <karl@freefriends.org>

	* prepare for pretest 5.9.93.

2015-06-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc (run_ginfo): Close fd opened to control 
	FIFO in subshell so pseudotty can exit for an EOF.  This 
	prevents lingering processes if a test is interrupted.

2015-06-03  Karl Berry  <karl@freefriends.org>

	* texindex/ti.twjr (usage, version): combine multi-line strings.
	Suggested by Benno.
	* info/info.c (info_short_help): no leading newline on trailing
	block, to merge string with other occurrences.
	* Makefile.am (update-po): new convenience target to build both
	po and po_document strings.
	* texindex/Makefile.am: doc tweaks.

2015-06-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/pseudotty.c: Don't get control channel from an already 
	redirected file descriptor, get it from the filename of a FIFO 
	passed on the command line.  #define _XOPEN_SOURCE as 500 to 
	expose prototype of "ptsname" under NetBSD 6.1.4.
	* info/t/Init-inter.inc: Create control channel FIFO and pass 
	name of it to pseudotty.  Don't use background processes to keep 
	the control FIFO open.  Redirect FIFO for communicating name of 
	pty slave device within a subshell.  Keep control FIFO open 
	using file descriptor redirection in main shell process.
	* info/t/Init-test.inc: Remove unneeded cleanup code.
	* info/t/Timeout-test.inc: Don't try to open FIFO for indicating 
	that ginfo has finished read-write.

2015-06-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: mention OpenCSW build reports

2015-06-03  Karl Berry  <karl@freefriends.org>

	* AUTHORS (Robbins, Smith): add.
	* README-hacking: mention TeX by Topic, TeX for the Impatient,
	and texiwebjr.

2015-06-02  Karl Berry  <karl@freefriends.org>

	* po_document/Makevars (PACKAGE_GNU, MSGINIT_OPTIONS,
	PO_DEPENDS_ON_POT, DIST_DEPENDS_ON_UPDATE_PO): new variables,
	as with po/Makevars a couple days ago.

2015-06-02  Karl Berry  <karl@freefriends.org>

	* texindex/ti.twjr (Seen): re-initialize for each output file,
	so a duplicated index entry is kept if it's in a different index.
	Doc: discuss @ vs. \ as command character; indexing updates.
	* doc/texinfo.texi (Details of texindex): a bit more about twjr.
	
	* doc/texinfo.tex (\lastsection): define as empty in case
	a sub(sub)heading occurs out of sequence.

2015-05-31  Karl Berry  <karl@freefriends.org>

	* configure.ac (AC_INIT): prepare for 5.993 pretest.

2015-05-31  Karl Berry  <karl@freefriends.org>

	* texindex/ti.twjr (version): use printf for year.

2015-05-31  Karl Berry  <karl@freefriends.org>

	* po/Makefile.in.in ($(DOMAIN).pot-update): invoke xgettext a
	second time with --join-existing --language=awk texindex/ti.twjr,
	since there is apparently no other way to get ti.twjr's strings
	into texinfo.pot.
	* util/srclist.txt: must manually merge po/Makefile.in.in
	instead of just copying until xgettext knows about .twjr.
	* po/POTFILES.in: remove texindex/ti.twjr.
	* Makefile.am (po-check): don't expect *.twjr in po/POTFILES.in.

2015-05-31  Karl Berry  <karl@freefriends.org>

	* po/Makevars (PACKAGE_GNU, MSGINIT_OPTIONS, PO_DEPENDS_ON_POT,
	DIST_DEPENDS_ON_UPDATE_PO): new variables to sync with
	Makevars.template from gettext-0.19.4 (and earlier.)

2015-05-31  Karl Berry  <karl@freefriends.org>

	* tp/tests/run_parser_all.sh,
	* tp/maintain/regenerate_cmd_tests.sh: use grep >/dev/null
	instead of -qs; Solaris 5.10 grep does not support -q.

	* tp/tests/run_parser_all.sh: exec /usr/xpg4/bin/sh for Solaris 5.10.

	* tp/tests/run_parser_all.sh: test "z$file" rather than "$zfile",
	as intended.

2015-05-30  Karl Berry  <karl@freefriends.org>

	* util/texi2dvi (generated_files_get): another attempt at making
	punctuation optional on the \openout line, for luatex.
	Report from Wybo Dekker.

2015-05-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_read_and_dispatch): Make call to 
	window_clear_echo_area conditional on read_key_sequence not 
	having dispatched to a user command itself, so error messages 
	aren't cleared.
	(read_key_sequence) <menu digit>: Clear echo area first.
	Reported by Benno Schulenberg.

2015-05-29  Benno Schulenberg <bensberg@justemail.net> (tiny change)

	* info/session.c (display_startup_message): Reword note to 
	translators.

2015-05-26  Karl Berry  <karl@freefriends.org>

	* doc/texinfo.tex (\setnonasciicharscatcodenonglobal):
	rm spurious blank line.  Report from David Kastrup,
	26 May 2015 15:14:06.	

2015-05-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/pseudotty.c: Check return value of fclose.  Use an int to 
	hold return value of read.  Consistent syntax for infinite 
	loops.  (Suggestions from Karl Berry.)

2015-05-20  Karl Berry  <karl@freefriends.org>

	* util/texi2dvi (generated_files_get): make punctuation optional
	on the \openout line, to cater to luatex 0.80.0.  Noted
	by Wybo Dekker, report http://tracker.luatex.org/view.php?id=909.

2015-05-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (printed_representation): Declare char * as 
	unsigned, so that check for printable limit works.  Display 
	unknown bytes with an octal representation.

2015-05-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-test.inc, info/t/Init-inter.inc, info/t/*.sh:
	Revert split of GINFO variable from yesterday.

	* info/t/Init-inter.inc: Wedge pipe for input key presses open 
	for reading as well as for writing.
	* info/t/Timeout-test.inc: Try to detect if "read -t" works by 
	running it in a subshell.  If exit status of "read -t" is 1, 
	report that an end-of-file was likely.

	* info/man.c (get_manpage_from_formatter): Ignore exit status of 
	man page formatter.

2015-05-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-test.inc: Split GINFO variable into GINFO and 
	GINFO_OPTIONS, and provide GINFO function to use them together.
	* info/t/Init-inter.inc: Pass GINFO_OPTIONS variable as 
	arguments to GINFO.  (Attempt at fixing error message on
	Solaris 10, "./ginfo --init-file ./t/Infokey-config: not found".  
	Maybe word splitting isn't happening.)
	* info/t/*.sh: Use GINFO alias instead of $GINFO.

	* info/t/Init-test.inc: Remove portability code for "local" 
	builtin.  It doesn't work.
	(findprog): Don't use "local".

2015-05-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/index-apropos.sh: Don't run printf in background to 
	pass input keystrokes into program.  (Attempt at fixing test 
	failure reported by Assaf Gordon.)
	* info/pseudotty.c: Include sys/select.h for fd_set and others.  
	Reported by Assaf Gordon.

	* info/pseudotty.c: Log bytes received from control channel, for 
	better trouble-shooting.

	* po/Makevars: Escape "$" in XGETTEXT_OPTIONS.  (Attempt at 
	fixing build failure on FreeBSD 9.3, reported by Assaf Gordon.)

2015-05-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc: Copy shell portability code for "local" 
	builtin from util/texi2dvi.
	* init/t/Init-test.inc: Use "2" as argument to "trap" instead of 
	"SIGINT" for portability to Solaris, among others.
	* init/t/empty-infopath.sh: Set and export variable separately.
	(Automated build report via Dagobert Michelsen and 
	platform-testers.)

2015-05-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/pseudotty.c: Define a global "program_name" variable for 
	use by "error" function.  Include string.h to make sure we get a 
	declaration of memset.  Reported by Dagobert Michelsen.

2015-05-14  Karl Berry  <karl@freefriends.org>

	* texindex/texindex.in (escaped0): double backslashes in $0
	for passing to awk.
	Report from Eli on texinfo-devel, 09 May 2015 14:04:37.

2015-05-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* Pretest 5.9.92.

2015-05-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (convert_eols): Do pointer arithmetic before 
	reallocating.
	(find_node_from_tag) <EOL conversion>: Also update 'node' field 
	of each window as well as the histories.
	* info/info.c (add_initial_nodes) <inexact menu following>: 
	Always free reached node.

2015-05-10  Eli Zaretskii  <eliz@gnu.org>

	* util/texindex.bat: New file.
	* util/Makefile.am (w32_bat): Add texindex.bat.

2015-05-09  Karl Berry  <karl@freefriends.org>

	* texindex/texindex.in: set awk_binary, not awk_configured.

2015-05-09  Eli Zaretskii  <eliz@gnu.org>

	* info/man.c (get_manpage_from_formatter) <failed exit status>:
	Fix check whether there are enough lines in formatter's output.

2015-05-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_add_text_count)
	(_count_added): Don't call Texinfo::Common::count_bytes, collect 
	the argument instead into a string.
	(_update_count_context): Count the text collected in 
	_add_text_count.

	* tp/Texinfo/Convert/Plaintext.pm (add_location)
	(_update_locations_counts, _align_environment, _node_line)
	(_printindex_formatted, _convert),
	* tp/Texinfo/Convert/Info.pm (output),
	* tp/DebugTexinfo/DebugCount.pm (_convert):
	Call _update_count_context before accessing 'bytes' value of 
	current count context.

	* tp/Texinfo/Convert/Plaintext.pm (_count_added): Access
	'end_line_count' value on hash directly instead of via function 
	call.

2015-05-06  Karl Berry  <karl@freefriends.org>

	* doc/texinfo.tex (\ensuremath): new helper macro.
	Use it throughout, replacing simple \ifmmode ... \fi and
	for additional math chars.
	(2020, 2021, 2225): define these Unicode chars (from cmsy).

	* doc/texinfo.texi (key): not using @key in indexes is an rms
	edict (from many years ago, maybe he would revisit if any need).

2015-05-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (parse_texi): Only use regex to look for
	@-command once instead of twice.  Reorder a condition to make 
	regex execution less likely.  Combine "ABORT MENU STAR" and 
	"MENU ENTRY (certainly)" blocks into a single condition.

2015-05-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Unicode.pm (string_width): Calculate string
	width using "unpack" function.

	* tp/Texinfo/Convert/Paragraph.pm (_add_next): Add new argument 
	"$newlines_impossible" to elimate a regex match.  Don't access 
	arguments we don't need.
	(add_text): Use "split" function to split up text.  Try to 
	eliminate regex matches for a newline character.  Save some 
	flags in local variables.  Reorder a condition.  Add "o" flag to 
	some regexes that used variables.

2015-05-03  Karl Berry  <karl@freefriends.org>

	* pretest 5.9.91.
	* configure.ac: version.

2015-05-03  Eli Zaretskii  <eliz@gnu.org>

	* NEWS: Mention vars txicodequoteundirected and txicodequotebacktick.
	* doc/texinfo.texi (Inserting Quote Characters): Mention and index
	txicodequoteundirected and txicodequotebacktick.

2015-05-02  Karl Berry  <karl@freefriends.org>

	* configure.ac (TEXINFO_DTD_VERSION): update to 6.0, with commentary.
	* Makefile.am (dtd-check): new target to be run at make dist (by hand).
	* util/texinfo.dtd: describe when to update.
	* README-hacking: more about DTD version check and more.
	* In tp/tests/formatting/res/parser/
	*   cond_xml/cond.xml,
	*   split_for_format_not_split/simplest.xml: regenerate.

2015-05-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Plaintext.pm: Change a few more function calls not 
	to use method call syntax.
	(convert, _convert_element): Use method call syntax to call 
	_footnotes.  (Mail from Patrice.)

2015-04-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm, tp/Texinfo/Convert/Paragraph.pm,
	tp/Texinfo/Convert/Plaintext.pm:
	Don't use object-oriented method call syntax for functions in 
	same file.

2015-04-29  Karl Berry  <karl@freefriends.org>

	* doc/texinfo.tex (\nonasciistringdefs): make active definitions
	for 80..9f, needed for (e.g.) second byte of UTF-8 sequences.
	Report from Jean-Charles Malahieude, 28 Apr 2015 13:21:10.

2015-04-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* README-hacking: Add note about updating DTD version number in 
	configure.ac.  (Thien-Thi Nguyen, bug-texinfo 2015-03-01.)

2015-04-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (converter_initialize)
	<utf-8 output>: Override $self->{'style_map'}->{'dfn'} to use
	directed double quotes.  Use of directed quotes for @dfn 
	suggested by Paul Eggert.

2015-04-22  Karl Berry  <karl@gnu.org>

	* doc/txi-es.tex (\putwordin): new define, as `en'.
	From davidam, help-texinfo 21 Apr 2015 01:38:38.

2015-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Conver/Plaintext.pm (_printindex_formatted): Don't 
	call Texinfo::Convert::Unicode::string_width with the part of 
	the string we have already called it on.

	* tp/Texinfo/Convert/Unicode.pm (unicode_text): Don't normalize 
	return value.

	* tp/Texinfo/Convert/Paragraph.pm (add_text): Don't track 
	"underlying text" separately if it is the same as the text given 
	to be wrapped.

2015-04-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Common.pm (count_bytes): Add special handling of 
	case when output encoding is UTF-8, and for other encodings save 
	result of Encode::find_encoding between function calls.

2015-04-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (new_formatter): Replace
	function call to get_conf with hash lookup.
	(_count_added): Call Texinfo::Common::count_bytes directly 
	instead of via _add_text_count, and inline _add_lines_count.

2015-04-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Variables) <mouse>: Add note about text 
	selection with the mouse.

2015-04-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (add_initial_nodes): Follow menus inexactly before 
	checking indices sloppily.  Reported by Benno Schulenberg.
	* info/indices.c (look_in_indices): Arguments changed.

2015-04-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (forward_move_node_structure) <Up and Next>,
	(backward_move_node_structure) <Prev and down>: Clean up window
	history so to add only one node in history.  Report from Benno 
	Schulenberg.
	(backward_move_node_structure): Case-insensitive check for name 
	of (dir).

2015-04-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi: Comments changed.

2015-04-06  Sergey Poznyakoff  <gray@gnu.org>

	* util/texi2dvi (comment_iftex, uncomment_iftex): preserve @top
	node for first run to avoid makeinfo complaint.
	Mail to bug-texinfo, 02 Mar 2015 11:38:53 (and thread ff.,
	continuing into April).
	
2015-04-06  Eli Zaretskii  <eliz@gnu.org>

	* info/pcterm.c (w32_info_prep): Enable mouse input.
	(w32_kbd_read): Support mouse wheel events by scrolling display
	like mouse_event_handler does.

2015-04-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (add_initial_nodes) <--node>: Look through node 
	names of file for argument, and if not found look for a 
	case-insensitive initial match.
	* info/nodes.c (info_get_node_of_file_buffer): Remove doubled 
	condition.

2015-04-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Invoking install-info): Include ellipsis 
	within square brackets in synopsis.  Report from Benno 
	Schulenberg.

2015-04-04  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (Not Ending a Sentence): no need for @:
	after @code.

	* util/srclist.txt: update slave build-aux/texinfo.tex
	(required by automake) from master doc/texinfo.

	* util/htmlxref.cnf (perl): add entry pointing to
	http://www.gnu.org/software/perl/manual.

2015-03-29  Patrice Dumas  <pertusus@free.fr>

	* autogen.sh, tp/maintain/regenerate_cmd_tests.sh, 
	tp/tests/Makefile.am, tp/tests/htmlxref*/Makefile.am, 
	tp/tests/parser_tests.sh, tp/tests/run_parser_all.sh: 
	avoid changing directory when running tests.  
	Arrange to be able to run tests directly in subdirectories 
	for tests that need it, namely tests in tests/htmlxref*.
	* tp/tests/test_scripts/*, tp/tests/htmlxref*/test_scripts/: 
	generate/regenerate.

2015-03-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (next_index_match) <substring search>: Find 
	non-case-matching initial matches.

2015-03-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (index_initial): New variable.
	(info_index_search): Initialize index_initial as well as 
	index_partial.
	(next_index_match): Search for initial substrings after 
	searching for exact matches.
	(info_virtual_index): Call next_index_match to get index entries 
	in order.

2015-03-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/search.c (regexp_search): Permit zero-length matches, so 
	that "^" doesn't search through entire file.  Pass REG_NOTBOL 
	flag to regexec.

2015-03-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (parse_top_node_line): Check for 
	INFO_ALTPREV_LABEL, as was done before.

2015-03-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c (get_manpage_node): Use return value of asprintf 
	instead of calling strlen.
	* info/dir.c (dir_entry_of_infodir): Check for null filename.
	* info/info-utils.c (scan_reference_target): Allow skipping tabs
	before filename component of menu entry, and not after.

2015-03-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c (get_manpage_node): Avoid using fixed-size buffer 
	to construct string.  Report from James Chang.

2015-03-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (parse_top_node_line): Check for labels 
	case-insensitively, as was done before.
	(scan_reference_target): Allow a tab to terminate a node name in 
	a menu entry.
	* info/infopath.c (infopath_next): Handle case when the search 
	path is empty.
	* info/session.c (info_select_reference): Default to "Top" in 
	error message if node couldn't be loaded.
	* into/t/empty-infopath.sh: New test.

2015-03-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-test.inc: Trap SIGINT.
	(cleanup): Kill the subshell that launched ginfo and delete FIFO 
	file for communicating that subshell was finished.
	* info/t/Timeout-test.inc: Clear SUBSHELL shell variable.

2015-03-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infodoc.c (info_get_info_help_node): If in a help
	window, close it before loading the tutorial.

2015-03-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-stnd.texi (infokey format): Example .infokey changed 
	to include "ESC u" for clearing search highlight.  Line setting 
	scroll-step to its default value removed.  Suggest keys Up and 
	Down to scroll up and down.

2015-03-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc: Create a background process to hold a 
	FIFO open for writing, instead of opening it read-write for 
	pseudotty.
	Eliminate extra invocation of mknod.  Remove extra shell 
	variable with same value as another.
	* info/t/Init-test.inc (cleanup): Kill this background process.

	* info/pseudotty.c: Exit for end-of-file on either of the file 
	descriptors being used.

	* info/t/index-apropos.sh, info/t/last-no-history.sh, 
	info/t/next-quoted.sh, info/t/quoted-label-and-target.sh, 
	info/t/quoted-label-as-target.sh, info/t/quoted-target.sh: Run 
	ginfo with "run_ginfo" and source t/Timeout-test.inc.

2015-03-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Invoking texi2any): Change a cross-reference 
	to explain customization variables.

2015-03-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodemenu.c (nodemenu_format_info): Add note for 
	translators.
	* doc/texinfo.texi (Writing a Node): Fix minor typo.

2015-02-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* install-info/install-info.c (open_possibly_compressed_file): 
	If file is compressed, close it before opening it again on 
	stdin.
	(format_entry): Remove unused local variable.
	* install-info/Makefile.am (SUBDIRS): Put "." before tests to 
	make sure that "make check" works without doing "make" first.

2015-02-27  Ken Brown  <kbrown@cornell.edu>

	* install-info/install-info.c (open_possibly_compressed_file):
	Use 'fopen' to read the few first bytes, and then, only if it is 
	compressed, redirect stdin to it and call 'popen'.  Suggestion 
	from Eli Zaretskii.

2015-02-26  Patrice Dumas  <pertusus@free.fr>

	* tp/tests/t/stdout.sh, tp/tests/t/stdout_split.sh: use $PERL
	from defs to call texi2any.pl.  Report from Eli Zaretskii.

2015-02-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c (get_manpage_from_formatter): Accept output of 
	"man" despite a failing exit status if it is long enough.

2015-02-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (display_startup_message): Startup message 
	changed.  Note added for translators.
	* po/Makevars (XGETTEXT_OPTIONS): Add -cTRANSLATORS flag.
	* po/POTFILES.in: Add info/infomap.c.

2015-02-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* configure.ac: Check for posix_openpt in AC_CHECK_FUNCS, and 
	set automake conditional "have_ptys" depending on result.
	* info/Makefile.am (check_PROGRAMS): Build of "pseudotty" 
	dependent upon "have_ptys".
	* info/t/Init-inter.inc: Skip test if pseudotty not built.

2015-02-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c (get_manpage_from_formatter)
	[PIPE_USE_FORK, !PIPE_USE_FORK]: If exit status of "man" command 
	is non-zero, throw away its output.  Report from Eli Zaretskii.

2015-02-25  Eli Zaretskii  <eliz@gnu.org>

	* info/pcterm.c (w32_info_prep, w32_info_unprep, w32_cleanup)
	(gettextinfo, textattr, ScreenGetCursor, ScreenSetCursor)
	(ScreenClear, clreol, ScreenVisualBell, movetext, ScreenRows)
	(ScreenCols, _set_screen_lines, w32_set_screen_dimensions)
	(pc_put_text, pc_write_chars, pc_unprep_terminal) [_WIN32]: Do the
	minimum (mostly, nothing) when not connected to the terminal
	device.

2015-02-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infomap.c (fetch_user_maps): Print an error message if 
	couldn't open init file specified with --init-file.

2015-02-24  Eli Zaretskii  <eliz@gnu.org>

	* info/terminal.c [HAVE_NCURSES_TERMCAP_H && __MINGW32__]: Don't
	include ncurses/termcap.h on MinGW, even if it's available, to
	avoid a useless run-time dependency on the ncurses shared library.

2015-02-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi: Remove obsolete note about running
	'texinfo-all-menus-update' in Emacs.

2015-02-22  Karl Berry  <karl@gnu.org>

	* pretest 5.9.90.
	* configure.ac: version.
	
	* util/srclist.txt: sync po_document/Makefile.in.in.
	* configure.ac, etc.: finish gettext 0.19.4 update.

2015-02-22  Karl Berry  <karl@gnu.org>

	* tp/maintain/template.pod: tweak text, add __HTML signal.
	* tp/maintain/regenerate_converters_documentation.sh: HTML-specific.
	* tp/Makefile.am (do-pm-doc): new target to call that script.
	* tp/Texinfo/Convert/*.pm: remake pod with that script/target.

2015-02-22  Karl Berry  <karl@gnu.org>

	* info/Makefile.am (EXTRA_DIST): remove t/Cleanup.inc (gone).
	* README-hacking,
	* tp/README,
	* tp/tests/README,
	* tp/t/README: a few words about adding new tests.
	
	* tp/maintain/all_tests.sh,
	* tp/maintain/regenerate_cmd_tests.sh,
	* tp/maintain/prepare_perl_module_files.sh: copyright years.
	
	* tp/maintain/MANIFEST_generated_files,
	* tp/MANIFEST: regenerate.

2015-02-21  Eli Zaretskii  <eliz@gnu.org>

	* info/info-utils.c [__MINGW32__]: Undef wcwidth, to avoid its
	redirection from the MinGW-specific version in pcterm.c.

	* info/pcterm.c (wcwidth) [_WIN32] [!HAVE_WCWIDTH]: A replacement
	for wcwidth that works around the slow-down in the Gnulib version.

2015-02-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_move_to_prev_xref)
	(info_move_to_next_xref): Don't include skipped-over nodes in
	window history, and handle case of no xref being found.
	(cleanup_history): New function.
	* info/t/tab-no-xref.sh, info/t/tab-skip-node.sh: New tests.

2015-02-17  Karl Berry  <karl@gnu.org>

	* tp/Texinfo/Parser.pm (_parse_texi): do syntactic checks on @U
	argument here.
	* tp/Texinfo/Convert/HTML.pm (_convert_U_command): change accordingly.
	* tp/Texinfo/Convert/Plaintext.pm (_convert): change accordingly;
	also check if the Unicode character is valid before outputting it.
	
	* tp/tests/coverage_macro.texi,
	* tp/t/02coverage.t,
	* tp/t/05paragraph.t,
	* tp/t/plaintext_tests.t: test it.  (Re)generate results.
	
	* NEWS,
	* doc/refcard/txirefcard.tex,
	* doc/texinfo.texi (Inserting Unicode),
	(HTML Xref Command Expansion),
	(Command Summary): document it.

	* doc/refcard/txicmdcheck: report commands missing from the findex.
	
	* tp/tests/README: mention envvars for long_tests and tex_html_tests.
	* tp/t/README: (non-)copyright for tp/t, wording.

2015-02-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* INSTALL, README, README-alpha, TODO: 2015.
	* README, README-hacking: Remove mention of texindex.c, mention 
	texindex subdirectory.

2015-02-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (Module documentation section):
	Show how to dump a parse tree with makeinfo.  Add some section 
	headings.  Elaborate a bit on spaces_at_end and 
	empty_spaces_before_argument.  Elaborate on the contents of a 
	paragraph element, and the use of 'misc_arg'.

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

	* tp/Texinfo/Convert/Plaintext.pm (push_top_formatter): Add
	to 'document_context' stack.
	(_convert) <multitable>: Increment 'in_multitable' on hash on
	top of document_context stack.
	<end of multitable>: Decrement 'in_multitable'.
	<$ref_commands>: Check if in multitable context by checking top 
	of 'document_context' stack, and if so suppress line breaks for 
	output of cross-reference.
	(_footnotes): Pop 'document_context' along with the other 
	context stacks.

	* tp/t/21multitable.t (ref_in_multitable): New test.

2015-02-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/Plaintext.pm (_convert) <empty line>: Pass 
	a "\n" into the active formatter so it can register an 
	end-of-line if it needs to.
	* tp/t/20preformatted.t (comments_in_example): Add a use of @c
	in an @example followed by an empty line.
	* tp/t/README: Elaborate on how tests are found, and how to run 
	a single test by itself.

2015-02-10  Karl Berry  <karl@gnu.org>

	* tp/t/test_utils.pl (%outfile_preamble) <html_text>: update css.

2015-02-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Report.pm (Module documentation section): Minor 
	tweaks to grammar.

2015-02-09  Karl Berry  <karl@gnu.org>

	* doc/refcard/txicmdcheck: check @findex entries in texinfo.texi too.
	* doc/texinfo.texi: add some missing entries.

	* doc/texinfo.texi (Hardcopy): update whole chapter.
	(Formatting Partial Documents, Details of @t{texindex}):
	new nodes, mostly to mention the temporary need for
	\usebracesinindexestrue.

2015-02-08  Karl Berry  <karl@gnu.org>

	* tp/Texinfo/Convert/HTML.pm (_convert_U_command): new fn for @U.
	$default_commands_conversion{'U'}: call it.
	* tp/Texinfo/Convert/Plaintext.pm (_convert): handle @U, writing
	binary if output is UTF-8, else just the ASCII string U+xxxx.
	* tp/Texinfo/Convert/Docbook.pm (_convert): handle @U.
	* tp/Texinfo/Common.pm (brace_commands) <one_arg_command>: add U.
	* tp/Texinfo/Parser.pm (simple_text_commands): add U.
	(debug_hash, debug_list): new fns.
	* util/texinfo.dtd (U): new ELEMENT.

	* tp/Texinfo/Convert/Converter.pm: move doc about
	output_internal_links being only for HTML to here.

2015-02-08  Karl Berry  <karl@gnu.org>

	* tp/Texinfo/Convert/DocBook.pm: alphabetize, format, debugging;
	no functional changes intended.

2015-02-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (incremental_search): For searches uses regex, 
	keep on searching for a match for a longer search string even if 
	a shorter search string was not found.  Report from Werner 
	Lemberg.

	* info/session.c (window_set_state, window_get_state): Save 
	point of window so we know where to position cursor when we go 
	back to a failing search.  Call display_update_one_window when 
	going back to a failing search.

2015-02-06  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi: let's mark the info quote proposal explicitly
	* texindex/Makefile.am (ti.info, ti.html): let's generate files by
	these names, since it is not a user manual, hence not intended to be
	installed in the Info directory.  @setfilename remains texindex
	since the .awk is the principal output.

	* doc/texinfo.tex: make exact @findex entries for @w and @c.
	Suggestion from Gavin, 6 Feb 2015 16:38:26.

2015-02-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* texindex/Makeinfo.am: Change rule to build "ti.info" to build
	"texindex.info", which is the name set with @setfilename in 
	ti.texi.

2015-02-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Info Format Specification): Remove mention 
	of quoting for certain characters in node names.

2015-02-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/README: Remove mention of texindex.

2015-02-05  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\commondummies): add forgotten \mathopsup,
	\sub, \sup.
	
	* doc/texinfo.tex (\nonasciistringdefs): new macros,
	to define every char from ^^a0 to ^^ff as (the typesettable
	version of) itself.
	(@normalturnoffactive): call that; else eight-bit chars
	(that don't correspond to known Texinfo commands) in node names
	get an error.  Report from Walter Garcia-Fontes, 5 Feb 2015 10:36:39.

2015-02-03  Karl Berry  <karl@gnu.org>

	* tp/Texinfo/Convert/HTML.pm (output): foolishly omitted closing "
	on $bodytext.  Regenerate test results.

	* doc/Makefile.am (gendocs_invoke): pass TOP_NODE_UP_URL=/manual/.
	(gnulib, etc.): new variable and settings to invoke gendocs.sh
	from gnulib, as it is no longer maintained here.
	* doc/texinfo.texi: fix broken cross-manual links, etc.
	* util/htmlxref.cnf: add free TeX manuals on tug.org.

	* Makefile.am (long-checks),
	* tp/Makefile.am (long-checks): convenience target for tp/tests.
	
2015-02-02  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (First Node): mention TOP_NODE_UP_URL usage.
	(HTML Customization Variables) <TOP_NODE_UP_URL>: say more.
	(Other Customization Variables) <TOP_NODE_UP>: ref TOP_NODE_UP_URL.
	* tp/Texinfo/Convert/HTML.pm (_external_node_href): replace all
	(dir) links with TOP_NODE_UP_URL, not just the (dir) link
	implicitly created as Top's Up.

	* tp/tests/README: tersely describe creating a new test, best I can.
	* tp/tests/run_parser_all.sh: more logging, use test -n/-z more.
	* tp/tests/sectioning/tests-parser.txt: new tests,
	top_node_up_implicit and top_node_up_explicit.
	* tp/tests/sectioning/top_node_up_{im,ex}plicit.texi: new files.
	* tp/tests/sectioning/res_parser{,_html}/top_node_up_{im,ex}plicit:
	new result directories.

2015-01-31  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\documentencoding): do not re-invoke
	\utfeightchardefs.

2015-01-30  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\utfeightchardefs): define all the easy
	characters from 0080..024F (Latin-1_Supplement, Latin_Extended_A,
	Latin_Extended-B).  Revise/correct some definitions.  Plenty
	more could be done.
	Also, call \utfeightchardefs at the top level so @U can do
	something useful when @documentencoding is not UTF-8.

	* doc/txi-ca.tex: use \dotless{i} instead of \char16.

2015-01-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (Module documentation section): Grammar 
	tweaks.

2015-01-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/XSParagraph: Add directory (experimental 
	replacement for tp/Texinfo/Convert/Paragraph.pm).
	* tp/Texinfo/Convert/XSParagraph/README,
	tp/Texinfo/Convert/XSParagraph/XSParagraph.xs,
	tp/Texinfo/Convert/XSParagraph/mylib/xspara.c,
	tp/Texinfo/Convert/XSParagraph/mylib/xspara.h,
	tp/Texinfo/Convert/XSParagraph/mylib/text.c,
	tp/Texinfo/Convert/XSParagraph/mylib/text.h,
	tp/Texinfo/Convert/XSParagraph/lib/XSParagraph.pm,
	tp/Texinfo/Convert/XSParagraph/t/XSParagraph.t: Files added.

2015-01-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Cleanup.inc: File removed.
	* info/t/Init-test.inc (cleanup) Add contents of Cleanup.inc as 
	a function.
	* info/t: All *.sh files: use cleanup function instead of 
	sourcing Cleanup.inc.
	* info/t/Timeout-test.inc: If exit status of 'read' builtin 
	could indicate that '-t' option is not supported, skip the test.  
	Test failures reported by Nathan Royce.

2015-01-29  Vitezslav Crhonek <vcrhonek@redhat.com> (tiny change)

	* info/info.c (main): Call info_error with "%s" just in case the 
	error string contained a formatting sequence.  (Report via 
	Savannah.)

2015-01-28  Karl Berry  <karl@gnu.org>

	* tp/Convert/HTML.pm (output): make bodytext default set only the lang
	attribute, no colors (left over from texi2html, perhaps).
	* tp/tests: update almost all test results.
	texinfo-devel, 25 Jan 2015 22:31:24.

2015-01-28  Karl Berry  <karl@gnu.org>

	* tp/tests/README: tweak documentation for updating test results.
	* tp/tests/{formatting,htmlxref*,many_input_files}: update
	most test results for trivial reformatting of initial css.
	* tp/tests/parser_tests.sh,
	* tp/tests/run_parser_all.sh: copyright/doc updates.

2015-01-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* man/Makefile.am (man_rule_0): Add case for texindex.

2015-01-26  Walter Garcia-Fontes  <walter.garcia@upf.edu>

	* doc/txi-ca.tex: Add Catalan translation.
	
2015-01-25  Karl Berry  <karl@gnu.org>

	* tp/Texinfo/Convert/HTML.pm (css_map): consistently use
	spaces before values.

2015-01-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (documentation for multitable): Change 
	'cell_count' to 'cell_number'.

2015-01-22  Karl Berry  <karl@gnu.org>

	* info/t/resize-in-completions.sh: reword msg to avoid
	backslashed ', just in case.

2015-01-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Parser.pm (Module documentation section): Tweak
	descriptions of what 'node_manuals' entries and 
	'menu_entry_node' are.  Add section mentioning 'nodes' and 
	'menus' arrays.

2015-01-18  Karl Berry  <karl@gnu.org>

	* info/t/Init-inter.inc: if mknod doesn't exist,
	or mknod ... p fails, exit 77.

2015-01-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc: (findprog) Add function from util/texi2dvi.
	(run_ginfo) Call findprog to check for pgrep.  If not found, 
	wait a short while for controlled process to start.
	* info/t/resize-in-completions.sh: Print an informative message 
	to standard error if test is skipped.

2015-01-15  Karl Berry  <karl@gnu.org>

	* Makefile.am (po-check): include ti.twjr, exclude parsetexi, etc.
	* po/POTFILES.in: update.
	* util/texindex.c: remove.

2015-01-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc (run_ginfo): When setting GINFO_PID, 
	include more commands in subshell.  This means the tests at 
	least pass when run in-source.

	* info/t/Init-inter.inc, info/t/Init-test.inc, 
	info/t/Timeout-test.inc, info/t/Cleanup.inc: Create temporary 
	files in $builddir.
	* info/Makefile.am: Distribute info/t/node-target.
	* info/t/infodir/file-menu.info: Specify a target file as a 
	simple filename, instead of a compound path, to allow 
	t/file-file-with-dot.sh test to pass out-of-source.

2015-01-14  Karl Berry  <karl@gnu.org>

	* info/t/Cleanup.inc,
	* info/t/Init-inter.inc,
	* info/t/Init-test.inc,
	* info/t/Timeout-test.inc: portability (export =, test -v, ! test,
	...),
	usability with separate builddir != srcdir,
	usual style.

	* texindex/Makefile.am,
	* info/Makefile.am,
	* install-info/tests/Makefile.am (EXTRA_DIST): new files needed,
	found by make distcheck.
	
	* tp/MANIFEST: regenerate.

2015-01-14  Arnold D. Robbins <arnold@skeeve.com>

	* texindex/jrtangle: Fixes to allow non-use of default update recipe.
	* texindex/ti.twjr: Clear the update recipe, don't use a suffix.
	Should let things build in MinGW environment. Thanks to Eli Z
	for pointing out the issue.
	
2015-01-11  Karl Berry  <karl@gnu.org>

	* man/Makefile.am (texindex.1): source file is now texindex/ti.twjr.
	* README: mention gawk >= 4.0 if modifying ti.twjr.	

2015-01-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (@url PDF Output Format, PDF Colors)
	(Escaping to HTML): Change some "."'s to "@."'s.

2015-01-10  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (Ending a Sentence): attempt to clarify
	the interaction of closing punctuation and sentence endings.

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

	* doc/texinfo.texi (Invoking texi2any) <--split>: Change a "." 
	to a "@.".

2015-01-07  Karl Berry  <karl@gnu.org>

	* texindex/Makefile.am (ti.pdf, ti.html): new targets,
	for the literate program.  (Only invoked by hand.)

	* tp/texi2any.pl: hardwire program name in --version,
	derive name from $0 in --help, to match behavior of coding
	standards and coreutils, etc.

2015-01-05  Karl Berry  <karl@gnu.org>

	* configure.ac (AC_CONFIG_FILES): add texindex/Makefile.
	* Makefile.am (SUBDIRS): add texindex.
	(po-check): also look at *.twjr.
	* util/Makefile.am (bin_PROGRAMS): remove, we'll no longer build
	the C texindex.

	* texindex/ti.twjr: --help formatting.
	
2015-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (point_forward_char, point_backward_char): 
	Correctly traverse multi-column characters.  (Bug was likely 
	introduced on 2014-10-09 with change to window_point_to_column.)

2015-01-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (process_node_text, calculate_line_starts): 
	process_node_text inlined in calculate_line_starts.

	(calculate_line_starts): Simplify.
	(collect_line_starts): Unused arguments removed.  Return value 
	is void.

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

	* doc/texinfo.texi (Info Format Indirect Table): Value in 
	indirect table is for first node in file, not start of file 
	itself.

2015-01-01  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (Output Formats, Generating HTML): be rather
	forceful in our overall goal for the HTML output (namely, be
	widely usable rather than fancy).

	* info/info-utils.c,
	* info/nodes.c,
	* info/nodes.h: 2015.
	
	* Pod-Simple-Texinfo/pod2texi.pl,
	* doc/refcard/txirefcard.tex,
	* doc/texinfo.texi,
	* info/info.c,
	* install-info/install-info.c,
	* texindex/ti.twjr,
	* tp/maintain/regenerate_cmd_tests.sh,
	* tp/maintain/regenerate_docstr.sh,
	* tp/maintain/regenerate_file_lists.pl,
	* tp/maintain/template.pod,
	* tp/texi2any.pl,
	* util/texi-elements-by-size,
	* util/texi2dvi,
	* util/texindex.c: 2015.	

2015-01-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.h (TAG): Add 'nodestart_adjusted' field and remove 
	'orig_nodestart'.
	(NODE): Remove 'nodestart' field.
	* info/nodes.c (info_create_tag): Update.

	* info/nodes.c (adjust_nodestart): Set offset of found node in 
	'nodestart_adjusted' field of NODE.
	(set_tag_nodelen, info_node_of_tag): Use 'nodestart_adjusted'
	for actual start of a node.

	* info/info-utils.c (copy_input_to_output): Set adjusted anchors 
	in 'nodestart_adjusted'.
	(scan_node_contents): Get 'nodestart' for node from TAG object 
	instead of from NODE.

	* info/nodes.c (find_node_of_tag): Arguments changed.  If node 
	not found, call convert_eols to convert file buffer in place, 
	reset the tag table, look for the node again, and reload any 
	nodes in the history of a window.

	* info/nodes.c (convert_eols): Set 'filesize' on destination 
	FILE_BUFFER.

2014-12-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.h (TAG): Struct type reintroduced (removed on
	2014-04-16).  Use to represent an entry in a file's tag table.
	All uses updated.
	* info/info-utils.c (scan_node_contents): Prototype changed.  
	All callers updated.

	* info/nodes.c (info_create_tag): New function.
	(info_node_of_tag): Set body_start on returned NODE.

	* info/man.c (manpage_file_buffer, manpage_nodes): Keep list of 
	manpage nodes in a list of pointers.
	(create_manpage_file_buffer): Removed.

2014-12-29  Patrice Dumas  <pertusus@free.fr>

	* tp/texi2any.pl: force conversion of stringyfied object
	passed by Getopt::Long to a true string.
	* tp/Texinfo/Parser.pm (parser): use Storable::dclone instead
	of evaluating Data::Dumper->Dump result to make a deep copy.
	* tp/Texinfo/Parser.pm (simple_parser), tp/Texinfo/Report.pm (gdt):
	new parser initialisation function, simple_parser, fit for 
	strings of Texinfo, not whole documents, targetting speed.  
	Use it in gdt() to try to speed up this function.

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

	* info/filesys.c, info/nodes.c (convert_eols): Function moved 
	between files.  Arguments changed.
	* info/nodes.c (adjust_nodestart): Take extra argument giving 
	the slack to search for a node.
	(find_node_from_tag): New function, wrapping adjust_nodestart.  
	Call convert_eols on file if we don't find a node.
	(info_node_of_tag): Call find_node_from_tag instead of 
	adjust_nodestart.  Rearrange logic in function so not to call 
	itself when handling an anchor.
	* info/nodes.h (N_EOLs_Converted): New flag.

2014-12-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.h (TAGS_TABLE_BEG_LABEL): Define without trailing 
	'\n'.
	(INDIRECT_TAGS_TABLE_LABEL, INDIRECT_TABLE_LABEL): Rename and 
	remove trailing '\n'.
	(TAGS_TABLE_END_LABEL): Define without leading '\n'.

	* info/search.c (find_node_separator): Search backwards if 
	beginning of search is after end of search.
	(find_tags_table, find_file_section): Function renamed.  Take 
	extra argument giving first line of section to look for.  Search 
	backwards if beginning of search is after the end of search.
	* info/search.c (looking_at_line): New function.

	* info/nodes.c (build_tags_and_nodes): Call find_file_section to 
	find end and start of tags table.
	(get_nodes_of_tags_table): Assume we are passed the exact offset 
	of the separator preceding the tag table.

	* info/info.h (whitespace_or_newline): Include '\r'.
	* info/nodes.c (get_file_character_encoding): Stop reading name 
	of character encoding at an '\r' if one is seen.
	* info/info-utils.c (avoid_see_see): Include '\r' as a 
	whitespace character.

	All problems with reading files with CR-LF line endings reported 
	by Eli Zaretskii.

2014-12-26  Eli Zaretskii  <eliz@gnu.org>

	* info/info-utils.c (nl_langinfo) [__MINGW32__]: Redirect to
	rpl_nl_langinfo, defined on pcterm.c.
	(degrade_utf8): Add replacements for 'point', 'print', and
	'expansion' symbols used by Texinfo.

	* info/pcterm.c (WIN32_LEAN_AND_MEAN): Define.
	<old_outpmode, output_cp>: New static variables.
	(w32_info_prep): Disable the wrap-at-eol on console output.
	(w32_cleanup): Restore the original position of the cursor.
	(write_utf): New function, writes UTF-8 and UTF-7 text to console.
	(pc_put_text, pc_write_chars) [__MINGW32__]: Call it when the
	output console codepage is UTF-8 or UTF-7.
	(rpl_nl_langinfo): New function, returns the Windows console's
	output codepage and requests transliteration from libiconv.

2014-12-26  Jason Hood  <jadoxa@yahoo.com.au>  (tiny change)

	* info/pcterm.c (ScreenVisualBell): Fix setting visual attribute
	on the mode line.

2014-12-26  Eli Zaretskii  <eliz@gnu.org>

	* info/info-utils.c (fncmp) [__MSDOS__ || __MINGW32__]: Now
	external.  Move the #define for Posix hosts ...

	* info/info-utils.h (fncmp): ...to here.  Declare a prototype for
	__MSDOS__ and __MINGW32__.

	* info/infopath.c (infopath_add_dir): If the inode values are
	zero, use file-name comparison as fallback.

2014-12-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/search.c (find_node_separator, skip_node_separator): 
	Allow optional '\r' before '\n' after Ctrl-_ node separator.

	* info/info-utils.c (parse_top_node_line),
	* info/nodes.c (get_nodes_of_info_file),
	* info/search.c (find_node_in_binding): Include '\r' in list of 
	terminating characters.

2014-12-25  Eli Zaretskii  <eliz@gnu.org>

	* info/man.c (get_manpage_from_formatter) <!PIPE_USE_FORK>: 
	Check for end of array without using removed variable.

2014-12-25  Eli Zaretskii  <eliz@gnu.org>

	* info/pcterm.c (gettextinfo): Pass expected arguments to 
	info_error.

2014-12-25  Eli Zaretskii  <eliz@gnu.org>

	* info/terminal.c (terminal_initialize_terminal) 
	<terminal_initialize_terminal_hook>: Call initialize_byte_map.

2014-12-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (display_update_window_1): Don't display a line 
	continuation character on the last line of the display.  Check 
	was formerly done in process_node_text.  Report from Eli 
	Zaretskii.

2014-12-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm: Set CSS styles for @indentedblock, 
	@smallindentedblock with "blockquote" instead of "div".

	(%indented_block_commmands, %indented_preformatted_commands): 
	Renamed.

	(_convert_preformatted_or_indented_commands)
	(_convert_preformatted_command): Renamed.  Don't use this 
	function for @indentedblock and @smallindentedblock.

	(_convert_indented_command): New function.  Use "blockquote" tag 
	to indent @indentedblock and @smallindentedblock.

2014-12-18  Karl Berry  <karl@gnu.org>

	* doc/refcard/Makefile (spell): new target.
	* doc/refcard/refcard.spell: aspell exception list.

2014-12-18  Karl Berry  <karl@gnu.org>

	* run gnulib-tool --add-import, as strcasecmp.c became needed.

2014-12-17  Karl Berry  <karl@gnu.org>

	* util/Makefile.am (EXTRA_DIST): remove gendocs.sh,
	gendocs_template; now maintained in gnulib (and not by me).

2014-12-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (info_indices_of_file_buffer): Case insensitive 
	search for nodes with "index" in their names.
	
	* info/session.c (info_menu_ref_item): If multiple references in 
	a line pick the right one.

	* doc/texinfo.texi (@raggedright): Fix typo.

2014-12-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (Info Format *): small rewordings.

	* doc/texinfo.texi (Macro Details): the linemac example became
	wrong at some point; just have to be vague, it seems.
	Report from Gavin.

2014-12-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Info Format Regular Nodes)
	(Info Format Cross Reference): Update format specification 
	following feedback from Patrice Dumas 2014-11-22.

2014-12-03  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex: oops, \relax not \thisisundefined for
	\ifx\csname.

	* texinfo.tex (\U): new command @U.
	(\DeclareUnicodeCharacter): define a cs for @U to use.
	(\globalllet): helper macros.

2014-12-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (show_error_node): Call 
	window_message_in_echo_area to display message so that 
	echo_area_node will be set for free_echo_area.
	* info/dir.c (dir_entry_of_infodir): Free dir node if no entry 
	found.
	* info/footnotes.c (make_footnotes_node): Supply a terminating 
	null instead of relying on there being one in the source node.

2014-12-02  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\sub, \sup, \mathopsup): new commands @sub and @sup.
	(\ptexsp, \ptexsup): save and restore in \tex.
	(\finishsub, \finishsup): helper macros.
	* NEWS,
	* doc/refcard/txirefcard.tex,
	* doc/texinfo.texi (Inserting Subscripts and Superscripts),
	(HTML Xref Command Expansion),
	(Command Summary): document them.
	(Inserting Math): \mathopsup exception for plain TeX's \sup.
	
	* doc/txirefcard.tex: alphabetize some of the command lists,
	when other orderings aren't preferable.

2014-11-27  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (Comments): must not be followed by -.
	Patrice, texinfo-devel 22 Nov 2014 15:18:07.

	* doc/texinfo.texi (@noindent, @indent): more explicitly describe
	recommendations and current behavior.

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

	* Texinfo/Common.pm (%style_commands), 
	Texinfo/Convert/DocBook.pm (%style_attribute_commands),
	Texinfo/Convert/HTML.pm (%style_attribute_commands),
	Texinfo/Convert/Plaintext.pm (%style_map),
	util/texinfo.dtd: add @sub and @sup.  Report and formatting
	proposal from Per Bothner.

2014-11-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (read_key_sequence): Set info_explicit_arg or 
	ea_explicit_arg if argument was given with sequence of C-u's.
	* info/t/c-u-m-x-scroll-forward.sh: New test.

2014-11-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Top Node Naming): Fix typo.

2014-11-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* tp/Texinfo/Convert/HTML.pm: Set 
	$default_commands_conversion{'raggedright'} to reference to 
	_convert_command_noop so that contents of @raggedright block 
	appear.  Report from Mahlon Smith.

2014-11-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (degrade_utf8): Add some more ASCII 
	replacements.

2014-11-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (incremental_search) <backspace>: Remove a 
	complete multi-byte character.

2014-11-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (get_initial_file) <inexact dir lookup>: Check if 
	file referred to exists.
	* info/t/dir-dangling-entry.sh: New test.

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

	* info/session.c (incremental_search): Add at most one node to 
	the window history.
	(info_search_internal): Call free_history_node on nodes where no 
	match was found.
	(info_search_in_node_internal): Remove unnecessary conditional 
	checks.

	* info/t/inc-sea-history.sh: New test.

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

	* info/dir.c (dir_entry_of_infodir): Don't free a node too 
	early.

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

	* info/session.c (incremental_search): Look up pressed keys in 
	info_keymap and echo_area_keymap.  Do not hard-code any keys for 
	particular commands.

2014-11-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (ask_for_search_string): Return 1 for empty 
	input, and 0 only when it was aborted.
	(info_search_case_sensitively, info_search)
	(info_search_backward): Set last_search_direction and 
	last_search_case sensitive in info_search_1.  Call 
	ask_for_search_string in info_search_1.  Perform search if 
	default search string was accepted.

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

	* tp/Texinfo/Convert/Plaintext.pm (_convert) <@quotation with
	@author>: Check if @smallquotation was used as well.  Report
	from Mahlon Smith.

2014-11-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\footnote): do not set \indent and \noindent
	to their \ptex... versions; these become global settings, and seem
	unnecessary since the only time we redefine \indent and \noindent
	is with @firstparagraphindent for section headings, and footnotes
	cannot work in headings anyway.  What am I missing?  Could not
	construct an example where it mattered.
	(\errfootnoteheading): new macro, for \chapmacro and \sectionheading.
	(\errfootnotenest): rename from \errfootnote.
	* doc/texinfo.texi (Footnotes): mention that they cannot be nested
	and cannot appear in section headings.

2014-11-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infomap.h (KEYMAP_ENTRY) <function>: Replace with a union 
	to avoid casts on accessing it as a Keymap.  All uses updated.

2014-11-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/echo-area.c (ea_delete, ea_transpose_chars): Handle 
	multi-byte characters.
	(ea_swap_chars, ea_remove_text): New static functions.

	(read_and_dispatch_in_echo_area)
	(echo_area_prep_read): Line invalidating echo area line map 
	moved between functions.

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

	* info/t/window-split-dir.sh: New test.
	* info/t/star-note-non-whitespace.sh: New test.

2014-11-11  Karl Berry  <karl@gnu.org>

	* util/texi2dvi: minimize function header comments, reorder,
	other comment cleanups.  No functional changes intended.

2014-11-10  Karl Berry  <karl@gnu.org>

	* util/texi2dvi: do not call findprog on a user-defined $TEX.
	Report from Per Mildner, 10 Nov 2014 12:26:08.

2014-11-10  Jason Hood  <jadoxa@yahoo.com.au>  (tiny change)

	* install-info/install-info.c (reformat_new_entries): respect
	--maxwidth if given.

2014-11-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (find_invocation_node_by_nodename): New 
	function.
	(info_intuit_options_node): If passed Top node, call it to get a 
	new node to start at.  Return value to be freed by caller.  All 
	callers updated.
	* info/info.c (main, add_initial_nodes) 
	(invocation_program_name): For --show-options, save last 
	non-option argument to use as the name of the program.

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

	* info/session.c (menu_digit): Unused argument removed.
	(read_key_sequence) <ea_possible_completions>: Exit function as 
	intended.

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

	* info/echo-area.c (ea_forward, ea_backward): Go forward and 
	backward over multi-byte characters correctly.

	* info/filesys.c (convert_eols): Disable with preprocessor to 
	avoid warning about unused function.
	* info/pseudotty.c: Avoid compiler warnings about set but unused 
	variable and include <error.h> to get prototype of 'error'.
	
	* info/infodoc.c (HELP_NODE_GETS_REGENERATED)
	(internal_info_help_node_contents): Removed.

	* info/session.c (read_key_sequence): Rewrite for clarity.

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

	* info/session.c (info_dispatch_on_key, read_key_sequence):
	Renamed.  Call initialize_keyseq.  Read initial key of key 
	sequence.  Merge in functionality of info_numeric_arg_digit_loop 
	- read in keys giving a numeric argument at start of key 
	sequence.  Call function implementing some commands depending on 
	arguments.  Allow 8-bit input in echo area if 'ISO-Latin' is 
	'On'.
	(display_info_keyseq): Check for empty keyseq.

	* info/terminal.c (initialize_byte_map): 8th bit in an inputted 
	byte only represents Meta if 'ISO-Latin' is off.

	* info/echo-area.c (ea_insert): Don't declare with 
	DECLARE_INFO_COMMAND.
	* info/infomap.c (add_function_keyseq),
	* info/infodoc.c (dump_map_to_text_buffer): Don't check for 
	ea_insert key bindings.
	* info/infomap.c (read_init_file): Don't bind printable 
	characters to ea_insert.

	* info/session.c (info_menu_digit): Function body is empty.
	(menu_digit): New function.

	* info/echo-area.c (ea_possible_completions, ea_complete): Don't 
	check what key launched this command.  Don't insert the key if 
	not completing.
	(echo_area_completion_items): No longer static.

	* info/session.c (info_numeric_arg, info_numeric_arg_sign)
	(ea_numeric_arg, ea_numeric_arg_sign): Deleted.
	(info_initialize_numeric_arg): Don't set info_numeric_arg or 
	other deleted variables.
	(info_add_digit_to_numeric_arg, info_universal_argument): Bodies 
	of functions removed - declare with DECLARE_INFO_COMMAND only.

	* info/session.c (mouse_reporting_on, mouse_reporting_off)
	(mouse_reporting): Deleted.
	(get_input_key): If mouse event detected always return 
	KEY_MOUSE.
	* info/infodoc.c (pretty_keyname): More descriptive text for 
	KEY_MOUSE or unknown key in case they are output by mistake.

	* info/session.c (info_read_and_dispatch),
	* info/echo-area.c (read_and_dispatch_in_echo_area): Calls to 
	info_dispatch_on_key updated.  Don't call initialize_keyseq or 
	read first key of key sequence.  Pass count to 
	command-implementing function.  Clear ea_last_executed_command 
	if info_dispatch_on_key could have executed a command itself.

	* info/info.h (DECLARE_INFO_COMMAND),
	* info/makedoc.c (process_one_file): Remove 'key' argument from 
	declarations of command-implementing functions.  All function 
	declarations and calls updated.
	* info/session.c (info_menu_or_ref_item): Unused argument 
	removed.

	* info/session.c (info_read_and_dispatch): Don't check for ESC 
	<key> input.
	* info/infomap.c (section_to_keymaps): Copy key bindings M-<key> 
	to ESC <key>.
	(default_emacs_like_info_keys) (default_vi_like_info_keys): 
	Refer to key sequences ESC <special key> with a sequence 
	beginning with ESC instead of using KEYMAP_META.

2014-11-06  Karl Berry  <karl@gnu.org>

	* info/pseudotty.c: localize variables, main signature, formatting.

2014-11-06  Karl Berry  <karl@gnu.org>

	* install-info/tests/Makefile.am (TESTS, EXTRA_DIST):
	new tests 55, 56 for --defsection; plus the new files.
	Turns out --defentry was a no-op, so omit it from help string
	but leave code in case someone wants it.
	* NEWS: mention new option.

2014-11-06  Pietro Cerutti  <gahr@FreeBSD.org>

	* install-info/install-info.c: new options --defentry and
	--defsection (written for BSD).  Retrieved from
	http://svnweb.freebsd.org/ports/head/print/texinfo/files/patch-install-info_install-info.c
	
2014-11-04  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi: no leading @ characters in command index.

2014-11-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c (get_manpage_node): Make returned node safely 
	free-able with free_history_node.
	(xrefs_of_manpage): Initialize line_number fields of REFERENCE 
	objects.

2014-11-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Plaintext.pm (_convert), 
	tp/Texinfo/Convert/Text.pm (heading): add an indent length
	argument to heading() and use it to indent the underlying 
	symbols.  Report from Mahlon Smith.

2014-11-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (info_index_apropos): Include line numbers in 
	apropos node.

2014-10-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (scan_node_contents): Return a new NODE 
	object if node was from a file, and don't set reference list of 
	passed-in node.

	* info/nodes.c (info_node_of_tag): Always call 
	scan_node_contents.  Node data like the contents pointer or 
	reference list is not saved in the tag table any more.
	(set_tag_nodelen): Passed in tag points to start of node 
	separator instead of just after it.

	* info/nodes.h (N_Unstored): Symbol deleted.
	* info/footnotes.c (make_footnotes_node),
	* info/indices.c (info_index_apropos, info_virtual_index)
	* info/nodemenu.c (list_visited_nodes),
	* info/echo-area.c (ea_possible_completions): Mark generated 
	nodes with N_WasRewritten instead of N_Unstored.

	* info/nodes.h (NODE): Remove out-of-date comment.
	* info/info-utils.c (free_history_node): No longer static.  
	Check if argument is null.  Free node contents if N_WasRewritten 
	flag is set.  Free 'next', 'prev' and 'up' fields.
	* info/dir.c (dir_entry_of_infodir),
	* info/session.c (dump_node_to_stream, info_intuit_options_node)
	(info_search_internal),
	* info/info.c (add_initial_nodes, info_follow_menus),
	* info/indices.c (info_indices_of_file_buffer),
	* info/footnotes.c (make_footnotes_node): Call free_history_node 
	on nodes instead of calling 'free'.

	* info/dir.c (build_dir_node): Call to scan_node_contents 
	updated.
	(get_dir_node): Copy some fields from saved dir node.
	(lookup_dir_entry): Don't call get_dir_node.

	* info/session.c (free_node_contents): Function deleted.
	* info/session.c (add_gcable_pointer, gcable_pointers)
	(gcable_pointers_index, gcable_pointers_slots): Removed.  All 
	calls to add_gcable_pointer removed.
	(gc_file_buffers_and_nodes): Don't process gcable_pointers.

	* info/session.c (info_split_window): Copy some fields of node 
	object so they can be passed to free_history_node.

	* info/nodes.h (N_FromAnchor): Removed.
	* info/info-utils.c (info_node_of_tag) <anchor>: Don't set 
	N_FromAnchor flag.

	* info/info.c (info_find_matching_files): Free return value of 
	info_file_find_next_in_path.
	(add_initial_nodes) <--node>: Don't duplicate a string which is 
	lost.
	* info/footnotes.c (make_footnotes_node): Copy terminating null 
	byte into contents of footnote node.
	* info/session.c (ask_for_search_string): Free returned string 
	even if it is of length 0.

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

	* info/session.c (SEARCH_STATE, push_isearch, pop_isearch)
	(pop_isearch_prompt, incremental_search): Represent result of 
	search with an enum search_result instead of an int.
	(incremental_search): Don't say an empty search string is 
	failing.

	* info/search.c (regexp_search): Don't allocate a match list if 
	there aren't any matches.
	* info/session.c (info_search_internal): Always free return 
	value of info_get_node if it is not saved in the window.

	* info/session.c (gc_file_buffers_and_nodes): Temporarily 
	disable freeing subfiles.

2014-10-29  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\chapmacro): \checkenv, since chapters
	should presumably not appear inside environments.
	(\sectionheading): allow @heading-series commands, but not others,
	to appear inside environments.  Report from Mahlon Smith,
	25 Aug 2014 09:42:16; original change made following
	https://savannah.gnu.org/bugs/?15514.
	* doc/texinfo.texi (@t{@@unnumberedsec @@appendixsec @@heading})
	<@@heading>: @heading-series cannot appear literally "anywhere",
	though they can appear inside most environments, unlike the
	normal sectioning commands.

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

	* info/session.c (gc_file_buffers_and_nodes): Keep on checking 
	for referenced file buffers after one is found for a node.  
	Report from Werner Lemberg.
	* info/t/gc-split.sh: New test.

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

	* info/session.c (info_dispatch_on_key): Don't display a 
	completed key sequence when in the echo area.

2014-10-28  Patrice Dumas  <pertusus@free.fr>

	* Texinfo/Convert/DocBook.pm: also upper-case accented commands
	when in the 'upper_case' context.

2014-10-27  Patrice Dumas  <pertusus@free.fr>

	* Texinfo/Convert/DocBook.pm (upper_case_style_commands): use
	a context of 'upper_case' to track situation where upper casing
	of text should be done instead of upper-casing already converted
	output.

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

	* info/info-utils.c (scan_reference_marker) Return value says 
	whether syntax was valid.
	<cross-references>: Demand that cross-reference marker is 
	followed by whitespace.
	(scan_node_contents): Call to scan_reference_marker updated.
	* info/nodes.h (INFO_MENU_REGEXP, INFO_MENU_ENTRY_REGEXP)
	(INFO_XREF_REGEXP, INFO_TAG_REGEXP): Removed.

2014-10-26  Karl Berry  <karl@gnu.org>

	* Texinfo/Convert/DocBook.pm (upper_case_style_commands),
	(_convert): uppercase @sc argument.  Suggestion from Arnold Robbins,
	11 Sep 2014 19:48:14.
	* TODO,
	* tests/layout/res_parser/formatting_docbook/formatting.xml:
	update accordingly.
	* Texinfo/Convert/HTML.pm: doc tweak.

	* tp/maintain/template.pod,
	* tp/maintain/regenerate_cmd_tests.sh,
	* tp/maintain/regenerate_docstr.sh,
	* tp/maintain/regenerate_file_lists.sh,
	* tp/tests/Makefile.am:
	belated copyright year update.

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

	* info/filesys.c (filesys_read_info_file): Disable call to 
	convert_eols.
	* info/info-utils.c (printed_representation): Make '\r' bytes 
	followed by a '\n' invisible.
	* info/Makefile.am: t/cr-tag-table.sh removed from XFAIL_TESTS.
	
	* info/info-utils.c (forward_to_info_syntax): Check for syntax 
	case-insensitively.

	* info/indices.c (info_virtual_index): Pass arguments to 
	text_buffer_printf as intended.

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

	* info/info-utils.c (forward_to_info_syntax): New function.
	(scan_node_contents): Call it instead of using regexp_search.  
	This produces a speed improvement, noticable when using M-x 
	index-apropos or opening a long index node.
	* info/indices.c (info_indices_of_file_buffer): Call strstr 
	instead of string_in_line.

	* info/filesys.c (convert_eols): Don't convert nulls in Info 
	tags into spaces any more.
	* info/indices.c (info_index_apropos, info_virtual_index),
	* info/session.c (allfiles_create_node): Add index tag with 
	nulls instead of spaces.

	* info/info-utils.c (forward_to_info_syntax, scan_info_tag): 
	Look for tags starting with nulls instead of spaces.  This is 
	slightly faster because nodes generally contain many space 
	characters.
	(skip_tag_contents): New function.
	(scan_info_tag): Call it.
	* info/tag.c (tag_expand): Look for tag starting with a null 
	instead of a space.  Skip past the tag even if no handler for it 
	was found (for example, an index tag).

	* info/info-utils.c (printed_representation): Don't check for an 
	Info tag, as they should have been removed already.
	* info/window.c (info_tag): Function removed.

	* info/indices.c (info_indices_of_file_buffer): Look for nodes 
	with "index" in the name as well as "Index".

	* info/info-utils.c (forward_to_info_syntax): Don't search for 
	"\n* Menu:" label separately, as this is comprised under 
	searching for "\n* ".
	(scan_node_contents): Conditional reordered.

2014-10-21  Karl Berry  <karl@gnu.org>

	* tp/texi2any.pl (makeinfo_help),
	* doc/texinfo.texi (@t{texi2any} Printed Output): mention
	that texi2any parse the input purely for error-checking purposes
	before handing off to texi2dvi.
	Suggestion from Ken Brown18 Oct 2014 13:58:38.

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

	* tp/Texinfo/Parser.pm (_parse_def): on @def* lines, consider 
	@-commands and text not separated by space to be a single 
	word.  From Werner LEMBERG (http://savannah.gnu.org/bugs/?43406).

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

	* tp/Texinfo/Convert/Plaintext.pm (_convert): with @w and @tie,
	do not set set_space_protection ignore_column argument, such 
	that the whole block goes to the next line.  Report from
	Werner LEMBERG (http://savannah.gnu.org/bugs/?43407) and Mahlon 
	Smith.

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

	* info/t/empty.sh: New test.

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

	* info/info.c (add_initial_nodes): FILE_BUFFER argument removed.
	<--usage>: Display an error meesage if there is no node to give 
	a file to look for an invocation node.
	(initial_fb): Variable removed.

	* info/info.c (info_short_help),
	* doc/info-stnd.texi (Invoking Info): Document "info 
	'(file)node'" invocation.
	* doc/info-stnd.texi (Invoking Info): Refer to "search path" 
	instead of "INFOPATH".
	(Node Commands): Add "vi-like operation" for a binding.

2014-10-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (get_initial_file) <file name lookup>,
	(main) <--file>, <'(file)node' as first argument>: Add a node to 
	ref_list from the file we found.
	(add_initial_nodes): Don't fall back to a "Top" node as it 
	should already be in ref_list.  If any "--node" argument given, 
	discard the first element of ref_list.

	* info/info-utils.c (info_new_reference): Duplicate arguments 
	into new storage.  All callers updated.

2014-10-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (main) <--all not used>: Check if the first 
	non-option argument is of the form "(file)node", and if so add 
	it to the list of nodes to start with.
	(add_initial_nodes) <user_nodenames>: Duplicate filename string.  
	Allow nodename to be empty.
	<following menus>: Use a node from our list of initial nodes to 
	start at if initial_file is null.

	* info/t/spec-file-node.sh, info/t/spec-no-node.sh, 
	info/t/spec-menu.sh: New tests.

	* info/info.c (get_initial_file): Don't take a user-specified 
	filename as an argument.
	<--file>: Moved to main.

2014-10-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (Node Line Requirements, Writing a Menu):
	menu entries need exact spacing for the sake of Emacs Info.

2014-10-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (info_index_search): Call 
	info_indices_of_file_buffer before prompting user.  Display an 
	error message if no index is found.
	(info_virtual_index): Match error message to that used 
	elsewhere.
	* info/t/no-index.sh, info/t/index-completing.sh: New tests.

	* info/echo-area.c (info_read_and_dispatch_in_echo_area): 
	Recalculate line map after each user command.
	(input_line, input_line_prompt): Comments added.
	[FD_SET && hpux, FD_SET && !hpux] (fd_set_cast): Remove unused 
	macro.
	* info/window.c (window_point_to_column): Return left-most 
	column for multi-column characters.

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

	* info/indices.c (info_index_search): Don't duplicate a string 
	just to free the original.
	(look_in_indices): Save search string in 'index_search'.
	(info_index_apropos, info_virtual_index): Prompt with and 
	default to the last search string.

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

	* info/t/cr-tag-table.sh: New test.

2014-10-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c: Don't include sys/ioctl.h.

	* info/infomap.c (fetch_user_maps): Don't print an error message 
	if ".infokey" wasn't found.  Report from Karl Berry.

	* info/info.c (main) <--all>: If only one match, don't display a 
	menu of matches (this is what happened before).
	* info/t/all-only.sh: New test.

	* info/terminal.c (initialize_byte_map): Add byte sequences 
	beginning ESC [ and ESC O representing cursor keys.  Previously 
	these byte sequences were present in 
	default_emacs_like_info_keys before changes on 2014-06-28.

	* configure.ac: Remove use of AC_HEADER_TIOCGWINSZ.  Add 
	"sys/ioctl.h" to argument of AC_CHECK_HEADERS.
	* info/termdep.h: Make include of sys/ioctl.h conditional on 
	[HAVE_SYS_IOCTL_H] instead of [GWINSZ_IN_SYS_IOCTL].  This gives 
	the declaration of ioctl for Cygwin.  Report by Ken Brown.
	* info/session.c: Include of sys/ioctl.h conditional on 
	[HAVE_SYS_IOCTL_H] instead of [!__MINGW32__].

2014-10-06  Ken Brown  <kbrown@cornell.edu> (tiny change)

	* system.h [O_BINARY && !__MSDOS__]: Don't redefine setmode if 
	it is already defined.

2014-10-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Invoking Info): Add examples with --node.
	* info/info.c (info_short_help): Help text changed.

	* doc/texinfo.texi (Node Line Requirements): Tweak wording to 
	avoid implying that a node name with normalized whitespace has 
	to be used in all circumstances.  Report by Vincent BelaÃ¯che 
	2014-08-21 (bug #43042).

2014-10-03  Ken Brown  <kbrown@cornell.edu> (tiny change)

	Changes to compile for Cygwin:
	* info/Makefile.am (LDADD): Add "$(LIBICONV)".
	* info/info-utils.c: Remove include of nl_types.h.

	* man/Makefile.am: Don't build infokey.1.

2014-09-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_move_to_next_xref) 
	(info_move_to_prev_xref): If an argument is given with C-u, go 
	forward or backward that number of references.
	* info/t/tab-argument.sh: New test.

	* info/info.c (info_short_help): Examples in help text changed.

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

	* info/indices.c (info_index_search, do_info_index_search): 
	Getting user input moved from do_info_index_search.

	* info/indices.c (next_index_match, info_next_index_match): 
	Function split out.
	(look_in_indices): Return value as intended.

	* info/indices.c, info/session.c (allfiles_node) 
	(info_all_files): Moved between files.
	* info/session.c (move_to_goal_column): Return type declared as 
	void.
	(info_dispatch_on_key): Return values as intended.

	* info/indices.c (report_index_match): Split out from 
	info_next_index_match.

	* info/indices.c (next_index_match): Don't take index argument; 
	always operate on index_index.  Take FILE_BUFFER argument.  
	Update index_offset.  Call to info_indices_of_file_buffer to 
	update index_index moved from do_info_index_search.  All callers 
	updated.
	* info/info.c (main) <--index-search>: Call next_index_match and 
	report_index_match.

	* info/indices.c (do_info_index_search): Merged into 
	info_index_search.
	(info_entry_exists): Function removed.
	(report_index_match): Don't internationalize a string that 
	should never be displayed.

	* info/indices.c (info_indices_of_file_buffer): Check if we have 
	already built an index moved from next_index_match.
	(info_index_search) <empty search string>: Call 
	info_indices_of_file_buffer.  Always exit function. 

2014-09-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (info_index_apropos): Strip any suffix like 
	".info" from uses of filename in generated node contents.  Mark 
	node contents as an index.  Comment added mentioning problem 
	with character encodings.  Introductory text changed to be more 
	descriptive.

	* info/indices.c (look_in_indices): New function, split from:
	* info/info.c (add_initial_nodes) <index search>
	* info/indices.c (info_indices_of_file_buffer): Declared static.
	Return type is void.  Clear 'index_index' variable if no file 
	buffer.
	(index_nodenames): Comment changed.

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

	* info/doc.h (InfoCommand): Removed.  All uses updated.
	(FUNCTION_DOC): Comments added.

	* doc/info-stnd.texi (Miscellaneous Commands, Cursor Commands): Fix
	minor typos.

	* info/session.c (move_to_goal_column): New function, split from
	info_next_line and info_prev_line.  Interpret -1 as goal column to 
	mean the current column.
	(info_show_point): Don't set goal_column.
	(info_read_and_dispatch): Set goal_column to -1 unless previous 
	commmand was next-line or prev-line.
	(info_search_in_node_internal): Don't set goal_column.
	* info/window.c (window_set_node_of_window): Don't set goal_column.
	(window_make_window): Initialize goal_column to -1.

	* info/session.c (info_display_file_info): Display name of subfile if 
	in split file.

2014-09-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_dispatch_on_key): Don't set 
	ea_last_executed_command.
	(info_numeric_arg_digit_loop): Don't declare with 
	DECLARE_INFO_COMMAND.
	* info/echo-area.c (ea_last_executed_command): Declared static.
	(read_and_dispatch_in_echo_area): Set ea_last_executed_command.

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

	* info/session.c (info_read_dispatch): Return pointer to function 
	implementing Info command instead of calling it.  All callers updated.

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

	* info/session.c (info_select_reference): When following a reference
	in a footnotes window, try to switch to a window containing a node
	from the file.
	* info/display.c (display_update_window_1): Turn off standout mode
	if we are still in it by the time we get to the bottom of the window.

	* info/t/Init-inter.inc: Don't hang if the process doesn't appear.

2014-09-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (info_index_apropos): Mark apropos node with
	N_Unstored.
	(info_indices_of_file_buffer): Free index_index variable before
	overwriting it.
	(apropos_in_all_indices): Free return value of get_dir_node before
	returning.

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

	* doc/info-stnd.text (Scrolling Commands): PageUp and PageDown can
	change the node (changed in 4.12 release).

2014-09-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.h (N_Unstored): New flag.
	* info/session.c (info_split_window): Copy 'nodename' and 'references'
	fields if node is marked with N_Unstored, instead of N_IsInternal.
	* info/nodemenu.c (list_visted_nodes),
	* info/indices.c (info_virtual_index),
	* info/footnotes.c (make_footnotes_node): Mark generated nodes with
	N_Unstored.
	* info/dir.c (build_dir_node),
	* info/man.c (get_manpage_node): Mark generated nodes with
	N_IsInternal, to disable attempting to get another node in a
	containing file.

2014-09-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (copy_converting) <EINVAL>: Try converting again
	if input was incomplete, instead of degrading to ASCII.

2014-09-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.h: Don't include other header files.
	* info: All *.c and *.h files: Include necessary header files.
	Include "doc.h" instead of "infomap.h" to avoid problem with
	header file include cycle.
	* info/footnotes.c (info_get_or_remove_footnotes): Call info_error
	instead of inform_in_echo_area.
	* info/info.h, info/session.h (DECLARE_INFO_COMMAND): Macro moved
	between files.
	* info/info.h, info/session.h: Declarations of read_function_name,
	show_error_node moved.
	* info/makedoc.c (doc_header_1, main): Add include of "window.h" to
	generated files.
	* info/session.c, info/variables.c (info_scroll_choices)
	(scroll_last_node_choices): Moved between files and declared static.
	* info/variables.h: Declare 'mouse_protocol'.

	* info/info.c (add_file_directory_to_path): Declared static.

2014-09-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c: Move "Garbage Collection" and "Navigation of
	document structure" sections to reduce need for forward function
	declarations.
	* info/session.c (file_buffer_of_window, node_printed_rep): Moved
	between files.

	* info/indices.c (info_virtual_index),
	* info/nodemenu.c (nodemenu_format_info),
	* info/session.c (info_select_reference, info_follow_menus): Remove
	unused local variables.

	* info/info.h: Remove declaration for removed variable.
	(info_toupper, info_tolower): Removed.  Use toupper and tolower
	instead.
	* info/info.h, info/nodes.h (strict_node_location_p): Declaration
	moved.

	* info/info.c, info/session.c (debug_file, close_debugfile)
	(debug_level, vinfo_debug)
	(info_debug, info_error_rings_bell_p, info_error, show_error_node)
	Moved between files.
	(vinfo_debug, vinfo_error): Declared static.
	* info/info.h (program_name): Declaration added.
	(info_error_rings_bell_p): Declaration removed.
	* info/info.h, info/session.h (debug): Macro definition moved.

	* info/session.h: Remove unnecessary declarations of functions that
	are defined with DECLARE_INFO_COMMAND and not used outside of their
	containing source files.
	* info/session.c: Add declarations of DECLARE_INFO_COMMAND functions
	as necessary.  Reorder some functions to be used after they are
	defined.
	(forward_move_node_structure): Call info_parse_and_select instead of
	info_top_node.

2014-09-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (display_scroll_region): New function.
	(display_scroll_display): Call it if the terminal supports setting a
	scrolling region.

	* info/terminal.c (terminal_scroll_region): New function.
	(terminal_can_scroll_region): New variable.
	(term_cs, term_SF, term_SR): New variables.
	(terminal_initialize_terminal): Set them.
	
	* info/window.c (set_window_pagetop): Pass top and bottom of
	window being scrolled to display_scroll_display.

	* info/display.c (display_update_window_1): Correct length argument
	passed to display_node_text.

2014-09-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (forward_move_node_structure)
	(backward_move_node_structure): Disable for internal nodes.
	(forward_move_node_structure) <scroll-behaviour=Continous>: Detect if
	we are at the last node even if it does not have its Up pointer going
	to "Top".
	* info/session.h (SLN_Scroll, SLN_Top),
	* doc/info-stnd.texi (Variables) <scroll-last-node>,
	* info/session.c (scroll_last_node_choices): 'Scroll' option removed,
	as a non-index node with a menu will never be the last node.
	* info/t/last-node-not-top-level.sh: New test.
	* info/t/infodir/last-node-not-top-level.info: New file.

	* info/session.c (select_menu_digit): Don't print any error messages.
	(info_menu_digit): Display error message if there is no menu in
	the node.

	* doc/info-stnd.texi (Variables) <cursor-movement-scrolls>
	<scroll-behaviour>: cursor-movement-scrolls=On by default.

	* info/infodoc.c (info_find_or_create_help_window): Look for help
	window with get_internal_info_window instead of get_window_of_node.
	* info/info-utils.c (get_window_of_node): Removed.

	* info/indices.c (info_virtual_index): Mark index node as internal.
	Don't include a Top pointer to prevent possible memory leak when
	node is deleted.

2014-09-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_set_node_of_window): Don't get or remove
	footnotes nodes for footnotes nodes.
	* info/t/split-footnotes.sh: New test.

	* info/indices.c (info_indices_of_file_buffer): Only record first
	index found in initial_index_nodename.  This stops a memory leak
	when there are multiple indices, and means that "i<RET>" goes to
	the first index node in the file.

2014-09-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (free_history_node): Free 'nodename' field for
	internal nodes.
	(info_split_window): Copy 'nodename' field for new internal nodes.

	* info/echo-area.c (ea_possible_completions),
	* info/footnotes.c (make_footnotes_node),
	* info/indices.c (info_index_apropos),
	* info/nodemenu.c (list_visited_nodes): Duplicate 'nodename' field
	of new node.

	* info/footnotes.c (FOOTNOTE_HEADER_FORMAT): Removed.
	(make_footnotes_node): Don't call name_internal_node.

	* info/indices.c (info_index_apropos),
	* info/infodoc.c (create_internal_info_help_node): Don't clear
	N_IsInternal flag on new node.

	* info/info-utils.c (info_copy_references): Check if argument is null.

2014-09-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (create_virtindex_file_buffer): Deleted.
	(create_virtindex_node): Merged into caller in info_virtual_index.
	(info_virtual_index): Don't create a FILE_BUFFER to hold generated
	node.  Remove word "Info" from heading in node.
	(index_index): Comment changed.

	* info/info-utils.c (printed_representation): Return byte length 0 for
	"Info tags" so that they are hidden on the screen.

	* info/t/index-search.sh: New test.

2014-09-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (set_window_pagetop): Set goal column as well as point
	when moving point into displayed part of node.

	* info/infokey.c (compile): Use KEYMAP_META instead of Meta to allow
	binding key chords including Meta.

	* info/terminal.c (term_bt, term_kB, terminal_initialize_terminal)
	(initialize_byte_map): Get 'BackTab' key byte sequence from 'kB'
	capability instead of 'bt'.

2014-09-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_clear_search): New user command.
	* doc/info-stnd.texi (Searching Commands): Document it.

2014-09-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (move_to_goal_column): Merged into callers.
	(point_next_line, point_prev_line): Call window_compute_line_map for
	new line.
	(info_next_line, info_prev_line): Keep goal column when a numeric
	argument is used resulting in a new node being put in the window.
	(info_beginning_of_line, info_end_of_line): Don't call
	window_compute_line_map.
	(info_end_of_line): Go one past the last character in line, instead
	of right on it, for consistency with Emacs and readline.

2014-09-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (display_update_one_window): Clear lines with
	highlights in them properly.
	* info/display.c (display_update_window_1): Go to new line properly
	when highlighted region crosses line.

	* info: (all files) Change use of quotation marks.  Quote 'thusly'
	instead of `thusly' in user messages.

	* doc/info-stnd.texi (Invoking Info) <--no-raw-escapes>: Change
	explanation of what this option does.

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

	* info/session.c (info_move_to_prev_xref, info_move_to_next_xref):
	Skip nodes if no references in previous or next node, as was done
	before.  Cycle round the node's references when
	cursor-movement-scrolls=Off.
	(info_move_to_xref): Handling of cursor-movement-scrolls removed.

	* info/session.c (ask_for_search_string): Don't crash if the user
	pressed return without typing anything.
	* info/t/search-empty.sh: New test.

	* info/terminal.c: (terminal_begin_standout, terminal_end_standout)
	(terminal_begin_standout_hook, terminal_end_standout_hook): New
	functions and function pointers.
	* info/display.c (display_update_window_1): For each line which
	contains part of a search match, display it using
	terminal_begin_standout and terminal_end_standout in this function and
	mark it as invalid in 'the_display'.  Remove unused argument.

2014-08-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (incremental_search): Update an automatic footnotes
	window if we change node.

	* info/session.c (get_input_key_internal): Don't time-out key press if
	'key-time' is 0.
	* doc/info-stnd.texi (Variables): Document 'key-time' variable.

	* info/variables.c (info_variables): Rename 'preprocess-nodes' user
	variable to 'hide-note-references'.
	* doc/info-stnd.texi (Variables): Document 'hide-note-references'
	variable.

2014-08-30  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (incremental_search): Go back to being
	case-insensitive if all upper-case letters are deleted.
	* info/t/inc-sea-insensitive.sh: New test.

2014-08-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (recalculate_line_starts, calculate_line_starts):
	Renamed.  Don't free 'line_starts' and 'log_line_no'.  Callers
	updated.
	(window_toggle_wrap): Call display_scroll_line_starts as was done
	before.

2014-08-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_follow_menus): Free error argument before
	overwriting it.
	(info_search_in_node_internal): Set goal column after search.
	(info_search_previous): Work correctly when the match is an exact
	number of screen-fulls away.

	* info/window.c (window_new_screen_size): Try to resize windows
	evenly.

2014-08-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/m-x.c (info_execute_command): Free a string.  Allow arbitarily
	long prompts.
	* info/info.c (main): Exit with exit() instead of 'return' to avoid
	memory leak report from valgrind for main's local variables.
	(initial_fb): New static variable, taken out of 'main' function.
	(get_initial_file): Don't clobber 'filename' field of dir entry.
	* info/search.c (find_node_in_binding): Free last string allocated in
	a loop.
	* info/session.c (info_search_in_node_internal): Free 'search_string'
	field of WINDOW before overwriting it.
	* info/dir.c (lookup_dir_entry),
	* info/info-utils.c (info_copy_reference, info_copy_references):
	Comments changed.

	* info/t/Init-test.inc: Commented-out line added showing how to run
	tests under valgrind.
	* info/t/Init-inter.inc: Get name of running "ginfo" process from a
	variable.

2014-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/dir.c (insert_text_into_node): Include terminating null byte
	from node contents.

	* info/info-utils.c (scan_node_contents): Free match list before
	returning.
	* info/info.c (main, initial_file): Make initial_file file-level
	variable.
	(get_initial_file): Set initial_file variable instead of returning a
	value.
	(add_initial_nodes): Use info_reference_free instead of free on
	REFERENCE variables.  Duplicate arguments to info_new_reference so we
	can free them.
	* info/session.c (info_follow_menus): Always free initial_node
	argument before returning.

	* info/t/Init-test.inc: Remove out-of-date comment.
	* info/t/file.sh: Source Cleanup.inc.
	* info/t/tab.sh: Remove unnecessary line to delete temporary files.

2014-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (find_diff): Add braces round "if" command.
	(display_update_window_1): Remove unused variable.
	* info/session.c (isearch_terminate_search_key): Removed.
	* info/session.h: Add missing declarations for get_input_key,
	get_another_input_key.
	* info/session.c (fill_input_buffer): Remove unused variable.

	* info/terminal.c (add_seq_to_byte_map): Take char * argument and cast
	to unsigned char *.

	* info/search.h (enum search_result): Change 'search_failure' value to
	'search_invalid'.
	* info/session.c (info_search_in_node_internal): Return value
	properly.  Don't clobber error message printed for invalid regular
	expression.
	(ask_for_search_string): Return value properly.
	* info/search.c (make_binding): Merged into caller.

2014-08-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (set_window_pagetop): If point would end up past
	bottom of displayed part of node, put it on the last displayed line.

2014-08-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (_scroll_forward, _scroll_backward): Arguments
	changed.  All callers updated.  Don't display an error message when
	staying in the same node.
	* doc/info-stnd.texi (Variables): Mention what mouse is used for.
	(Node Commands) <goto-invocation>: Add missing closing parenthesis
	and 'vi-like operation' text.
	* doc/texinfo.texi (Overview): Remove two extra words.

2014-08-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/variables.c (info_variables): New user variable 'mouse'.
	* info/terminal.c (mouse_protocol): New variable.
	* info/terminal.h (MP_NONE, MP_NORMAL_TRACKING): New preprocessor
	definitions.
	* info/terminal.c (terminal_initialize_terminal): Check if
	mouse tracking was turned off.
	* info/variables.c (describe_variable): Allow arbitarily long values
	for variables.
	* doc/info-stnd.texi (Variables): Document 'mouse' variable.

2014-08-23  Karl Berry  <karl@gnu.org>

	* Texinfo/Convert/Plaintext.pm (converter_initialize): put 
	push_top_formatter after setting 'fillcolumn' such that it is
	taken into account.

2014-08-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_read_and_dispatch): Consider ESC <key> to be
	the same as Meta-<key>.
	* info/infomap.c (default_emacs_like_info_keys)
	(default_vi_like_info_keys): Refer to key sequences starting ESC with
	KEYMAP_META instead.

2014-08-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/texinfo.texi: Remove extra space in menu references to
	"@- @hyphenation" node.  Report from Vincent BelaÃ¯che.

	* info/info-stnd.texi (Searching Commands): Add reference to explain
	regular expressions.

2014-08-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_parse_and_select): Initialize line_number field
	of reference.

2014-08-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/texinfo.texi (Appendix F Info Format Specification): Update
	including quoting mechanism, use of non-ASCII characters in node
	names, tag table being optional in non-split files, use of "(dir)" in
	node lines.  Mention possibility of formfeed characters in section
	separators.

2014-08-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (decide_if_in_match): New function.
	(display_update_window_1): Call it.

	* info/display.c (find_diff): Return offset of first ESC in line if
	the lines differ and there is one.  Return -1 if no difference.
	Handle multicolumn characters with wcwidth.
	(display_node_text): Use offset into new line contents set by
	find_diff.

2014-08-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infomap.c (default_emacs_like_info_keys): Add ESC x key
	sequence for execute-command.

2014-08-21  Karl Berry  <karl@gnu.org>

	* Texinfo/Convert/Plaintext.pm (converter_initialize): propagate
	FILLCOLUMN.  Report from Mahlon Smith, 19 Aug 2014 14:28:01.

2014-08-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_menu_item): Check for case when there are no
	menu entries in the node.

2014-08-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Searching Commands): Consistent formatting
	for commands without key bindings.  Mention alternative for searching
	backwards.  Remove reference to Emacs regular expressions, as those
	are slightly different.  Mention what happens if you don't give a
	string for 'i'.  Mention 'highlight-searches' variable.
	(Variables): Add 'highlight-searches'.

2014-08-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_search_next, info_search_previous): Call
	info_search_internal directly instead of via info_search_1.
	<search-skip-screen=On>: Scroll up or down by a whole number of
	screen-fulls to make match visible.  This makes traversing matches
	with "}" and "{" less disorienting.

	* info/session.c (info_search_1): Argument 'start' removed.
	(DFL_START): Deleted.

2014-08-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_search_in_node_internal): Don't call
	window_adjust_pagetop.
	(info_search_1, incremental_search): Call it here instead.

2014-08-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (do_info_index_search, info_virtual_index): Remove
	check against min_search_length.
	* info/session.c (info_search_1): Don't allocate for search_string
	here.
	(info_search_next, info_search_previous): Check if search_string is
	null.

2014-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (info_virtual_index): Place index marker tag in
	generated node.

2014-08-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/echo-area.c (info_read_in_echo_area)
	(info_read_completing_internal, info_read_completing_in_echo_area)
	(info_read_maybe_completing)
	(info_read_completing_in_echo_area_with_exclusions): WINDOW argument
	removed.  All uses updated.

	* info/session.c (ask_for_search_string): WINDOW argument removed.

2014-08-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_search_1): Argument removed.  Don't call
	ask_for_search_string.
	(info_search_case_sensitively, info_search, info_search_backward): Do
	it here instead.
	(ask_for_search_string): Don't display "[]" in prompt if no previous
	search string.  Check if search string is too long here instead of in
	info_search_1.

2014-08-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (incremental_search): Use same call to
	info_search_internal for both regex and non-regex searches.

	* info/t/inc-sea-forward-nonregex.sh: New test.

2014-08-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (incremental_search): Remove unused argument.  When
	searching backward again, position one byte before current match.
	(info_search_internal, info_search_in_node_internal): Always start
	search at argument given, not at point.  Callers updated.

	* info/t/inc-sea-forward.sh: New test.
	* info/t/search.info: Remove spaces between two matches and more
	matches after target to increase chance of ending up in the wrong
	place.

2014-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (display_update_window_1): Check if the next search
	match starts immediately after the last one.

2014-08-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (add_initial_nodes): Error message if --node used
	without a filename being specified.
	* info/t/node-no-file.sh: New test.

2014-08-15  Gavin Smith  <gavinsmith0123@gmail.com>
	
	* info/session.c (match_in_match_list): Arguments changed.
	(info_search_in_node_internal): Function declared static.
	Arguments changed.  Remove node name search.
	(info_search_internal): Rewritten to have single call to
	info_search_in_node_internal.
	(info_target_search_node): Removed.
	(info_select_reference): Call updated.

	* info/footnotes.c (make_footnotes_node): Only search until end of
	node.

2014-08-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/search.c (regexp_escape_string): New function.
	(regexp_search): New argument controlling whether to search for string
	literally.  Callers updated.
	* info/session.c (info_search_in_node_internal): Call regexp_search
	function for literal searches.
	* info/footnotes.c (make_footnotes_node): Use strstr instead of
	info_search_in_node_internal.

2014-08-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_set_node_of_window): Clear search matches here
	instead of in window_set_node_of_window in window.c.
	(match_in_match_list): When searching backward, include the starting
	byte in the area.

	* info/window.h (SEARCH_STATE): Moved to session.c.  Store starting
	position of search instead of position of point.
	* info/window.c (window_get_state, window_set_state): Moved to
	session.c.
	* info/session.c (pop_isearch, push_isearch): Take extra argument to
	save and restore starting search position.
	(incremental_search): Save initial point position.  Clear search if
	search string is erased.

	* info/session.c (info_search_in_node_internal): Check search if
	forwards when setting search start to 'body_start'.

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

	* info/session.c (incremental_search): Backspace always deletes last
	character in search pattern.  Do search again to update displayed
	highlights.

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

	* info/search.c (regexp_search): Arguments changed.  Don't take
	WINDOW argument.
	* info/info-utils.c (scan_node_contents)
	* info/session.c (info_search_in_node_internal)
	Call to regexp_search updated.
	* info/session.c (match_in_match_list): Don't take WINDOW argument.
	Callers updated.

2014-08-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (match_in_match_list): Arguments changed.  Output
	index of match in list.
	(info_search_in_node_internal): Argument removed.  Always return start
	of match.  All callers updated.  Check whether to set cursor point at
	end of match.
	(info_search_internal): Arguments changed.  All callers updated.

2014-08-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (ask_for_search_string): Split out from
	info_search_1.
	(incremental_search): Remove check on local variable for non-regexp
	searches.
	
2014-08-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (incremental_search): Code after 'after_search' label
	moved to start of loop.
	'insert_and_search' label removed.  Use conditionals instead of goto.
	Combine two conditionals handling C-g press.
	Move conditional construct checking what a pressed key meant up a
	level.  Remove 'search_now' and 'exit_search' labels.

2014-08-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (match_in_match_list, info_search_1)
	(incremental_search)
	Consistently name 'resbnd' arguments and local variables which are
	SEARCH_BINDING's giving the result of a search.

2014-08-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infomap.c (default_emacs_like_info_keys): Display RET, PgUp,
	PgDown in help message.
	* info/info.c (info_short_help): Say to show key bindings with "H"
	instead of "h".

	* info/session.c (forget_node): Permit removing last node from window.
	(info_history_node): Check we are not removing the last node, and
	display an error message if that is the case.
	* info/echo-area.c (ea_possible_completions): Remove completion nodes
	from window history.

2014-08-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/search.c (regexp_expand_newlines_and_tabs): Split out from
	regexp_search.
	(regexp_search): Arguments changed.  Check if search was the same as
	last time moved to calling code.
	* info/session.c (match_in_match_list): Split out from regexp_search
	in search.c.
	(info_search_in_node_internal): Check if regexp_search needs to be
	called and call match_in_match_list.  Search in node name disabled.
	* info/info-utils.c (scan_node_contents): Loop through matches
	returned from regexp_search.

2014-08-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.h (WINDOW): New fields 'search_string',
	'search_is_case_sensitive'.
	* info/search.c (regexp_search): Always search entire body of node.
	Don't save information about searches in static variables; save and
	retrieve it in passed WINDOW instead.  Always free regex_t object.
	* info/session.c (info_search_in_node_internal): Set node of window
	before calling regexp_search.
	(info_set_node_of_window): Free matches for old node.

	* info/filesys.c (convert_eols): Convert null bytes in Info tags to
	spaces.
	* info/session.c (allfiles_create_node): Add index tag with spaces
	instead of nulls.
	* info/nodes.h (INFO_TAG_REGEXP): New preprocessor definition.
	* info/info-utils.c (scan_info_tag): Function separated out from
	scan_node_contents.
	(scan_node_contents): Include INFO_TAG_REGEXP in regexp search.  Don't
	change start of search.
	* info/tag.c (tag_expand): Process tags with spaces instead of null
	bytes.

	* info/window.c (info_tag): Expect Info tag with space instead of null
	byte.
	* info/info-utils.c (printed_representation): Call info_tag in right
	place.

	* info/Makefile.am: search-after-tag.sh removed from XFAIL_TESTS.
	* info/t/search-after-tag.sh: Source info/t/Init-inter.inc as
	intended.

2014-08-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (display_update_window_1): Output sequence turning on
	or off standout mode before end of line.  Remove unused local variable.
	(display_node_text): WINDOW argument removed.  Checks for displaying
	off screen or out of window moved to caller.

2014-08-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/signals.c (redisplay_after_signal)
	(info_signal_proc) <SIGWINCH>: Don't call terminal_unprep_terminal and
	terminal_prep_terminal.  This prevents flickering between the "normal"
	and "alternate" screens in an xterm when resizing.

	* info/display.c (display_update_one_window): Always display line
	continuation character in rightmost column.  Don't display an extra
	character if line wrapping is off.
	* info/window.c (window_toggle_wrap): Don't free two arrays that were
	already freed.  Disable call to display_scroll_line_starts.

2014-08-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/search.c (regexp_search): Take WINDOW argument to save results
	of a search.  All callers updated.
	* info/window.h (WINDOW): New fields 'matches', 'match_count'.
	* info/session.c (info_search_in_node_internal): Use of regexp_search
	updated.

	* info/variables.c (info_variables): New user variable
	'highlight-searches'.
	* info/display.c (highlight_searches_p): New variable.
	(display_update_window_1): New function, based on
	process_node_text in window.c.  Highlight search results if this is
	turned on.  Use struct text_buffer functions to build printed screen
	line.
	(display_update_one_window): Call display_update_window_1 instead of
	process_node_text.
	* info/terminal.c (term_so, term_se): New variables.
	(terminal_initialize_terminal): Initialize them.

	* info/session.c (info_set_node_of_window): Clear displayed
	search matches.

2014-07-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_get_node_of_file_buffer): Set body_start to 0
	for "*" node.
	* info/session.c (info_next_line, info_prev_line): Don't change goal
	column.
	* info/window.c (window_chars_to_goal): Merged into caller.
	* info/t/goal-column.sh: New test.
	* info/t/infodir/intera.info: Node "Goal column" added.

2014-07-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_search_in_node): Merged into callers in
	info_target_search_node and make_footnotes_node.

	* info/search.c (regexp_search): Store previous start and end of
	search.  Recalculate matches if new search range is outside these.
	When looking for matches, check that they are within the search range.
	* info/t/search-skip-screen.sh: New test.
	* info/t/infodir/search.info: New file.

	* info/info-utils.c (copy_input_to_output): Use < instead of <= to
	avoid adjusting anchor just outside of range.  Check if a count of
	bytes went negative by mistake.
	* info/t/anchor-positions.sh: New test.
	* info/t/infodir/anchor-positions.info: New file.

	* info/session.c (key_time): New variable.
	(get_input_key_internal): Use it instead of hardcoded value.
	(info_variables): Add 'key-time' user variable.

2014-07-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_search_1): Unused 'key' argument removed.
	Rely on info_search_internal to print an error message.
	(info_search_internal): Print an error message if search failed if not
	in interactive search.
	* info/window.c (set_window_pagetop): Comment changed.
	* info/info.c (info_error_was_printed): Variable removed.  All
	accesses removed.

	* info/t/file.sh: Check subnode dumping is on when not outputting to
	a terminal.

2014-07-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infokey.c (compile): Keep going for unrecognized or invalid
	actions.
	* info/t/Infokey-config: Add lines with invalid actions.

	* info/signals.c (old_TERM): New variable.
	(mask_termsig, initialize_info_signal_handler, info_signal_proc): Trap
	SIGTERM as was done for SIGINT to allow cleanup of terminal state.

2014-07-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infokey.c (compile): Don't allow binding to menu-digit.
	* info/session.c (info_next_line, info_prev_line): Don't actually
	move cursor until we have set the right column.
	* info/terminal.c (terminal_begin_using_terminal): Check 'Km'
	capability is what we expect it to be.

2014-07-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infokey.c (compile) <in_line_comment>: Use = where intended.
	(compile) <get_action>: Remove unused variable.
	* info/infomap.c (keymap_bind_keyseq): Remove unused variable.
	(fetch_user_maps): Remove unused variables.
	(section_to_keymaps): Remove unused variable.

2014-07-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (collect_line_starts, _calc_line_starts): Renamed.
	* info/window.h (WINDOW): Change type of pagetop field to long.
	Remove declaration of removed function.
	* info/nodes.h (NODE): Change type of line_number field to long.
	* info/window.c (window_log_to_phys_line): Type of arguments and
	return value changed.

	* info/display.c (display_update_display): Arguments changed.  All
	callers updated.
	(display_update_one_window): Allow interrupting redisplay when
	clearing empty screen lines after the end of a node.

	* info/info.c, info/session.c (allfiles_create_node): Moved betweeen
	files.
	* info/session.c (begin_multiple_window_info_session): Never call
	info_session; rely on caller to do it.
	(display_startup_message): Declared static.

	* info/session.c (info_session): Arguments changed.
	(info_session, close_info_session): Function split out.
	* info/info.c (main): Call to info_session updated.
	(main) <--index-search>: Call info_read_and_dispatch
	and close_info_session instead of info_session.
	* info/session.c (fill_input_buffer): Call close_info_session if
	reading input failed.

2014-07-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (forward_move_node_structure): Get first menu
	entry properly.  Remove code repeating what was done in forget_node.

2014-07-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c (get_manpage_contents): Try getting manpage with -a
	if not found in the section given.
	(get_manpage_from_formatter): Split out from get_manpage_contents.
	Don't set a signal handler for SIGCHLD.  Wait for child process to
	exit before returning.
	(reap_children): Merged into caller.
	(read_from_fd): Comment added.

2014-07-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc (run_ginfo): Try to get process ID of ginfo
	process.
	* info/t/Timout-test.inc: Kill ginfo if we have its PID.

	* info/t/resize-in-completions.sh: New test.
	* info/t/Infokey-config: Set automatic-footnotes=On.

2014-07-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_find_file): Call xstrdup on a string so we can
	free it later.

	* info/t/relative-reference.sh: New test.
	* info/t/Init-inter.inc (run_ginfo): Inform about program failure 
	on pipe.
	* info/t/Timeout-test.inc: Check for failure message.

2014-07-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-inter.inc (run_ginfo): New function to wrap call of
	program for interactive tests.
	* info/t/Timeout-test.inc: New file.
	* info/t/Cleanup.inc: Indicate test failure if program timed out.
	* info/t/adjust-anchors.sh, info/t/body-start.sh,
	info/t/end-of-line.sh, info/t/goto-quoted.sh, info/t/index.sh,
	info/t/index-long-nodeline.sh, info/t/menu-sequence.sh,
	info/t/search-after-tag.sh, info/t/split-file-menu.sh,
	info/t/split-index.sh, info/t/tab.sh: Use run_ginfo and
	Timout-test.inc.
	* info/t/index-apropos.sh: Remove --restore option from ginfo
	invocation.

2014-07-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_handle_pointer, info_select_reference): Return
	non-zero on success.
	(forward_move_node_structure, backward_move_node_structure):
	Don't use info_error_was_printed to detect errors.  Rely on
	info_handle_pointer to print an error message.
	(info_global_prev_node, info_global_next_node, info_visit_menu): Don't
	access info_error_was_printed.

	* info/echo-area.c (read_and_dispatch_in_echo_area): Don't clear
	info_error_was_printed as it is not used by any of the echo area
	functions.  Remove unnecessary cast.

2014-07-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/echo-area.c (info_read_in_echo_area)
	(info_read_completing_internal): Call window_clear_echo_area after
	getting user input.
	* info/indices.c (do_info_index_search, info_index_apropos)
	(info_virtual_index)
	* info/m-x.c (read_function_name, set_screen_height)
	* info/nodemenu.c (select_visited_node)
	* info/session.c (info_menu_or_ref_item, info_menu_sequence)
	(info_goto_node, info_goto_invocation_node, info_man, info_view_file)
	* info/variables.c (set_variable, read_variable_name): Don't call
	window_clear_echo_area.

2014-07-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/adjust-anchors.sh: New test.
	* info/t/infodir/anchors.info: New file.

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

	* info/info-utils.c (scan_node_contents): Call info_find_subfile to get
	pointer to subfile contents when setting node_offset.

	* info/session.c (info_search_internal): Don't free node if search was
	successful because a reference to it was retained.  (This reverses
	change on 2014-07-05.)

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

	* info/info-utils.c (nodestart): Removed.
	(node_offset): New variable.
	(scan_node_contents): Initialize node_offset.
	(copy_input_to_output): Calculate anchor pointer correctly.

2014-07-07  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (run_recode): remove fn (and call) and
	--recode and --recode-from options.  The implementation has
	been incorrect for years and no one has noticed.
	(SED): new variable to allow overriding.
	http://lists.gnu.org/archive/html/bug-texinfo/2014-07/msg00003.html

2014-07-07  Gavin Smith  <gavinsmith0123@gmail.com>

	info: Avoid crashes when resizing screen very small, based on report
	from Samuel Marshall 2014-07-06.

	* info/signals.c (signal_block_winch, signal_unblock_winch)
	(sigwinch_block_count): New functions and variable.
	(info_signal_proc) <SIGWINCH>: Don't call the saved signal handler.
	Increment signwinch_block_count. Only unblock the SIGWINCH signal once
	we have finished our business.
	* info/display.c (display_clear_display, display_update_display)
	(display_update_one_window):
	Block SIGWINCH signals.
	(display_node_text, display_update_one_window): Check that we are
	accessing array representing display within its bounds.
	* info/window.c (window_new_screen_size): Don't shrink a window below 1
	line.  When screen height is very small, set the height of one window
	left so that it will have the right height when the screen is bigger
	again.
	(echo_area_required): Removed.

2014-07-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/dir.c (lookup_dir_entry): Free return value of get_dir_node.
	* info/window.c (window_delete_window): Free line map on window close.
	* info/nodes.c (info_find_file): Free a string before exit.
	* info/info-utils.c (scan_reference_label): Free empty string before
	exit.

	* system.h [O_BINARY, !O_BINARY] (HAS_SLASH): New macro.
	* info/filesys.c (info_find_fullpath) 
	* info/info.c (main)
	* info/nodes.c (info_find_file): Call it.

	* info/t/split-index.sh, info/t/next-quoted.sh: Feed input keystrokes
	with background process.

2014-07-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (parse_top_node_line): Free string before loop
	exit.
	* info/infopath.c (infopath_add_dir): Free argument if not retained.
	(build_infopath_from_path): Call infopath_add_dir instead of
	infopath_add.

2014-07-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/dir.c (dir_entry_of_infodir)
	* info/footnotes.c (make_footnotes_node) 
	* info/session.c (info_intuit_options_node): Free return value of
	info_get_node.

	* info/info.c (add_initial_nodes): Free a string.

	* info/session.c (info_goto_invocation_node): Don't use
	info_error_was_printed to check for an error.
	(dump_node_to_stream): Free NODE object at more exit points from
	function.
	(info_search_internal): Free variable before exiting function.

2014-07-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (node_printed_rep): Keep pointer to storage to
	returned string in static pointer to avoid memory leaks by callers.
	(info_menu_sequence): Don't clear echo area if there was an error
	message.  If a component in the sequence is invalid, go to the last
	node reached.

2014-07-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.h (NODE): Fields 'parent', 'filename' removed.  Fields
	'fullpath', 'subfile' added.
	(N_Subfile): New symbol.
	
	* info/nodes.c (info_load_file): Arguments changed.  Callers updated.
	Set N_Subfile flag for subfiles.

	* info/nodes.c (init_file_buffer_tag, get_nodes_of_info_file)
	(get_nodes_of_tag_table, info_create_node, get_filename_and_nodename)
	(info_get_node_of_file_buffer, info_node_of_tag)
	* info/dir.c (build_dir_node)
	* info/footnotes.c (make_footnotes_node)
	* info/indices.c (create_virtindex_node)
	* info/info-utils.c (name_internal_node)
	* info/info.c (add_initial_nodes, allfiles_create_node)
	* info/infodoc.c (info_get_info_help_node)
	* info/man.c (get_manpage_node)
	* info/session.c (info_handle_pointer, info_follow_menus)
	(info_menu_sequence, node_printed_rep, info_intuit_options_node)
	(info_goto_invocation_node, info_display_file_info)
	(file_buffer_of_window, info_search_internal)
	* info/window.c (window_make_modeline):
	Access changed fields of NODE objects.  Use fullpath field
	instead of checking if parent is set and falling back to filename.

	* info/nodemenu.c (format_node_info): Use struct text_buffer to hold
	returned string.
	* info/window.c (pad_to): Removed.

	* info/session.c (gc_file_buffers_and_nodes): Free subfiles if no
	window contains a node from the subfile.

2014-07-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.h (INFO_MENU_REGEXP, INFO_MENU_ENTRY_REGEXP)
	(INFO_XREF_REGEXP): New symbols.
	* info/info-utils.c (scan_node_contents): Use them instead of literal
	strings.

2014-07-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/terminal.c (term_Km): New variable.
	(terminal_begin_using_terminal, terminal_end_using_terminal): Enter
	and leave mouse tracking mode.
	(add_seq_to_byte_map, initialize_byte_map): Function
	split out.
	(initialize_byte_map): Bind term_Km sequence to KEY_MOUSE.
	* info/infomap (KEY_MOUSE): New symbol.
	(KEYMAP_META_BASE, KEYMAP_SIZE): Updated.

	* info/session.c (mouse_reporting_on, mouse_reporting_off)
	(mouse_event_handler): New functions.
	(mouse_cb, mouse_cx, mouse_cy): New variables.
	(get_input_key): Set them if mouse event occurred.
	(get_input_key_internal): Initialize variable properly.
	(info_read_and_dispatch): Call mouse_event_handler if mouse event
	received.

2014-07-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (get_input_key): Try to ignore sequences in the input
	stream produced by unrecognized keys.
	(get_input_key, get_input_key_internal): Wrapper around get_input_key.

2014-07-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/pseudotty.c: Read bytes from file descriptor 3 and feed into
	master side of pseudoterminal.
	* info/t/Init-intera.inc, info/t/Init-inter.inc: File renamed.  Create
	a pair of named pipes to communicate with pseudotty program. Get
	name of pseudoterminal slave device using shell builtin 'read'.
	* info/t/Cleanup.inc: Delete named pipes.
	* info/t/body-start.sh, info/t/end-of-line.sh, info/t/goto-quoted.sh,
	info/t/index-apropos.sh, info/t/index-long-nodeline.sh,
	info/t/index.sh, info/t/last-no-history.sh, info/t/menu-sequence.sh,
	info/t/next-quoted.sh, info/t/quoted-label-and-target.sh,
	info/t/quoted-label-as-target.sh, info/t/quoted-target.sh,
	info/t/search-after-tag.sh, info/t/split-file-menu.sh,
	info/t/split-index.sh, info/t/tab.sh: Specify input keystrokes by
	feeding into named pipe instead of using --dribble option.
	* info/t/README: Updated.

2014-06-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/footnotes.c (info_get_or_remove_footnotes): Null check to avoid
	crash when resizing window while displaying completions.

2014-06-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (incremental_search): Call get_input_key instead of
	info_get_input_byte.

	* info/session.c (fill_input_buffer): New function to call
	info_gather_typeahead.  Try to read input again if interrupted by
	a signal, as was done in info_get_input_byte.
	(info_gather_typeahead): Return code says if there was a read error.
	(info_any_buffered_input_p, get_input_key, info_search_internal): Call
	fill_input_buffer instead.
	(info_get_input_byte): Removed.

	(info_gather_typeahead): [--dribble] Call dribble to save input bytes.
	(get_input_key): [--dribble] Don't call dribble.

2014-06-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_get_another_input_byte): Removed.
	* info/echo-area.c (ea_quoted_insert): Call get_another_input_key
	instead.

2014-06-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_set_pending_input): Function removed.
	(info_gather_typeahead): Don't call info_set_pending_input.

	* info/session.c (info_numeric_arg_digit_loop): Call
	get_another_input_key instead of info_get_another_input_byte.
	* info/session.h (DECLARE_INFO_COMMAND): Pass key argument as int
	rather than unsigned char.  All declarations updated.
	* info/makedoc.c (process_one_file): Change function declarations
	output in funs.h.

2014-06-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infokey.h (ISMETA, META, UNMETA, ISCONTROL, INFOKEY_RADIX)
	(INFOKEY_MAX_SECTIONLEN): Removed.
	* info/infokey.h, info/infomap.h (INFOKEY_FILE, A_MAX_COMMAND)
	(A_INVALID, CONTROL): Remaining definitions moved between files.
	infokey.h merged into infomap.h.

	* info/infomap.c (keymap_discard_keymap, find_function_keyseq)
	(remove_function_keyseq): Remove unused.

	(default_emacs_like_info_keys, default_emacs_like_ea_keys)
	(default_vi_like_info_keys, default_vi_like_ea_keys)
	(section_to_keymaps): Remove flag saying whether to suppress
	default keybindings.

	* info/session.c (incremental_search): Use get_input_key to distinguish
	between Escape being pressed and arrow keys.  Don't push unused key
	presses back into input buffer.

	* info/terminal.c (term_kx): Remove unused variable (same as
	term_kD).
	* info/pcterm.c (pc_initialize_terminal): Use term_kD instead of
	term_kx.

	* info/infomap.c: (read_init_file): Correct condition.
	(default_emacs_like_info_keys, default_emacs_like_ea_keys)
	(default_vi_like_info_keys, default_vi_like_ea_keys): Use KEY_DELETE
	instead of DEL to prevent duplicate key bindings in help buffer.
	* info/terminal.c (initialize_bytemap): Interpret a DEL character as
	the Delete key.
	(terminal_initialize_terminal): Remove duplicated assignments.
	* info/infodoc.c (pretty_keyseq_internal): Merged into pretty_keyseq.
	(pretty_keyseq): Use struct text_buffer.

	* info/infodoc.c (describe_key): Call get_input_key to get key press.
	* info/session.c (info_dispatch_on_key): Use tolower where intended.

	* info/doc.h (DocInfoCmd): Macro removed.  Uses updated.

	* info/infomap.c (add_function_keyseq): Don't override already recorded
	key sequences.
	(default_emacs_like_info_keys, default_vi_like_info_keys): Put
	preferred sequence to display first.

2014-06-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infokey.h:
	(SK_RIGHT_ARROW, SK_LEFT_ARROW, SK_UP_ARROW, SK_DOWN_ARROW, SK_PAGE_UP)
	(SK_PAGE_DOWN SK_HOME, SK_END, SK_DELETE, SK_INSERT, SK_CTL_LEFT_ARROW)
	(SK_CTL_RIGHT_ARROW, SK_CTL_DELETE, SK_BACK_TAB): Removed.
	(struct sect): Removed.

	* info/infomap.h (BYTEMAP_ENTRY): New typedef.
	(BYTEMAP_NONE, BYTEMAP_KEY, BYTEMAP_MAP, BYTEMAP_ESC): New symbols.
	* info/terminal.c (byte_seq_to_key): New variable.
	(initialize_byte_map): New function.
	(terminal_initialize_terminal): Call it.

	* info/infomap.h
	(KEY_RIGHT_ARROW, KEY_LEFT_ARROW, KEY_UP_ARROW, KEY_DOWN_ARROW)
	(KEY_PAGE_UP, KEY_PAGE_DOWN, KEY_HOME, KEY_END, KEY_DELETE, KEY_INSERT)
	(KEY_CTL_LEFT_ARROW, KEY_CTL_RIGHT_ARROW, KEY_CTL_DELETE)
	(KEY_BACK_TAB): New symbols.
	(KEYMAP_SIZE, KEYMAP_META_BASE, KEYMAP_META): New symbols.

	* info/infomap.c (keymap_make_keymap, keymap_discard_keymap): Make
	keymap as big as KEYMAP_SIZE.
	(default_emacs_like_info_keys, default_emacs_like_ea_keys)
	(default_vi_like_info_keys, default_vi_like_ea_keys):
	Arrays of int instead of arrays of char.  Use KEY_* symbols instead of
	SK_* sequences.  Use KEYMAP_META macro instead of Meta.  Avoid some
	duplication where both a sequence with ESC Key and Meta-Key were
	bound.  Don't specify sequences produced by special keys.
	(section_to_keymaps): Process new format specifying key bindings.
	(decode_keys): Removed.
	(find_function_keyseq, add_function_keyseq, remove_function_keyseq):
	Keys are represented with type int instead of char.
	(keymap_copy_keymap): Removed.
	(keymap_bind_keyseq): Don't override already bound key sequences.  No
	longer static.
	(keymap_make_keymap): Don't bind upper-case characters to
	info_do_lowercase_version.
	(read_init_file): Do it here instead.

	* info/session.c (info_get_input_char, info_get_input_byte): Renamed.
	(info_get_another_input_char, info_get_another_input_byte): Renamed.

	(info_get_key_from_typeahead, get_byte_from_input_buffer): Renamed.
	(info_gather_typeahead): Declared static.  New argument added saying
	whether to wait for input.

	(info_dispatch_on_key, dispatch_error, add_char_to_keyseq): Arguments
	changed from char to int.
	(info_keyseq): Type changed.
	(info_dispatch_on_key) <info_do_lowercase_version>: Updated to match
	new meaning of key numbers.

	(get_another_input_key): New function based on
	info_get_another_input_byte.
	(info_dispatch_on_key): Call it.

	(get_input_key): New function.
	(read_and_dispatch): Call it.
	* info/echo-area.c (read_and_dispatch_in_echo_area): Call get_input_key
	instead of info_get_input_char.

	* info/doc.h (FUNCTION_KEYSEQ): Type of keyseq field changed.

	* info/infokey.c (compile): Arguments changed.  Apply key bindings from
	init file directly instead of compiling into an intermediate
	representation.
	(add_to_section): Removed.

	* info/infodoc.c (dump_map_to_text_buffer): Arguments changed.  Handle
	arrays of int representing key sequences instead of arrays of char.
	Keymap array has size KEYMAP_SIZE instead of 256.
	(pretty_keyname, pretty_keyseq, pretty_keyseq_internal): Arguments
	changed.  Callers updated.
	(pretty_keyname): Handle named keys.
	(pretty_keyseq_internal): Don't handle named keys specially.

2014-06-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/echo-area.c (read_and_dispatch_in_echo_area): Copy of
	info_read_and_dispatch with special casing for echo area made
	unconditional.  Callers updated.
	* info/session.c (info_read_and_dispatch): Special casing for echo area
	removed.

	* info/window.c (WINDOW): Field 'keymap' removed.  All reads or writes
	changed to use info_keymap or echo_area_keymap directly.

2014-06-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_set_pending_input): Place argument in
	info_input_buffer instead of pending_input_character.
	(pending_input_charater, info_clear_pending_input)
	(info_input_pending_p): Deleted.
	(info_push_typeahead, info_input_buffer_space_available): Merged into
	calling code.
	* info/session.h (return_if_control_g): Macro removed.  Code placed in
	calling code in info_search_internal.

2014-06-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infokey.c (compile): Set Info variables as was done in
	section_to_vars.
	* info/infomap.c (section_to_vars): Removed.
	(user_vars, user_vars_len): Removed.
	(read_init_file): Don't call section_to_vars.
	(fetch_user_maps): Don't set user_vars.
	(filesize, getint): Remove unused.

	* info/infokey.c (error_message): Merged into calling code.

	* NEWS, doc/info-stnd.texi, util/dir-example: Document infokey change.

2014-06-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infokey.c (lookup_action): Use function_doc_array instead of
	function_key_array.
	* info/makeinfo.c (process_one_file): Argument removed.
	(main, process_one_file): Don't create key.c.
	(key_filename, key_header, key_header_1): Remove unused.
	* info/key.h: File deleted.

2014-06-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infokey.c (program_name, print_version_p, print_help_p)
	(input_filename, output_filename, long_options, mkpath)
	(write_infokey_file, suggest_help, short_help, main): Remove unused.

	* info/infomap.c (fetch_user_maps): Remove disabled code loading
	compiled .info file.

	* info/infokey.h (INFOKEY_SRCFILE)
	(INFOKEY_NMAGIC, INFOKEY_MAGIC_SO, INFOKEY_MAGIC_S1)
	(INFOKEY_MAGIC_S2, INFOKEY_MAGIC_S3, INFOKEY_SECTION_INFO)
	(INFOKEY_SECTION_EA, INFOKEY_SECTION_VAR, INFOKEY_MAGIC_EO)
	(INFOKEY_MAGIC_E1, INFOKEY_MAGIC_E2, INFOKEY_MAGIC_E3)
	(INFOKEY_MAX_DEFLEN): Remove unused.

2014-06-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/Makefile.am (bin_PROGRAMS): infokey removed
	(infokey_LDADD, infokey_SOURCES, nodist_infokey_SOURCES): Removed.
	(check_DATA): Removed.
	(ginfo_SOURCES): infokey.c, infokey.h, key.c, key.h added.

	* info/infokey.c (program_name): Declared static to stop name conflict.
	(main): Disabled.
	(compile, error_message): No longer declared static.
	* info/infokey.c, info/infokey.h (struct sect): Definition moved.
	* info/infokey.h (INFOKEY_FILE): Change to .infokey (_infokey for
	[__MSDOS__]).

	* info/infomap.c (sections): New variable.
	(fetch_user_maps): Call compile and set variables based on output.

	* info/echo-area.c, info/footnotes.c, info/indices.c, info/infodoc.c,
	info/m-x.c, info/nodemenu.c, info/session.c, info/variables.c: Warning
	about reordering DECLARE_INFO_COMMAND's removed.

	* info/t/Init-test.inc: Use uncompiled infokey file as init file.

2014-06-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infodoc.c, info/infomap.c, info/makedoc.c, info/pcterm.c,
	info/session.c, info/terminal.c, info/doc.h, info/info.h: [INFOKEY]:
	Made unconditional.

2014-06-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/terminal.c (term_bt): New variable.
	(terminal_initialize_terminal): Initialize term_bt from termcap "bt"
	capability.
	* info/infokey.h (SK_BACK_TAB): New symbol.
	* info/infomap.c (default_emacs_like_info_keys): Bind back tab to
	move-to-prev-xref.
	(decode_keys): Check for SK_BACK_TAB in binding.
	* info/infodoc.c (pretty_keyseq_internal): Add "BackTab" to key names
	for help window.
	* doc/info-stnd.texi (Selecting Xrefs): Document back tab binding.

	* doc/info-stnd.texi (Node Commands): Document "M-x man".

	* info/info-utils.c (scan_reference_target): [preprocess-nodes=On]:
	Formatting tweak.
	(scan_node_contents): Require whitespace after "*note" for it to be
	recognized.  Make menus with no blank line after "* Menu:" work again.

2014-06-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/search-after-tag.sh: New test.
	* info/t/infodir/intera.info: Add node for new test.

2014-06-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (read_bracketed_filename): Split out from
	info_parse_node and rewritten for clarity.
	(read_quoted_string): Set output parameter to null on error.
	(avoid_see_see): Include '(' character when searching backward.
	(scan_reference_target): Call read_bracketed_filename instead of
	info_parse_node to get filename. 
	(scan_node_contents): Check if cross-reference within parentheses was a
	"*note".
	* info/t/file-file-with-dot.sh: New test.

2014-06-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (forget_node): Don't forget the last node in the
	history.
	* info/t/last-no-history.sh: New test.

	* info/info.c (add_initial_nodes): For split files, store the name of
	the top-level file instead of the subfile.
	* info/t/split-file-menu.sh: New test.

	* info/info.c (allfiles_create_node): Set filename to an empty string
	so that "*no file*" won't be shown in window mode line.  Surround node
	name with asterisks.

2014-06-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.h, info/makedoc.c, info/doc.h, info/infomap.c,
	info/infodoc.c: [NAMED_FUNCTIONS]: Made unconditional.
	* info/infodoc.c (default_emacs_like_ea_keys): Commented out entry for
	"M-x" removed.
	* info/footnotes.c (make_footnotes_node): Disabled code removed.
	* info/session.c (info_next_window, info_prev_window): Don't include
	echo area in window loop.

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

	* info/session.c (info_follow_menus): Return value changed.  All
	callers updated.
	* info/nodes.c (info_get_node_with_defaults)
	(get_filename_and_nodename): Use a NODE instead of a WINDOW to give
	the defaults.
	* info/menu-sequence.sh: New test.
	* info/dir-menus-sloppily.sh: Sequence of menu labels corrected.

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

	* info/info-utils.c (info_parse_node): Don't parse line number part of
	menus.  Return value and arguments changed.  All callers updated.
	(info_parsed_line_number): Removed.
	(scan_reference_target): Parse line number part of menus.

	* info/info-utils.h (PARSE_NODE_DFLT, PARSE_NODE_SKIP_NEWLINES)
	(PARSE_NODE_VERBATIM, PARSE_NODE_START): Removed.
	* info/nodes.c (info_get_node, info_get_node_with_defaults)
	(get_filename_and_nodename): Arguments changed.  All
	callers updated.

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

	* info/info-utils.c (save_conversion_state, reset_conversion): New
	functions.
	(scan_node_contents): Call them.
	(read_quoted_string): New parameter added.  All callers updated.
	(scan_reference_label): Comment changed.
	(scan_reference_target): Return value says whether syntax was
	understood.  Call read_quoted_string directly instead of via
	info_parse_node.
	* info/session.c (info_move_to_xref): Check if list of references
	in node is empty.  Don't handle cursor-movement-scrolls variable.
	Unused function parameters removed.
	(info_follow_menus): Use PARSE_NODE_VERBATIM instead of
	PARSE_NODE_DFLT.
	(info_move_to_prev_xref, info_move_to_next_xref): Go to reference in
	next node if cursor-movement-scrolls is On.  Call the other function if
	the count was negative.

	* info/session.c (forget_node): Call info_get_or_remove_footnotes.

2014-06-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (read_nodename_to_kill, kill_node, info_kill_node):
	Removed.
	(info_history_node): Call forget_node.
	(forget_node): Call set_window_pagetop and window_compute_line_map.
	* info/infomap.c (default_emacs_like_info_keys)
	(default_vi_like_info_keys): kill-node binding removed.
	* NEWS,
	* doc/info-stnd.texi (Node Commands): M-x kill-node command removed.

2014-06-10  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (window_set_node_of_window): Call
	window_compute_line_map.

2014-06-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/dir.c (dir_entry_of_infodir): Return null if nothing found.
	* info/window.h (WINDOW): Declare hist_index, hist_slots with size_t
	instead of int.
	* info/session.h: Add declaration of forget_window_and_nodes
	and forget_node.
	* info/infopath.c (build_infopath_from_path): Remove unused variable.
	* info/session.c (point_backward_word, info_next_line, info_prev_line)
	(kill_node): Remove unused local variables.

2014-06-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Variables) <scroll-step>: Updated to state
	that the default value is 1 (changed in 4.12 release).

2014-06-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_last_executed_command): Removed.
	(info_session, info_abort_key, info_dispatch_on_key): Don't set
	info_last_executed_command.
	(info_search_internal): Comment updated.

2014-06-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c, info/session.c (window_scroll_step): Moved between
	files.
	* info/session.c, info/window.c (set_window_pagetop): Moved between
	files.
	* info/session.c (info_show_point): Handle scroll-step variable.
	(window_adjust_pagetop): Call window_line_of_point.  Call
	set_window_pagetop to scroll display.  Always centre current line
	ignoring scroll-step variable.

	* info/session.c (info_next_line, info_prev_line): Call point_next_line
	and point_prev_line to handle traversing node hierarchy.

	* info/window.c (window_initialize_windows, window_make_window): 
	Initialize goal_column fields to 0.
	(window_get_goal_column): Removed.
	* info/session.c (info_read_and_dispatch): Don't reset goal_column.
	(move_to_new_line, move_to_goal_column): Renamed.  Only move to goal
	column.
	(info_show_point): Save goal_column.  Callers updated.
	(info_move_to_prev_xref, info_move_to_next_xref): Don't call
	move_to_new_line.
	(info_move_to_window_line): Call info_show_point.
	(info_end_of_node): Call info_show_point.

2014-06-08  Karl Berry  <karl@gnu.org>

	* util/texi2dvi: use THUMBPDF_CMD instead of THUMBPDF.
	Report/suggestion from Kurt Hornik, 8 Jun 2014 09:49:47.

2014-06-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (get_initial_file): For inexact dir match, discard
	command-line argument after processing, and clear error message.

2014-06-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.h (N_IsDir): New flag.
	* info/dir.c (build_dir_node): Set N_IsDir on flags for return node.
	* info/info-utils.c (scan_reference_marker): Split out from
	scan_node_contents.
	(scan_reference_label): Arguments changed.  Don't create REFERENCE
	object.  Don't skip whitespace at start of label.  Return value says
	whether the syntax was valid.
	(scan_reference_target) Look at flags field of NODE to tell
	if it is an index node.  Look at type field of REFERENCE to
	tell whether it is a menu entry.  [preprocess-nodes=On]: Display menu
	item descriptions on same line if there is space.
	(scan_node_contents): Call info_new_reference.  Check if reference
	text was contained within parentheses.

2014-06-08  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (Raw Formatter Commands): fix grammar.

	* doc/info.texi (Help-^L): "mode line", "screenful",
	stand-alone and Emacs Info both use the mode line.
	Use x instead of weird C-x 0 to get rid of help msg.
	Suggestion from Benno Schulenberg, 07 May 2014 23:06:54.
	
	* doc/info-stnd.texi: "mode line", "screenful".

2014-06-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (gc_file_buffers_and_nodes): Check equality with
	'filename' field as well as 'fullpath' field of FILE_BUFFER.

	* info/echo-area.c (restore_calling_window): Remove handling of window
	pagetops.  Don't call display update functions.  Remove disabled code.
	(ea_possible_completions): Remove handling of window pagetops.

	* info/window.c (window_make_window): Don't call window_adjust_pagetop.
	It's possible that the new window could be closed without the old
	window having been selected in the meantime, and this would leave the
	point where it was.
	* info/session.c (info_next_window, info_prev_window): Call
	window_adjust_pagetop on newly active window.
	* info/window.c (window_change_window_height): Don't call
	window_adjust_pagetop.
	(window_set_node_of_window): Don't call window_adjust_pagetop if there
	is no node.

	* info/window.c (window_new_screen_size): Call window_adjust_pagetop
	on active window after resizing all the windows.

2014-06-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.h (N_IsIndex): New macro.
	* info/info-utils.c (scan_node_contents): Record if an index tag
	was seen.
	* info/session.c (forward_move_node_structure)
	(backward_move_node_structure): Don't go down menus in index nodes.

2014-06-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c: Check if return value of file_buffer_of_window
	is null.
	(INFO_NO_TAGS, INFO_GET_TAGS): Removed.  Uses updated.

2014-06-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (free_history_node): New function.  Free references
	for internal nodes.
	(forget_node, forget_window_and_nodes): Call free_history_node.
	(info_split_window): Copy references if node in window is an internal
	one.
	(info_delete_window): Formatting.
	(info_delete_window_internal): Remove out-of-date comment.

	* info/session.c (gc_file_buffers_and_nodes): New function to
	replace info_gc_file_buffers and gc_pointers.  All callers updated.
	(add_gcable_pointer, gcable_pointers, gcable_pointers_index)
	(gcable_pointers_slots): Moved from info/gc.c.
	* info/gc.c, info/gc.h: Files removed.  (Copyright years were a
	subset of those in session.c.)

	* info/nodes.c (info_loaded_files_index): New variable.
	(remember_info_file): Merged into info_load_file.
	(forget_info_file): Declared as static.

	* info/nodes.h: Changes to comments and formatting.

2014-06-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (remember_window_and_node, info_set_node_of_window):
	remember_window_and_node merged.
	* info/window.c (window_make_window): Arguments changed.  Don't set
	node of window.  All callers updated.
	* info/session.c (info_split_window): Call info_set_node_of_window
	instead of remember_window_and_node.
	* info/footnotes.c (info_get_or_remove_footnotes): Reorganized,
	Comments changed.

2014-06-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_split_window): Always operate on active
	window.
	* info/window.c (window_make_window)
	* info/session.c (info_split_window)
	* info/echo-area.c (ea_possible_completions) [!SPLIT_BEFORE_ACTIVE]:
	Made unconditional.

2014-06-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_search_in_node_internal, info_search_internal):
	Replace calls to set_remembered_pagetop_and_point,
	window_set_node_of_window and remember_window_and_node with call to
	info_set_node_of_window.
	(set_remembered_pagetop_and_point): Merged into
	info_set_node_of_window.

2014-06-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/footnotes.c (info_get_or_remove_footnotes): Call
	info_set_node_of_window instead of window_set_node_of_window.
	* info/session.c (remember_window_and_node): Declared static.

2014-06-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/pseudotty.c: Call posix_openpt instead of getpt.

	* info/t/Init-intera.inc: Don't redirect stderr.  Set
	LIBC_FATAL_STDERR_.

	* info/t/body-start.sh, info/t/end-of-line.sh, info/t/goto-quoted.sh,
	info/t/index-long-nodeline.sh, info/t/index.sh, info/t/next-quoted.sh,
	info/t/quoted-label-and-target.sh, info/t/quoted-label-as-target.sh,
	info/t/quoted-target.sh, info/t/split-index.sh, info/t/tab.sh: Don't
	exit immediately if no output file was created and always proceed to
	cleanup.

2014-06-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (forget_node, forget_windows_and_nodes): Free
	NODE objects in window history list.
	(info_split_window): Copy the NODE object when creating a new
	window.

	* info/echo-area.c (restore_calling_window): Call forget_node to
	properly erase completions window from window history and restore
	previous node.
	(ea_possible_completions): Call info_set_node_of_window instead
	of window_set_node_of_window to save point and pagetop.
	(calling_window_point, calling_window_pagetop): Delete unused.

	* info/nodemenu.c (list_visited_nodes): Call
	info_set_node_of_window instead of set_remembered_pagetop_and_point,
	window_set_node_of_window and remember_window_and_node individually.
	(get_visited_nodes) Remove unnecessary check.

	* info/indices.c (do_info_index_search, info_index_apropos)
	* info/infodoc.c (info_find_or_create_help_window):
	Call info_set_node_of_window instead of window_set_node_of_window.
	* info/session.c (set_remembered_pagetop_and_point): Declared
	static.

2014-06-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_print_node, print_node): print_node merged
	into info_print_node.

	(remember_window_and_node): Remove check for remembering the same
	node twice.

	(info_scroll_backward_page_only_set_window): Call the right function.

	* info/dir.c (dir_buffer, create_dir_buffer): Removed.
	(dir_node): New static variable.
	(get_dir_node): Store dir node as a simple NODE variable, not in the
	tags table of a FILE_BUFFER.  Comment updated.

2014-06-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.h (WINDOW): Fields nodes, pagetops, points
	nodes_index, nodes_slots removed.  Replaced with hist, hist_index
	and hist_slots.

	* info/gc.c (gc_pointers)
	* info/nodemenu.c (get_visited_nodes): Iterate over hist array
	in WINDOW.

	* info/session.c (set_remembered_pagetop_and_point)
	(remember_window_and_node, forget_window_and_nodes)
	(info_handle_pointer, kill_node, info_gc_file_buffers):
	Access window node history in hist field of WINDOW.

	(remember_window_and_node): Use add_pointer_to_array macro.

	(forget_node): New function.
	(forward_move_node_structure, kill_node): Call forget_node.

2014-06-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c: Some reordering of definitions and section comments.
	No functional changes intended.

2014-05-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infodoc.c (dump_map_to_text_buffer): Hide "echo-area-insert"
	entries in help window.

	* info/session.c (info_win_find_node): Merged into
	info_handle_pointer.

2014-05-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.h (WINDOW): 'current' field removed.
	* info/window.c (set_remembered_pagetop_and_point)
	(remember_window_and_node, forward_move_node_structure, kill_node):
	Use nodes_index field instead.  (We cannot go forward in the node
	history, so the current node is always the last one in the list.)

2014-05-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (forget_windows_and_nodes): Don't free node
	structures in a window's history when it is deleted.

	(info_handle_pointer): Don't save pagetop and point - done
	when info_set_node_of_window is called.

	(remember_window_and_node): NODE argument removed.  All callers
	updated.

2014-05-31  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.h (WINDOW): Fields added from INFO_WINDOW:
	nodes, pagetops, points, current, nodes_index, nodes_slots.  Field
	'window' not added.
	* info/info.h (INFO_WINDOW): Typedef deleted.

	* info/session.c (info_windows, info_windows_index)
	(info_windows_slots): Removed.
	(get_info_window_of_window, consistency_check_info_windows): Removed.

	(set_remembered_pagetop_and_point, remember_info_and_node)
	(forget_window_and_nodes, info_handle_pointer,
	(forward_move_node_structure, read_nodename_to_kill)
	(info_gc_file_buffers, kill_node): Access data in WINDOW objects
	instead of INFO_WINDOW objects.

	(info_win_find_node): Argument type changed from INFO_WINDOW to
	WINDOW.
	(info_split_window, kill_node): Loops over info_windows removed.

	* info/nodemenu.c (get_visited_nodes)
	* info/gc.c (gc_pointers): Iterate over 'windows' instead of
	'info_windows'.

2014-05-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (add_initial_nodes) <index lookup>: Look for
	case-ignoring initial substring in indices if no exact match found.

	* info/info.c (main): Set preprocess_nodes=0 when dumping output
	to a file.
	* info/session.c (dump_nodes_to_file): Checks for DUMP_APPEND removed.
	* info/session.h (DUMP_APPEND): Remove unused.

	* info/info-utils.c (info_new_reference): New function.
	* info/info.c (get_initial_file, add_initial_nodes)
	(info_find_matching_files): Call info_new_reference.

2014-05-28  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (point_next_line, point_prev_line): Check for
	whether we should call forward_move_node_structure or
	backward_move_node_structure added.
	(point_prev_line): Go to end of previous line instead of start.
	(info_forward_char, info_backward_char, info_forward_word)
	(info_backward_word): Rely on checks in point_next_line,
	point_prev_line.

	(point_next_line, point_prev_line, point_forward_char)
	(point_backward_char, point_forward_word, point_backward_word):
	Rely on line map already being calculated for current line.
	
	(point_skip_ws_forward): Merged into point_forward_word.
	(point_skip_ws_backward): Merged into point_backward_word.
	
	(looking_at_alnum): New function.
	(_looking_at_newline, looking_at_newline): Renamed.
	(point_forward_word, point_backward_word): Call looking_at_alnum.

	(move_to_new_line): First argument deleted.  All callers updated.

	Some definitions moved in file for better organization.

2014-05-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (add_initial_nodes) <--show-options>: Avoid loading
	extra node if we came here from a dir entry.

	(allfiles_create_node): Use numbers as labels, as it was before.
	Using the label as the node spec caused problems when the referenced
	node didn't exist.  Output index tag to show destinations when
	preprocess-nodes=On.

2014-05-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (info_get_menu_entry_by_label): New argument
	for sloppy menu reading.

	* info/info.c (get_initial_file): Calls to lookup_dir_entry updated.
	Try reading dir files sloppily if no exact match was found.  Function
	reorganized.
	(add_initial_nodes, main): Handle case when we were invoked
	like "--node (emacs)Buffers".
	(info_find_matching_files): Check for dir entries as well.

	* info/dir.c (lookup_dir_entry): New argument for whether to search
	inexactly.  Callers updated.
	(dir_entry_of_infodir): New function.

	* info/session.c (entry_in_menu): Removed.  Caller in
	info_intuit_options_node updated.
	(info_win_find_node): Null check.

	* info/filesys.c (info_add_extension): No longer static.

2014-05-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infodoc.c (create_internal_info_help_node): Show program
	version in help window.
	
	* info/session.c (info_info_version): New command to show version
	of program.
	* NEWS,
	* doc/info-stnd.texi (Miscellanous Commands): Document "M-x
	info-version".

2014-05-25  Karl Berry  <karl@gnu.org>

	* doc/info-stnd.texi (Invoking info): tweaks to invocation examples;
	mention GROFF_SGR, etc.

2014-05-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (window_new_screen_size): Call forget_window_and_nodes
	instead of window_deletion_notifier.
	(window_deletion_notifier): Removed.
	* info/session.c (initialize_window_session): Don't set
	window_deletion_notifier to forget_window_and_nodes.

	* info/window.c (window_physical_lines): Delete unused.

	* info/session.c (internal_next_line): Delete unused.
	(info_menu_digit): Formatting.

2014-05-25  Gavin Smith  <gavinsmith0123@gmail.com>
	
	* info/session.c (info_scroll_forward, info_scroll_backward)
	(info_scroll_forward_set_window, info_scroll_backward_set_window)
	(info_scroll_forward_page_only, info_scroll_backward_page_only)
	(info_scroll_forward_page_only_set_window)
	(info_scroll_backward_page_only_set_window)
	(info_scroll_half_screen_down, info_scroll_half_screen_up)
	(info_down_line, info_up_line):
	Rely on checks in _scroll_forward and _scroll_backward for
	negative arguments.

	(_scroll_forward, _scroll_backward): 'key' argument removed.  Callers
	updated.

2014-05-25  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/filesys.c (info_file_find_next_in_path): Use infopath_next
	to iterate over INFOPATH.  Don't take a path argument.  Callers
	updated.
	(info_file_in_path): Don't take a path argument.  All callers updated.
	
	* info/filesys.c, info/infopath.c (extract_colon_unit): Function
	definition moved.

	* info/infopath.c (INFO_DIR): New typedef.
	(infodirs, infodirs_index, infodirs_slots): New variables.
	(infopath_add): Always add directory to end of search path, checking
	if it doesn't exist or if it is a duplicate.  Check for inode == 0
	for MS-Windows copied from dir.c:new_dir_file_p.  Argument 'where'
	removed.  All callers updated.
	(infopath_add_dir) New function.
	(infopath_first, infopath_next): Return values not freed by caller.
	Callers updated.
	(infopath, infopath_string): Function renamed.  Return value to
	be freed by caller.  Caller updated.
	(build_infopath_from_path): Rely on duplicate detection in
	infopath_add.  Add directories to search path instead of returning
	a string containing their names.
	(compact_infopath, infopath_clear,infopath_base, infopath_size)
	(infopath_dirty, nextdir): Removed.
	* info/infopath.h (INFOPATH_PREPEND, INFOPATH_APPEND, INFOPATH_INIT):
	Removed.

	* info/dir.c (dir_file_list_entry_type, new_dir_file_p): Removed.
	(build_dir_node): Rely on duplicates being removed in INFOPATH to
	avoid a duplicate dir file.

2014-05-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (apropos_in_all_indices): Fix code for avoiding
	reading the same file twice.

2014-05-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (info_indices_of_file_buffer): Slightly more
	informative comment.
	* info/filesys.c (info_find_fullpath): Disabled code removed.
	* info/window.c: Inaccurate section label comment removed.
	(window_make_window): Disabled code removed.

2014-05-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-intera.inc: Account for incomplete output from
	pseudotty.

2014-05-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (info_index_apropos): Use text_buffer_* functions
	directly.  Don't create apropos window if nothing found.
	* info/infodoc.c (dump_map_to_message_buffer)
	(dump_map_to_text_buffer): Renamed.  Take struct text_buffer *
	argument.
	(create_internal_info_help_node): Don't use *_message_buffer
	functions.
	* info/nodemenu.c (get_visited_nodes): Don't use *_message_buffer
	functions.
	* info/window.c (build_message_node): Don't use *_message_buffer
	functions.
	(message_buffer, build_message_buffer, message_buffer_to_node)
	(initialize_message_buffer, printf_to_message_buffer): Removed.

2014-05-21  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\documentlanguage): \let_ inside \tex,
	no need for extra group it seems; and call
	\documentlanguagetrywithoutunderscore without braces,
	so we get the expected parsing-off of the _ (or not).
	Report from German Arias, help-texinfo 18 May 2014 20:26:02.

2014-05-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/echo-area.c (ea_possible_completions): Use text_buffer_*
	functions instead of *_message_buffer functions.
	* info/window.c (text_buffer_to_node): New function.

2014-05-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infodoc.c (dump_map_to_message_buffer): Don't call
	character_width or message_buffer_length_this_line.
	* info/window.c (message_buffer_length_this_line, character_width)
	(string_width): Removed.
	(message_buffer): No longer static.

	* info/window.c (calculate_line_starts): Merged into
	recalculate_line_starts.

2014-05-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/footnotes.c (info_get_or_remove_footnotes): If window
	too small to split to show footnotes window, don't crash.

2014-05-20  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (window_initialize_windows): Use xzalloc to
	allocate an object with all bytes 0.
	* info/info.h (zero_mem): Removed.

	* info/t/Init-intera.inc: Extra line of output reporting on progress.

	* info/session.c (info_end_of_line): Get end of line from line_map
	object.
	* info/window.c (window_scan_line, window_compute_line_map):
	Functions merged.
	(add_line_map): Merged into the new window_compute_line_map.
	(window_end_of_line): Removed.
	* info/t/end-of-line.sh: New test.

2014-05-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-intera.inc: Confirm pts file exists before redirecting
	stdin, stdout and stderr.
	* info/t/README: File added.

	* info/info-utils.c (printed_representation): Proper cursor
	positioning for multi-column characters.

2014-05-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodemenu.c (get_visited_nodes): Don't reuse a local
	variable for an unrelated purpose.  Declared static.  Argument
	not set to anything other than null in calling code removed.  All
	callers updated.
	* (select_visited_node): Don't free objects too early and always
	free them before function exit.
	* info/window.c (message_buffer_to_node): Comment changed.

2014-05-19  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi (Invoking Info): Mention differences in groff
	terminal output.

2014-05-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (scan_reference_label): Simpler logic for
	setting start and end fields of reference.
	(skip_input): Don't touch output_bytes_difference if not rewriting
	node.

	* info/info-utils.c (scan_reference_target): [preprocess_nodes=On]
	Better condition for which line to output file specifier on.

	* info/pseudotty.c: Don't exit on a read error.

2014-05-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/dir.c (build_dir_node): Unused local variable deleted.
	* info/indices.c (info_next_index_match): Unused local variable
	deleted.
	* info/info-utils.c (info_parse_node): Return 0 if nothing passed.
	(scan_reference_label): Unused local variable deleted.
	(scan_node_contents): Unused local variable deleted.
	* info/info.c (get_initial_file, add_initial_nodes)
	(allfiles_create_node, main): Unused local variables deleted.
	(node_file_name): Deleted.
	* info/man.c (xrefs_of_manpage): Unused variables deleted.
	(locate_manpage_xref): Deleted.
	* info/nodemenu.c (select_visited_node): Unused local variable
	removed.
	* info/nodes.c (get_nodes_of_info_file, get_file_character_encoding)
	(set_tag_nodelen, info_node_of_tag):
	Ununsed local variables removed.
	(get_filename_and_nodename): Specify return type as void.
	* info/session.c (begin_multiple_window_session)
	(info_scroll_forward_set_window, info_scroll_backward_set_window)
	(info_scroll_backward_page_only_set_window)
	(info_menu_or_ref_item, info_move_to_xref, info_follow_menus): Unused
	local variables deleted.
	(info_display_file_info): Use "%ld" instead of "%d".
	(dump_nodes_to_file): Use an initialized variable to print an
	error message.  Unused variable deleted.
	* info/search.c (regexp_search, find_node_in_binding): Unused
	variables deleted.
	* info/terminal.c (terminal_prep_terminal): Always return an
	explicit value.
	* info/window.c (window_make_modeline): Use "%ld" instead of "%d" in
	format argument to sprintf.
	(process_node_text): Unused variable deleted.

2014-05-18  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t (all files): Set srcdir variable before including any shell
	snippets.  Suggested by Patrice Dumas.  Other fixes for tests in
	out-of-source builds.

	* info/info-utils.c (printed_representation): Corrected output lengths
	for META-x and DEL.  Function comment corrected.
	(init_output_stream): Always initialize output_bytes_difference.
	(copy_converting): Remove unnecessary cast.
	(scan_reference_label): [QUOTE_NODENAMES] Skip quoting bytes properly.

	* info/pseudotty.c: Don't open slave side of pseudoterminal
	line.  Report on progress to stderr.

	* info/filesys.c (info_add_extension): Return null pointer properly
	if nothing found.

2014-05-18  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (output): warn about 
	incompatibilities between output and split only if split.
	* tp/tests/Makefile.am, tp/tests/reference/, tp/tests/t/: add tests
	for stdout.
	* install-info/tests/Makefile.am (EXTRA_DIST): use 
	the correct file ii-0054-input-info-file.gz.
	* tp/texi2any.pl: put installation directory last in @INC,
	in order to have -I perl arguments take precedence.  Report
	from Aharon Robbins.
	* tp/texi2any.pl: no warning for non empty @part for docbook and
	HTML since non empty parts are formatted correctly for those
	formats.

2014-05-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (process_node_text): Formatting and tweaks to
	carrying character over from one line to another. Return proper
	value.
	* info/t/Init-intera.inc: Use usleep instead of sleep to speed up tests.

2014-05-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (process_node_text, info_tag)
	* info/info-utils.c (printed_representation): do_tags argument
	removed.  All callers updated.
	* info/tag.c (handle_tag): Removed.

2014-05-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (process_node_text): Don't split printed
	representations like "^X" across lines.

	* info/info-utils.c (printed_representation): Take mbi_iterator_t
	argument and handle Info tags and terminal escape sequences.
	* info/window.c (process_node_text, window_scan_line): Use of
	printed_representation updated.
	* info/window.c (info_tag): No longer static.

2014-05-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (process_node_text): First argument changed from
	void * to WINDOW *.  Callers updated.
	* info/display.c (display_node_text):
	* info/window.c (_calc_line_starts): Receive WINDOW * argument.
	* info/window.h (WINDOW): New field line_slots.

	* info/info.h (add_pointer_to_array): Work for integer types.
	* info/info.h (add_element_to_array): Synonym for add_pointer_to_array.

	* info/display.c (struct display_node_closure): Removed.
	* info/window.c (struct calc_closure, calc_closure_expand): Removed.

2014-05-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.h (WINDOW): line_starts changed to pointer to
	(array of) offsets.  This stops the need to write expressions like
	"win->line_starts[line] - win->node->contents" in many places.  All
	uses updated.

	* info/window.c (process_node_text): Set line_starts.

	* info/window.c (process_node_text, _calc_line_starts)
	* info/display.c (display_node_text): Consistent variable naming
	among local variable names in process_node_text and the arguments
	for the functions it calls.

2014-05-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_select_reference): Code merged from
	info_next_index_match: Call window_log_to_phys_line.
	* info/indices.c (info_next_index_match): Call info_select_reference.

	* info/Makefile.am: Remove index-long-nodeline.sh from XFAIL_TESTS.

2014-05-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (scan_node_contents, scan_reference_label):
	[preprocess-nodes=On] Perform character encoding on reference
	label.
	(scan_reference_target): Sometimes output newline before file
	indicator.
	(avoid_see): Use length from input for comparison.

2014-05-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (scan_reference_label) Declared static.
	(scan_reference_target): Argument added.  Declared static.
	[preprocess-nodes=On]: Add space before output "(" if not at
	start of line.  Hide full stop terminating reference if it
	looks like (*note Label:(file)node.)  Caller updated.
	(safe_string_index): Utility function.
	(avoid_see_see): New function.
	(scan_node_contents): Call avoid_see_see.

2014-05-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (info_parse_node): Don't include terminating
	character in returned length.
	(scan_reference_target): [preprocess-nodes=On] Hide terminating
	'.' in a menu entry.
	* info/search.c: (find_node_in_binding): Don't view '.' as terminating
	character in nodeline.
	* info/session.c (dump_node_to_stream): Use PARSE_NODE_VERBATIM
	as argument to info_get_node.
	* info/t/file-node-with-dot.sh: New test.
	* info/t/file-node: Comment updated.

2014-05-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (add_initial_nodes): Discard dir entry from initial
	node list if --node was used.

	* info/session.c (info_move_to_xref): Remove set of W_UpdateWindow.
	This was causing some screen flicker.
	* info/infodoc.c (info_get_help_window): Remove unnecessary set of
	W_UpdateWindow.

	* info/session.c (quit_info_immediately): Declared static.

2014-05-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (scan_reference_target) <preprocess-nodes=On>:
	Deal with newline following colon in cross-reference better.
	(info_copy_references, copy_converting): Comments added.
	* info/info.c (get_initial_file): Call info_copy_reference on
	REFERENCE retrieved from dir.

2014-05-11  Patrice Dumas  <pertusus@free.fr>

	* Texinfo/Parser.pm, Texinfo/Structuring.pm(warn_non_empty_parts),
	t/test_utils.pl, texi2any.pl: warning for @part with text.
	* tp/Texinfo/Convert/DocBook.pm: add <partintro> for non empty
	@part text.  Report from Aharon Robbins.

2014-05-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (add_initial_nodes): When following menus, start at
	node in ref_list if there is one already.
	* info/session.c (info_folllow_menus): Comment about allocation added.

	* info/t/dir-file-index.sh, info/t/file-index.sh: New tests.

	* info/t/body-start.sh: New test.

2014-05-11  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/dir.c (dir_node, get_dir_node): Function renamed.
	(lookup_dir_entry): New function.  Case insensitive lookup
	based on that in info_follow_menus.
	* info/info.c (get_initial_file): Call lookup_dir_entry.
	* info/session.c (info_follow_menus): Unnecessary test removed.
	* info/t/dir-file-sloppily.sh: New test.

2014-05-11  Patrice Dumas  <pertusus@free.fr>

	* tp/t/test_utils.pl(test): use SKIP and not TODO, as TODO is
	assumed to fail, while there is an unknown output since different
	perl verions treat NEL differently.
	* tp/Texinfo/Common.pm(is_content_empty),
	tp/t/test_is_content_empty.t: check if a tree item contains non empty 
	content.

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

	* info/info-utils.c (info_parse_node): Call read_quoted_string
	to get node name.
	(read_quoted_string) [QUOTE_NODENAMES]: Interpretation of
	quoting mechanism made conditional.
	(scan_reference_target): Add comment to clarify that references
	like "*note (filename)nodename::" are not supported.
	(scan_node_contents): Free output of read_quoted_string.
	* info/search.c (skip_node_characters): Function merged into
	info_parse_node.
	* info/nodes.c (get_nodes_of_info_file): Call get_quoted_string
	to read node name from node information line.
	* info/t/reference-quoted.sh: Deleted, replaced with new tests:
	* info/t/quoted-label-as-target.sh, info/t/quoted-target.sh,
	info/t/quoted-label-and-target.sh

	* info/info.c (get_initial_file): Store full path of file found
	from dir entry.

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

	* info/info.c (get_initial_file): Special handling of "info -O info"
	moved from add_initial_nodes.  Save node name found in dir.
	* info/infodoc.c (replace_in_documentation): Show "H" to close
	help window.
	* doc/info-stnd.texi: Tweaks to Invocation.

2014-05-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi: Some text from documentation of --file
	option merged further up in node.

2014-05-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infodoc.c (info_find_or_create_help_window) Close help
	window if in it already.  Display error message if window cannot
	be created.  Caller in info_get_help_window updated.

	* info/window.c (window_delete_window): Comment added warning about
	using this function.

2014-05-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (deleted_lines): Variable deleted.  All
	accesses removed.
	(scan_node_contents): [preprocess-nodes=On] Remove blank line
	after "* Menu:" marker.
	* info/nodemenu.c (nodemenu_format_info): Add blank line after
	"* Menu:" marker.
	(get_visited_nodes): Add blank line at start of node to avoid first
	line being interpreted as a node information line.

	* info/signals.c (redisplay_after_signal): [automatic-footnotes=On]
	Redisplay footnotes after a window resize to get the correct size.

	* info/footnotes.c (info_get_or_remove_footnotes): Mark footnotes
	windows with W_TempWindow.  (Note: This flag was not used anywhere.)
	* info/window.c (window_delete_window): Prefer windows that are
	not marked with W_TempWindow.  (For example, opening and closing
	a help window would result in an enlarged footnotes window being
	selected.)

2014-05-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_find_file): If full path to file has been given,
	look for a loaded file with that path exactly.
	(info_find_subfile): Check if subfile was loaded with file
	extensions added.
	(info_load_file): Don't retain reference to string argument.
	(get_filename_and_nodename): Use full path of file to follow
	references within a file.

2014-05-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_load_file): Function declared static.
	* info/info.c (main): Call info_find_file instead.

2014-05-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (all_files, main): all_files merged into main.
	(add_initial_nodes): Store full path of initial
	nodes instead of plain file name.
	(info_find_matching_files): Return type changed.

	* info/session.c (begin_multiple_window_info_session): Don't call
	initialize_info_session or display a welcome message.  Caller in
	main updated.

	* info/info.c (dirname): Delete unused.
	* info/session.c (dump_node_to_file): Delete unused.

2014-05-09  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infodoc.c (info_get_info_help_node): Don't split window
	to display Info tutorial.
	* info/session.c (begin_multiple_window_info_session): Unused
	variable removed.

2014-05-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (select_menu_digit): Return null if no menu.
	(info_menu_digit): Check if references field of node is null.
	(info_menu_or_ref_item): Abort if no references.
	(info_menu_item): Print error message if no references.

2014-05-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (initialize_terminal_and_keymaps): Don't quit if
	terminal is dumb, because we might not be running interactively.
	(initialize_info_session): Quit if terminal is dumb.
	* info/terminal.c (terminal_initialize_terminal): Comment corrected.
	(terminal_prep_terminal): Return 0 for a dumb terminal.

	* info/t/Init-test.inc: Run tests with TERM=dumb by default.
	* info/t/Init-intera.inc: Run interactive tests with TERM=vt100.
	Suggested by Karl Berry.

2014-05-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (scan_node_contents): Pass offset relative to
	start of node contents of "*" starting reference to
	scan_reference_label.  Report by Benno Schulenberg 8th May, 2014. 

2014-05-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (begin_multiple_window_info_session): Deal with
	references to desired nodes being invalid and display dir node
	as a back-up.

	* info/filesys.h (DEFAULT_INFOPATH): "." moved to end of path.

	* info/t/file-relative-path.sh: New test.

2014-05-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-intera.inc: Redirect stdin as well as stdout and stderr.
	* info/t (all files): Look in $srcdir for test data to faciliate
	VPATH builds.
	* info/t/file.sh: Use simple filename argument to --file.

2014-05-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi: Give overview of invocation.

2014-05-08  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (main): If slash in first non-option argument,
	interpret as if it had been passed with --file.
	* info/session.c (info_select_reference): Null check for label
	field of REFERENCE.
	* info/t/relative-path.sh: New test.

2014-05-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/filesys.c (filesys_error_string): Correct comment about
	whether return value should be freed by caller or not.

	* info/info-utils.c (scan_reference_label): Remove superseded
	correction to 'end' field of REFERENCE.

	* info/nodes.h: Avoid double WINDOW typedef.  Reported by
	Benno Schulenberg 06 May 2014.

2014-05-07  Karl Berry  <karl@gnu.org>

	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm: unintended test
		commit, tweak doc

	* configure.ac (AC_INIT): go to 5.2dev, to reduce confusion
	with released versions.

	* doc/info-stnd.texi (@copying): Front-Cover Texts with a capital T.
	Implicitly reported by Benno, 06 May 2014 22:04:00.

	* doc/info.texi (Miscellaneous Commands): H is for get-help-window
	(the terse command list) and h is for get-info-help-node (the
	tutorial), as with Emacs Info.  Except in vi mode, where h
	is also for get-help-window; is that what vi-ers want?
	* info/session.c (display_startup_message): mention
	get-info-help-node as well as get-help-window.
	* info/infomap.c (default_emacs_like_info_keys): switch h/H
	accordingly, as discussed and reported again by Benno,
	06 May 2014 22:04:00.

2014-05-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (add_initial_nodes): Don't free return value of
	info_indices_of_file_buffer.

	* info/pseudotty.c: #define _GNU_SOURCE instead.  Note
	added on the portability of various functions.

	* info/t/Init-intera.inc: Note added on problem with crashes
	during tests.

2014-05-06  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (begin_multiple_window_info_session): Take
	array of REFERENCE * arguments.  Caller in info.c:main updated.
	(info_select_reference): Go to line number given by reference.
	All callers updated.
	(info_intuit_options_node): Return REFERENCE * instead of char *.
	Callers updated.

	* info/session.c (dump_nodes_to_file): Take reference array as
	a parameter.  Callers updated.

	* info/info.c (ref_list, ref_slots, ref_index): New file-level
	variables.
	(get_initial_file): Add reference to man page to ref_list if
	we fell back to it.
	(add_initial_nodes): Add nodes to ref_list instead of user_nodenames.

	* info/session.c (info_follow_menus): Work for split files.

	* info/indices.c (info_indices_of_file_buffer): Comment
	added about whether return value should be freed.

2014-05-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Makefile.am (install-exec-hook): use $(transform) for
	--program-suffix.  Report from Glenn Morris.
	* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm, 
	Pod-Simple-Texinfo/pod2texi.pl: add texinfo_sectioning_style 
	'appendix' and command-line option --appendix-sections.

2014-05-05  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\secfonts): increase \setleading to 17pt.

2014-05-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (read_quoted_string): Include any quoting
	characters in returned length.  Account for terminator character
	appearing immediately (for example, if input is malformed).
	(parse_top_node_line): Read fields with read_quoted_string.
	(scan_reference_label): Arguments changed.  Call
	canonicalize_whitespace on reference label.  Don't output "See".
	Caller in scan_node_contents updated.
	(colon_after_newline): Deleted.
	(scan_node_contents): Remove S_SkipDest flag from search so that
	results are at beginning of match instead of end.  Use
	read_quoted_string to get reference labels.

	* info/session.c (info_handle_pointer): Read "Next" etc. pointers
	with PARSE_NODE_VERBATIM instead of PARSE_NODE_START.

2014-05-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (read_quoted_string): New function.
	* info/search.c (find_node_in_binding): Call read_quoted_string.

	* info/t/goto-quoted.sh,
	info/t/reference-quoted.sh,
	info/t/next-quoted.sh: New tests.

2014-05-04  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/apropos-index.sh: New test.

2014-05-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (info_indices_of_file_buffer, do_info_index_search)
	(index_entry_exists, apropos_in_all_indices, info_index_apropos)
	(info_virtual_index)
	Call free instead of info_free_references or info_reference_free,
	because the REFERENCE * objects in the array are still referenced
	elsewhere.

	* info/info-utils.c (info_concatenate_references): Don't free arguments.
	Always return a new array, even if either of the arguments are null.
	Callers updated.

	* info/indices.c (info_apropos): Merged into info.c:main.
	(APROPOS_NONE) Moved to indices.h.
	* info/info.c <apropos in indices>: Call apropos_in_all_indices
	only after infopath_init has been called.

	* info/indices.c (apropos_in_all_indices): Get file buffer directly,
	rather than loading a node first.

	* info/man.c (manpage_xrefs_in_binding): Delete unused.

2014-05-03  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (string_to_node): Function deleted.  Caller in
	create_internal_info_help_node updated.

	* info/window.c, info/man.c (clean_manpage): Function moved.
	* info/window.c, info/info-utils.c (ansi_escape): Function moved.

	* info/info-utils.c (info_get_menu_entry_by_label): Arguments
	changed.
	* info/session.c (entry_in_menu): Arguments changed.

2014-05-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (all_files): Get working again, having been broken
	by recent changes to startup.  Don't use info_follow_menus.

	* info/indices.c (allfiles_node): Declared global.
	(allfiles_create_node) Moved to info.c

	* info/info.c (node_file_name): Argument dirok deleted.
	(allfiles_create_node): Don't use numbers as labels of menu entries.
	Don't create a containing FILE_BUFFER for allfiles_node.
	(info_find_matching_files): Use add_pointer_to_array to build up
	list.  Check for man pages directly (previously this was done in
	info_follow_menus).

	* info/info.h (add_pointer_to_array): Comment rewritten to match
	macro definition.

2014-05-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/footnotes.c (info_get_or_remove_footnotes): Don't
	display footnotes for "*" node.

2014-05-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infodoc.c (create_internal_info_help_node): Don't print
	blank line at end of help window.  This could result in scrolling
	too far down when paging down to the bottom.

2014-05-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/filesys.c: [!BUILDING_LIBRARY], [!BUILDING_LIBARARY]: #if
	checks conditional upon these macros removed.

2014-05-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/filesys.c (info_add_extension): Loop trying various file
	extensions moved from info_file_find_next_in_path.
	(info_find_fullpath): Account for null struct stat argument.  Check
	case when path is not absolute, but contains intermediate
	subdirectories.
	* info/t/split.sh: New test.

2014-05-02  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (info_set_node_of_window): Argument
	'remember' removed.  All callers updated.
	(begin_multiple_window_info_session): Don't call
	remember_window_and_node when tiling.

	* info/indices.c (do_info_index_search): Take FILE_BUFFER
	argument.  All callers updated.
	* info/info.c (main) <index search>: Don't set node of window before
	calling do_info_index_search.

2014-05-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (info_indices_of_file_buffer): Store return
	value in index_index.

2014-05-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (get_initial_file, add_initial_nodes)
	(show_error_node)
	* info/session.c (begin_multiple_window_info_session)
	(info_follow_menus): Use char * to store error message, and only
	build NODE if necessary.

	* info/info.c (info_find_matching_files): Declared static.

2014-05-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (begin_multiple_window_info_session): Call
	initialize_info_session and display startup message or error.  Caller
	updated.

2014-05-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_get_node_of_file_buffer): Order of arguments
	reversed.
	(info_node_of_file_buffer_tags): Merged into
	info_get_node_of_file_buffer.

	* info/session.c (initialize_info_session): Argument 'clear_screen'
	removed.

2014-05-01  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/filesys.c (info_absolute_file, info_add_extension):
	Function renamed.
	(info_find_fullpath): Call info_add_extension.
	(filesys_read_info_file): Use finfo as an output parameter instead
	of an input parameter.

	* info/indices.c (info_indices_of_window): Unused function deleted.
	(index_entry_exists): Use FILE_BUFFER argument instead of WINDOW.

	* info/info.c (single_file, main, get_initial_file)
	(add_initial_nodes): single_file split between main and new functions.
	--node flag works without using --file.  Search in indices if
	following menus fails.

	* info/nodes.c (get_nodes_of_tags_table): Set filename on entries
	from filename field of FILE_BUFFER, not the fullpath field.
	(info_find_file): Deleted.
	(info_find_file_internal, info_find_file): Renamed and argument
	get_tags removed.
	(info_find_subfile): New function to be used instead of
	info_find_file_internal for retrieving subfiles.
	(info_load_file): No longer static.
	(make_file_buffer): Set encoding field of FILE_BUFFER.

	* info/session.c (begin_multiple_window_info_session): Work
	just as well for only one window.  Don't call info_session.
	(begin_info_session): Function deleted.
	(display_startup_message_and_start, display_startup_message):
	Renamed, and don't call info_session.
	(initialize_info_session): Don't initialize the session with a
	given NODE.

	* info/session.c (info_follow_menus): Don't handle man pages or
	look for reference labels as files.  Return name of destination
	node.  All callers updated.
	(info_intuit_options_node): Don't take window argument and return
	name of node.  Callers updated.
	(dump_nodes_to_file): Arguments changed.

	* info/t/Init-intera.inc: Redirect stderr as well as stdin.

2014-05-01  Karl Berry  <karl@gnu.org>

	* util/gendocs.sh (copy_images): look for images in . as well
	as -I directories.
	Report from Arnold, 29 Apr 2014 15:43:08.

	* util/gendocs.sh (--no-html, --no-info, --no-tex): new options.

2014-04-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (info_indices_of_file_buffer, index_entry_exists):
	Comments added.

	* info/infopath.c (infopath_clear)
	* info/filesys.c (convert_eols, filesys_read_compressed)
	(compressed_filename_p, filesys_decompressor_for_file): Declared
	static.

	* info/nodes.c (info_load_file): Deleted.
	(info_load_file_internal, info_load_file): Renamed.

	* info/footnotes.c (make_footnotes_node): Copy parent field
	to footnotes field.  This caused problems with automatic-footnotes=On
	in split files.

	* info/filesys.c (info_find_fullpath). Return 0 on failure
	as documented, instead of the partial filename.  Set
	filesys_error_number.  Set new struct stat argument for loaded
	file.  Don't limit length of path.
	(local_temp_filename, local_temp_filename_size): Removed.
	(info_file_find_next_in_path, info_file_in_path)
	(info_absolute_file): New argument struct stat *finfo. All
	callers updated.

	* info/nodes.c (info_find_file_internal, info_load_file):
	Call info_find_fullpath.  This allows finding new files added
	earlier in the INFOPATH.  Don't call stat directly or set
	filesys_error_number.

	* info/filesys.c (FILENAME_LIST, names_and_files)
	(names_and_files_index, names_and_files_slots, lookup_info_filename)
	(remember_info_filename, forget_file_names): Deleted.  All accesses
	removed.

2014-04-29  Alexis Hildebrandt <alexis.hildebrandt@surryhill.net> (tiny change)

	* doc/refcard/txirefcard.tex: use \raise instead of $^...
	for superscripted text, since ^ appears literally.  Fix typos.

2014-04-27  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/dir-to-file.sh, info/t/dir-file.sh: Renamed.
	* info/t/dir-to-no-file.sh, info/t/dir-no-file.sh: Renamed.

	* info/t/no-file.sh, info/t/dir-nondir.sh, info/t/where-dir-file.sh:
	New tests.

	* t/infodir/dir: file-menu file listed.

	* info/t/Init-test.inc, info/t/dir-no-file.sh: Comments added.

2014-04-27  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (max_iters): change from -1 to 7.  Infinite
	loops are bad.  Report from Marius Hofert, 25 Apr 2014 08:10:44.

2014-04-26  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/file-nodes.sh, info/t/dir-file-node.sh: New tests.
	* info/Makefile.am: Add new tests.

	* info/t/index-long-nodeline.sh, t/index.sh, t/split-index.sh:
	Make "#!/bin/sh" first line.

	* info/dir.c: Call dir node "Top".

2014-04-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/dir.c (build_dir_node): Use header text from
	util/dir-example.

	* info/man.c (reference_section_starters, frs_binding)
	(find_reference_section): Disable with preprocessor.
	(xrefs_of_manpage): Look in whole man page for possible xrefs.
	Work even if name of reference is surrounded by ECMA-48 SGR
	sequences.

2014-04-24  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.h [HANDLE_MAN_PAGES]: #define removed.  All
	usages updated.

	* info/man.c (get_manpage_node): Use correct variable.

	* info/nodes.c (info_load_file, get_node_length): Declared static.

	* info/session.c (nearest_xref): Unused function deleted.

	* info/dir.c (maybe_create_dir_node, dir_node, create_dir_buffer)
	(build_dir_node): maybe_create_dir_node split up and behaviour
	changed.
	(dir_buffer): New file-level variable.
	(insert_text_into_fb_at_binding, insert_text_into_node): Renamed
	and arguments changed.
	(add_menu_to_file_buffer, add_menu_to_node): Renamed and arguments
	changed.
	* info/nodes.c (info_find_file_internal): Special treatment of
	dir file buffers removed.
	(info_get_node_with_defaults): Call dir_node to get dir node.

2014-04-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (info_parse_node): Don't use saven_filename
	or saven_nodename.
	(parsed_filename_size, parsed_nodename_size)
	(save_filename, saven_filename, save_nodename, saven_nodename)
	(save_string, saven_string): Functions and variables deleted.

	* info/info-utils.c (scan_reference_target): Better
	output for target specifications.

	* info/nodes.c (info_get_node_with_defaults): Always free data
	on exit.  Eliminate extra check for if we were looking for a man
	page.

2014-04-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/man.c: (get_manpage_node): Arguments changed.  Do not
	keep all the man page contents in one long buffer.
	(manpage_file_buffer): New variable.
	(create_manpage_file_buffer): Initialize manpage_file_buffer.
	(make_manpage_node): Function deleted.
	(manpage_node_of_file_buffer): Merged into get_manpage_node.
	(locate_manpage_xref, xrefs_of_manpage)
	(manpage_xrefs_in_binding, create_manpage_file_buffer): Functions
	declared static.

	* info/nodes.c (info_find_file_internal)
	(info_reload_file_buffer_contents, info_get_node_of_file_buffer):
	Special handling of man pages removed.
	(info_get_node_with_defaults): Call get_manpage_node to get
	man page nodes.

	* info/session.c (info_follow_menus): Call get_manpage_node instead
	of make_manpage_node.
	(info_man): Get man page via info_get_node instead of
	info_parse_and_select.

	Note: These changes stop the undocumented and probably 
	unintended support of invoking the standalone Info program as
	"info '(filename)nodename'", which only worked by accident.

2014-04-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.h (WINDOW): Change size_t fields to long to avoid
	unwanted unsigned arithmetic.

	* info/session.c: Some re-ordering of functions, and comment added
	warning about what happens if you do this.
	* info/echo-area.c, info/infodoc.c, info/m-x.c,
	info/indices.c, info/footnotes.c, variables.c: Warning about
	reordering DECLARE_INFO_COMMAND declarations copied.

	* info/Makefile.am: Add infokey dependency for tests.

	* info/session.c (_scroll_forward, _scroll_backward): Remove
	logic applicable to only some of the scrolling functions.
	Don't scroll if already at bottom of node.  Don't move point.
	(info_scroll_forward, info_scroll_backward)
	(info_scroll_forward_set_window, info_scroll_backward_set_window)
	(info_scroll_forward_page_only, info_scroll_backward_page_only)
	(info_scroll_forward_page_only_set_window)
	(info_scroll_backward_page_only_set_window)
	(info_down_line, info_up_line)
	(info_scroll_half_screen_down, info_scroll_half_screen_up):
	Call _scroll_forward and _scroll_backward.

2014-04-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (ea_explicit_arg, ea_numeric_arg_sign)
	(ea_numeric_arg): New variables.
	(info_universal_argument, info_initialize_numeric_arg)
	(info_numeric_arg_digit_loop, info_dispatch_on_key): Use new
	variables if in echo area.
	* info/echo-area.c (ea_delete, ea_rubout): Use ea_explicit_arg
	instead of info_explicit_arg.

2014-04-23  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-test.inc: Set LC_ALL=C to avoid spurious test
	failures in non-English locale.

2014-04-22  Patrice Dumas  <pertusus@free.fr>

	* tp/texi2any.pl: unset OUTFILE when --output is given, even
	if it is a directory.
	* tp/Texinfo/Convert/Converter.pm: warn about output incompatible
	with splitting.

2014-04-22  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (@t{@@listoffloats}) [ifinfo]: do not output a
	real menu for Info, so readers can go forward with SPC as usual.
	Reported by Mohammad Akhlaghi, bug-texinfo 15 Apr 2014 18:03:41.

2014-04-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (scan_reference_target): Better handling
	of case when a newline appears within a reference specification.
	(info_parse_node): Skip newlines at start of specification.

2014-04-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (degrade_utf8): Replacements added for more
	characters spotted in documents.

2014-04-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/window.c (window_make_modeline): Subtract height of
	window from length of node when calculating percentage
	position in node so that it smoothly scales from 0% to 100%.
	
2014-04-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (info_get_labeled_reference)
	(info_menu_entry_by_label): Renamed.  Only look for menu items.
	
	* info/man.c (manpage_node_of_file_buffer): Set nodelen and nodestart
	field in returned NODE.
	(xrefs_of_manpage): If no references, return array with a single
	null entry instead of null. Set type fields to REFERENCE_XREF.
	* info/window.c: (window_make_modeline) If preprocess_nodes_p is
	set, display less information in status bar.
	* info/nodes.c (get_node_length): Function no longer static.
	Definition moved in file.
	
2014-04-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c, info/info-utils.h (info_menu_of_node)
	(info_xrefs_of_node, info_menu_items, info_xrefs)
	(info_references_internal): Functions deleted.
	* info/info-utils.c (info_parse_label): Function and associated
	macros deleted.

2014-04-22  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/echo-area.c (info_read_completing_internal) New argument
	exclude_func.  All callers changed.
	(completion_exclude_func): New variable.
	(info_read_completing_in_echo_area_with_exclusions): New function.
	(build_completions): Exclude completions using
	completion_exclude_func.
	* info/session.c (exclude_cross_references, exclude_menu_items)
	(exclude_nothing): New static functions.
	
	* info/footnotes.c (make_footnotes_node)
	* info/indices.c (info_indices_of_file_buffer, select_visited_node)
	(apropos_in_all_indices)
	* info/nodemenu.c (select_visited_node)
	* info/session.c (forward_move_node_structure)
	(backward_move_node_structure)
	(info_handle_pointer, select_menu_digit)
	(info_menu_digit, info_menu_or_ref_item, info_visit_menu) 
	(info_follow_menus, entry_in_menu, info_intuit_options_mode)
	(info_select_reference_this_line, info_move_to_xref)
	(dump_node_to_stream): Use node reference list from
	NODE.references instead of scanning text of node using functions
	that were in info-utils.c.  Use NODE.up, NODE.next, NODE.prev
	instead of scanning node.
	(info_menu_or_ref_item): Arguments changed.  All callers updated.
	(last_node_p): Function deleted.

2014-04-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_node_of_tag): Call scan_node_contents.

	* info/footnotes.c (make_footnotes_node): Copy references from main
	node to footnotes node.  Set filename field from main node.
	* info/info-utils.c (info_copy_references): New function.
	(info_copy_reference): Copy type field.
	
	* info/indices.c (info_index_apropos, create_virtindex_node)
	* info/nodemenu.c (get_visited_nodes): Call scan_node_contents on new
	node.
	
	* info/info-utils.c (internal_info_node_p): Remove code disabled by
	preprocessor.
	
	* info/session.c (forget_window_and_nodes): Call info_free_references.

2014-04-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c, info/variables.c (preprocess_nodes_p):
	New variable.
	* info/info-utils.c (rewrite_p, input_start, inptr, input_length)
	(output_buf, anchor_to_adjust, nodestart, deleted_lines)
	(output_bytes_difference): New file-level variables.
	[HAVE_ICONV] (file_is_in_utf8, iconv_to_output, iconv_to_utf8):
	New file-level variables.
	(init_conversion, close_conversion, init_output_stream)	
	(copy_direct, copy_converting, degrade_utf8)
	(copy_input_to_output, skip_input, write_extra_bytes_to_output) 
	(write_tag_contents, underlining_on, underlining_off)
	(parse_top_node_line, scan_reference_label, scan_reference_target)
	(colon_after_newline, scan_node_contents): New function
	scan_node_contents and helper functions, based on
	info/info-utils.c:info_references_internal.

	* info/info-utils.c (info_parse_node): Return length of parsed
	node label.
	
	* info/info-utils.c (text_buffer_space_left): New function.
	[HAVE_ICONV] (text_buffer_iconv): New function.

	* info/nodes.h (FILE_BUFFER): New field 'encoding'.
	(LOCAL_VARIABLES_LABEL, CHARACTER_ENCODING_LABEL): New preprocessor
	symbols.
	* info/nodes.c (get_file_character_encoding): New function.
	(info_load_file_internal): Call get_file_character_encoding.

	* info/nodes.c (info_node_of_tag): Don't call tags_expand.

	* info/tags.c (tags_expand, tag_expand): Function renamed and
	behaviour changed.

2014-04-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.h (NODE): New fields references, up, prev, next.
	* info/info-utils.h, info/nodes.h (REFERENCE): New field
	'type'.  typedef declaration moved.
	* info/nodes.h (REFERENCE_XREF, REFERENCE_MENU_ITEM): New
	preprocessor symbols.
	* info/nodes.c (info_create_node): Initialize new fields of NODE.
	(free_info_tag): Free references field if set.

2014-04-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c: (info_node_of_file_buffer_tags, info_node_of_tag):
	Function split out.
	(find_node_of_anchor): Function merged into info_node_of_tag.  Don't
	assume anything about length of node separator.

	* info/indices.c (info_indices_of_file_buffer): Call info_node_of_tag
	instead of info_get_node.  Free contents after each file searched
	to conserve memory.

2014-04-21  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c: Minor formatting.
	(SUBFILE, get_tags_of_indirect_tags_table): Move typedef
	into body of function.
	(info_get_node_of_file_buffer): Unused variable deleted.
	* info/pseudotty.c: #define _XOPEN_SOURCE instead of _GNU_SOURCE.
	* info/t/infodir/split.info-2: Syntax fixed.

2014-04-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/Makefile.am: Two new tests.
	* info/t/long-nodeline.sh, info/t/long-nodeline.drib,
	info/t/split-index.sh, info/t/split-index.drib,
	info/t/infodir/split.info, info/t/infodir/split.info-1,
	info/t/infodir/split.info-2: New files.

2014-04-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (backward_move_node_structure): Null check.

2014-04-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (adjust_nodestart): Initialize variable.

	* info/info-utils.c (info_parse_label): Skip whitespace before label.
	* info/session.c (backward_move_node_structure): Check if next or up
	is a dir file properly.
	(forward_move_node_structure, backward_move_node_structure)
	(last_node_p): Avoid assignments in conditions.

2014-04-17  Gavin Smith  <gavinsmith0123@gmail.com>

	* install-info/install-info.c:
	(main) Only output a warning in --remove operation if dir file
	not found, and exit successfully.
	(readfile, open_possibly_compressed_file): Do not exit program
	on error; pass back name of file with error and return null instead.
	(pfatal_with_name): Error message for empty file moved from
	open_possibly_compressed_file.

2014-04-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_node_of_file_buffer_tags): Use |= where intended.
	* info/nodes.c: Comments edited.

2014-04-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (init_file_buffer_tag): New function.  Conditonally set
	N_HasTagsTable and N_TagsIndirect on tag table entries.
	(get_nodes_of_info_file, get_nodes_of_tag_table): Create tag table
	entries with info_create_node and init_file_buffer_tag.  Set
	nodelen to -1 for all tags.
	(get_tags_of_indirect_tags_table): Set N_TagsIndirect in flags before
	calling get_nodes_of_tags_table so it will be set on tag table entries.
	
	* info/nodes.h: (N_WasRewritten): New preprocessor symbol.
	(NODE.content_cache): Field deleted.
	
	* info/nodes.c (adjust_nodestart): Do not read or write contents field
	of tag.  Alter nodestart field.  Call find_node_in_binding instead
	of find_node_separator.  Arguments changed.
	(set_tag_nodelen): New function, split out from
	info_node_of_file_buffer_tags.
	(info_node_of_file_buffer_tags): Do not set N_HasTagsTable or
	N_TagsIndirect on returned node.  If tags_expand expanded any tags,
	update contents field of tag and set N_WasRewritten flag.  Set
	body_start on tag table entry instead of returned node.  Acquire node
	by copying from tag table.
	
	* info/search.c (find_node_separator): Allow node separator to start
	anywhere from binding->start inclusive to binding->end exclusive.  Add
	comment to clarify that we won't read past the end of allocated space.
	Reformat logical expression.
	
	* info/session.c (free_node_contents): New function.  Free contents of
	rewritten nodes in tag table.
	(info_delete_window): Call info_gc_file_buffers.
	(info_gc_file_buffers): Call free_node_contents.
	(free_node_tag): Free tag->contents.

2014-04-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.h (NODE): Fields nodestart and content_cache added.
	* info/nodes.h (TAG): Structure type deleted.  All variables
	and functions declared with this type changed to use NODE instead.
	* info/tag.c (tags_expand): size_t -> long in arguments.

2014-04-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_get_node_with_defaults): Free allocated
	strings on abnormal exit.

2014-04-16  Karl Berry  <karl@gnu.org>

	* util/gendocs_template,
	* util/gendocs_template_min: update for current boilerplate (1.77).
	From Ineiev.

2014-04-16  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/pseudotty.c: #define _GNU_SOURCE to get getpt and
	ptsname declarations from <stdlib.h>.  Avoid assignments in
	conditions.

2014-04-15  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (runbibtex): Let's not have two consecutive
	close-parens either, for consistency.

2014-04-15  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Cleanup.inc, info/t/Init-intera.inc, info/t/Init-test.inc,
	info/t/index.sh, info/t/tab.sh: Use temporary files based on name
	of test.

2014-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/indices.c (info_indices_of_file_buffer): Don't consider anchors
	as index nodes even if they have "Index" in their name.

2014-04-14  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (info_create_node): New function initializing
	created NODE structures.
	* info/footnotes.c (make_footnotes_node)
	* info/indices.c (create_virtindex_node)
	* info/man.c (manpage_node_of_file_buffer)
	* info/nodes.c (info_get_node_of_file_buffer)
	(info_node_of_file_buffer_tags)
	* info/window.c (string_to_node, message_buffer_to_node): Call
	info_create_node.

	* info/session.c (kill_node): Copy whole NODE structure at once instead
	of field-by-field.

2014-04-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/session.c (forward_move_node_structure)
	(backward_move_node_structure): Remove accesses of
	info_parsed_filename and info_parsed_nodename.

2014-04-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info-utils.c (info_parse_label): Return label with no parsing.
	All callers changed.
	* info/session.c (info_handle_pointer): Do not assume anything
	about the values of info_parsed_filename and info_parsed_nodename.
	Call info_get_node_with_defaults to get target node.  All callers
	changed.
	* info/session.c (INFO_LABEL_FOUND): Macro deleted.

2014-04-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c (get_filename_and_nodename): New static function setting
	defaults for node specifications.
	(info_get_node, info_get_node_with_defaults): New argument 'window'
	for info_get_node.  Function renamed, with wrapper with old arguments.
	Call get_filename_and_nodename.
	(info_get_node_of_file_buffer): Remove unnecessary check for null
	nodename - done by calling code.

	* info/session.c (info_select_reference): Call
	info_get_node_with_defaults.
	(info_parse_and_select): Do not call info_parse_node.

2014-04-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/nodes.c: Reorder file into sections.  No functional changes.

2014-04-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/file.sh, info/t/file-node.sh, info/t/dir.sh,
	info/t/dir-to-file.sh, info/t/dir-to-no-file.sh,
	info/t/dir-file-menu.sh, info/t/dir-file-no-menu.sh,
	info/t/dir-3-menus.sh, info/t/tab.sh, info/t/index.sh,
	info/t/help.sh: Copyright notices added.

	* info/t/index.sh: Source t/Cleanup.inc.

2014-04-13  Gavin Smith  <gavinsmith0123@gmail.com>

	* util/texi2dvi (runbibtex): Avoid having two opening brackets
	in a row to improve portability of code.  Reported by Richard
	Palo.  (http://savannah.gnu.org/bugs/?42067)

2014-04-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/t/Init-intera.inc: New file for interactive tests.  Wait
	for file containing name of pseudoterminal to be created by
	subprocess.
	* info/t/Cleanup.inc: File created: shell code for test cleanup
	and exit.
	* info/t/index.sh, info/t/tab.sh: Source new files.
	* info/t/Init-test.inc: Record that test isn't interactive to allow
	Cleanup.inc to be used for both kinds of tests.
	* info/pseudotty.c: Call fclose on stdout instead of fflush to
	encourage output file to be created quickly.

2014-04-12  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/Makefile.am: Rules and variables for test suite.
	* info/pseudotty.c: New program, used by tests.
	* info/t/Init-test.inc: File created for test scripts.
	* info/t/file.sh, info/t/file-node.sh, info/t/dir.sh,
	info/t/dir-to-file.sh, info/t/dir-to-no-file.sh,
	info/t/dir-file-menu.sh, info/t/dir-file-no-menu.sh,
	info/t/dir-3-menus.sh, info/t/tab.sh, info/t/index.sh,
	info/t/help.sh: Test scripts created.
	* info/t/index.drib, info/t/tab.drib,
	info/t/Infokey-config, info/t/node-target, info/t/infodir/dir,
	info/t/infodir/file-menu.info, info/t/infodir/file1.info,
	info/t/infodir/intera.info, info/t/infodir/sample.info: Files created
	with data for tests.

2014-04-08  Karl Berry  <karl@gnu.org>

	* NEWS,
	* doc/texinfo.texi: mention --plaintext splitting.
	
	* doc/info-stnd.texi: tweak infopath-no-defaults and --init-file
	wording.
	* NEWS: mention these new features.

2014-04-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Converter.pm (_id_to_filename, 
	_sectioning_command_normalized_filename, _node_filename,
	_set_element_file, _top_node_filename, _get_element, 
	_set_pages_files, output),
	* tp/Texinfo/Convert/HTML.pm: move generic functions to Converter.pm 
	and modify default output() to follow the same rules as HTML.pm 
	for splitting.
	* tp/Texinfo/Convert/Plaintext.pm (_convert_node):
	rename function as _convert_element.
	(convert_tree): add to be able to work with Converter.pm output().
	* tp/Texinfo/Convert/Plaintext.pm, 
	tp/Texinfo/Convert/Info.pm, tp/texi2any.pl: use default
	output() from Converter.pm for plaintext.  Share less defaults
	with Info.pm.  Allow splitting plaintext.

2014-04-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/infodoc.c (dump_map_to_message_buffer): Check if
	command is info_do_lowercase_variant.
	* info/window.c (message_buffer_length_this_line): Do not
	include leading newline in line length calculation.

2014-04-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi: Document --init-file.

2014-04-07  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (long_options, main): New option --init-file.
	* info/infomap.c (initialize_info_keymaps, read_init_file): Function
	renamed and given new argument init_file.
	(fetch_user_maps): New argument.
	* info/session.c (initialize_terminal_and_keymaps): New argument.
	All callers changed.

	* info/variables.h (VARIABLE_ALIST): New field where_set.
	* info/variables.c (variable_by_name): Split out from
	read_variable_name.
	(set_variable_to_value): Check if variables were set already
	with a higher priority.  Arguments changed.  All callers updated.
	(set_variable): Call set_variable_to_value with SET_IN_SESSION.

2014-04-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* doc/info-stnd.texi: Document infopath-no-defaults.

2014-04-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/Makefile.am: Condense AM_CPPFLAGS definition slightly.
	* info/info.c (main): Make --directory options build up infopath
	in the order they were specified.  Call infopath_init after
	options are read instead of before.
	
	* info/infopath.c, info/variables.c (info_variables)
	(infopath_no_defaults_p): New variable for user, info-no-defaults.
	
	* info/infopath.c (infopath_init): Do not include $infodir and
	$datadir/info in search path if info-no-defaults=On.

2014-04-05  Gavin Smith  <gavinsmith0123@gmail.com>

        * info/session.c (initialize_terminal_and_keymaps)
	(initialize_info_session): Function split out.
        * info/info.c (main): Call initialize_terminal_and_keymaps before
        loading file.  This is needed in case a variable in .infokey affects
        the loading of the file.

2014-04-05  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/info.c (long_options): Specify that --variable takes an
	argument, like its short equivalent -v.

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

	* info/search.c (regexp_search): Remove unnecessary test for
	whether search results have to be recalculated.

2014-03-29  Gavin Smith  <gavinsmith0123@gmail.com>

	* info/display.c (find_diff): increment i in the loop so we
	actually return the intended value.

2014-03-22  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (Info Format Tag Table): ^? not ^_, etc.
	Reported by Gavin Smith, 21 Mar 2014 18:56:27.

2014-03-19  Karl Berry  <karl@gnu.org>

	* util/htmlxref.cnf (gdbint): gone (reported by Ineiev).
	(thales): new.

2014-03-17  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\headitem): \gdef\headitemcrhook{\nobreak}
	(\headitemcrhook): \relax by default.
	(\multitable) <\everycr>: call it, to try to avoid page breaks
	after heading rows.

2014-03-14  Karl Berry  <karl@gnu.org>

	* tp/texi2any.pl (D=s): handle -D 'var value', as C makeinfo did.
	Based on bug-texinfo mail from Guo Yixuan, 4 Mar 2014 17:29:34 -0500
        (tiny change).
        (makeinfo_help): document it.
        * doc/texinfo.texi (Invoking @t{texi2any}): document it.

2014-02-25  Arnold Robbins  <arnold@skeeve.com>
            Karl Berry  <karl@gnu.org>

	* util/texindex.c (decode_command): increment arg_index again
	after looking at the argument, not before.  This made -o unusable;
	therefore presumably no one has been using it, and it will be dropped.

2014-02-19  Karl Berry  <karl@gnu.org>

	* install-info/tests/ii-0054-*,
	* install-info/tests/Makefile.am (TESTS, EXTRA_DIST): new test 54
	for space in input name.

2014-02-19  Paul Eggert  <eggert@cs.ucla.edu>

	* install-info/install-info.c (open_possibly_compressed_file):
	Work even if the file name contains arbitrary shell
	metacharacters, for example:
	  install-info --info-dir="/d/a b/info" "/d/a b/info/emacs.info.gz"
	Do this by running the decompressor on standard
	input, rather than by having the shell open the file.
	Return either stdin or a pipe.
	Don't bother with IS_PIPE arg; no longer needed.
	All callers changed.  Check for freopen failure.

2014-02-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\ifusebracesinindexes): new conditional for testing.
	(\indexnofonts): if set, output @{ as \{ in the sort string,
	instead of |a; likewise @}.  Request from Arnold.

2014-02-15  Patrice Dumas  <pertusus@free.fr>

	* Texinfo/Convert/DocBook.pm: do not use lineannotation for 
	@r, the semantics are not the same.  Report from Aharon Robbins.

	* Texinfo/Convert/Plaintext.pm (_printindex_formatted),
	* Texinfo/Common.pm, 
	* doc/texinfo.texi: new customization variable
        INDEX_SPECIAL_CHARS_WARNING to warn about invalid index entries in
        Info.  Report from Glenn Morris.

2014-02-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\cartouche): do not do \nonarrowing at all;
	we want @example, etc., to be indented normally inside @cartouche.
	Don't we?  Report from Arnold, 09 Feb 2014 00:20:26.

2014-02-07  Alexis Hildebrandt <alexis.hildebrandt@surryhill.net> (tiny change)

	* doc/refcard/txirefcard.tex: typos.

2014-02-06  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\ure{pre,post}stretchamount): new macros.
	(\uref{pre,post}stretch): use them.
	(\raggedright): reset them to 0pt.  Also increase rag to 2.4em.
	Bug report from Werner Lember, 06 Feb 2014 19:01:05.

2014-02-02  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (@t{@@documentencoding}): ISO-8859 ordering
	wrong.  Report from Reinhard Kotucha, 2 Feb 2014 19:32:24.

2014-01-30  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\commondummiesnofonts): \let\xeatspaces=\eatspaces
	so @macros that make index entries don't end up with spurious
	spaces in the output.  Report from Arnold, 30 Jan 2014 22:11:42.

2014-01-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\errfootnote): nested footnotes not supported.
	(\dofootnote): check for this.  Report from Arnold.

2014-01-16  Sergey Poznyakoff  <gray@gnu.org>

	* info/info.c (show_error_node): Avoid coredumping when
	writing output to a file.

2014-01-09  Sergey Poznyakoff  <gray@gnu.org>

	Fix search boundary checking.
	Based on report from Gavin Smith <gavinsmith0123@gmail.com>

	* info/search.c (regexp_search): Save previous values of
	start and end bounds (sorted) and rescan the buffer if these
	differ from the actual values.
	Fix boundary checking (using end bound instead of the buffer
	length).
	Use x2nrealloc to grow matches buffer.

2014-01-06  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi: 2014.

	* doc/texinfo.texi (@url): split into several nodes:
	(@t{@@url} Examples,
         URL Line Breaking,
         @t{@@url} PDF Output Format,
         PDF Colors).  Document the PDF-only \urefurlonlylinktrue
         and \linkcolor, \urlcolor texinfo.tex features.

2014-01-01  Karl Berry  <karl@gnu.org>

	* Pod-Simple-Texinfo/pod2texi.pl,
	* doc/texinfo.txi,
	* doc/refcard/txirefcard.tex,
	* info/info.c,
	* info/infokey.c,
	* install-info/install-info.c,
	* tp/texi2any.pl,
	* util/texi-elements-by-size,
	* util/texindex.c,
	* util/texi2dvi,
	* util/gendocs_template,
	* util/gendocs_template_min: 2014.

2013-12-25  Karl Berry  <karl@gnu.org>

	* util/htmlxref.cnf (easejs): add.

2013-12-12  Ludovic Courtes  <ludo@gnu.org>  (tiny change)

	* util/htmlxref.cnf (dmd, guix, lsh): add.

2013-11-26  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\urlcolor, \linkcolor): just use black by default,
	for consistency and printing, etc.
	Another suggestion from Arnold.

2013-11-25  Karl Berry  <karl@gnu.org>

 	* contrib/perldoc-all/GNUmakefile (texi_pod_doc_incl): possibly
	remove a second > after X<...>.

	* util/gendocs.sh: remove $PACKAGE.info* before remaking,
	in case the number of Info files decreases.

	* doc/texinfo.tex (\urefbreakfinish): change the default PDF
	output to show the url even if the second arg is given, like DVI.  
	Suggestion from Arnold Robbins.
        (\ifurefurlonlylink): new ``secret'' conditional for the previous
        PDF output: only show the second arg, with the url as the link target.

2013-11-09  Karl Berry  <karl@gnu.org>

	* util/htmlxref.cnf (GRUB): new variable.
	(multiboot): new grub manual.
	webmasters #832039.

2013-11-07  Karl Berry  <karl@gnu.org>

	* info/infomap.c (default_emacs_like_info_keys): somehow
	CONTROL('n') = A_info_next_line was lost.
	Report from Allan McRae, 06 Nov 2013 13:59:04.

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

	* tp/Texinfo/Structuring.pm: if SHOW_MENU is set, do not error out on
	lacking entry in menu.

2013-10-10  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (Short Sample Texinfo File): do not use
	@insertcopying in the top node, per rms's preference.

2013-09-26  Karl Berry  <karl@gnu.org>

	* Version 5.2.

2013-09-19  Eli Zaretskii  <eliz@gnu.org>

	* info/info-utils.c (fncmp): For MS-DOS/MS-Windows, a new function
	for comparing file names disregarding letter-case and
	forward/backslash differences; for Posix platforms, a macro that
	expands into a strcmp call.
	(info_namelist_add): Use fncmp instead of strcmp.

2013-09-13  Karl Berry  <karl@gnu.org>

	* pretest 5.1.90.

2013-09-12  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\inlinefmtifelse, \inlineifset, \inlineifclear):
	new commands.
	* doc/refcard/txirefcard.tex,
	* doc/texinfo.texi (Inline Conditionals),
	(@t{@@set @@clear @@value}),
	(@t{@@inlineifset @@inlineifclear}),
	(Command Summary): document them.

2013-09-11  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\onepageout): call new macro
	\commonheadfootline to make the headline/footline vboxes,
	which in turn calls \texinfochars.
	(\texinfochars): new macro; should reset all definitions done by
	@tex, but have skipped some for now out of laziness, since no
	one has noticed.
	(\expandablevalue): change formatting; note that _ in
	an @value string fails in non-typewriter output,
	and has been for a long time.
	(\activetilde, \activehat, \activeless, \activegtr): factor
	out the normal Texinfo definitions, now also used in \texinfochars.
	
	All this due to a bug report from Charlie Zender where ' in the
	@settitle caused failures when a page break occurred inside @tex,
	help-texinfo 08 Sep 2013 16:26:16.

2013-09-10  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (Two Arguments, Three Arguments):
	some node name requirements apply to arg#2 and arg#3 too.
	(Inline Conditionals): TeX can't properly deal with
	newline-delimited commands inside @inline*.

2013-09-09  Karl Berry  <karl@gnu.org>

	* NEWS,
	* doc/texinfo.texi (Node Line Requirements, Menu Parts,
	Cross Reference Parts, Other Customization variables): 
	mention Info warnings and INFO_SPECIAL_CHARS_WARNING.
	Other small tweaks.

2013-09-07  Patrice Dumas  <pertusus@free.fr>

	* tp/texi2any.pl: handle plaintext as other formats to set 
	expanded formats.
	* tp/Texinfo/Parser.pm: accept matching braces in ignored 
	@inline* commands.
	* tp/Texinfo/Common.pm(@variable_string_settables),
	tp/Texinfo/Convert/Info.pm(_node), tp/Texinfo/Convert/Plaintext.pm:
	add the INFO_SPECIAL_CHARS_WARNING customization variable, if
	false do not output warning messages on info characters in menu,
	cross-refs and node names.
	Use pending word in ref formatting to construct checked cross ref
	and node names.

2013-09-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Parser.pm, 
	tp/Texinfo/Convert/HTML.pm(_convert_inline_command),
	tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/Convert/DocBook.pm,
	tp/Texinfo/Convert/Text.pm, tp/Texinfo/Common.pm, 
	tp/Texinfo/Convert/TexinfoXML.pm:
	implement @inlinefmtifelse, @inlineifclear, @inlineifset.

2013-09-01  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Info.pm (_node): warn if node name contains
	a comma.

2013-08-31  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Plaintext.pm: warn when cross-reference
	name contains a :, or node name contains a problematic character.
	Warn similarly when a menu entry name contains a :, or when the
	menu entry node contains a problematic character.

2013-08-27  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Parser.pm: add \r to regexps to exclude it when 
	excluding newlines.  Report from Karl.

2013-08-26  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (run_bibtex): only run biber if
	</bcf:controlfile> is present in the bcf file.
	Allow override with BIBER envvar.
	Report from Jozef Vesely, 26 Aug 2013 14:26:26.

2013-08-26  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Plaintext.pm (_align_lines): correct byte count
	in flushleft and center.

2013-08-24  Karl Berry  <karl@gnu.org>  (tiny change)

	* util/texi2dvi (run_bibtex): run biber if .bcf file exists.
	(xref_files_changed): check for biblatex rerun warning.
	Report from Jozef Vesely, 24 Aug 2013 12:15:40.

2013-08-24  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Info.pm (output), 
	tp/Texinfo/Convert/Plaintext.pm: collect text before first node
	and output the same header for every Info output files using that
	text.  Based on a report from Juri Linkov and analysis of Sergey.
	Thread started at
	http://lists.gnu.org/archive/html/bug-gnu-emacs/2013-04/msg00039.html

2013-08-22  Karl Berry  <karl@gnu.org>

	* info/*: update copyright notices.

	* info/infomap.c (default_{emacs,vi}_like_info_keys),
	* info/session.c (info_display_file_info): rename from
	info_display_file.
	* NEWS: mention display-file-info.
	* doc/info-stnd.texi (Invoking Info): mention new debugging level,
	more about -f.
	(Miscellaneous Commands): document =.
	* info/info.c (info_short_help): mention -1 for all debugging.

2013-08-20  Sergey Poznyakoff  <gray@gnu.org>

	* info/info.h (add_pointer_to_array): Use x2nrealloc.
	Remove sixth argument.  All uses updated.
	(maybe_free): Remove.  Use free() instead.  All uses
	updated.

2013-08-20  Karl Berry  <karl@gnu.org>

	* configure.ac (AM_INIT_AUTOMAKE): require 1.14 for info-in-builddir.
	Noted by Patrice.

	* doc/texinfo.tex (\sectionheading): must do
	\global\let\prevsectiondefs, since we're inside a group.
	Otherwise, \thissection is lost in PDF output if an xref intervenes
	due to the color \mark.  Report from Thien-Thi Nguyen, 
	16 Feb 2013 12:06:17.

2013-08-20  Sergey Poznyakoff  <gray@gnu.org>

	Check for I/O errors when dumping nodes to file.
	Use a general-purpose interface for storing and looking up in
	a list of names.

	* info/info-utils.c (info_namelist_add)
	(info_namelist_free): New functions.
	* info/info-utils.h: Likewise.
	* info/info.c (namelist_add,namelist_free): Move to
	info-utils.c, redeclare as extern.
	(all_files): Update accordingly.
	* info/session.c [VERBOSE_NODE_DUMPING]: Replace with
	calls to debug.
	(write_node_to_stream)
	(dump_node_to_stream): Return error code.
	(dump_nodes_to_file): Check for I/O errors,
	(dumped_already): Change data type to struct
	info_namelist_entry *.
	(dumped_already_index, dumped_already_slots): Remove.
	(initialize_dumping): Rewrite.

2013-08-20  Sergey Poznyakoff  <gray@gnu.org>

	Bind display-file to C-g in vi mode.

	* info/infomap.c (default_vi_like_info_keys): Bind display-file to
	C-g and abort to C-c.
	* info/session.c (info_gc_file_buffers): Fix null pointer dereference.
	* NEWS: Update.

2013-08-19  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (@t{@@unnumbered @@appendix}): mention special
	Docbook output for acknowledgements, colophon, etc.

2013-08-19  Sergey Poznyakoff  <gray@gnu.org>

	New interactive command "display-file".

	* info/session.c (info_display_file): New command.
	* info/infomap.c: Bind '=' to display-file.

2013-08-19  Sergey Poznyakoff  <gray@gnu.org>

	Don't return dir entries when called with -a.  Fix interaction of
	-a and --output.

	* info/session.c (info_follow_menus): Add debugging output
	on level 3.
	In strict mode, return NULL if no matching node was found (by
	default initial node is returned).
	(dump_nodes_to_file,dump_node_to_file): Take flags in the
	last parameter.  If DUMP_APPEND is set, append to the output
	file instead of overwriting it.
	* info/session.h (DUMP_APPEND, DUMP_SUBNODES): New flags.
	* info/filesys.c (info_file_find_next_in_path): Improve
	debugging output
	* info/info.c (all_files): Set DUMP_APPEND for all but the
	first call to dump_node_to_file.
	(main): Initialize dump_subnodes.

2013-08-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (Image Syntax): a bit more about Docbook.

	* doc/info-stnd.texi (Invoking Info),
	(Variables): editing throughout.
	* info/info.c (info_short_help): use MANUAL instead of FILENAME
	for -f.  Report from Arne Babenhauserheide,
	11 Apr 2013 11:05:37.

2013-08-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve info -a: process manpages, filter out duplicate names.

	* info/info-utils.c (info_reference_free): New function.
	(info_free_references): Use info_reference_free.
	* info/info-utils.h (info_reference_free): New proto.
	* info/info.c (info_find_matching_files): Return
	REFERENCE **.
	(namelist_add,namelist_free): New static functions.
	(all_files): Select unique file names.
	* info/session.c (info_split_window)
	[SPLIT_BEFORE_ACTIVE]: Declare pagetop.
	(info_menu_or_ref_item): Use info_reference_free.
	(info_follow_menus): Fix processing in strict mode.

	* info/filesys.c: Remove unused variable.
	* info/filesys.h (forget_file_names): New proto.
	* info/indices.c (apropos_in_all_indices): Use info_reference_free
	to free a pointer to REFERENCE.
	(info_virtual_index): Remove unused variable.
	(allfiles_create_node): Second argument is REFERENCE **.
	* info/indices.h (allfiles_create_node): Change signature.
	* info/man.c (manpage_xrefs_in_binding): Use info_reference_free.
	* info/nodes.c: Include tag.h
	* info/nodes.h (TAG)<nodelen>: Change type to size_t.
	* info/window.h (window_log_to_phys_line): New proto.

2013-08-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	The -x option takes a numeric argument.

	* NEWS: Document -a.
	* doc/info-stnd.texi: Document existing debugging levels.
	Document -x -1.
	* info/info.c (debug_level): Change type to unsigned.
	(long_options, short_options): -x now requires argument.
	(set_debug_level): New function.
	(main): Change -x handling.
	* info/info.h (debug_level): Change declaration.

	Minor fixes:

	* info/echo-area.c (ea_possible_completions)
	[SPLIT_BEFORE_ACTIVE]: Declare start here.
	(ea_scroll_completions_window): Remove unused variable.
	(pause_or_input): Likewise.

2013-08-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix -a functionality.

	* info/info.c (all_files): Clear cached data to avoid
	reading the same file again.

2013-08-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (Conventions): remove statement about
	CRLF not being recognized.  It seems that both TeX and tp
	are agnostic about line endings.
	Report frmo vincent.belaiche@gmail.com, 21 Apr 2013 19:02:39.

        * README,
        * INSTALL,
        * tp/TODO,
	* doc/texinfo.texi,
        * doc/texi2oldapi.texi,
        * doc/refcard/txicmdcheck,
        * doc/refcard/txirefcard.tex,
        * doc/refcard/txivarcheck,
        * doc/Makefile.am,
        * util/tests/txitextest: texinfo.txi -> texinfo.texi.

2013-08-15  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (@settitle): typo (missing "to"), report from
	Alex Sassmannshausen, 26 Apr 2013 14:21:38.
	
	* doc/texinfo.texi (Indicating): rewrite intro to avoid implying
	that users can change at will what Texinfo's commands output.
	(Defining New Texinfo Commands): and avoid implying that macros
	should be used to redefine existing commands.
	Thread with Robert Dodier, starting 26 Apr 2013 09:33:42.

	* doc/texinfo.texi: @setfilename texinfo.info, not just
	texinfo, per automake 1.14 complaint.

	* configure.ac (AM_INIT_AUTOMAKE): add info-in-builddir,
	per automake 1.14 complaint.

	* doc/Makefile.am (info_TEXINFOS),
	* doc/texinfo.texi: rename from doc/texinfo.texi,
	per automake 1.14 deprecation.

2013-08-15  gettextize  <bug-gnu-gettext@gnu.org>

	* gnulib/m4/po.m4: Upgrade to gettext-0.18.3.
	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.18.3.

2013-08-15  Karl Berry  <karl@gnu.org>

	* install-info/install-info.c (ensure_dirfile_exists): do not
	translate the ^_ byte; the Italian translation missed it,
	and it makes more sense to consider it a keyword anyway.
	Report from Thien-Thi Nguyen, 17 May 2013 11:16:41.

2013-08-13  Karl Berry  <karl@gnu.org>

	* doc/info-stnd.texi (Variables, Searching Commands): tweak
	wording of search-skip-screen descriptions, etc.

2013-08-12  Patrice Dumas  <pertusus@free.fr>

	* tp/init/chm.pm: sort indices names to get a reproducible output.
	Report by Karl.
	* tp/Texinfo/Structuring.pm: set @command_unnumbered for the toplevel
	@-command if not @top.  Report from Karl.

2013-08-11  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Conventions): add item about form feed processing.

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

	* tp/Texinfo/Convert/HTML.pm(output): sort when processing renamed
	nodes to have a reproducible error output.  Report by Karl.
	* Texinfo/Convert/Converter.pm(_informative_command_value,
	_informative_command): do not set informative command value if 
	value is not defined.

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

	* tp/Texinfo/Convert/Line.pm, Texinfo/Convert/Paragraph.pm: preserve 
	spaces coming from the document.
	Do not break words at non-breaking spaces.
	* Pod-Simple-Texinfo/t/Pod-Simple-Texinfo.t: correctly close =over
	with a =back, as reported by newer Pod::Simple.  Report by Karl.
	Mark as TODO the test that changes depending on Pod::Simple version.
	Report by Karl.
	* tp/Texinfo/Parser.pm(_next_text): add a end of line at the end of
	files when there is one missing.  Found out in 
	https://bugzilla.redhat.com/show_bug.cgi?id=950644
	* tp/Makefile.am: reorder alphabetically test input files.  
	Distribute missing test files.
	* tp/t/test_utils.pl(test): allow for marking tests as TODO.  Use
	this facility to mark a test of all_spaces that fails on perl 5.10
	with NEL not being treated the same as in perl 5.14.

2013-08-09  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/DocBook.pm(_protect_text): convert
	formfeed to space instead of simply removing it.

2013-08-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\codedashfinish): include an explicit
	space after the \let=, for @code{- a}.
	Report from Vincent Lefevre, 7 Aug 2013 04:07:10.

2013-08-08  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Plaintext.pm: output ^L in ignorable
	spaces.

2013-08-07  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm(_default_protect_text), 
	tp/init/html32.pm: protect ^L with an entity.
	* tp/Texinfo/Convert/Plaintext.pm: output ^L between 
	paragraphs.

2013-08-06  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoXML.pm(_xml_attributes):
	do not protect \f and \ in spaces or trailingspaces attributes.
	* tp/Texinfo/Convert/DocBook.pm(_protect_text): remove
	form-feed from output, as it is not allowed in XML.

2013-08-06  Patrice Dumas  <pertusus@free.fr>

	* Texinfo/Parser.pm: keep form-feed in @set value.
	* util/texinfo.dtd, util/txixml2texi.pl, 
	tp/Texinfo/Convert/TexinfoXML.pm(_protect_text): output form-feed
	as entity in XML, when possible.  Handle form-feeds in 
	txixml2texi.pl too.
	* tp/Texinfo/Convert/TexinfoXML.pm(_xml_attributes),
	util/texinfo.dtd, util/txixml2texi.pl: protect form-feed in
	attributes by using an entity that becomes a literal \f. 
	Double \ in attributes too.

2013-08-06  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\smartitaliccorrection): also omit italic
	correction if next command is @. or @comma.
	Report from Vincent Lefevre, 5 Aug 2013 02:47:31.

2013-08-06  Patrice Dumas  <pertusus@free.fr>

	* Texinfo/Parser.pm: form-feed in paragraph stops the current
	paragraph.  For that consider \f to be a separator.

2013-08-04  Patrice Dumas  <pertusus@free.fr>

	* Texinfo/Parser.pm: keep form-feed in macro arguments.

2013-07-29  Patrice Dumas  <pertusus@free.fr>

	* Texinfo//Common.pm (enumerate_item_representation),
	* Texinfo/Parser.pm:
	handle correctly @enumerate specification greater than 10.
	Report from Dmitry Shachnev.

2013-06-28  Karl Berry  <karl@gnu.org>

	* contrib/perldoc-all/GNUmakefile (texi_pod_doc_incl): remove X<...>
	pod constructs, so we get good filenames.  For perl-5.18.0.

2013-06-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm: use "prev" for rel attribute and not 
	"previous", as prev is the preferred one.  Report by Tom Tromey.

2013-06-21  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\codedash): use \futurelet.
	(\codedashfinish): new definition for - inside @code et al.,
	which does not allow a break after a - when it is preceded or
	followed by another -, or when it is first.
	(\code): initialize \codedashprev for the - as first char case.
	Report from Arnold Robbins, 04 Apr 2013 01:30:28 -0600.

	* texi2dvi (run_makeinfo): more verbose error message if our
	test reading texinfo.tex fails.  Suggestion from Vincent B,
	25 May 2013 23:10:58.

2013-06-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Skip the current screen when repeating searches.

	* NEWS: Update.
	* doc/info-stnd.texi: Document the -a (--all) option and
	the search-skip-screen. Mention '}' and '{' commands when
	discussing repeated searches.
	* doc/version-stnd.texi: Update.
	* doc/version.texi: Update.
	* info/session.c (search_skip_screen_p): New variable.
	(info_search_1): Take additional argument, supplying the
	starting position for the search. All uses changed
	(DFL_START): New define.
	(info_search_next,info_search_previous): If search_skip_screen_p
	is set, skip the lines displayed on the screen.
	* info/variables.c (info_variables): New variable
	"search-skip-screen".
	* info/variables.h (min_search_length): New proto.

2013-06-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Preparing for @TeX{}): texinfo.cnf
	is a "configuration" file, other wording tweaks.

2013-06-07  Sergey Poznyakoff  <gray@gnu.org.ua>

        Handle "index" tag.
        * info/tag.c (tags_expand): Accept NULL handler as a no-op.
        (tagtab): Add an entry for "index".

2013-04-29  Stefano Lattarini  <stefano.lattarini@gmail.com>  (tiny change)

	* tp/Makefile.am,
	* tp/tests/Makefile.am: use $(MKDIR_P) instead of $(mkdir_p).

2013-04-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Restore the cursor position when going to the Up node.

	* info/session.c (info_win_find_node): New static.
	(info_handle_pointer): When handling Up pointer,
	restore the point (cursor position) as well.

2013-04-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement the --all (-a) option as per bug #38168.

	* info/infopath.c: New file.
	* info/Makefile.am (ginfo_SOURCES): Add new file.
	* info/tilde.c (tilde_expand_word): Argument is const char *.
	All uses changed.
	* info/info.c (all_matches_p): New variable.
	(long_options, short_options): New option --all (-a).
	(single_file, all_files): New functions.
	(main): Handle new option.
	* info/nodes.c (forget_info_file): Now extern.
	* info/nodes.h (forget_info_file): New proto.
	* info/indices.c (create_virtindex_file_buffer): Allow for
	NULL as the filename.
	(allfiles_create_node, info_all_files): New functions.
	* info/dir.c (maybe_build_dir_node): Use infopath_first and
	infopath_next to iterate over the INFOPATH.
	* info/filesys.c: Remove infopath functions. See infopath.c
	(info_file_in_path, info_file_find_next_in_path): New functions.
	* info/indices.h (allfiles_create_node): New prototype.
	* info/filesys.h (infopath): Remove extern.
	(infopath): New prototype.
	(zap_infopath): Rename to infopath_clear.
	(info_add_path): Rename to infopath_add.
	(infopath_init,infopath_first,infopath_next)
	(info_file_find_next_in_path): New prototypes.
	(INFOPATH_INIT): New constant.
	* info/session.c (info_read_and_dispatch): Do not set
	quit_info_immediately, it is done by info_quit.
	(info_follow_menus): Take an additional argument.
	(info_quit): Set quit_info_immediately.
	* info/session.h (quit_info_immediately): Extern.
	(info_follow_menus): Change signature.
	* info/infomap.c: Bind `C-x f' in Emacs mode, and `:a' in Vi mode
	to info_all_files.

	* doc/info-stnd.texi: Document the --all option.

2013-04-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/infomap.c: Fix indentation and style.

2013-04-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement new options for standalone info.

	* info/info.c (debug_level): New variable.
	(long_options): New options: -x (--debug) and -v (--variable).
	(short_options): Update accordingly.
	(main): Handle the new options.
	(vinfo_debug, info_debug): New functions.
	* info/info.h (info/info.h): New exern.
	(debug): New macros.
	(vinfo_debug, info_debug): New prototypes.
	(set_variable_to_value): Change the return type.
	* info/variables.c (set_variable_to_value): Compile
	unconditionally.  Return 0/-1 depending on the success/failure of
	the operation.
	* info/filesys.c: Print additional debugging info.
	* info/infomap.c: Check the return from set_variable_to_value.
	* doc/info-stnd.texi: Document new options.
	* doc/version.texi: Update.
	* doc/version-stnd.texi: Update.
	* NEWS: Update.

2013-04-07  Patrice Dumas  <pertusus@free.fr>

	* configure.ac: set DIFF_A_OPTION to -a, and not DIFF_U_OPTION.
	* tp/Texinfo/Convert/Plaintext.pm: do not consider an empty line
	at the end of a preformatted format as counting as an empty line
	in order to output an empty line following the preformatted format 
	too.  Karl report.
	* tp/Texinfo/Convert/DocBook.pm: add support for special docbook
	sectioning elements with special node names and @unnumbered. 
	Feature asked for by Aharon Robbins, syntax by Karl.

2013-03-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/indices.c (info_next_index_match): Fix improper string
	indexing. Based on report from Eli Zaretskii.

2013-03-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix \b[...\b] tag processing.

	* info/nodes.h (TAG) <content_cache>: New member.
	* info/nodes.c (get_nodes_of_info_file)
	(get_nodes_of_tags_table): Initialize TAG->content_cache.
	(info_node_of_file_buffer_tags): Use cached contents if
	available. Call tags_expand upon the first access to that
	node.
	(free_info_tag): Free content_cache.
	* info/tag.c (tag_image): Fix state machine.  Ignore '='s,
	unless in state_kw.
	(tags_expand): Change return value and signature. Allocate
	memory only if at least one tag is actually expanded.
	* info/tag.h (tags_expand): Change prototype.
	* info/filesys.c (filesys_read_info_file): Do not call
	tags_expand on the entire buffer.

2013-03-20  Karl Berry  <karl@gnu.org>

	Doc tweaks.
	* NEWS: more technalities about the macro-expansion incompatibility.
	* README-hacking: call change_perl_modules_version.sh for release.
	* doc/texinfo.txi: wording around PDF items.
	* doc/texinfo.tex: typos in comment.

2013-03-20  Eli Zaretskii  <eliz@gnu.org>

	* Makefile.am (SUBDIRS): If HOST_IS_WINDOWS, add 'info' to SUBDIRS
	even if HAVE_TERMLIBS is false.
	* configure.ac <have_termlib>: Don't bother warning on MinGW as
	well.

2013-03-20  Karl Berry  <karl@gnu.org>

	* man/Makefile.am (man_rule_0): set EXEEXT="" since it's
	no longer an executable.  Report from Eli, 20 Mar 2013 20:47:52.
	(mi_perl5lib): set up another variable to shorten source lines.

2013-03-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Parser.pm (_parse_texi): accept the same 
	character in @value as in @set.

2013-03-14  Karl Berry  <karl@gnu.org>

	* maintain/regenerate_cmd_tests.sh,
	* tests/run_parser_all.sh,
	* tests/many_input_files/tex_l2h.sh: use $0 in some diagnostics.

	* NEWS: mention switch from cvs to svn.
	* doc/texinfo.txi (Invoking @t{pod2texi}): svn url instead of cvs
	for Perl manual in Texinfo.
	* contrib/perldoc-all/perldoc-all.texi: likewise, and turn off
	all underfull/overfull messages since we can't do anything about them.
	* contrib/perldoc-all/README: 5.16.3.
	* contrib/perldoc-all/GNUmakefile (all): set save_size in
	environment to avoid TeX overflow.
	(install): new target.
	* doc/texinfo.tex (\nonfillstart): only reset to \hfuzz=12pt
	if it's less than that.

	* README-hacking: tweaks to release wording.

2013-03-12  Karl Berry  <karl@gnu.org>

	* Version 5.1.

2013-03-11  Patrice Dumas  <pertusus@free.fr>

	* tp/init/tex4ht.pm (tex4ht_process_command): correct
	the warning, it should also give the reason of the error.
	Follow-up on Benno Schulenberg report.

2013-03-08  Karl Berry  <karl@gnu.org>

	* pretest 5.0.91.

	* install-info/install-info.c (print_help): combine
	sentence for better translation.
	* tp/init/tex4ht.pm (tex4ht_process_command): omit :
	for consistency.
	Report from Benno Schulenberg, 08 Mar 2013 22:07:31.

	* util/texi2dvi: don't mention Debian specifically;
	I don't think tetex-bin has been the name for a while.

	* util/gendocs.sh: omit --split=node for the sake of pre-5.0
	installations.  Report to bug-gnulib from Martin von Gagern,
	08 Mar 2013 19:20:36.

2013-03-05  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Parser.pm (_close_current): close correctly stacks when
	closing $format_raw_commands.  Report from Mat Booth.

2013-03-02  Karl Berry  <karl@gnu.org>

	* pretest 5.0.90.

	* NEWS,
	* doc/texinfo.txi (Macro Details): behavior of newlines in macro
	definitions and line-delimited commands has changed.

2013-03-02  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Parser.pm: put the first line in 'pending' instead of 
	seeking back in the input stream.

2013-02-28  Patrice Dumas  <pertusus@free.fr>

	* tp/t/test_utils.pl: close generated files before doing the comparison.
	* tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/Convert/Info.pm:
	cache get_conf() results.  Convert node names only once.
	* tp/texi2any.pl, doc/texinfo.txi (Customization Variables and Options):
	two new formats, parse and structure that respectively do the parsing 
	phase, and the parsing and structuring phase, and no conversion.

2013-02-26  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Generating HTML, HTML CSS): xref to
	Customization Variables.  Suggestion from Vincent Belaiche.

2013-02-25  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Parser.pm: use tell to find the position of the 
	beginning of the line.
	Close line @-command with special @-commands if there is no comment
	ending the line.  Report from Eli Zaretskii on bug-texinfo,
	24 Feb 2013 17:53:15.
	* configure.ac, tp/defs.in, tp/tests/run_parser_all.sh:
	determine whether diff accepts -a and sets DIFF_A_OPTION to -a if so.

2013-02-24  Karl Berry  <karl@gnu.org>

	* tp/Makefile.am (install-exec-hook): rm old makeinfo,
	possibly a binary, before making the link.
	Report from Ken Moffat, 23 Feb 2013 21:31:33.

	* doc/texinfo.txi (Other Customization Variables): OPEN_ and
	CLOSE_QUOTE_SYMBOL now apply to Info too.
	(@t{@@code}): mention this.
	(@t{@@set @@value}): grudgingly mention that some non-alphanumerics
	sometimes work in @set names.

2013-02-24  Patrice Dumas  <pertusus@free.fr>

	* configure.ac, tp/defs.in, tp/tests/*/*.sh,
	tp/tests/run_parser_all.sh:
	determine whether diff accepts -u and sets DIFF_U_OPTION to -u if so.
	Report that HP-UX diff do not accept -u from Richard Lloyd
	bug-texinfo, 19 Feb 2013 15:56:41.

2013-02-23  Patrice Dumas  <pertusus@free.fr>

	* tp/t/input_files/sample_utf8.texi: avoid having two nodes differing
	only in case, for case-sensitve filesystems.
	Report in http://savannah.gnu.org/bugs/?38380.
	* tp/Makefile.am, tp/maintain/*: modularize and rename scripts
	associated to standalone modules handling.
	* tp/Texinfo/Convert/Plaintext.pm: use OPEN_QUOTE_SYMBOL and 
	CLOSE_QUOTE_SYMBOL.
	* tp/Texinfo/Parser.pm: allow more characters in flags.
	do not close a line after a special command @set...

2013-02-22  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (@t{@@set @@value}): mention that @set
	need not appear at the beginning of a line.
	(@t{@@enumerate}, @t{@@itemize}): clarify that at least
	one @item should be inside @itemize.
	
	* README-hacking: include potential CPAN update in release checks.

2013-02-22  Antonio Diaz Diaz  <ant_diaz@teleline.es>  (tiny change)

	* info/filesys.c (compress_suffixes): Add .lz/lzip.
	* install-info/install-info.c (open_possibly_compressed_file):
	Add lzip support.
	* doc/info-stnd.texi,
	* doc/texinfo.txi: mention it.
	bug-texinfo, 22 Feb 2013 19:08:02.

2013-02-22  Eli Zaretskii  <eliz@gnu.org>

	* install-info/ginstall-info.exe.manifest: new file.
	* install-info/Makefile.am (dist_bin_SCRIPTS) [HOST_IS_WINDOWS]:
	add it.  bug-texinfo, 19 Feb 2013 19:39:51.

	* info/pcterm.c (pc_initialize_terminal): Move prototype outside
	of w32_info_init to the file level.
	bug-texinfo, 19 Feb 2013 19:40:48.

2013-02-22  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Parser.pm: better handling of comments in @-commands
	with line specially handled (@set, @ifset, @unmacro...).
	Accept @set and @clear almost everywhere.
	Accept that @set and @clear are not at the beginning of a line.
	Do not warn for @end in style command, as it may be the @end of
	a conditional that is correct in that context.
	Improve error messages of @-commands with braces closed because
	of seeing a command before the closing brace.

2013-02-21  Karl Berry  <karl@gnu.org>

	* NEWS: mention incompatibilities of text outside @item
	and irregular sectioning trees.

2013-02-20  Patrice Dumas  <pertusus@free.fr>

	* Makeinfo.am, texi2html/test/*/Makefile.am, tp/tests/*/Makefile.am,
	tp/maintain/regenerate_file_lists.pl, tp/tests/many_input_files/*.sh,
	tp/tests/run_parser_all.sh, texi2html/test/run_*.sh, 
	texi2html/test/many_input_files/*.sh: adapt for SVN.
	* tp/MANIFEST: regenerate.
	* tp/Texinfo/Structuring.pm: lowering a section level is only a 
	warning.

2013-02-18  Karl Berry  <karl@gnu.org>  (tiny change)

	* info/info-utils (va_copy) [__hpux]: define for HP-UX,
	From Richard Lloyd, 18 Feb 2013 11:52:10.
	* system.h (TEXINFO_PRINTFLIKE) [! __GNUC__]: define to nothing.

2013-02-17  Karl Berry  <karl@gnu.org>

	* doc/refcard/txirefcard.tex: reduce to four pages again
	(by regretfully removing the Emacs section).

2013-02-16  Karl Berry  <karl@gnu.org>

	* Version 5.0.
	
	* doc/texinfo.txi: remove zyx placeholder.

2013-02-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/window.c (window_make_window): Initialize allocated
	memory.
	(string_to_node): Likewise.
	* info/filesys.c (filesys_read_info_file): Always terminate
	the contents with 0.
	Fix 700354@bugs.debian.org.

2013-02-12  Karl Berry  <karl@gnu.org>

	* pretest 4.13.97.

2013-02-10  Karl Berry  <karl@gnu.org>

	* info/tag.c (tag_found_keyword): new fn, including a check
	for the text buffer being realloc-ed, invalidating kw.  Sigh.
	(tag_image): call it (twice).

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

	* autogen.sh, tp/maintain/regenerate_cmd_tests.sh, tp/tests/*:
	Generate automatically test file scripts for each test in 
	tp/tests/*.
	* tp/Makefile.am: run directly tap tests in Makefile.am.

2013-02-09  Patrice Dumas  <pertusus@free.fr>

	* configure.ac, tp/Makefile.am, tp/maintain/regenerate_file_lists.pl:
	prepare for running directly tap tests in Makefile.am.

2013-02-07  Karl Berry  <karl@gnu.org>

	* contrib/booklet.mak: new contribution from John Darrington.

	* Pod-Simple-Texinfo/pod2texi.pl (preamble): back to inserting
	the default.
	* contrib/perldoc-all/GNUmakefile (pod2texi_args): omit it.

2013-02-04  Karl Berry  <karl@gnu.org>

	* pretest 4.13.96.

	* contrib/perldoc-all/GNUmakefile (distclean): new target.
	* Makefile.am (dist-hook): use it.

2013-02-03  Karl Berry  <karl@gnu.org>

	* contrib/perldoc-all: example making Texinfo from Perl's *.pod.
	* util/dir-example (Perl): add it.
	* util/gendocs.sh: add --source, --common, --split --no-ascii.
	Prettify output.
	* doc/Makefile.am (gendocs): use the version from our
	source hierarchy, since it's maintained here.

	* Pod-Simple-Texinfo/pod2texi.pl (preamble): null if making
	@include files.  More doc.
	* doc/texinfo.txi (Invoking pod2texi): new node.

2013-02-03  Karl Berry  <karl@gnu.org>

	* tp/Makefile.am: doc fix.
	* tp/maintain/regenerate_docstr.sh: do not depend on directories
	with their unpredictable timestamps.
	* tp/maintain/regenerate_file_lists.pl: copyright year update.

	* po_document/pl.po: new translation.
	* po_document/LINGUAS: add it.

2013-02-01  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (@normalturnoffactive): also reset -, so
	@code{@xref{-}} works.
	(\normaldash): rename from \realdash, for consistency.
	Change all uses.

2013-01-29  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Customization Files) <TOC_FILE>: is no more.

2013-01-29  Patrice Dumas  <pertusus@free.fr>

	* po/POTFILES.in, tp/init/latex2html.pm: mark translations
	for error messages in latex2html.pm, and add file to 
	po/POTFILES.in.

2013-01-28  Karl Berry  <karl@gnu.org>

	* pretest 4.13.95.

	* README-hacking: .po files might not be literal copies.
	texinfo_document is new TP domain.

	* build-aux/config.sub: srclist-update.

	* tp/Makefile.am (dist_converters_DATA): add
	Texinfo/Convert/IXIN.pm Texinfo/Convert/IXINSXML.pm.

2013-01-27  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Customization Variables): split node
	out from Other Cust Var.
	(Other Customization Variables): new TEXINFO_OUTPUT_FORMAT
	replaces the individual special-output-format variables.
	* doc/refcard/txivarcheck: only check uppercase
	variable names, and do output manual-only names.

	* man/pod2texi.1: new file, made with pod2man.
	* man/Makefile.am (man_MANS): add it.

2013-01-27  Patrice Dumas  <pertusus@free.fr>

	* tp/texi2any.pl, tp/Texinfo/Common.pm, tp/DebugTexinfo/DebugTree.pm,
	util/detexinfo: remove output specific customization variables.

2013-01-25  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Other Customization Variables)
	<TEXINFO_COLUMN_FOR_DESCRIPTION>: new.
	<TREE_TRANSFORMATIONS>: add indent_menu_descriptions.
	Also, use it to re-indent the menus and regenerate_master_menu.

2013-01-21  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Raw Formatter Commands): be more emphatic
	about some processing being done inside raw regions,
	and the resulting unpredictable effects when Texinfo-level
	things are done there.

2013-01-20  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Other Customization Variables)
	[TREE_TRANSFORMATIONS]: @ftable, text tweaks.
	(Top): update with texinfo-master-menu.

	* doc/info-stnd.texi: @t in node names, merge footnote text
	where reasonable.

2013-01-19  Patrice Dumas  <pertusus@free.fr>

	* util/texinfo.dtd: add number attribute for float and indexterm.

2013-01-19  Karl Berry  <karl@gnu.org>

	* pretest 4.13.94.
	
	* README-hacking: tersely describe release steps.

2013-01-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Customization Variables for Program Behavior)
	[TEXINFOSXML]: new output format.
	* tp/Makefile.am (dist_converters_DATA): add TexinfoSXML.pm.

2013-01-16  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/TexinfoXML.pm: replace tp/Texinfo/Convert/XML.pm.

2013-01-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Marking Text): remaining node names needing @t.

2013-01-15  Karl Berry  <karl@gnu.org>

	* po_document/LINGUAS: es.us-ascii is back, paperwork executed
	by Francisco Vila <paconet.org@gmail.com>.

	* doc/texinfo.txi: use @t instead of @code in node names,
	to avoid extraneous quotes.

2013-01-15  Patrice Dumas  <pertusus@free.fr>

	* autogen.sh: adapt to shorter regenerate_docstr.sh 
	and Makefile.docstr names.

2013-01-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Conditionally Visible Text,
	Defining New Texinfo Commands,
	Formatting and Printing Hardcopy,
	Creating an Info File): node names with @.
	Fix more xrefs for new names.

2013-01-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Special Insertions, Breaks, deffnx,
	documentencoding): node names with @, restructure.

	* po_document/LINGUAS (ja, es.us-ascii): remove.
	* tp/maintain/regenerate_docstr.sh: shorten name of
	regenerate_document_strings_make_rules.sh.
	* tp/Makefile.docstr: shorten name of generated file, too.
	* tp/Makefile.am: renames.

2013-01-12  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Internationalization of Document Strings):
	small changes.

2013-01-11  Karl Berry  <karl@gnu.org>

	* configure.ac (AC_PREREQ): remove, better to rely on
	AM_INIT_AUTOMAKE's implicit prereq.
	Suggestion from Stefano, 11 Jan 2013 12:12:53.

	* tp/tests/Makefile.am (long-check, all-check, tex-html-check):
	aliases for the names with s.

2013-01-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/window.c (calculate_line_starts): call window_line_map_init,
	19 Dec 2012 14:10:30 +0200

2013-01-08  Patrice Dumas  <pertusus@free.fr>

	* po_document/fr.us-ascii.po: update by Jean-Charles Malahieude,
	with additional edits.
	* doc/texinfo.txi (Internationalization of Strings), doc/draft_api.texi
	(Internationalization of Strings Function): re-add the text about
	translated strings in the manual keeping only the perl api information
	in draft_api.texi.

2013-01-08  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Lists and Tables, Floats): node names with @.

2013-01-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Cross References, Quotations and Examples):
	node names with @ throughout chapter.

2013-01-06  Karl Berry  <karl@gnu.org>

	* install-info/install-info.c (open_possibly_compressed_file):
	free in .gz case is wrong.

	* doc/texinfo.txi (Nodes): node names with @ throughout chapter.

	* doc/texinfo.txi (acronyn, Smallcaps): more about the problems of
	using them, and not recommending them.

2013-01-06  Patrice Dumas  <pertusus@free.fr>

	* configure.ac: prove is required for tp tests.

2013-01-05  Karl Berry  <karl@gnu.org>

	* install-info/install-info.c (open_possibly_compressed_file):
	free the original in the .gz and (found by Andreas Schwab, 05 Jan
	2013 12:28:05) .xz cases too.  Reindent other parts of fn correctly.

	* doc/texinfo.txi (Chapter Structuring): node names with @
	throughout chapter.

2013-01-05  Patrice Dumas  <pertusus@free.fr>

	* util/*.bat: remove spurious +, reported by Eli Z.

2013-01-04  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (end titlepage, setchapternewpage,
	headings on off, paragraphindent, exampleindent): continue
	conversion to node names with @.

2013-01-03  Thien-Thi Nguyen  <ttn@gnuvola.org>  (tiny change)

	* doc/texinfo.txi (Combining Indices):
	@synindex uses the "roman font for merged-from". 

2013-01-03  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (setfilename, settitle, copying, insertcopying,
	titlepage, titlefont center sp, title subtitle author,
	documentdescription, quotation, setfilename, settitle): continue
	conversion to node names with @.

2013-01-01  Karl Berry  <karl@gnu.org>

	* pretest 4.13.93.

	* util/Makefile.am (texinfo.cat): remove rule and references;
	not aware of anything using it, current rule fails distcheck.

	* util/tests: move the TeX-related tests (all unused) here
	from util/.

	* contrib: new directory; move contributed files from util/ there.

	* Pod-Simple-Texinfo/pod2texi.pl,
	* doc/texinfo.txi,
	* doc/refcard/txirefcard.tex,
	* info/info.c,
	* info/infokey.c,
	* install-info/install-info.c,
	* tp/texi2any.pl,
	* util/texi-elements-by-size,
	* util/texindex.c,
	* util/texi2dvi,
	* util/gendocs_template,
	* util/gendocs_template_min: 2013.

2013-01-01  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex: received official GPLv3 exception text for
	texinfo.tex (RT licensing #502113).
        Same wording / no change in permissions.

2012-12-31  Karl Berry  <karl@gnu.org>

	* install-info/install-info.c (): mention
	--add-once, --align, --calign, --maxwidth, --max-width,
	inadvertently omitted when implemented.
	Also don't mention removals working with --entry.
	Report from Benno Schulenberg, 26 Dec 2012 19:34:40.

2012-12-30  Eli Zaretskii  <eliz@gnu.org>

	* configure.ac: Use $host, not $target, to detect MS-Windows
	builds, and set HOST_IS_WINDOWS if so.

	* util/Makefile.am (bin_SCRIPTS): Decide whether to install
	Windows batch files using HOST_IS_WINDOWS.

2012-12-29  Karl Berry  <karl@gnu.org>

	* util/htmlxref.cnf (gmp): use up-to-date version on gmplib.org.

	* util/srclist.txt (missing): sync from $AUTOMAKE.
	
2012-12-29  gettextize  <bug-gnu-gettext@gnu.org>

	* gnulib/m4/po.m4: Upgrade to gettext-0.18.2.
	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.18.2.

2012-12-29  Patrice Dumas  <pertusus@free.fr>

	* util/Makefile.am (texinfo.cat): use $(TEXINFO_DTD_VERSION) instead
	of @VERSION@.  Report from Thien-Thi Nguyen.

2012-12-22  Karl Berry  <karl@gnu.org>

	* util/Makefile.am (EXTRA_DIST): add *.bat.  Report from Eli,
	22 Dec 2012 17:33:58.

2012-12-19  Patrice Dumas  <pertusus@free.fr>

	* configure.ac, tp/Texinfo/*, tp/t/*: use the correct next version 
	number for DTD and in other places.

2012-12-17  Karl Berry  <karl@gnu.org>

	* pretest 4.13.92.

2012-12-15  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: use "sectioning" as the general term
	in a few places.
	(Other Customization Variables) <TREE_TRANSFORMATIONS>: more
	on default.

2012-12-11  Eli Zaretskii  <eliz@gnu.org>

	* configure.ac (TGT_IS_WINDOWS): New conditional.
	* util/Makefile.am (bin_SCRIPTS) [TGT_IS_WINDOWS]: add Windows
	batch files to bin_SCRIPTS.

2012-12-14  Ineiev  <ineiev@gmail.com>  (tiny change)

	* configure.ac (HAVE_TERMLIBS): new conditional.  End with
	repeated warning about no terminal library for visibility.
	* Makefile.am (SUBDIRS) [HAVE_TERMLIBS]: only include info/ if
	new conditional is true.
	* man/Makefile.am (man_MANS) [HAVE_TERMLIBS]: likewise for making
	info.1 and infokey.1.

2012-12-14  Thien-Thi Nguyen  <ttn@gnuvola.org>  (tiny change)

	* doc/texinfo.txi (Three Arguments):
	Add @findex xrefautomaticsectiontitle.

2012-12-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Other Customization Variables): edit
	wording of defaults, etc.

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

	* configure.ac, tp/Makefile.am, tp/texi2any.pl, tp/Texinfo/Common.pm, 
	tp/Texinfo/Convert/XML.pm, tp/maintain/catalog.xml.in,
	tp/t/test_utils.pl,
	doc/texinfo.txi (Other Customization Variables):
	Add a new configure variable TEXINFO_DTD_VERSION that holds the version
	of the dtd.  Add the corresponding customization variable in tp/.

2012-12-08  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (Command Contexts): @verb is not accepted in 
	simple text commands and sectioning commands.

2012-12-02  Karl Berry  <karl@gnu.org>

	* configure.ac (TERMLIB_VARIANTS): try tinfo first.
	Suggestion from Andreas Schwab, 02 Dec 2012 10:00:44.

2012-12-02  Colin Watson  <cjwatson@ubuntu.com>

	Build gnulib/lib directory in native-tools pass when
	cross-compiling (bug #37852).
	* Makefile.am (SUBDIRS) [TOOLS_ONLY]: Add gnulib/lib.

2012-12-02  Karl Berry  <karl@gnu.org>

	* install-info/tests/defs.in (TMPDIR): define if not defined.

2012-12-02  Patrice Dumas  <pertusus@free.fr>

	* configure.ac: remove gnulib module regex snippet, it is already in 
	gnulib/m4/gnulib-comp.m4.
	* configure.ac, tp/Texinfo/Convert/Unicode.pm: check that Encode is
	available, and use perl >= 5.7.3, required for Encode.  Report from 
	Stefano Lattarini.

2012-12-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix bug #37822 (incomplete redraw of screen).

	* info/display.c (display_scroll_display): Fix a "fencepost"
	error when scrolling down.
	* info/terminal.c: Improve conditional.

2012-12-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix cursor positioning after index searches (bug #37823).

	* info/window.h (WINDOW): Use size_t instead of int.
	(log_line_no): New member.
	(process_node_text): Change signature.
	* info/window.c (window_new_screen_size,recalculate_line_starts)
	(window_toggle_wrap,window_delete_window): Handle the
	log_line_no array.
	(calc_closure_expand): New static function.
	(_calc_line_starts): Update log_line_no. Use calc_closure_expand
	instead of the add_pointer_to_array macro.
	(calculate_line_starts): Fill in log_line_no.
	(window_log_to_phys_line): New function.
	(process_node_text): Keep track of logical line numbers.
	* info/display.c (display_node_text): Change signature.
	* info/indices.c (info_next_index_match): Convert logical line
	number to physical line.

	* info/tag.c (tags_expand): Remove unused variables.
	(handle_tag): Fix return type.
	* info/tag.h (handle_tag): Fix return type.

2012-11-30  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (Invoking texi2any), tp/texi2any.pl: add -c as an
	alias for --set-customization-variable (Karl idea).
	* doc/texinfo.txi (Other Customization Variables): explain default 
	values for customization variables.

2012-11-30  Karl Berry  <karl@gnu.org>

	* install-info/tests/defs.in (mktemp): define minimal
	replacement if not found in PATH.  It is lacking on AIX 6 (Ineiev)
	and mingw (Eli).

2012-11-28  Karl Berry  <karl@gnu.org>

	* install-info/tests/defs.in (path_spec, EGREP): need these
	for findprog.

2012-11-26  Karl Berry  <karl@gnu.org>

	* pretest 4.13.91.

	* configure.ac: invoke gl_REGEX, after
	gnulib-tool --add-import regex.  This will now be used on
	all systems except recent-enough libc.

	* doc/texinfo.txi (Command Syntax): Explicitly mention
	whitespace after @-command names being (usually) ignored.

	* doc/texinfo.txi (Not Ending a Sentence): Attempt
	to document the sentence-ending heuristic more clearly.
	Suggestion from Eli Zaretskii in <http://bugs.gnu.org/12973#14>,
	draft from Paul Eggert in bug-texinfo 24 Nov 2012 18:02:27.

	* install-info/defs.in (findprog): new fn, from texi2dvi.
	* install-info/tests/ii-0050-test,
	* install-info/tests/ii-0041-test: use it to check for zdiff
	(not available on bare Solaris) and skip tests if needed.

2012-11-25  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: consistently use "uppercase" and "lowercase",
	rather than with spaces or dashes.
	
	* system.h (const): do not #undef around gettext.h.
	Suggested by Eli.  We'll see.

2012-11-16  Eli Zaretskii  <eliz@gnu.org>
	
	* info/pcterm.c (gettextinfo): exit rather than xexit.
	(tputs, tgoto, tgetent): use const.
	* info/session.c [!FIONREAD]: require F_GETFL and F_SETFL as well
	as O_NDELAY for this branch.
	* info/terminal.c (tputs) [! HAVE_TERMCAP_H]: declare puts as
	returning int.

2012-11-23  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (makeinfo Pointer Creation): be more
	explicit about what to do.  Suggestion from Richard Jackson,
	help-texinfo 18 Feb 2003 23:54:07.

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

	* */*.pl */Makefile.am: use #! /usr/bin/env perl for shebangs in case
	perl is not in /usr/bin.
	Subbstitute $(PERL) in the shebang for scripts that are modified
	using configure generated values.
	* man/Makefile.am: remove $(srcdir) from targets.

2012-11-20  Patrice Dumas  <pertusus@free.fr>

	* Texinfo/Common.pm, Texinfo/Parser.pm, 
	doc/texinfo.txi (Other Customization Variables): if 
	IGNORE_SPACE_AFTER_BRACED_COMMAND_NAME is set (the default case),
	spaces after an @-command name that take braces are ignored.
	Report from John Darrington.

2012-11-17  Patrice Dumas  <pertusus@free.fr>

	* configure.ac, Pod-Simple-Texinfo/Makefile.am, doc/tp_api/Makefile.am:
	new conditionals, BUILD_PERL_API_TEXI and POD_SIMPLE_TEXINFO_TESTS to
	avoid rebuilding the texinfo files from pod documentnation if 
	Pod::Simple::PullParser, and avoid running the Pod-Simple-Texinfo tests
	if Test::More is not present.

2012-11-17  Sergey Poznyakoff  <gray@gnu.org>

	Use the text attribute to represent "image" tag.
	Provide a general-purpose solution, so new tags can be easily
	added.

	This fixes bug #37686.

	* info/tag.c: New file
	* info/tag.h: New file
	* info/Makefile.am: Add new files.
	* info/dir.c: Use size_t instead of long to represent file size.
	* info/display.c (handle_tag)
	(handle_tag_start,handle_tag_end): Remove.
	* info/display.h (handle_tag): Remove.
	* info/filesys.c (filesys_read_info_file): Use size_t instead of
	long to represent file sizes and offsets.
	Call tags_expand to expand info tags.
	(filesys_read_compressed): Do not call convert_eols, leave that
	for filesys_read_info_file.
	* info/filesys.h (filesys_read_info_file)
	(filesys_read_compressed): Use size_t instead of
        long to represent file sizes and offsets.
	* info/info-utils.c (text_buffer_alloc): New function.
	* info/info-utils.h (MIN_TEXT_BUF_ALLOC): New define.
	(text_buffer_alloc): New proto.
	(text_buffer_reset,text_buffer_base)
	(text_buffer_off): New macros.
	* info/nodes.c: Use size_t instead of long to represent file sizes
	and offsets.
	* info/nodes.h (FILE_BUFFER) <filesize>: Change type to size_t.
	* NEWS: Update.
	
2012-11-16  Eli Zaretskii  <eliz@gnu.org>

	Support for MS-Windows screen and keyboard in Info.
	(bug-texinfo 17 Jan 2012 08:41:10 +0200)

	* system.h (SET_SCREEN_SIZE_HELPER) [__MINGW32__]: Define.

	* info/tilde.c (tilde_expand_word) [__MINGW32__]: Don't call
	getpwuid or getpwnam; instead, consider "." as "home" if HOME is
	not set in the environment.  Support tilde_expansion_failure_hook.

	* info/terminal.c [_WIN32]: Include pcterm.h.
	(terminal_initialize_terminal) [__MINGW32__]: Don't access
	`ospeed'.
	(terminal_prep_terminal, terminal_unprep_terminal) [__MINGW32__]:
	Ifdef away the TIOC code for Windows.

	* info/termdep.h [__MINGW32__]: Don't include sgtty.h.
	[_WIN32]: Add a prototype for `sleep'.

	* info/signals.c (redisplay_after_signal)
	(reset_info_window_sizes): Make these 2 functions extern from
	static, as they are called on MS-Windows from other files.

	* info/session.c (read) [__MINGW32__]: Redirect read and _read to
	w32_read.
	(info_gather_typeahead) [__MINGW32__]: Call w32_chars_avail to
	find out how many typeahead is available.

	* info/pcterm.c <struct text_info, struct termios> [_WIN32]:
	Definitions for the MS-Windows build.
	(w32_info_prep, w32_info_unprep, w32_cleanup, w32_info_init)
	(gettextinfo, textattr, textmode, ScreenGetCursor)
	(ScreenSetCursor, ScreenClear, clreol, ScreenVisualBell)
	(movetext, ScreenRows, ScreenCols, _set_screen_lines)
	(w32_set_screen_dimensions) [_WIN32]: New; screen output and
	cursor control functions for MS-Windows.
	(sleep, w32_our_tty, define_seq, w32keyseq, w32_kbd_read)
	(w32_chars_avail, w32_read) [_WIN32]: New; keyboard input
	functions and their subroutines for MS-Windows.
	(pc_prep_terminal) [_WIN32]: Call w32_info_prep.
	(pc_unprep_terminal) [_WIN32]: Call w32_info_unprep.  Restore the
	screen buffer size to what we found on startup.
	(pc_initialize_terminal) [_WIN32]: Let term_name be "w32console".
	Condition MSDOS key definitions on __MSDOS__.
	(kill) [_WIN32]: Don't clear the screen and don't write "stopped"
	message on MS-Windows.  Special suspend code for MS-Windows.

	* info/man.c [__MINGW32__]: Don't include sys/ioctl.h.

	Fix a crash in viewing man pages.

	* info/man.c (get_manpage_contents) [!PIPE_USE_FORK]: Fix a
	crasher due to addition of "-a" to the man command line arguments.

	Miscellaneous MS-Windows related fixes.

	* info/infokey.c (main): On MS-Windows, consider the current
	directory a "home" if HOME is not defined in the environment.

	* info/infomap.c (fetch_user_maps): Likewise.

	* info/info.c <option long_options>: Enable the speech-friendly
	options on MS-Windows as well.
	(main): Likewise.

	* info/dir.c (new_dir_file_p): Don't optimize the test for a new
	file when the inode is zero (MS-Windows).

2012-11-16  Karl Berry  <karl@gnu.org>

	* pretest 4.13.90.
	
	* tp/Makefile.am,
	* tp/maintain/regenerate_document_strings_make_rules.sh,
	* tp/tests/run_parser_all.sh: avoid \+ with sed, not
	supported by BSD sed.

2012-11-16  Patrice Dumas  <pertusus@free.fr>

	* configure.ac, tp/defs.in, tp/maintain/all_tests.sh, 
	tp/tests/run_parser_all.sh, tp/tests/many_input_files/indices.sh,
	tp/tests/many_input_files/tex_l2h.sh, tp/tests/many_input_files/tex_t4ht.sh:
	Use PERL from configure, with the value put in tp/defs.in by configure
	instead of tp/tests/path_separator.in.
	* tp/tests/path_separator.in: remove.
	* tp/tests/nested_formats/Makefile.am: do not distribute 
	generate_all_texi.pl.

2012-11-13  Karl Berry  <karl@gnu.org>

	* configure.ac (PERL): check for it up front.
	Will anyone want to build Texinfo without makeinfo?  We'll see.
	
	* doc/Makefile.am (EXTRA_DIST): missed \ at end of variable list.
	Why wasn't this an error with GNU make?  Didn't investigate.

	* tp/maintain/regenerate_file_list.pl,
	* tp/maintain/regenerate_document_strings_make_rules.sh: do not
	generate rules using $<.

	* doc/Makefile.am (wwwdoc-build, wwwdoc-install): new targets
	for updating the manuals on the web.
	
	* doc/texinfo.txi (makeinfo options): lowercase o options
	in compatibility @anchor, since that's what the 4.13 manual had.

	* tp/tests/tex_html_tests.sh, long_tests.sh, parser_base_tests:
	avoid [ ... ] and test ... -a ...
	* install-info/tests/*.test: use -x for better logging.
	Suggestion from Stefano, texinfo-devel 11 Nov 2012 10:43:02.

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

	* */Makefile.am: add $(srcdir) for out of source build when
	needed.
	* doc/tp_api/Makefile.am: use a variable instead of $^ which is
	not portable.
	* tp/.cvsignore: ignore *.trs and *.log.
	* TODO: update
	* tp/tests/*/*.sh, tp/tests/run_parser_all.sh: do a chmod on 
	files copied from the source directory, for instance to have
	them removed by clean targets.

2012-11-10  Karl Berry  <karl@gnu.org>

	* */Makefile.am: laboriously+manually+redundantly expand $< in
	non-suffix rule.

	* install-info/tests/defs.in: set CDPATH before unsetting,
	to placate BSD sh.  From Stefano.
	* install-info/tests/ii-0053-test: avoid -e.

	* configure.ac (AM_INIT_AUTOMAKE): use parallel-tests,
	as recommended by Stefano Lattarini.  Require automake 1.12.
	* build-aux/test-driver: new file to support it.
	* .cvsignore: ignore *.trs and *.log in test dirs.

2012-11-09  Karl Berry  <karl@gnu.org>

	* configure.ac: remove MKDIR_P fallback.
	* texi2html/Makefile.am,
	* tp/Makefile.am: consistently use $(mkdir_p) rather than $(MKDIR_P).
	
	* Run gnulib-tool --import, srclist.txi.

2012-11-08  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (@indentedblock): new node for new command.
	(Quotations and Examples, small): mention @smallindentedblock.
	(Command List): include these two new commands.
	* doc/refcard/txirefcard.tex: likewise.
	* NEWS: likewise.
	* doc/texinfo.tex (\indentedblockstart, \Eindentedblock,
	\Esmallindentedblock): new macros to implement them.
	(\quotationstart): can call \indentedblockstart now.

2012-10-27  Karl Berry  <karl@gnu.org>

	* util/gendocs.sh: remove PostScript generation, redundant with 
	(and worse than) pdf, these days.
	* util/gendocs_template,
	* util/gendocs_template_min,

2012-10-27  Akim Demaille  <akim@lrde.epita.fr>
        and Karl Berry  <karl@gnu.org>

	* util/gendocs.sh (copy_images): new function, Perl code to
	extract images from output HTML and copy them to the output dir.
	(mail of 26 Oct 2012 09:39:53).

2012-09-23  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Other Customization Variables): CHECK_HTMLXREF
	not set by default; other tweaks.

2012-09-21  Karl Berry  <karl@gnu.org>

	* tp/tests/parser_tests.sh,
	* tp/tests/run_parser_all.sh: export var=val not portable.

2012-09-21  Karl Berry  <karl@gnu.org>

	* doc/refcard/Makefile (ccheck, vcheck): pass txi_check_args
	(from environment), for my cron.
	* doc/refcard/ccheck: recognize --no-common to output only problems.
	* doc/refcard/vcheck: likewise, and omit OUTPUT_PERL_ENCODING from
	check.
	* doc/texinfo.txi (Other Customization Variables): document
	remaining variables.

2012-09-15  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (texi2any Output Customization): remove 
	anything related to API description, put it in 
	draft_api.texi, it is not stable enough for now.

2012-09-15  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Print with @code{lpr}),
	(Format with @code{texi2dvi}),
	(@code{@@pagesizes}): use @code in node names.

2012-09-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Inline Conditionals): rename from Inline
	Conditional Commands.
	(Testing for Texinfo Commands): new node describing
	@ifcommanddefined, @ifcommandnotdefined, txicommandconditionals.
	* doc/refcard/txicmdcheck: handle checking for them.
	* doc/refcard/txirefcard.tex: list them.
	* NEWS: likewise.

2012-09-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Macro Details): yet more sticky points
	regarding commas and multiple-argument macros.
	Mail from Patrice, 25 Jul 2012 10:21:28.

2012-09-13  Patrice Dumas  <pertusus@free.fr>

	* doc/refcard/txivarcheck (read_tp): filter out customization 
	variables that are internal for the Parser and documented
	in the Parser, and variables that may only be set in
	init files as they are arrays or hashes.

2012-09-12  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\markupsetuplqkbd, \markupsetuprqkbd):
	use \markupsetcodequoteleft and right, like all the others.
        (\markupsetnoligaturesquoteleft): no longer needed.
        (\kbdsub): rename from \kbdfoo, reformat.
        Other doc tweaks.
	* doc/texinfo.txi (Inserting Quote Characters): @kbd now also
	respects @codequote*.
	Suggestion from Patrice, texinfo-devel 14 Aug 2012 00:03:54.

	* doc/texinfo.txi (verb): make example input match output.
	Report from christophe.jarry, 12 Sep 2012 13:49:27.

	* doc/refcard/txivarcheck: new script to check customization
	variables implemented vs. documented, similar to txicmdcheck.

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

	* util/texinfo.dtd: update.

2012-09-10  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Overview): mention txixml2texi.

	* doc/texinfo.txi (Functions Commands): recommend @code rather
	than @var to avoid en-dashes and em-dashes (and Spanish ligatures)
	in formal parameter names containing 2+ hyphens.

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

	* util/Makefile.am, util/txixml2texi.pl, TODO: add a new script,
	txixml2texi that convert Texinfo XML to Texinfo code.

2012-09-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (acronym): mention likely desirability
	of not using it, and that is the recommendation for GNU manuals.
	Suggestion from John Darrington, 24 Aug 2012 06:53:29.

	* doc/texinfo.txi (table): new commands defined with @macro
	don't usually work as the argument to @table.
	(@@asis): Use @code{@@asis} for anchor name.

2012-09-08  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (txicmd): skip putting @-commands in a new
	index, just keep using fn and put up with the @def... example
	identifiers showing up there.
	(throughout): consistently use whole-manual cross references.

2012-09-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (title subtitle author): @* breaks in the title
	will be respected in HTML unless conditionalized.

	* doc/texinfo.txi: "an @code{@@", not "a" throughout; ditto @samp.

2012-09-06  Patrice Dumas  <pertusus@free.fr>
        and Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: updates throughout.
	Use @. where needed.

2012-09-05  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\chapheadingzzz, \chapmacro): use
	\raggedtitlesettings, do more to avoid breaks after.
	(\unnchfopen, \centerchfopen): likewise, although these chapter
	styles are not used and not supported.

2012-09-04  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\raggedtitlesettings): new macro.
	(\title): call it, and typeset the title inside a \vbox,
	so a long title can be broken with @*
	(\*): \unskip to remove preceding glue, since we're going
	to break the line anyway.  Can make a difference especially inside
	\title.

2012-09-04  Patrice Dumas  <pertusus@free.fr>
        and Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Quotations and Examples): general updates.

2012-09-03  Patrice Dumas  <pertusus@free.fr>
        and Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Breaks, Insertions): general updates.

2012-09-02  Karl Berry  <karl@gnu.org>

	* util/gendocs.sh (--info): new option, defaults to --no-split
	since split Info files are unlikely to be needed these days.
	Suggestion from Akim Demaille, bug-automake mail 31 Aug 2012 19:03:16.

2012-08-28  Patrice Dumas  <pertusus@free.fr>
        and Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Definition Commands): general updates.

2012-08-26  Patrice Dumas  <pertusus@free.fr>
        and Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Internationalization): general updates.

2012-08-25  Patrice Dumas  <pertusus@free.fr>
        and Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Conditionals, Defining New Texinfo Commands,
	Include Files, Hardcopy): general updates throughout the chapters.

2012-08-24  Patrice Dumas  <pertusus@free.fr>
        and Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Generic Translator texi2any): general
	updates throughout the chapter.

2012-08-23  Patrice Dumas  <pertusus@free.fr>
        and Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Creating and Installing Info Files): general
	updates throughout the chapter.

2012-08-13  Werner Lemberg  <wl@gnu.org>

	* doc/texinfo.tex (\ecfont): test for monospace,
	so we can get a typewriter thorn, etc.
	
2012-08-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Xref Command Expansion): U+21A6
	for @expansion{}.  Other unrelated text tweaks.

2012-07-29  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\file, \option): \let to \code, not \samp.
	(\indicateurl): \let to \samp, not \code.
	* doc/texinfo.txi (env, file, option): document this.

2012-07-22  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Xref 8-bit Character Expansion): English.

2012-07-22  Per Bothner  <per@bothner.com>

	* tp/Texinfo/Convert/DocBook.pm: Add phrase element around category,
	for easier processing of the output.

2012-07-14  Andreas Schwab  <schwab@linux-m68k.org>

	* info/info-utils.c (text_buffer_vprintf): Create a copy of `ap' in
	the loop to avoid use after destruction.
	Report from Patrice, 13 Jul 2012 23:31:10.

2012-07-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Xref Command Expansion): Clarify/unify
	treatment of @acronym, @abbr, @email, @image.
	(texinfo-devel 8 Jul 2012 09:38:25)

2012-07-06  Karl Berry  <karl@gnu.org>

	Avoid "may be used uninitialized" warnings from gcc.
	* info/infokey.c (compile): initialize seqstate.
	* info/window.c (process_node_text): initialize carried_over_len,
	carried_over_count, replen.
	(Not sure if they actually can be used uninitialized, but seems
	harmless to initialize them and avoid the warnings, anyway.)

	* doc/texinfo.tex (@ifcommanddefined, @ifcommandnotdefined): new
	prospective conditionals, not confirmed
	(txicommandconditionals): implicitly @set this variable.

	* doc/texinfo.txi (Node Line Requirements): discuss commands in
	node names.
	(Two Paths): merge into Texinfo Document Structure, with @anchor.
	(Node Line Tips): merge into Node Names, with anchor.
	(Node Menu Illustration): try making last in chapter.

2012-06-19  Patrice Dumas  <pertusus@free.fr>
        and Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Beginning a File): general updates
	throughout the chapter.

2012-07-04  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Software Copying Permissions): remove node.
	(Document Permissions): add replacement text.
	Suggestion from Patrice.

2012-07-03  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Overview): general updates
	throughout the chapter, most suggested by Patrice,
	texinfo-devel 21 May 2012 01:01:24.
	(Texinfo Document Structure): new section/node.

2012-06-29  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (top command): new node, merging the
	mostly-redundant information from the nodes:
	(makeinfo top command, makeinfo top): remove these.
	Leave anchors with the old node names behind.

2012-06-19  Patrice Dumas  <pertusus@free.fr>
        and Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Chapter Structuring): general updates
	throughout the chapter.

2012-06-19  Patrice Dumas  <pertusus@free.fr>
        and Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Nodes): general updates throughout
	the chapter.

2012-06-19  Patrice Dumas  <pertusus@free.fr>
        and Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Menus): general updates throughout
	the chapter.

2012-06-15  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: remove all now-unnecessary @refill's
	and @ignore blocks relating to the long-gone @ctrl, @br, etc.,
	for source clarity.

2012-06-14  Patrice Dumas  <pertusus@free.fr>
        and Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Cross References): remove @refill,
	take better account of HTML, general updates throughout
	the chapter.

2012-06-11  Karl Berry  <karl@gnu.org>

	* util/htmlxref.cnf (libcdio, cd-text, sharutils): add.
	Found by Trevis Rothwell.

	* info/*.c,
	* util/texindex.c,
	* install-info/install-info.c: use exit with EXIT_SUCCESS or
	EXIT_FAILURE instead of xexit.
	* lib: no longer need this directory.
	* */Makefile.am, Makefile, configure.ac: do not refer to it.

2012-06-05  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\txiescapepdf): check \pdfescapestring
	against \thisisundefined, not \relax.  Of course.
	Bug report from Marco Maggi, 05 Jun 2012 12:07:02.

2012-05-27  Patrice Dumas  <pertusus@free.fr>

	* README: remove the reference to the removed INTRODUCTION file.

2012-05-25  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Inserting a Backslash): use @backslashchar{}
	in the example, not @comma{}.
	Report from Werner, 24 May 2012 12:56:58.

2012-05-22  Karl Berry  <karl@gnu.org>

	* README: updates for texi2any.
	
	* INTRODUCTION: remove; seems unnecessary with all else now.
	* Makefile.am (EXTRA_DIST): remove it.

2012-05-17  Patrice Dumas  <pertusus@free.fr>

	* doc/Makefile.am (TXI_XLATE): correct txi-nl.tex name that was
	wrongly set to tex-nl.tex.

2012-05-16  Andreas Schwab  <schwab@linux-m68k.org>

	* doc/texinfo.tex (\skipspaces): Remove reference to undefined
	macro \p.

2012-05-15  Werner Lemberg  <wl@gnu.org>

	* doc/txi-hu.tex: Hungarian translation for texinfo.tex.
	Taken from LilyPond documentation.

	* doc/Makefile.am (TXI_XLATE): add txi-hu.tex.

	* NEWS: Mention it.

2012-04-24  Karl Berry  <karl@gnu.org>

	* doc/Makefile.am (TXI_XLATE): add txi-nn.tex.

	* doc/refcard/txirefcard.tex: node pointers are optional.

	* doc/texinfo.txi (Node Line Requirements): don't use the non-word
	"nodename".  Internal whitespace is collapsed.
	
	* doc/texinfo.txi (#line and TeX, Use TeX, Obtaining TeX,
	Preparing for TeX, Debugging with TeX): use @TeX{} in node names
	and thus simplify cross references.  Does not change Info node names,
	hence no need to leave @anchors behind.
	
	* doc/texinfo.txi: update master menu.

2012-04-23  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Output Formats): add PostScript item.
	(Invoking texi2any): add options passed to texi2dvi.
	(texi2any Printed Output): new node.
	(Format with texi2dvi): mention --ps and --dvipdf.

2012-04-22  Karl Berry  <karl@gnu.org>

	* README-hacking: rename from README.dev, for more consistency.

2012-04-21  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (Other Configuration Variables): add
	BASEFILENAME_LENGTH.
	(HTML Xref Link Basics): explain that file names 
	are truncated.
	* tp/Texinfo/Common.pm, tp/Texinfo/Convert/Converter.pm,
	tp/Texinfo/Convert/HTML.pm (_id_to_filename): add
	IBASEFILENAME_LENGTH and use it to truncate base
	filenames.
	* tp/Texinfo/Parser.pm tp/t/*: @verb is not accepted in 
	simple text commands and sectioning commands.

2012-04-20  Julian Gilbey  <julian@d-and-j.net>  (tiny change)

	* info/footnotes.c,
	* info/infodoc.c,
	* info/infomap.c,
	* info/session.c: use "%s" as first arg to info_error,
	even with constant strings, to pacify -Wformat-security.
	http://bugs.debian.org/656659.

2012-04-20  Karl Berry  <karl@gnu.org>

	* util/texi2dvi: more doc on --dvipdf, spelling.
	* tp/texi2any.pl: new option --dvipdf.

	* doc/texinfo.txi (Invoking texi2any) <--macro-expand>:
	mention that it implies passing -E to texi2dvi, when requested.
	(Invoking texi2any): sync with current --help, except for texi2dvi
	options.

2012-04-19  Patrice Dumas  <pertusus@free.fr>

	* configure.ac, tp/tests/*: move tex4ht and latex2html related tests to
	long checks.

2012-04-18  Karl Berry  <karl@gnu.org>

	* install-info/README: Debian now uses our install-info,
	per Norbert Preining.  Yay!

2012-04-17  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Tips): mention texi-elements-by-size (for usage).
	(Reference Implementation): likewise (for an example); also texi2html.
	* util/texi-elements-by-size: allow invocation from anywhere.
	{ on same line as sub?

2012-04-16  Karl Berry  <karl@gnu.org>

	* util/texi-elements-by-size: renamed from
	texi_sort_elements_count.pl and texinfo configure variables removed.

2012-04-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Command Contexts): clarify @shortcaption, etc.
	(Top Node Naming): revisit whole-manual xref text.
	(Other Configuration Variables) [KEEP_TOP_EXTERNAL_REF]: Englishing.

	* tp/texi2any.pl (configured_version): add +dev to distinguish
	from installed.

2012-04-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	info: improve parsing of node names containing dots.

	References to node names containing dots are followed correctly,
	if they appear in menus or in single-argument xrefs (which produce
	references followed by double-column).

	* info-utils.h (PARSE_NODE_DFLT, PARSE_NODE_SKIP_NEWLINES)
	(PARSE_NODE_VERBATIM, PARSE_NODE_START): New constants.
	* info/info-utils.c (info_parse_node): Change the meaning of the
	second argument.  All uses updated.
	(save_string, saven_string): Allow for string_size_p==NULL.
	* info/nodes.c (info_get_node): Take three arguments, the last
	one instructing how to parse the node name.
	All uses updated.
	* info/nodes.h (info_get_node): Change signature.
	* info/search.c (skip_node_characters): Second argument controls
	what characters can end the node name.
	All uses updated.
	* info/search.h (DONT_SKIP_NEWLINES,SKIP_NEWLINES): Removed.
	All uses changed.

2012-04-10  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (History): amend texi2any description per Patrice.
	(Reference Implementation): new node with the rationale/role text.

	* doc/texinfo.txi (Command Contexts): new node, giving a guide
	(essentially from Patrice) as to which commands can be used where.

2012-04-08  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (node): explain further that TeX requires both a
	@node line and a sectioning command to make cross references.

2012-04-06  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\crossmanualxref): new macro.
	(\xrefX): call it, to handle cross-manual xrefs, whether with a
	printed manual name (arg 5) or just an info filename (arg 4).
	(\infofilenamebox, \infofilename): new macros.
	(\toprefbox): rename from \topbox.

2012-03-31  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\commondummiesnofonts): add \inforef.

	* README.dev: more about running texi2any.pl from development.

2012-03-30  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (\indexnofonts): sort keys for @lbracechar
	and @rbracechar.
	(\commondummies): handle @lbracechar @rbracechar @abbr @image.
	All found by Patrice, tests 5, 6, 22, 24, 26.

2012-03-11  Samuel Bronson  <naesten@gmail.com>  (tiny change)

	* doc/texinfo.tex (\getfilename): \edef the argument first
	so @value can be expanded.
	(\xrefX): call \makevalueexpandable.
	#35793, bug-texinfo 11 Mar 2012 21:17:45.

2012-02-28  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\center): use \centersub rather than \next.
	(\centerV): reinsert \parskip if after a section heading.
	(\imagexxx): if inside \centerV, put the image inside a \vbox.
	Report from Vincent Belaiche.

2012-02-26  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (Configuration Variables), tp/Texinfo/Common.pm,
	tp/texi2any.pl, TODO: new transformations 
	insert_nodes_for_sectioning_commands, complete_tree_nodes_menus
	and regenerate_master_menu.

2012-02-23  Patrice Dumas  <pertusus@free.fr>

	* configure.ac, tp/t/test_utils.pl, tp/README: use Storable::dclone 
	instead of Clone::clone since it is in core perl since 5.007003.
	Also it seemed more faster when I checked.

2012-02-23  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Output Formats): expand the text on writing
	new back-ends vs. a new programs; idea and basis from Patrice.

2012-02-22  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (#line Syntax Details): update for new regexp,
	requiring the "filename" be present with trailing flags.
	Not 100% sure about cpp's behavior here, but that's what
	we've observed so far.

2012-02-21  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: more on alternate implementations.

2012-02-20  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (texi2html): new node, describing past,
	present, future of texi2html.

	* doc/texinfo.txi (Obtaining TeX): update a bit, keep
	www.gnu.org/prep/FTP in sync.

	* NEWS, doc/texinfo.txi (Generic Translator texi2any): clarify
	that there are no differences based on the program name (makeinfo
	vs. texi2any).  Also, call it "the" translator instead of just "a"
	and explain why.

2012-02-17  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (Configuration Variables): update DEBUG and SHORTEXTN
	to be in line with current meanings.  Document the 
	move_index_entries_after_items transformation.

2012-02-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (#line Directive): mention CPP_LINE_DIRECTIVES,
	and #line not recognized in verbatim.
	(#line Syntax Details): update regexp, discuss surprising
	false positives.
	(Contents): must come before any sectioning command.
	(#line and TeX): reorganize as a list.

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

	* autogen.sh, tp/.cvsignore, tp/Makefile.am, 
	maintain/regenerate_document_strings_make_rules.sh,
	maintain/regenerate_file_lists.pl: replace unconditional copy by
	generated make rules.

2012-02-07  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi, tp/Texinfo/Common.pm, tp/texi2any.pl,
	tp/Texinfo/Convert/PlainTexinfo.pm, tp/Makefile.am: new converter,
	converting the tree to Texinfo.  Add a FIX_TEXINFO customization
	variable for this converter, set in the default case.
	* doc/texinfo.txi (Configuration Variables), tp/Texinfo/Common.pm, 
	tp/texi2any.pl:
	new customization variable, TREE_TRANSFORMATIONS, to specify
	transformations done to the tree before output.

2012-02-05  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (Configuration Variables), tp/Texinfo/Common.pm,
	tp/Texinfo/Convert/HTML.pm(_convert_image_command), 
	tp/Texinfo/Convert/Converter.pm(%all_converters_defaults): new 
	configuration variable to prepend a path to images in HTML,
	IMAGE_LINK_PREFIX.  Report from Vincent Bela\"iche.

2012-01-28  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (Configuration Variables): RAW_TEXT becomes RAWTEXT.
	TEXI2HTML is now a normal configuration variable.
	Configuration variables for program behavior may also be set normally,
	however they will have an effect only if set on the command line.
	* tp/TODO, tp/texi2any.pl, tp/Texinfo/Common.pm,
	tp/Texinfo/Convert/HTML.pm (converter_defaults): handle configuration 
	variables for program behavior more like other variables and formats.

2012-01-27  Patrice Dumas  <pertusus@free.fr>

	* configure.ac (AC_CONFIG_FILES), tp/tests/encodings, 
	tp/tests/formatting/: tests in encodings that have not be moved
	to the main test suite are moved to tp/tests/formatting.

2012-01-25  Patrice Dumas  <pertusus@free.fr>

	* util/texi2html: new script to convert Texinfo to HTML, setting the 
	default style to be the texi2html style.

2012-01-24  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/Convert/Unicode.pm,
	tp/Texinfo/Convert/XML.pm, util/texinfo.dtd: ` becomes ' in plaintext
	to follow the GNU coding standards change.  ` and ' are translated
	to unicode characters in XML and when @documentencoding is utf-8 and
	enable-encoding is set.

2012-01-22  Patrice Dumas  <pertusus@free.fr>

	* tp/Texinfo/Convert/HTML.pm (_convert_xref_commands), 
	tp/Texinfo/Convert/DocBook.pm:
	implement the new convention for five-arg xref with either 
	just Top or no node name.
	* tp/Texinfo/Convert/HTML.pm, texi2any.pl, tp/Texinfo/Common.pm:
	For HTML, add a customization variable, KEEP_TOP_EXTERNAL_REF.
	If set the Top node is not ignored for the reference for the 
	five-arg xref.
	* doc/texinfo.txi (Other Configuration Variables): document
	KEEP_TOP_EXTERNAL_REF.

2012-01-20  Karl Berry  <karl@gnu.org>

	* doc/NEWS: new convention to allow referring to a whole manual
	without a node: a five-arg xref with either just Top or no node name.
	* doc/texinfo.txi (Top Node Naming): document it.
	(Four or Five Arguments): refer to it.
	Also use that new feature throughout, and assorted other cleanups.
	* doc/texinfo.tex (\xrefX): implement it.
	(\topbox, \printedrefnamebox, \printedmanualbox): use these
	named boxes instead of numeric ones.
	* doc/info-stnd.texi: refer to whole manuals.

2012-01-18  Patrice Dumas  <pertusus@free.fr>

	* configure.ac, Makefile.am (SUBDIRS), Pod-Simple-Texinfo: add a
	pod to texinfo converter.

2012-01-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Configuration Variables for Program Behavior):
	split out into new node, other text tweaks.

2012-01-17  Patrice Dumas  <pertusus@free.fr>

	* TODO, tp/TODO: clean tests related TODO parts.

2012-01-16  Patrice Dumas  <pertusus@free.fr>

	* util/detexinfo, util/Makefile.am: new script to strip @-commands.

	* doc/texinfo.txi (Configuration Variables): document TEXTCONTENT
	and RAW_TEXT.

	* tp/texi2any.pl: if SORT_ELEMENT_COUNT is set, dump elements names
	sorted by line count (or word count if ISORT_ELEMENT_COUNT_COUNT_WORDS
	is set) in the associated file.
	* doc/texinfo.txi (Configuration Variables): document
	SORT_ELEMENT_COUNT and SORT_ELEMENT_COUNT_COUNT_WORDS.

2012-01-15  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (Configuration Variables for @@-Commands):
	remove @-commands that have no effect and add new @-commands available
	as customization options.

	* tp/texi2any.pl, tp/Texinfo/Convert/TextContent.pm,
	tp/Makefile.am, TODO: 
	New converter that strips commands from output.

2012-01-14  Patrice Dumas  <pertusus@free.fr>

	Move tests from texi2html that are still relevant to tp.

	* configure.ac (AC_CONFIG_FILES): Add tp/tests Makefiles.
	* tp/Makefile.am (SUBDIRS),
	* tp/tests: New directory for tests.

2012-01-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use literal matching when searching for xrefs or menu items.
	
	* info/nodes.c (adjust_nodestart): Reset body_start.
	* info/session.c (info_toggle_regexp): Minor change.
	(info_menu_or_ref_item): Set cursor at the start of
	the body if the search fails.
	(info_search_in_node_internal): Take additional argument
	indicating whether to use regexp matching. All uses changed.
	(info_search_in_node): Likewise.
	(info_target_search_node): Use additional argument to mask
	use_regex flag. All uses changed.
	(info_menu_or_ref_item): Mask out use_regex.
	* info/session.h (info_search_in_node)
	(info_target_search_node): Change prototypes.
	
	* info/indices.c (info_next_index_match): Update.
	* info/footnotes.c (make_footnotes_node): Update.

2012-01-12  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (run_makeinfo): put the whole version check
	subshell into the if condition, else the oh-so-helpful set -e
	defeats the check for a broken texinfo.tex.
	Report from Jim Meyering, 09 Nov 2011 20:43:08,
	help from Eric Blake, 9 Nov 2011 21:59:33.

	* util/texi2dvi (move_to_dest): support --output in non-clean modes.

	* util/tests/automtest.sh: manual test from automake, via
	Stefano Lattarini, texinfo-devel 10 Jan 2012 10:27:55.

2012-01-10  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (External Macro Processors,
	#line Directive,
	#line and TeX,
	#line Syntax Details): new nodes.

	Also, use http://ftp.gnu.org in examples per sysadmin recommendation.

2012-01-08  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Internationalization): move to above Conditionals,
	so set clear value and Defining New Texinfo Commands are next
	to each other.

2012-01-07  Karl Berry  <karl@gnu.org>

	* util/texi2dvi: do not use && and || as line continuations,
	cute as it is.  Use -v also when debugging.

2012-01-06  Patrice Dumas  <pertusus@free.fr>

	* util/texinfo.dtd: adapt raw block commands content to what can
	really be in those commands.
	Add inlineraw, inlinefmt.
	Better handling of commands defined with @definfoenclose and
	errormsg.

2012-01-03  Karl Berry  <karl@gnu.org>

	* NEWS: new command @hashchar{}.
	* doc/texinfo.txi (Inserting Special Characters): rename node again.
	(Inserting a Hashsign),
	(External Macro Processors): new node.
	* doc/refcard/txirefcard.tex: document it.
        * doc/texinfo.tex (@hashchar): output a #.
        * util/texinfo.dtd: add entity.

2011-12-31  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi,
	* doc/refcard/txirefcard.tex,
	* install-info/install-info.c,
	* info/info.c,
	* info/infokey.c,
	* util/texindex.c,
	* util/texi2dvi,
	* util/gendocs_template,
	* util/gendocs_template_min: 2012.

2011-12-30  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Marking): make the @chapter title be
	Making Text, ...
	(Command List): xref punctuation warning.

2011-12-28  Karl Berry  <karl@gnu.org>

	* util/htmlxref.cnf (GDBM, mailutils, readline): new entries
	from Sergey.

2011-12-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.
	
	* info/echo-area.c (info_read_completing_internal): Initialize
	window line map before the loop, otherwise the previous contents
	is used to compute cursor position.
	* info/indices.c (info_virtual_index): Report and return
	immediately if there are no indices in the document.

2011-12-27  Karl Berry  <karl@gnu.org>

	* NEWS: mention Info's virtual-index.
	* doc/refcard/txirefcard.tex: likewise.
	* doc/info-stnd.texi (Searching Commands): tweak text.
	* info/infodoc.c: add to initial command list in help text.

2011-12-26  Karl Berry  <karl@gnu.org>

	* NEWS: new commands @atchar{} @lbracechar{} @rbracechar{}
        @backslashchar{}.
	* doc/texinfo.txi (Atsign Braces Comma Backslash): rename node,
	leave @anchor behind.
	(Inserting an Atsign),
	(Inserting Braces),
	(Inserting a Backslash),
	(math),
	* doc/refcard/txirefcard.tex: document them.
        * doc/texinfo.tex (@normalbackslash): output a typewriter \
        even in math mode.

2011-12-25  Karl Berry  <karl@gnu.org>

	* NEWS: new commands @inlinefmt and @inlineraw.
	* doc/texinfo.txi (Inline Conditional Commands),
	* doc/refcard/txirefcard.tex: document them.
	* doc/texinfo.tex (\inlinefmt, \doinlinefmt,
        \inlineraw, \doinlineraw, \doinlinerawtwo, \outfmtnametex): new macros.
        
        * doc/texinfo.tex (\atchar, \lbracechar, \rbracechar, \backslashchar):
        more new macros for forthcoming new commands.

2011-12-24  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\errormsg): \indexnofonts rather than \indexdummies.
	
	* doc/texinfo.tex (\txiescapepdf): new macro, using the pdftex
	primitive \pdfescapestring.
	(\backslashparens, \activebackslashdouble, \HyPsdSubst,
        \HyReturnAfterFi): no longer needed.  change calls.
        
        * doc/texinfo.tex (\dopdfoutline): output (literal) brace chars;
        previous hack had become inoperative.
	(\lbracecharliteral, \rbracecharliteral): new macros.

2011-12-23  Karl Berry  <karl@gnu.org>

	* NEWS: new command @errormsg.
	* doc/texinfo.tex (\errormsg): new command.
	(\commondummiesnofonts): add \anchor for the heck of it.
	* doc/texinfo.txi (@@-Command List): add it.  
	* doc/refcard/txirefcard.txi (Ending): likewise.

	* doc/texinfo.txi (Generic Translator texi2any): rename node.
	(Invoking makeinfo): leave anchor behind.
	(Glyphs summary): remove spurious menu.
	Other small wording changes.

2011-12-08  Patrice Dumas  <pertusus@free.fr>

	* TODO: add automatic generation of @node and @menu.

2011-12-04  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (Other Configuration Variables): document
	all configuration variables associated with a string.
	* TODO: remove more entries fixed and add an explanation based on Karl
	input.

2011-12-03  Patrice Dumas  <pertusus@free.fr>

	* TODO, tp/TODO: remove fixed entries, add some more and put the entry
	on --output-encoding in the main TODO file.

2011-11-24  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (part): Protect @ in Texinfo example.
	(Other Configuration Variables): Reenable latex2html related variables.
	(Info Format Whole Manual, Info Format: Preamble): use subheading and
	not subsection consistently.

2011-11-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement info-virtual-index.
	
	* info/indices.c (info_virtual_index): New function.
	* info/info-utils.c (text_buffer_init)
	(text_buffer_free,text_buffer_vprintf)
	(text_buffer_add_string,text_buffer_fill)
	(text_buffer_add_char,text_buffer_printf): New functions.
	* info/info-utils.h (text_buffer): New struct.
	(text_buffer_init)
	(text_buffer_free,text_buffer_vprintf)	
	(text_buffer_add_string,text_buffer_fill)
	(text_buffer_add_char,text_buffer_printf): New protos.
	* info/infomap.c (default_emacs_like_info_keys): 'I'
	calls info-virtual-index.
	(default_vi_like_info_keys): ESC-I calls info-virtual-index.
	* info/window.c (message_buffer_size)
	(message_buffer_index): Remove.
	(message_buffer): Change type to struct text_buffer.
	All uses changed.

	* doc/info-stnd.texi: Document virtual-index.
	
2011-11-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: replace @inforef's to the Info manual
	with regular @xref's, since the Info manual has not been
	Info-only for many years.

2011-11-06  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\putworderror): new word for translation.
	(\box0 for \errorbox for @error{}): use it.
	* doc/texinfo-en.tex (\putworderror): define here too.

	* doc/texinfo.tex (\dopdfimage): try .pdf and .PDF first.
	* doc/texinfo.txi (Image Syntax): document this.
	(implied by help-texinfo report from Rick Jones,
	28 Oct 2011 11:09:33).

	* doc/texinfo.txi (Configuration Variables): rename from
	`@command{texi2any} Configuration Variables'.

2011-11-04  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Other Configuration Variables): mention
	CPP_LINE_DIRECTIVES.

2011-10-31  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (Other Configuration Variables): TOP_FILE is only
	for HTML.

2011-10-28  Karl Berry  <karl@gnu.org>

        Flip-flop again: no maintainer mode.
	* configure.ac (AM_MAINTAINER_MODE): remove again.
	* tp/Makefile.am (Makefile.tres): only rebuild the fragment
	in maintainer mode.
	* util/Makefile.am (texinfo.cat) [MAINTAINER_MODE]: make conditional.
	* README.dev,
	* autogen.sh: mention --enable-maintainer-mode.

2011-10-25  Karl Berry  <karl@gnu.org>

	* man/Makefile.am (EXTRA_DIST): add ginfo.h2m.
	* configure.ac (AM_MAINTAINER_MODE): reenable.
	* tp/Makefile.am (Makefile.tres): only rebuild the fragment
	in maintainer mode.
	* util/Makefile.am (texinfo.cat) [MAINTAINER_MODE]: make conditional.
	(dist_pkgdata_DATA): add texinfo.cat to here, and remove
	now-empty pkgdata_DATA.
	* README.dev,
	* autogen.sh: mention --enable-maintainer-mode.

2011-10-22  Karl Berry  <karl@gnu.org>

	* man/Makefile.am (man_rule_0): only ginfo, not ginfokey.

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

	* doc/texinfo.txi: add some required punctuation commands.

2011-10-21  Karl Berry  <karl@gnu.org>

	* doc/texi2dvi,
	* tp/texi2any.pl: help message changes to help help2man.
	* man: new subdirectory.
	* doc/Makefile.am, doc/*.5, info/ginfo.h2m: move man files.

2011-10-19  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\var, \doabbr, \doacronym): reset \spacefactor=1000
	so capital letters in arg don't change spacing.
	* doc/texinfo.txi (Not Ending a Sentence): briefly mention
	commands which change the normal sentence-spacing rules.

2011-10-18  Karl Berry  <karl@gnu.org>

	* util/texindex.c, util/texi2pdf,
	info/info.c, info/infokey.c,
	install-info/install-info.c: update copyright year.

2011-10-17  Karl Berry  <karl@gnu.org>

	* tp/Makefile.am: rename include to Makefile.tres.
	(Makefile.tres): regenerate.
	* tp/maintain/regenerate_file_lists.pl: add copyright,
	chdir to working directory.
	* autogen.sh: invoke it.

2011-10-16  Karl Berry  <karl@gnu.org>

	* Makefile.am (po-check): update to find tp/ Perl files,
	not makeinfo/ C files.

	* AUTHORS, INSTALL, INTRODUCTION, NEWS, README, README-alpha,
	README.dev, TODO, */README: small text updates.

	* doc/texinfo.txi (Not Ending a Sentence): also mention right quote
	and brackets.

2011-10-15  Karl Berry  <karl@gnu.org>

	* system.h: rm decls for xmalloc, xrealloc, xstrdup.
	rm old DMALLOC debugging stuff.

	* gnulib: switch from now-deprecated getopt to getopt-gnu,
	likewise strdup to strdup-posix.
	rm gnulib module xsetenv, was only used in C makeinfo.

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

	* doc/texinfo.txi (Other Configuration Variables): USE_SECTIONS is
	not used anymore, the same effect is obtained by setting USE_NODES
	to false.

2011-10-14  Karl Berry  <karl@gnu.org>

	* lib/substring.c: remove, only used in C makeinfo, no longer built.
	Leaving us with just xexit in lib, but that still seems useful.

2011-10-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Three Arguments): same requirements as node names.

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

	* info-stnd.texi: change @itemx to a missing @item.
	* po/POTFILES.in, configure.ac, po_document/POTFILES.in: remove references
	to makeinfo/ and texi2html/.
	* doc/Makefile.am (MAKEINFO, man_rule_0): use tp/texi2any.pl or 
	tp/makeinfo to regenerate info and man pages.

2011-10-11  Karl Berry  <karl@gnu.org>

	* configure.ac (AC_INIT): version 4.13.90.
	(AM_INIT_AUTOMAKE): dist-xz rather than lzma.

	* configure.ac (AC_CONFIG_SRCDIR): look for info.c, not makeinfo.c.
	(AC_CONFIG_FILES),
	* Makefile.am (SUBDIRS): remove makeinfo.
	(DIST_SUBDIRS): no need.

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

	* doc/texinfo.txi (Generic Translator texi2any/makeinfo): adapt to
	the new implementation in tp/.
	* configure.ac, tp/Makefile.am: add an automake conditional to avoid 
	doing tp tests if dependencies are missing.

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

	* doc/texinfo.txi (texi2any Output Customization), 
	doc/texi2oldapi.texi: archive the texi2any Output Customization
	chapter in texi2oldapi.texi.  Reduce the text in texinfo.txi
	to what should be stable.

2011-09-26  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (GNU Sample Texts): change example to be
	without cover texts, since that is by far the most common case.
	Update years.

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

	* Makefile.am (SUBDIRS, DIST_SUBDIRS), configure.ac, po*/POTFILES.in: 
	build and distribute the Parser in tp.  Don't build texi2html, but
	still distribute it.

2011-09-25  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Other Configuration Variables): comment out or
	remove variables the Parser doesn't have, per Patrice.

2011-09-23  Vincent Bela\"iche  <vincent.belaiche@gmail.com>

	* doc/texinfo.tex (\macroxxx): complain if more than 256 args
	and non-etex.
	(\parsemargdef, \defmacro): handle >= 10 args.
	Processing if <10 args is unchanged.
	(\parsemmanyargdef, \endargs@, \nil@, \nilm@, \nillm@,
	 \getargvals@, \getargvals@@, \push@, \macvalstoargs@,
	 \macargexpandinbody@, \putargsintokens@,
	 \texisavetoksstackpoint, \texirestoretoksstackpoint,
	 \texinonouternewtoks, \setemptyargvalues@,
	 \setemptyargvaluesparser@, \pop@, \longpop@): new macros.
	(\texiatcatcode): used to save and restore.

2011-09-21  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex: consistently use % rather than %% for comments.

2011-09-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Node Line Requirements): parens are 
	disallowed specifically when confused with external manuals,
	not always.  Discussion in thread of 18 Sep 2011 09:16:27,
	and bug http://savannah.gnu.org/bugs/?33373.

	* doc/texinfo.txi (HTML Xref Command Expansion): be more
	specific about quotation cmds being replaced, not quote chars.

2011-08-27  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (run_tex4ht): respect TEX4HT and T4HT envvars.
	(usage): more help msg tweaks.

2011-08-26  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (usage): we currently generate .ps with --ps,
	not .pdf.  Other wording tweaks.
	(run_tex_suite): missed $ in setting DVIPS by default.

2011-08-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\cartouche): restore \parskip glue if following
	a sectioning command.  Bug report from Werner Lemberg,
	12 Aug 2011 08:04:46.

2011-08-02  Sergey Poznyakoff  <gray@gnu.org>

	* info/session.c (min_search_length): Set to 1.
	* NEWS: Update.
	* doc/info-stnd.texi: Update.

2011-07-28  Sergey Poznyakoff  <gray@gnu.org>

	* info/variables.c (info_variables): New variable:
	min-search-length.
	* info/variables.h (min_search_length): New extern.
	* info/session.c (min_search_length): New variable.
	(info_search_1): Do not search for patterns shorter
	than min_search_length.
	* info/indices.c (do_info_index_search): Do not search
	for patterns shorter than min_search_length.
	* doc/info-stnd.texi: Document min-search-length.
	* NEWS: Document min-search-length.

2011-07-28  Sergey Poznyakoff  <gray@gnu.org>

	* info/info-utils.c (printed_representation): Change first
	argument to const char *, all callers updated.
	* info/info-utils.h (printed_representation): Change signature.

	* info/doc.h (key_documentation): Remove prototype.
	* info/filesys.c, info/footnotes.c,
	info/info-utils.c, info/info.c, 
	info/infomap.c, info/m-x.c, info/nodemenu.c,
	info/search.c, info/variables.c,
	info/window.c: Remove extra arguments from calls to variadic functions.
	* info/infodoc.c (key_documentation): Remove unused function.
	Remove extra arguments from calls to variadic functions.
	* info/indices.c (info_next_index_match): Fix error message.
	Remove extra arguments from calls to variadic functions.
	* info/session.c (info_menu_digit): Use ngettext.
	Remove extra arguments from calls to variadic functions.
	* info/echo-area.c (ea_possible_completions): Use ngettext.
        Remove extra arguments from calls to variadic functions.

2011-05-29  Karl Berry  <karl@gnu.org>

	* util/texi2dvi: version, copyright year.

2011-05-28  Bruno Haible  <bruno@clisp.org>

	* util/texi2dvi: Set LC_ALL to C for egrep of range expression.
	bug-texinfo mail, 28 May 2011 16:29:20.

2011-05-23  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\deftypefnnewline): rename layout option.
	* NEWS,
	* doc/refcard/txirefcard.tex,
	* doc/texinfo.txi (Typed Functions),
	(Object-Oriented Methods): document @deftypefnnewline.	

2011-05-23  Jonathan Nieder  <jrnieder@gmail.com>  (tiny change)

	* util/texi2dvi (local): wrap the fallback definition using eval, to
	hide it from shells, like dash after "[VAR] Do not poplocalvars
	prematurely on regular utilities", 2010-05-27, that implement "local"
	and treat redefinition of the "local" builtin as a syntax error.
	Report in http://savannah.gnu.org/bugs/?33374,
	bug-texinfo 23 May 2011 02:58:35.

2011-05-21  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex: use single % consistently for comments.
	(\need): remove old definition unused for many years.
	
	* doc/texinfo.tex (\deftypefnnl): new layout command.
        (\ifdoingtypefn, \ifrettypeownline): new conditionals.
        (\deftypefngeneral): set \doingtypefntrue.
        (\defname): force vmode; implement layout option (requires
 	 third \parshape line).
        Suggestion from Thien-Thi Nguyen, help-texinfo 03 Mar 2011 12:16:28.

2011-05-11  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (^^a0): use \tie instead of ~ for the no-break space,
	since we redefine the ~ character.
	(^^L): \def without the \outer, so it can be used in comments.
	Report from Vincent Bela\"iche.

2011-05-01  Patrice Dumas  <pertusus@free.fr>

	* texi2html/texi2html.pl (rearrange_elements): fix NextFile.
	* texi2html/formats/html.pm (@LINKS_BUTTONS,HEADER_IN_TABLE),
	texi2html/maintained_extra/book.pm (@LINKS_BUTTONS):
	use NodeUp or Up in @LINKS_BUTTONS to be consistent with the other
	directions.

2011-04-30  Patrice Dumas  <pertusus@free.fr>

	* texi2html/texi2html.pm, texi2html/texi2html.pl, 
	texi2html/formats/html.pm (HTML_DEFAULT_about_body): new 
	configuration variable, DO_ABOUT to disconnect the choice
	to do the About element from HEADER_IN_TABLE.

2011-04-25  Sergey Poznyakoff  <gray@gnu.org>

	* info/man.c (manpage_node_of_file_buffer): Initialize body_start.

2011-04-09  Patrice Dumas  <pertusus@free.fr>

	* */*: rename major .init files as .pm files, especially 
	those that are processed by xgettext.  Report from Sergey 
	Poznyakoff.

2011-04-07  Patrice Dumas  <pertusus@free.fr>

	* po/POTFILES.in: re-add perl files that have error messages.
	* po_document/POTFILES.in: add tp/Convert/HTML.pm.

2011-04-08  Karl Berry  <karl@gnu.org>

	* util/gendocs.sh: split_html_db_dir used before definition.
	Report from Bruce Korb, bug-gnulib 08 Apr 2011 14:15:08.

2011-04-08  Sergey Poznyakoff  <gray@gnu.org>

	Fix make distcheck
	
	* Makefile.am (dist-hook): New rule to distribute tp.
	* texi2html/Makefile.am (DISTCLEANFILES): Add translations.pl and
	translations.pl.old
	
2011-04-06  Sergey Poznyakoff  <gray@gnu.org>

	Use C99 stdarg.
	
	* system.h [HAVE_VPRINTF]: Remove obsolete stuff.  Include
	stdarg.h unconditionally.
	(TEXINFO_PRINTFLIKE): New macro.
	* info/info.c (main): Update invocations of info_follow_menus.
	(vinfo_error): New function.
	(info_error): Change signature to that of a variadic function.
	(show_error_node): New function.
	* info/info.h (info_error): Change signature.
	(vinfo_error,show_error_node): New function.
	* info/infodoc.c (create_internal_info_help_node): Use
	string_to_node.
	* info/infokey.c (syntax_error, error_message): Change to
	variadic functions.  All uses updated.
	* info/session.c (begin_info_session_with_error): Remove.
	(info_follow_menus): On errors fill in a formatted error node.
	* info/session.h (begin_info_session_with_error): Remove proto.
	(info_follow_menus): Change prototype.
	* info/window.c (free_echo_area): Remove static qualifier.
	(vwindow_message_in_echo_area): New function.
	(window_message_in_echo_area): Rewrite as a variadic function.
	(message_in_echo_area): Likewise.
	(message_buffer_size, message_buffer_index): Change type to size_t.
	(message_buffer_resize): Remove.
	(build_message_buffer): Rewrite from scratch, using vsnprintf.
	(printf_to_message_buffer): Rewrite as a variadic function.
	(message_buffer_length_this_line): Rewrite via strrchr.
	* info/window.h (build_message_node): Change prototype.
	(format_message_node,): New prototypes.
	(printf_to_message_buffer): Now a variadic function.
	(window_message_in_echo_area): Likewise.
	(message_in_echo_area): Likewise.
	(vwindow_message_in_echo_area): New prototype.
	(free_echo_area): New prototype.
	* install-info/install-info.c (vdiag): New functions.
	(error,warning,fatal): Rewrite as variadic functions.
	All uses updated.
	(insert_html_tag_with_attribute): Likewise.
	* makeinfo/html.h (insert_html_tag_with_attribute): New prototype.
	* makeinfo/makeinfo.c (error,file_line_error)
	(line_error,warning,add_word_args)
	(add_html_block_elt_args,execute_string): Rewrite as variadic functions.
	All uses updated.
	* makeinfo/makeinfo.h (add_word_args,add_html_block_elt_args)
	(execute_string,warning,error)
	(line_error,file_line_error): Change signatures.
	* makeinfo/xml.c (xml_insert_element_with_attribute): Use C99
	stdarg.
	(xml_insert_element_with_attribute): Likewise.
	* po/Makevars (XGETTEXT_OPTIONS): Add new flags.
	* po/POTFILES.in: Remove perl sources, taken care of in
	po_document.
	* util/texindex.c (fatal,error): Rewrite as variadic functions.

2011-03-28  Karl Berry  <karl@gnu.org>

	* doc/gendocs_template: rm comments about xml.

2011-03-25  Karl Berry  <karl@gnu.org>

	* doc/htmlxref.cnf (ed, smtp, libmatheval, sos, mpc): correct links.

2011-03-22  Karl Berry  <karl@gnu.org>

	* util/gendocs_template,
	* util/gendocs_template_min: 2011, boilerplate updates.

2011-03-22  Patrice Dumas  <pertusus@free.fr>

	* configure.ac, lib/: ship Text::Unidecode to have more
	reproduceable results and fewer conditionals.

2011-03-20  Patrice Dumas  <pertusus@free.fr>

	* po/POTFILES.in,
	* po_document/POTFILES.in: add files in tp/.

2011-03-18  Karl Berry  <karl@gnu.org>

	* doc/info-stnd.texi (Stand-alone Info): bug reporting address.
	
	* doc/texinfo.txi: standalone not stand-alone in this manual.

2011-03-06  Karl Berry  <karl@gnu.org>

	* util/htmlxref.cnf (mpc): new GNU package.

2011-03-04  Karl Berry  <karl@gnu.org>

	* util/htmlxref.cnf (ed, GUILE_GNOME, libmatheval): typos,
	report from webmaster Shailesh Gadge.

2011-02-28  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Raw Formatter Commands),
	(Conditionals Commands): be clearer that @if... delimits standard
	Texinfo source, and the commands allowed in @iftex are exceptions.
	Mention newlines.

2011-02-27  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Four and Five Arguments): explicitly describe
	what happens when the third argument is omitted.

2011-02-23  Karl Berry  <karl@gnu.org>

	* texinfo.tex (\codequotebacktick, \codequoteundirected): new commands.
	* NEWS,
	* doc/refcard/txirefcard.tex,
	* doc/texinfo.txi (Inserting Quote Characters): document them.

2011-02-23  Karl Berry  <karl@gnu.org>

	* texinfo.tex (\xrefautomaticsectiontitle): new command.
	* NEWS,
	* doc/refcard/txirefcard.tex,
	* doc/texinfo.txi (Three Arguments): document it.

2011-02-22  Karl Berry  <karl@gnu.org>

	* info/ginfo.h2m: new file.
	* doc/Makefile.am (info.1): also depend on info/ginfo.h2m.
	(man_rule_info): use -I to have help2man optionally include
	$$program.h2m.
	https://savannah.gnu.org/bugs/?24052

2011-02-20  Karl Berry  <karl@gnu.org>

	* doc/refcard/txirefcard.tex,
	* doc/texinfo.txi (Command Summary): add @copying, @insertcopying,
	@indent, @headitemfont, @dotless, @unmacro.
	* doc/refcard/txicmdcheck: also check against implementation.
	* util/txicmdlist: script to output all implemented commands.

2011-02-18  Karl Berry  <karl@gnu.org>

	* doc/refcard/txirefcard.tex,
	* doc/texinfo.txi (Command Summary): add @allowcodebreaks,
        @fonttextsize.

2011-02-17  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Command Summary): add @frenchspacing.
	* doc/refcard/txirefcard.tex (@frenchspacing): add.

2011-02-16  Sergey Poznyakoff  <gray@gnu.org>

	* info/echo-area.c (ea_possible_completions): If the
	key which invokes the function was pressed twice, and
	it represents a printable character, insert that character in the
	echo area.  E.g., pressing ?? inserts a single question mark into
	the EA.

2011-02-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (anchor, HTML Xref Link Preservation): two
	approaches to preserving links to deleted/renamed nodes.

2011-02-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\sectionheading): check that we are not in an
	environment such as @table.  Report from Akim,
	https://savannah.gnu.org/bugs/?15514.

	* NEWS,
	* doc/texinfo.txi (Command Summary): missed @urefbreakstyle.
	
	* util/texinfo.dtd (sp, printindex): categorize.

2011-02-10  Sergey Poznyakoff  <gray@gnu.org>

	Exclude node headers from searches.
	
	* info/nodes.h (NODE): New member body_start.

	* info/search.c (regexp_search): Remove length argument.
	Search bounds are given by binding.  Change the code accordingly.
	* info/search.h (regexp_search): Change signature.
	* info/session.c (info_search_in_node_internal): New argument
	match_nodename.  If it is set, try to match nodename first.
	Otherwise, match the node contents, excluding the node line.
	(info_search_in_node): Pass 0 as match_nodename to
	info_search_in_node_internal.
	(info_search_internal): Pass 1 as match_nodename after switching
	to the new node.
	
	* info/nodes.c (node_set_body_start): New function.
	(info_get_node_of_file_buffer): Set body_start on the new node.
	(info_node_of_file_buffer_tags): Likewise.
	
2011-02-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\urefbreak): revised attempt to allow breaking
	in urls, using only active characters, no \scantokens.
	(\uref): use it.  (leave old definition as \urefnobreak)
	(\urefcatcodes, \urefcode, \urefprestretch, \urefpoststretch,
	 \urefcode{amp,dot,hash,quest,slash}, \urefcodeslashfinish,
	 \normal{amp,dot,hash,percent,question,slash}): helpers.
	(\urefbreakstyle): new command.
	(\wordafter,\wordbefore,\wordnone): helpers.
	* doc/refcard/txirefcard.tex,
	* doc/texinfo.txi (uref): document @urefbreakstyle, more on @uref.

2011-02-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\latonechardefs): typo in ^^b definition,
	\guilletright -> \guillemetright.  Reported by Peter Muenster,
	http://bugzilla.novell.com/show_bug.cgi?id=669714.

2011-02-06  Patrice Dumas  <pertusus@free.fr>

	* texi2html/Makefile.am: Add a missing $(srcdir).  Report 
	from Jerker B\"ack, fix by Karl.
	http://savannah.gnu.org/bugs/?32328

2011-02-02  Ben Wong  <bugs.debian.org@wongs.net>  (tiny change)

	* info/window.c (window_line_of_point): do not ever return
	a negative number, to avoid crash on very small windows.
	http://savannah.gnu.org/bugs/?32255, http://bugs.debian.org/611151

2011-02-01  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\douref): reinstate old definition.

2011-01-23  Karl Berry  <karl@gnu.org>

	* util/htmlxref.cnf: add recutils

2011-01-20  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\douref): ensure that we are not in vertical
	mode when executing \endlink.

2011-01-19  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\urefcode): also allow breaks at ?.
	(\urefcodequestion): new macro.
	* doc/texinfo.txi (uref): document new line breaking.

	* doc/texinfo.tex: reduce line lengths to <= 79 chars.

2011-01-17  Oleg Katsitadze <olegkat@gmail.com>

	* doc/texinfo.tex (@uref):  Allow line breaks after and
	stretchable glue around ., # and / characters in URLs.

2011-01-15  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (\includezzz, \doverbatiminclude): report what's
	being included to the log.
	(\fontttextsize, \DeclareUnicodeCharacter): comment out \wlog calls.

2011-01-14  Karl Berry  <karl@gnu.org>

	* makeinfo/sectioning.c (current_chapter_number): increase possible
	integer string to 100, following get_sectioning_number.
	Report from Kees Cook, 13 Jan 2011 22:24:25, sv#32122.

2011-01-10  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (texi2html History): move to texi2oldapi.texi
	archive file.

2011-01-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Other Configuration Variables): finish edit.

2011-01-03  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Other Configuration Variables): continue edit.

2011-01-01  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Other Configuration Variables): continue edit.

2010-12-31  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Tips and Hints): @insertcopying no longer
	recommended in Top node.  Discrepancy noted by Adrienne Thompson.

2010-12-23  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\scanmacro): use \empty instead of \endinput,
	since the actual meaning of \endinput turns out to have nothing to
	do with it.  Doc fixes.

2010-12-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Other Configuration Variables): continue.

2010-12-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Other Configuration Variables): continue.

2010-12-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Other Configuration Variables): begin reading.

2010-12-03  Karl Berry  <karl@gnu.org>

	* makeinfo/tests/*: uniformly set LC_ALL, unset LANG, LANGUAGE,
	TEXINFO_OUTPUT.  Report from Ryan Hill, 19 Sep 2010 12:22:20,
	http://savannah.gnu.org/bugs/?31068.

2010-12-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* info/man.c (get_manpage_node): Avoid null pointer dereference
	of info_windows.

2010-12-03  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Configuration Variables and Options),
	(Configuration Variables for @@-Commands): rename+edit.

2010-12-02  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (texi2any Configuration Variables): rather than
	makeinfo, I guess.
	(Other Configuration Variables): Split off into new node.

2010-12-01  Patrice Dumas  <pertusus@free.fr>

	* texi2html/texi2html.pl: don't warn when a user-defined macro
	without argument is called without braces.  Report from Werner 
 	Lemberg.

2010-11-28  Karl Berry  <karl@gnu.org>

	* texi2html/texi2html.pl (prepare_htmlxref): ignore whitespace
	before variable name in variable assignments.

2010-11-26  Karl Berry  <karl@gnu.org>

	* util/gendocs.sh: mention canonical script location.

	* doc/texinfo.txi (node-related nodes): remove @refill, refill
	source lines, small text changes.
	(throughout): use "an <@@-command>" consistently, instead of "a".

2010-11-26  Patrice Dumas  <pertusus@free.fr>

	* texi2html/texi2html.pl: don't warn whan a macro defined with
	zero arguments is called without braces.  Report from Werner LEMBERG.

2010-11-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (GNU Sample Texts): update and make self-consistent.

2010-11-17  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: uniqify more index entries.

2010-11-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: uniqify some index entries.

2010-11-15  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Indexing Commands): recommend unique index
	entries.  (bug-texinfo thread starting 29 Jul 2010 23:23:02)
	(throughout): consistently @code for <tags> in index entries.

2010-11-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Invoking Macros): attempt to clarify
	calling without braces (only allowed if the macro takes exactly
	one arg), and leaving arguments out (ok).

2010-11-11  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Macro Details): mention non-expansion contexts
	for makeinfo.  More caveats about @macro in TeX.
	(set value): mention the @value{something} can't be the argument
	to accent commands.  (makeinfo supports it in braced arguments,
	but texinfo.tex can't handle it.)

2010-11-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Macro Details): more caveats about newlines.

2010-11-08  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (History): rationale for Perl texi2html -> texi2any.

2010-11-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Customizing CSS): edit.

2010-11-06  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Customizing Indices): rename+edit.

2010-11-05  Karl Berry  <karl@gnu.org>

	* doc/texi2oldapi.texi: new file archiving several API sections
	which will likely become obsolete with the new tree-based translator.
	* doc/texinfo.txi (Customizing HTML Basic Commands,
        Customizing HTML References,
	Customizing HTML Footnotes
	Customizing HTML Block Commands,
	Paragraph and preformatted region,
	Lists tables and definitions formatting,
	Menus indices and floats formatting,
	Handling special regions,
        Other and unknown commands): these sections removed.

2010-11-03  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Customization of Alignment Commands):
	rename+edit.

2010-11-01  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Customizing HTML Footnotes): rename+edit.

2010-10-31  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Customization for Internal References):
	rename+edit.

2010-10-30  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Customization for External References):
	rename+edit.
	Change "cross-reference" to "cross reference" throughout,
	for consistency.

2010-10-29  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Customization for Title Commands): rename+edit.

2010-10-28  Patrice Dumas  <pertusus@free.fr>

	* texi2html/texi2html.pl: declare %texi2dvi_formats.  Report from
	Per Bothner and Werner LEMBERG.

2010-10-28  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Customization for Text Sequences): rename+edit.

2010-10-27  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Customization for @code{sp},
	HTML Customization for Abbreviations): rename+edit.

2010-10-24  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Command List): alphabetization fixes.
	Report from Christophe Jarry, 23 Oct 2010 17:45:54.
	
	(HTML Customization for Anchors, HTML Customization for Images):
	rename+edit.

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

	* texi2html/texi2html.pl (%index_names): remove the 'prefixes' key, 
	it isn't useful.
	* texi2html/formats/info.init (info_default_normal_text): 
	upper case @var even when producing utf8.  Report from Karl.

2010-10-15  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Custom Interface for Simple HTML Customization):
	rename+edit.

2010-10-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Hash Interface for HTML Customization): rename+edit.

2010-10-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Customizing HTML for Simple Commands): rename+edit.
	(Customizing HTML After @@-Colon): Try using @-command in node name.

2010-10-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* util/texi2dvi (run_index): Separate `local' statement from
	variable initialization, so dash v0.5.5.1 won't word-split the
	right hand side.

2010-10-12  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Customizing HTML After At-Colon): rename+edit.

2010-10-11  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Customizing HTML Basic Commands),
	(Customizing HTML Commands Without Arguments): rename+edit.

2010-10-10  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Customizing Output File Names): further
	attempts at clarifying the config vars for output file names.
	(Customizing HTML Headings): rename+edit.

2010-10-08  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Defining Macros),
	(alias),
	(set value): more precisely document naming recommendations
	and requirements.

2010-10-07  Sergey Poznyakoff  <gray@mirddin.farlep.net>

	* info/nodes.c (info_node_of_file_buffer_tags): Check if
	tag->nodestart is valid.  Suggested by Hilmar Preusse
	<hille42@web.de>.

2010-10-01  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Customizing Output Target Names): rename+edit.

2010-09-26  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: Avoid more duplicated index entries.
	(PDF Output): correct link for GNU GV.

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

	* texi2html/texi2html.pl (enter_index_entry),
	texi2html/texinfo.init (index_entry), formats/info.init (index_entry):
	Pass the information whether in code or not for index entries, 
	and use it.  Report from Karl.

2010-09-24  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Title Page Customization),
	(Customizing Output File Names): rename+edit.
	Avoid some duplicated index entries.

2010-09-21  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Footnotes text): merge into upper section.
	(About text): rename+edit.

2010-09-20  Eric Blake  <address@hidden>

        * util/gendocs.sh: Allow spaces in outdir, do not include
	full pathname in archive.

2010-09-20  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Top Element Customization, Contents and
	Overview Elements Customization): rename+edit.

2010-09-19  Karl Berry  <karl@gnu.org>

	* texi2html/texi2html.pl (makeinfo_help): tweak formatting/wording.

2010-09-18  Jaakko Hollm\'en  <Jaakko.Hollmen@tkk.fi>

	* texi2html/examples/texinfo-bright-colors.css, texi2html/Makefile.am:
	New css file with bright and contrasting colors.

2010-09-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Customizing {Layout,Content} of Special Elements):
	rename+edit.

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

	* texi2html/texi2html.pl (line_warn, line_error, format_line_number):
	Use 'possibly involving' instead of 'via' since it is not certain
	that the macro was the one in the error message as line information
	is for whole lines, even when more than one macro may be expanded 
	within the line.

2010-09-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (verb): make i/o match.
	Report from Benno Schulenberg, 14 Sep 2010 16:03:35.

2010-09-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Customizing HTML Special Elements): rename+intro.
	Remove @comments with node pointers, since we don't need or want to
	specify pointers at all these days and years.

2010-09-11  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Customizing HTML Page Footers): rename + edit.

2010-09-12  Patrice Dumas  <pertusus@free.fr>

	* texi2html/texi2html.pl (rearrange_elements), 
	texi2html/texi2html.init, texi2html/examples/makeinfo.init,
	texi2html/formats/html.init: rename the 'Following' direction
	as 'NodeForward' and add the 'NodeBack' direction.
	Fix and simplify infinite loop detection when finding NodeForward.

2010-09-11  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Customizing HTML Section Layout): rename + edit.

2010-09-11  Patrice Dumas  <pertusus@free.fr>

	* texi2html/texi2html.init (%misc_command, t2h_default_preserve_misc_command):
	set args instead of skip when a line is in fact the misc
	@-command argument.
	* texi2html/texi2html.pl (add_to_texi2dvi_args), 
	texi2html/texi2html.init: call texi2dvi for pdf, dvi and ps output, 
	add command line options for texi2dvi and pass some existing options.

2010-09-10  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Output Element Labels): add Section*,
	rm File*, etc., per Patrice.
	(Customizing Page Headers): rename + edit.

2010-09-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Navigation Panel Formatting Functions): rename+edit.

2010-09-08  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Output Element Lines),
	(Navigation Button Specification): rename + edit.
	(verb): mention that the delimiter character can appear inside the
	argument.

2010-09-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Output Element Labels): rename + edit.

2010-09-06  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\dosmartslant): localize font switch to \ttsl.
	Report from Bruno Haible, 29 Aug 2010 15:46:01.

	* doc/texinfo.tex (\lattwochardefs): define \ed and \ee using
	\dotless{i} rather than \i.  Report from Andrei Kholodnyi,
	3 Sep 2010 20:14:42.	

	* doc/texinfo.txi (Internationalization of Strings): edit.

2010-09-06  Roland Kaufmann  <roland.kaufmann@gmail.com>  (tiny change)

	* util/texi2dvi: new option --shell-escape.

2010-09-01  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Init File Expansion Contexts): edit.

2010-08-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/indices.c (do_info_index_search, index_entry_exists): Check
	for NULL return from file_buffer_of_window.  Patch proposed by
	Vitezslav Crhonek <vcrhonek@redhat.com>.

2010-08-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* doc/texinfo.txi (Indexing Commands): Fix typo.

2010-08-28  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: consistently capitalize after colons in
	@section, etc.

2010-08-26  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: Systematize use of @@ vs. @code{@@}.

2010-08-25  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Init File General Block Commands): edit.

	* doc/texinfo.txi (Init File Global Information): split into subnodes,
	and merge in `Program String Customization'.

2010-08-21  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Init File Formatting of Commands): edit.

2010-08-17  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\commondummies),
	(\indexnofonts): handle @- @{ @} @arrow @geq @leq.

	* doc/texinfo.txi (Init File Calling at Different Stages): edit.

2010-08-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (texi2any's Three Passes): edit, merge
	with output initialization/finalization.

	* doc/texinfo.tex (\commondummiesnofonts): handle \sansserif,
	\slanted, \dmn, \indicateurl (so they work in node/chapter names now).

	* doc/texinfo.txi (Other Info Directories): update Emacs example
	and text in general.  Avoid footnotes.
	Report from Rob Dickens, 13 Aug 2010 14:30:54.

2010-08-15  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\refX): use \the\toks to avoid full expansion
	of possibly-complex cross-reference name, a la @chapter, etc.

	* doc/texinfo.txi (Init File Encodings),
	 (Init File Functions): rename+edit.

2010-08-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Init File Global Information): merge text
	from Flag values node.

2010-08-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Init File Global Information): edit.

2010-08-12  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Loading Init Files),
	(HTML Xref Configuration): change doc of loading order.

2010-08-13  Patrice Dumas  <pertusus@free.fr>

	* texi2html/texi2html.pl (close_stack): more precise error
	message when closing @verb.  Karl report.
	* texi2html/texi2html.pl (do_text): disable the warning about
	unlikely character in @var. It is too expensive (because do_text 
	is called often) for a warning which rather questionable anyway.
	* texi2html/texi2html.init (t2h_default_external_href): an
	empty entry in htmlxref causes the corresponding possibility
	being ignored.
	* texi2html/texi2html.pl: reverse the order of directories where
	Config files are looked for, such that the last called are the
	preferred ones, allowing to override what was set before.

2010-08-12  Patrice Dumas  <pertusus@free.fr>

	* texi2html/texi2html.pl (prepare_htmlxref): also use the
	manual input directory to search for htmlxref.cnf files.
	Karl idea.
	* texi2html/tests/Makefile.am: copy htmlxref files from references.
	* texi2html/Makefile.am: ship translations.pl to always have it
	in the srcdir for out of source build.

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

	* texi2html/texi2html.pl (enter_author_command): format the 
	@author text if not already done.  Check if command is @author
	is now done outside of the function.
	* texi2html/texi2html.pl (scan_line): prepare for detection of 
	commands that are not at the begining of the line though they 
	should be.  Mostly not activated, since modifications to the 
	processed line leads to spurious error messages.
	%begin_line_command hash holds all the commands that should
	be at the begining of the line.
	Don't treat sectioning commands like any heading command if they
	are not at the begining of the line.

2010-08-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Output Elements Defined): rename/edit from
	`The different elements'.

2010-08-09  Patrice Dumas  <pertusus@free.fr>

	* texi2html/texi2html.pl (pass_texi): add line numbers when adding
	text to close @-commands at the end of the first pass.

2010-08-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/indices.c (index_partial): New static variable.
	(index_entry_matches): New static function.
	(info_next_index_match): Use index_entry_matches to find
	exact matches. When exact matches are exhausted, look for
	partial matches, starting from the beginning of the index.
	When looking for partial matches, take care not to return
	previous exact matches. 

2010-08-08  Patrice Dumas  <pertusus@free.fr>

	* texi2html/texi2html.init, texi2html/texi2html.pl (do_text):
	warn if [](), appears inside @var. Report from Karl.
	* texi2html/texi2html.pl: accept a --reference-limit=N option
	for backward reference with makeinfo.

2010-08-06  Patrice Dumas  <pertusus@free.fr>

	* texi2html/Makefile.am: generate AUTHORS based on texinfo AUTHORS
	and copy config.rpath.
	* texi2html/texi2html.pl (locate_init_file): explicitly give the
	directories in argument.
	* texi2html/texi2html.init, texi2html/T2h_l2h.pm: no default 
	initialization file for latex2html.  Don't use locate_init_file to 
	find the initialization file.
	* texi2html/texi2html.pl: search in ./ and ./.program_name for init
	files and htmlxref.cnf files.  Report from Karl.

2010-08-05  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Loading Init Files),
	(Init File Basics): shorten names.
	(Init File Variables, Init File Variables): split off from Basics.

2010-08-04  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Setting and Getting Configuration Variables):
	capitalize+edit.

2010-08-02  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Initialization File Basics): capitalize+edit.

2010-08-01  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Loading Initialization Files): capitalize+edit.

2010-08-01  Patrice Dumas  <pertusus@free.fr>

	* texi2html/texi2html.pl (set_variable),
	(get_conf): accept an undef value as a regular value.
	(unset_variable),
	(unset_from_document): unset a variable by removing the 
	corresponding key from the hash.  Replaces set_variable($var, undef)
	now that undef is a regular value.  Done for a report from Karl.
	* texi2html/texi2html.init (t2h_default_select_substitution):
	Simplify.
	* texi2html/test/run_test*.sh: set --error-limit=1000 to avoid
	failing tests because of the default error limit.

2010-07-30  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Internationalization of Strings): edit node,
	including re-capitalization.
	(Info Format Regular Nodes): mention that periods, etc., cannot be
	used in Info identifiers.

2010-07-27  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (texiany Output Customization, makeinfo
	Configuration Variables): slightly reword incompatibility warnings.

2010-07-27  Patrice Dumas  <pertusus@free.fr>

	* texi2html/texi2html.pl: use the actual values for defaults
	in texi2html description of command line options.  Report from 
	Karl.

2010-07-26  Karl Berry  <karl@gnu.org>

	* util/gendocs.sh: pass SETLANG to texi2dvi invocations, too.
	Report from Ales Cepek, 26 Jul 2010 14:24:24.

2010-07-26  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (makeinfo Configuration Variables)
	(texi2any output customization): warn that the API and 
	configuration variables may change at any time.

2010-07-25  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Invoking texi2any): general editing.

2010-07-26  Patrice Dumas  <pertusus@free.fr>

	* texi2html/doc/: merge the texi2html manual in the texinfo
	manual, remove the manual and the directory.
	* doc/texinfo.txi (Texi2HTML): add information taken from
	the Texi2HTML manual with a bit more history.

2010-07-25  Patrice Dumas  <pertusus@free.fr>

	* texi2html/texi2html.init (program_string): use @emph instead
	of @i in the program string.

2010-07-25  Patrice Dumas  <pertusus@free.fr>

	* texi2html/doc/texi2html.texi: reduce the texi2html manual 
	to the minimum. Keep history, differences with texi2any and
	the list of incompatibilities with past versions.

2010-07-25  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (Internationalization of strings): add this node
	describing the internationalization of strings output in texi2any.

2010-07-25  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi: update the documentation of texi2any 
	customization to match the current state of the code.

2010-07-25  Karl Berry  <karl@gnu.org>

	* util/htmlxref.cnf: new file.
	* util/Makefile.am (dist_pkgdata_DATA): add it.

2010-07-24  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Generic translator texi2any/makeinfo): rename
	from "Generic converter", edit chapter intro.

2010-07-24  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (Initialization files basics): merge `Function 
	prototypes' node.
	Put 'Initializing and finalizing' below 'Initialization files 
	basics'.
	Add the information about @-commands formatting.

2010-07-23  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (setfilename): more about TeX behavior.
	(Invoking texi2any),
	(Pointer Validation),
	(HTML Splitting),
	(HTML Xref Command Expansion),
	(The different elements),
	(Contents and Overview text):
	English, examples, minor details.

2010-07-23  Patrice Dumas  <pertusus@free.fr>

	* texi2html/Tests: remove this unused directory tree.

2010-07-23  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (texi2any output customization): add the
	general informations about initialization files and the document
	layout.

2010-07-21  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Invoking texi2any) <--conf-dir>: reformat.

2010-07-19  Patrice Dumas  <pertusus@free.fr>

	* texi2html/test/sectionning: rename to sectioning.
	Also replace sectionning with sectioning in documentation 
	files.

2010-07-19  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Xref Link Preservation): new node
	about the MANUAL-noderename.cnf file.

2010-07-19  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (Generic converter texi2any/makeinfo): add a
	chapter for texi2any/makeinfo. Merge Invoking makeinfo and
	makeinfo options and put it in the chapter as Invoking texi2any, 
	together with Pointer Validation and the description of 
	texi2any Configuration variables.

2010-07-18  Karl Berry  <karl@gnu.org>

	* AUTHORS, 
	* INSTALL,
	* NEWS,
	* README,
	* TODO: update for texi2html.
	* makeinfo/README: update for obsolescence.

2010-07-18  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (makeinfo options): re-add --commands-in-node-names
	and explain that it is a no-op.
	* texi2html/texi2html.pl: re-add --commands-in-node-names and 
	--output-indent in the help message, stating that they are no-op.

2010-07-17  Patrice Dumas  <pertusus@free.fr>

	* doc/texinfo.txi (setfilename): explain how file name is determined
	when there is no @setfilename.
	(makeinfo options, HTML Translation): document new options and 
	update according to the changes in behaviour.
	Separate --plaintext from --no-headers.
	(Pointer Validation): @-commands in nodes are now supported.

2010-07-16  Patrice Dumas  <pertusus@free.fr>

	* makeinfo/Makefile.am (noinst_PROGRAMS): no more installation
	of C makeinfo via bin_PROGRAMS.

2010-07-11  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (frenchspacing): no double space after
	semicolons, just at end of sentences.
	Report from Tim Landscheidt, help-texinfo 07 Jul 2010 22:29:55.

2010-06-24  gettextize  <bug-gnu-gettext@gnu.org>

	* gnulib/m4/lib-link.m4: Upgrade to gettext-0.18.1.
	* Makefile.am (SUBDIRS): New variable.
	* configure.ac (AC_CONFIG_FILES): Add intl/Makefile.
	(AM_GNU_GETTEXT_VERSION): Bump to 0.18.1.

2010-06-23  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (test_local): redirect output away, to avoid
	 local: not found
	 on Solaris 10 et al.  Report from Nelson Beebe,
	 23 Jun 2010 16:08:07.

2010-06-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* doc/texinfo.txi (Inserting a Comma): Quote meta-use of
	@comma{} in running text.

2010-06-21  Karl Berry  <karl@gnu.org>

	* util/gendocs.sh: 2010.

2010-06-20  Karl Berry  <karl@gnu.org>

	* util/gendocs.sh (usage): mention TEXI2HTML envvar.

	* doc/texinfo.txi (Invoking Macros): lament escape convention.

2010-06-17  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\macroargctxt): set \catcode`\\=0, as a try
	at supporting \\ \{ \} (but not \,) in macro args.
	Report from Ralf W, Eric B, Patrice D, 	14 Jun 2010 23:48:39.

2010-06-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\setupverbatim): restore wrongly-removed
	\leavevmode, for sake of blank lines in verbatim environments.
	Doc tweaks.

2010-06-15  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\verbbox): use this for verbatim lines
	instead of \box0, for clarity.
	(\starttabbox): make \verbbox assignment global,
	in case of verbatim lines starting with accents.

2010-06-10  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\LaTeX): with 10pt running text, use
	plain's \scriptsize (7pt) for the A in LaTeX.

2010-05-22  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\indexlquoteignore): new macro.
	(\indexnofonts): call it if @set txiindexlquoteignore.
	This is for Free Software, Free Society, 2nd ed.
	Perhaps it should be a general feature,
	or settable on a per-entry basis.

2010-05-17  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\marksupsetuplqsamp, \marksupsetuprqsamp):
	assign as \markupsetcodequoteleft and ...right, so they respect
	the @txicodequote... settings.
	Request from Mark Polesky, 13 Apr 2010 09:46:23.
	* doc/texinfo.txi (Inserting Quote Characters): document this.

2010-05-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\makedispenvdef): rename from \makedispenv,
	so everything ends with "def".
	(\maketwodispenvdef): rename from \maketwodispenvs.  Change calls.
	(\Esmallquotation): define to be the same as the real \Equotation.

	* doc/texinfo.tex (\entrybreak): new non-command, to allow
	forced line breaks in the toc (or index) separate from the
	maintext.  For Jeanne.

2010-05-08  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\shortpartentry): make bold, suggestion
	from Jeanne R.

2010-05-04  Jim Meyering  <meyering@redhat.com>

	* util/gendocs.sh: make its "-s FILE" option more useful;
	when honoring the -s FILE option, update
	$PACKAGE to reflect the probably-different basename of "FILE".

2010-04-23  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\,, \dotaccent, \tieaccents, \ubaraccent): use
	\ptex... now that these commands are further down in the file.

2010-04-22  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\indexdummies): define \{ and \} as before,
	so they don't get expanded in writing the index.  Report
	from Peter Breitenlohner.

2010-04-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\@): use \char64 from the current font, instead
	of forcing typewriter.
	(\mylbrace, \mybrace): use braces from \ecfont, ditto.
	Suggestion from Mark Polesky, 16 Apr 2010 22:24:07.

2010-04-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\hbadness): increase to 6666, since we've used
	that for various GNU publications.

2010-04-04  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (part): new description for new command @part.
	* doc/refcard/txirefcard.tex: add it.
	* util/texinfo.dtd (part): new element.
	
	* doc/texinfo.tex (\entry): correct redefinition of @* for toc's.
	(\definetextfontsizexi, \definetextfontsizex): reset \textleading,
	\parskip appropriately, call \textfonts.

2010-03-30  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (input_file_name_decode): use [A-Za-z] rather than
	[A-z], which gets "invalid range end" with new grep in
	en_US.utf8 and other UTF-8 locales.
	Report from Martin von Gagern, 29 Mar 2010 12:34:09.

2010-03-21  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\headingsoff): new macro to turn off all
	headings/footings.
	(\HEADINGSoff, \chapoddpage): use it.
	
	(\part, \partzzz): new command @part, always on an odd page.
	(\numeralbox, \partentry, \shortpartentry): handle parts
        in the tables of contents.
	
        (\entry): locally \let\* = \space, so explicit
	line breaks in titles don't become line breaks in the toc's.
	
	(\flushright): need to \relax after glue assignment, lest
	a following L disappear as part of filll glue.
	
	(\unmlevel): rename to \unnlevel.

2010-03-18  Karl Berry  <karl@gnu.org>

	* info/info.c,
	* doc/info-stnd.texi: English wording.

2010-03-18  Patrice Dumas  <pertusus@free.fr>

	* info/nodes.c (info_node_of_file_buffer_tags),
	* info.c,
	* info.h,
	* doc/info-stnd.texi: new switch --strict-node-location to avoid
	being smart when searching for nodes.

2010-03-17  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Copying Conditions): import better "free software"
	description from the Emacs manual.

	* doc/texinfo.txi (Info Format Specification): new appendix,
	written by Patrice Dumas and me.

	* doc/texinfo.txi (Include Files): move to near the end of the
	main manual, instead of being an appendix.  These days, include
	files are an important feature.  Remove @refill's.
	(Catching Mistakes): rename chapter name to
	match node name, since it is clearer.

2010-03-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Menu Location): clarify that having the menu
	at the end is a convention, not a requirement.

2010-03-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\var): do not call \setupmarkupstyle; it's
	 unused, and the } interferes with the automatic italic correction.

2010-03-02  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\smartitaliccorrection): rename from
	\smartitalicx.  Change calls.
	(\dosmartslant): new macro, avoiding italic correction in \tt.
	(\smartslanted, \smartitalic): use it.
	Report from Mark Polesky, 1 Mar 2010 18:46:44.

2010-02-21  Patrice Dumas  <pertusus@free.fr>

	* po_document/: add translation of strings output in manuals
	in this directory and support files copied for gettext.
	* Makefile.am (SUBDIRS): add texi2html and po_document.
	(dist-local): copy translation into texi2html directories.
	* configure.ac (AM_INIT_AUTOMAKE): add tar-ustar because
	there are long files in tests, and dist-zip because it was
	done in texi2html.
	(MKINSTALLDIRS): add since some gettext version may need it.
	(PERL, USE_UNICODE, USE_EXTERNAL_EASTASIANWIDTH, USE_UNIDECODE,
	USE_DATA_DUMPER, REQUIRE_DATA_DUMPER, t2h_po_dir, t2h_po_top_builddir,
	USE_EXTERNAL_LIBINTL): add texi2html related conditionals.
	* po/Makevars (XGETTEXT_OPTIONS): add perl keywords for texi2html
	source files.
	* po/POTFILES.in: add texi2html files.

2010-02-14  Ben Pfaff  <blp@gnu.org>

	* util/gendocs.sh: Use "($cmd)" in place of "$(cmd)" where
	command substitution is not desired.

2010-02-14  Ben Pfaff  <blp@gnu.org>

	* util/gendocs.sh: Add "-s" option for specifying an alternate
	Texinfo source file name.

2010-02-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\tex): call \mathactive, so that the
	math-active ' gets plain's definition to generate a prime, instead
	of infinitely looping on the ' character.
	Report from Brian Gough, 11 Feb 2010 10:54:24.

2010-02-09  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (run_tex4ht): only run tex4ht if we're outputting
	HTML.  Report from Wybo Dekker, 08 Feb 2010 11:53:58.

2010-02-06  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (run_bibtex): ensure output from all greps
	in chain are redirected, else undefined output from a LaTeX \cite
	shows up even with --quiet.
	From Wybo Dekker, 06 Feb 2010 13:33:48.
	
	* util/texi2dvi: untabify.

2010-01-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Two Arguments): blank line consistency.

2010-01-03  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (exampleindent): no longer ignored in HTML.
	Report from Thomas Keller, 20 Nov 2009 07:59:41.

2010-01-01  Robert Millan  <rmh.grub@aybabtu.com>  (tiny change)

	* util/gendocs.sh: use `set -e'.

2009-12-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Image Syntax): mention convention for installing
	images for use by capable Info readers (i.e., Emacs Info).
	Suggested by Jose Marchesi.

2009-10-26  Roland Kaufmann  <roland.kaufmann@gmail.com>  (tiny change)

	* util/texi2dvi (max-iterations): new option.

2009-10-25  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Predefined Indices): insert @findex entries
	for the indexing commands (cindex, findex, etc.).
	From Kevin Ryde, 17 Oct 2009 10:03:14.

	* info/filesys.c (compress_suffixes): use gzip -d in preference to
	gunzip.  From Antonio Diaz Diaz, 22 Oct 2009 17:42:34.

2009-10-08  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (catcode_special): default to maybe,
	and only set to true for processing Texinfo, not LaTeX.
	Request from Kurt Hornik, also Debian bug #534458.

2009-09-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

        * build-aux/gendocs.sh: Fix copyright header to match GPLv3
        recommendation.

2009-09-04  Karl Berry  <karl@gnu.org>

	* install-info/install-info.c (munge_old_style_debian_options):
	malloc what we sprintf.
	From Matt McCutchen, http://savannah.gnu.org/bugs/?27376.

2009-08-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\rgbDarkRed, \rgbBlack): new macros, replacing
	\cmykDarkRed and \cmykBlack.  Change uses.  Said to print
	considerably better.
	From: Andrew Hawryluk, 12 Aug 2009 21:22:06.`,

2009-07-25  Oleg Katsitadze <olegkat@gmail.com>

	* doc/texinfo.tex (\commondummiesnofonts): Added \email.

2009-05-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\textdegree): output index sort string as `o',
	since that's how we output it in Info.  Suggested by Patrice.

2009-05-10  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (firstparagraphindent): mistaken
	mention of @paragraphindent.  Report from Dilyan Palauzov,
	10 May 2009 21:41:32.
	(@@-Command Summary): forgot @firstparagraphindent{}.
	* doc/refcard/txirefcard.tex: likewise.

2009-05-06  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (@@-Command Summary): forgot @textdegree{}.
	* doc/refcard/txirefcard.tex: likewise.

2009-04-20  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (run_tex): pdf output for texinfo is supported.

2009-04-15  Akim Demaille  <akim@epita.fr>

	texi2dvi: use texindy if available.
	* util/texi2dvi (run_index): Use texindy if available.

2009-04-15  Akim Demaille  <akim@epita.fr>

	texi2dvi: initial support for tex4ht.
	* util/texi2dvi ($latex2html, --tex4ht, run_tex4ht, destdir): New.
	(run_tex): Accept an HTML output.
	(run_tex_suite): Call run_tex4ht.
	Install the output if needed.
	(insert_command): Compute $textra_cmd only if needed.
	If needed, add a \usepackage{tex4ht}.
	(run_core_conversion): When using tex4ht, use latex.
	(run_index): Adjust for tex4ht.

2009-04-15  Akim Demaille  <akim@epita.fr>

	texi2dvi: make $expand a regular Boolean variable.
	* util/texi2dvi ($expand): Use true/false instead of t/''.

2009-04-15  Akim Demaille  <akim@epita.fr>

	texi2dvi: fix comments.
	* util/texi2dvi: here.

2009-04-15  Akim Demaille  <akim@epita.fr>

	texi2dvi: simplify move_to_dest.
	* util/texi2dvi (move_to_dest): Exit immediately if there is
	nothing to do.
	This allows to simplify the body of the loop, as we no longer have
	to check whether something has to be done.
	Don't build-and-then-split $dest, just build the split components.
	$dest is no longer needed.

2009-04-15  Akim Demaille  <akim@epita.fr>

	texi2dvi: avoid creating invisible temporary files.
	* util/texi2dvi ($t2ddir): Strip leading `./'.
	Call sed once.

2009-04-15  Akim Demaille  <akim@epita.fr>

	texi2dvi: complete --help.
	* util/texi2dvi (usage): Document --html.

2009-04-15  Akim Demaille  <akim@epita.fr>

	texi2dvi: fix error invocations.
	* util/texi2dvi: error already reports $0, don't do it again.

2009-04-15  Akim Demaille  <akim@epita.fr>

	texi2dvi: simplify the handling of --no-line-error.
	* util/texi2dvi (no_line_error): Remove, rather use
	line_error=false.
	(run_tex): Adjust.
	By the way, don't call tex --help if !$line_error.

2009-04-15  Akim Demaille  <akim@epita.fr>

	texi2dvi: be robust to a failing latex --help.
	* util/texi2dvi (run_tex): here.

2009-04-15  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (out_lang_set): New.
	Use it.
	(usage): Document --html, --info, --text, --ps, DVIPS and DVIPDF.
	(run_tex_suite): Honor DVIPS.
	(main): Support -O/--output-format.
	Undocumented for now.

2009-04-15  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (ensure_dir): Die only if we could not create the
	directory at all.

2009-04-12  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (compile): do not create a wrong :: sequence
	in the middle of the path due to an empty txincludes (no -I's).
	Report from Bruno Haible, 8 Apr 2009 01:24:09.

	* util/texi2pdf,
	* util/pdftexi2dvi: handle --version to hardwire the program name.
	* util/texi2dvi (usage): mention PDF output.

2009-03-29  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (Local Variables): nuke-trailing-whitespace, to
	appease gnulib.

2009-03-28  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (GNU Sample Texts): no literal copyright symbol;
	plus other typos and updates reported by Arni Magnusson.

2009-03-28  Christopher Faylor  <me+cygwin@cgf.cx>  (tiny change)

	* system.h: Avoid erroneously redefining PIPE_USE_FORK when compiling
	for Cygwin.

2009-03-25  Arni Magnusson  <arnima@hafro.is>

	* doc/txi-is.tex: use \'{\dotless{i}} and bls.{}.

2009-03-22  Karl Berry  <karl@gnu.org>

	* doc/txi-is.tex: call \txisetlanguage to support hyphenation.

2009-03-22  Oleg Katsitadze <olegkat@gmail.com>

	* doc/texinfo.tex (\documentlanguagetrywithoutunderscore):
	Defined it with the same catcode of _ as in \documentlanguage.

2009-03-22  Oleg Katsitadze <olegkat@gmail.com>

	* doc/texinfo.tex (\chapterzzz, \appendixzzz, \chapmacro):
	(\sectionheading):  Be careful not to expand \putwordChapter,
	\putwordSection and \putwordAppendix unnecessarily, because some
	of the translations contain complex macros to typeset non-latin
	glyphs.  Report from Arni Magnusson, 18 Mar 2009 22:58:25.

2009-03-21  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\commondummies, \indexnofonts): handle
	\DH \dh \TH \th.

2009-03-20  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\DH, \dh, \TH, \TH): new macros for Icelandic
	letters eth and thorn.
	(\latonechardefs, \lattwochardefs, \utfeightchardefs): use them.
	* doc/texinfo.txi (Inserting Accents),
	* doc/refcard/txirefcard.tex: document them.

2009-03-20  Arni Magnusson  <arnima@hafro.is>

	* doc/txi-is.tex: Icelandic translation for texinfo.tex.

2009-03-16  Karl Berry  <karl@gnu.org>

	* doc/info-stnd.texi, doc/info.texi: update to GFDLv1.3+.

2009-03-15  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (run_tex): allow ~ in top-level filename.
	in tidy mode, also make the clean dirname link if a ~ is present.
	Continuing report from Norbert Preining, 13 Mar 2009 14:18:11,
	Debian bug#487974.

2009-03-14  Karl Berry  <karl@gnu.org>

	* info/filesys.c (compress_suffixes): add .xz/unxz.

	* info/filesys.h (DEFAULT_INFOPATH): include PATH by default.

2009-03-14  Peter Breitenlohner  <peb@mppmu.mpg.de>

	* info/filesys.c (build_infopath_from_path): new fn.
	(info_add_path): if INFOPATH includes the word "PATH",
	call the new fn.
	* doc/info-stnd.texi (Invoking Info) <directory-path>: document it.

2009-02-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Not Ending a Sentence): also mention ).

2009-01-31  Karl Berry  <karl@gnu.org>

	* autogen.sh: No need for --enable-maintainer-mode any more.

2009-01-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix behavior of info on invalid regular expressions.

	* info/search.h (search_result): New enum.
	(search, regexp_search):
	(search_forward, search_backward): Return enum search_result.
	* info/search.c (search, regexp_search):
	(search_forward, search_backward): Return enum search_result.
	All callers updated.
	* info/session.c (info_search_in_node_internal): Return enum
	search_result. All callers updated.
	(info_search_internal): Stop immediately if the search returns
	search_failure. This happens if the user specified an invalid
	regular expression.

	* info/dir.c, info/info-utils.c, info/man.c, info/nodes.c: Update
	uses of search functions.

2009-01-18  Karl Berry  <karl@gnu.org>

        * doc/texinfo.tex (\headitemfont): new macro, synonym for @b.
	* doc/texinfo.txi (Multitable Rows): document @headitemfont.
	Suggestion from wl, 21 Oct 2008 09:02:51.

	* doc/texinfo.tex (\doitemize): try typesetting the item mark,
	in case the user erroneously said @itemize @samp, to give an error
	earlier.  Report from Bruce Korb, help-texinfo 02 Nov 2008 10:38:30.
	* doc/texinfo.txi (itemize): document that @w{} (with the braces)
	must be used to get an empty item mark.  (Clearly no one had
	actually done this.)

	* doc/texinfo.txi (Indexing Commands): document that index
	commands should precede the indexed material.

	* doc/txirefcard.tex: update copyright date.

	* doc/texinfo.txi (@raggedright): minor tweaks.
	(Quotations and Examples): likewise.

	* doc/texinfo.txi (@copying): update to FDL 1.3+.
	* doc/fdl.texi: likewise.

	* texinfo.txi (page): Document that this causes a paragraph
	break in non-TeX.

2009-01-05  Oleg Katsitadze  <olegkat@gmail.com>

	* doc/texinfo.txi (\key): Removed spurious space.  Patch from
	Werner Lemberg, 05 Jan 2009 11:20:08.

2009-01-02  Oleg Katsitadze  <olegkat@gmail.com>

	* doc/texinfo.txi:  Removed documentation of @raggedleft and
	@raggedcenter.
	* doc/refcard/txirefcard.tex:  Updated.

2009-01-01  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\pdfurl): make \var be a dummy, so
	@email{foo-@var{pkg}} works.

	* util/gendocs.sh: accept --email option, replace %%EMAIL%% in
		templates.
	* util/gendocs_template,
	* util/gendocs_template_min: use %%EMAIL%%.
	Update all for 2009.

2008-12-31  Oleg Katsitadze  <olegkat@gmail.com>

	* doc/texinfo.tex (@raggedright, @raggedleft, @raggedcenter):  New
	commands.
	* makeinfo/cmds.c, makeinfo/cmds.h, makeinfo/insertion.c:
	* makeinfo/insertion.h:
	Likewise.
	* doc/texinfo.txi:  Updated documentation.
	* doc/refcard/txirefcard.tex:  Updated.

2008-12-29  Karl Berry  <karl@gnu.org>

	* info/window.c (process_node_text): use size_t for mb variables
	mbi_cur_ptr and mb_len.
	Report from Mutsaers Peter, 29 Dec 2008 17:24:53.

2008-12-16  Oleg Katsitadze  <olegkat@gmail.com>

	* doc/texinfo.tex (\nonfillstart): emulate the normal @indent in
	the non-fill environments (@example, @display, @format,
	@flushleft, @flushright, @verbatim).  Report from wl.

2008-12-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\sectionheading): force vertical mode before
	the first whatsit.  Report from wl.

2008-12-15  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\pdfsetcolor): also set the PDF color for
	stroking, used for thin-enough rules, e.g., normal _'s.
	Report from wl.

2008-12-13  Werner Lemberg  <wl@gnu.org> and
	    Karl Berry  <karl@gnu.org>

	* util/texi2dvi (uncomment_iftex): ignore repeated @c texi2dvi's,
	thus supporting
	  @iftex
	  @tex
	  ...
	  @end tex
	  @end iftex
       with `texi2dvi -E'.  bug-texinfo mail of 22 Nov 2008 17:01:49.
       Also use @c _texi2dvi instead of @c texi2dvi to reduce conflicts.
       * doc/texinfo.txi (Format with texi2dvi): mention that the
       source document cannot have a line starting with @c _texi2dvi.

2008-12-03  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\safewhatsit): undo change of 2008-11-25;
	clearly \unskip is wrong, because then normal interword glue
	before an @ref, for example, is removed.  Report from wl.

2008-11-27  Karl Berry  <karl@gnu.org>

	* configure.ac (AM_MAINTAINER_MODE): I am removing Texinfo
	from TeX Live, since it's almost always available outside TL
	anyway.  Therefore no more need for maintainer mode.
	* README.dev: remove --enable-maintainer-mode from example.
	* util/Makefile.am [MAINTAINER_MODE]: comment out the
        tests, instead of using the Automake conditional, since
        we don't want maintainer mode any more.  We'll be able to revert
        this in Automake 1.11.

	* doc/texinfo.tex: move markup infrastructure to new markup
	page; create new glyphs page for glyphs; etc.  No intended
	functional changes.

	* doc/texinfo.tex (\key): do not uppercase the argument; this
	was evidently inserted by mistake in an Automake update (1.222).
	The Emacs manual uses @key with mixed-case arguments, as it should.
	Also, use \tt if the current font is not already monospace.

	Also, comment out the definition of \key which produces a lozenge
	around the key name.  This hasn't been active for a long time,
	and doesn't adjust to the text size.

2008-11-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* util/texi2dvi (move_to_dest): Quote file names consistently.

2008-11-25  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\safewhatsit) [\ifhmode]: \unskip, to avoid
	possible spurious blank line.  Report from Dave Luttinen,
	24 Nov 2008 01:20:21.
	(\pdfmkdest) [! \ifpdf]: also \unskip in hmode, to try to
	avoid output-format-dependent line breaking.

2008-11-23  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (^^?): make a DEL a true TeX comment character,
	since it is unused in any encoding.  wl, 22 Nov 2008 07:31:43.

2008-11-17  Oleg Katsitadze  <olegkat@gmail.com>

	* doc/texinfo.tex: Made left and right quote characters always
	active, for arg parsing; suggestion from Reinhold Kainhofer, 25
	Oct 2008 08:50:05.  Made @verb consistent with @verbatim by
	honoring @set txicodequoteundirected.  Disabled the ?` and !`
	ligatures in @samp and @kbd.
	(\defmarkupstylesetup): New infrastructure for markup style setup.
	Currently it's only used to set up quote chars.

	* doc/texinfo.txi (Inserting Quote Characters):  Documented @verb
	as being affected by @set txicodequoteundirected.

2008-11-11  Karl Berry  <karl@gnu.org>

	* NEWS, po/LINGUAS: new translation id
	* po/id.po: .

2008-11-10  Karl Berry  <karl@gnu.org>

	* ChangeLog, NEWS, doc/texinfo.txi, doc/version.texi,
	* makeinfo/cmds.c:
	document @ogonek, finish documenting quote cmds

2008-11-10  Karl Berry  <karl@gnu.org>

	* makeinfo/cmds.c (command_table): add ogonek with a trivial
	definition just so we can run the manual.
	* doc/texinfo.txi (@-Command Summary): add ogonek and quote cmds.
	(Inserting Accents): add ogonek.
	* doc/refcard/txirefcard.tex: add ogonek and quote cmds.

2008-11-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\rmisbold): new macro.
	(\titlefont, \title, \chapheadingzzz, \chapmacro, \chapoddpage,
	\centerchfopen, \sectionheading): callit.

	(\author): just call \secfonts instead of faking authorrm,etc.
	(\authorrm, \authortt, \authorfont): remove.

	(\ogonek): find [AaEe] precomposed glyphs.
	(\commondummiesnofonts): add \ogonek.
	(\utfeightchardefs, \lattwochardefs): switch to using \ogonek.
	Also support {left,right}-pointing double angle quotation(s)
	with guillemets; missed those earlier.

2008-11-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\ogonek, \Aogonek, \aogonek, \Eogonek, \eogonek):
	new macros using ogonek from the EC fonts.
	(\utfeightchardefs, \lattwochardefs): use them.

2008-11-04  Arkadiusz Miskiewicz  <arekm@maven.pl>  (tiny change)

	* makeinfo/sectioning.c (current_chapter_number): leave room for null.
	bug-texinfo mail of 3 Nov 2008 23:09:46.

2008-11-02  Karl Berry  <karl@gnu.org>

	* util/texinfo.dtd (block): add smallquotation.

2008-10-28  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\codequoteleft): disable `! and `? ligatures
	for Spanish punctuation.

2008-10-25  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\quotationstart): new macro.
	(\quotation): call it.
	(\smallquotation): new env.
	(\Esmallquotation): new macro.
	Patch from Werner Lemberg, 21 Oct 2008 16:05:27.

	* doc/texinfo.txi (quotation, small, summary): update documentation,
	* doc/refcard/txirefcard.tex: update.

2008-10-20  Oleg Katsitadze  <olegkat@gmail.com>

	* doc/texinfo.tex (\includezzz, \doverbatiminclude):  Better fix
	to allow @-commands in file names, as set up by \indexnofonts.
	help-texinfo request from David Bateman, 13 Oct 2008 15:58:07.

2008-10-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\documentlanguage): read the txi-LL.tex file
	with \globaldefs=1 in effect.
	* doc/txi-LL.tex: set nonfrenchspacing (English and Portuguese) or
	frenchspacing (everything else), based on Babel's settings.
	Suggestion from Werner Lemberg, 15 Oct 2008 22:07:38.

2008-10-15  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\doverbatiminclude): special-case \@,
	so @@ can be used in the filename.
	help-texinfo request from David Bateman, 13 Oct 2008 15:58:07.

2008-10-12  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\dosynindex): \ifx\csname...\endcsname
	has to compare to \relax, not \undefined.

	* doc/texinfo.tex (\txisetlanguage): new helper macro for the
	txi-??.tex files.
	* doc/txi-??.tex: add call to all files to set hyphenation
	patterns (if they are available) and hyphenmin values.

2008-10-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/session.c (internal_next_line): New function.  A safer
	version of info_next_line, which ensures that the references work
	correctly on malformed info documents (such as gawk.info v. 3.1.5).

2008-10-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/display.c (display_update_one_window): Remove superfluous
	call to	fflush.
	* info/session.c (set_window_pagetop): Disable scrolling if the
	amount to scroll is one line.  This prevents status line
	blinking.

	* info/info-utils.c (info_parse_node): Correctly handle nested
	parentheses.
	* info/nodes.c (info_get_node): If no file buffer is found, try to
	load man page.  Report an error if that fails as well.

2008-09-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	* makeinfo/sectioning.c (get_sectioning_number): Use
	getdocumenttext to translate 'Appendix' heading.

2008-09-18  Karl Berry  <karl@tug.org>

	* Version 4.13.

2008-09-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/window.c (line_map_init): Take an additional argument,
	node.
	(window_compute_line_map): Recompute the line map if the node
	has changed.
	* info/window.h (struct line_map_struct): New member `node'.

2008-08-29  Karl Berry  <karl@gnu.org>

	* doc/info-stnd.texi: use @kbd for key sequences and @key only for
	names of keys, as intended.  Inspired by Eli, 28 Aug 2008 21:21:38.

2008-08-28  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (main): convert_from_stream (stdin)
	if an input filename is named "-".  Suggestion from
	Bruno Haible, 26 Aug 2008 01:05:28.

2008-08-27  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (EXECUTE_STRING_MAX): bump to 32k.
	Report from Patrice, 20 Aug 2008 14:28:30.
	A real fix is beyond me right now, and seems unnecessary
	for the future since we're moving to a different implementation.

2008-08-16  Karl Berry  <karl@tug.org>

	* pretest 4.12.94.

2008-08-15  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (run_thumbpdf): needs $in_dir on the filename.
	Report from: Christoph Spiel, 13 Aug 2008 08:27:16.

2008-08-15  Ben Pfaff  <blp@cs.stanford.edu>  (tiny change)

	* makeinfo/makeinfo.c (remember_brace_1): always xstrdup.
	Avoids seg fault on input of {x}@y, e.g., makeinfo texinfo.tex.
	Sent 14 Aug 2008 21:35:19.

2008-08-14  Karl Berry  <karl@gnu.org>

	* info/info.c (info_short_help): mention Info manuals and the h
	key within the program.

2008-08-10  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (absolute_filenames): preserve even non-directories
	in the returned path, in case they contain metacharacters
	meaningful to TeX, such as braces.
	Bug report from Werner Lemberg, 10 Aug 2008 08:26:58.

2008-07-27  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (xref_files_save): null out TAR_OPTIONS.
	From Jim Meyering.

2008-07-27  Karl Berry  <karl@tug.org>

	* pretest 4.12.93.

	* gnulib: import memmem.

2008-07-07  Karl Berry  <karl@gnu.org>

	* install-info/tests/*-test: prefix the template with ii##.

2008-07-06  Karl Berry  <karl@tug.org>

	* pretest 4.12.92.

2008-07-05  Robert Kiesling  <rkiesling@earthlink.net>  (tiny change)

	* makeinfo/node.c (cm_node): move <p> to after anchors, closer to
	<div>.

2008-07-05  Karl Berry  <karl@gnu.org>

	* install-info/tests/ii-0041-test, ii-0050-test: with template,
	have to handle compressed output files differently, or
	the temp files are left behind by distclean.

	* install-info/tests/*-test: use mktemp XXXXXXXX for BSD.
	Report from Unga, 29 Jun 2008 08:29:54.

2008-07-04  Akim Demaille  <akim@epita.fr>

	texi2dvi: Fix -t.
	* util/texi2dvi (run_tex): The code that installs a symlink was
	installing the symlink directly to itself, instead of towards the
	actual source file.  I wonder how it worked.  As a result -t was
	not taken into account.
	Fix the symlink creation.
	* util/texi2dvi.test (one_run): Test -t support.

2008-07-03  Karl Berry  <karl@gnu.org>

	* doc/Makefile.am (pdftexi2dvi.1): use change_envvars here too.

2008-07-02  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (generated_files_get): find .fls files too.
	(from the -recorder option.)
	Suggestion from Wybo Dekker.

2008-07-01  Karl Berry  <karl@gnu.org>

	* doc/Makefile.am (change_envvars): include util_srcdir in PATH
	so texi2pdf can find texi2dvi for making the man pages.
	Report from Michael Haubenwallner, 01 Jul 2008 14:33:18.

2008-06-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/info.c (long_option): New options
	--show-malformed-multibytes and --no-show-malformed-multibytes
	* info/man.c (find_man_formatter): If INFO_MAN_COMMAND is
	specified, use its value as man command.
	* info/window.c (show_malformed_multibyte_p): New variable.
	(process_node_text): Ignore malformed multibyte characters unless
	show_malformed_multibyte_p is set.
	* info/window.h (show_malformed_multibyte_p): New extern.

	* doc/info-stnd.texi (Invoking Info): Document new options.
	* NEWS: Likewise.

2008-06-18  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (usage): More comments.
	(version): exit 0.
	Reported by Karl Berry.

2008-06-16  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (version): New function, to replace...
	($version): this.
	(usage): Document --dvipdf.

2008-06-16  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi: Sort functions.

2008-06-16  Akim Demaille  <akim@epita.fr>

	texi2dvi: avoid "\n" in echos to please Bash 3.2.
	It is virtually impossible to find a safe means to use
	echo with \n in it.  So use cat and here docs.
	* util/texi2dvi ($usage): Remove, replaced by...
	(usage): this function.

2008-06-16  Akim Demaille  <demaille@gostai.com>

	Support -I dir1:dir2, as per the documentation.
	Reported by Vincent Ordy.
	* util/texi2dvi: (list_concat_dirs): New.
	Currently mostly a copy of absolute_filenames, but the latter
	is scheduled for removal.
	Use list_concat_dirs for -I support.
	(--I*): Remove, not documented anywhere, and too accepting.

2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* autogen.sh: Fix quotation typo.
	* gnulib/lib/configmake.h, gnulib/lib/stdbool_.h: Remove.

2008-06-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix length calculation for strings containing ANSI escapes.
	Bug reported by Benno Schulenberg.

	* info/man.c (clean_manpage): Remove.
	(get_manpage_contents): Remove the kludge introduced 2006-08-13.
	* info/window.c (process_node_text): ANSI escapes have visible
	length of 0.
	(clean_manpage): Multibyte-safe implementation.
	* info/window.h (clean_manpage): New prototype.

2008-06-12  Yavor Doganov  <yavor@gnu.org>  (tiny change)

	* util/gendocs_template:
	1. Link to the new FSF online store.
	2. /server/footer-min.html is no longer necessary and we should remove
            it at some point.  It would be easier if less articles include it.
	3. Bump copyright year.

2008-06-12  Karl Berry  <karl@tug.org>

	* pretest 4.12.91.

2008-06-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/session.c (point_backward_char): Skip columns until
	previous point is reached.

	* info/dir.c, info/display.c, info/dribble.c, info/echo-area.c
	info/filesys.c, info/footnotes.c, info/gc.c, info/indices.c,
	info/info-utils.c, info/info.c, info/infodoc.c, info/infokey.c,
	info/infomap.c, info/m-x.c, info/makedoc.c, info/man.c,
	info/nodemenu.c, info/nodes.c, info/pcterm.c, info/search.c,
	info/session.c, info/terminal.c, info/tilde.c, info/variables.c,
	info/window.c: Avoid useless type casts.

2008-06-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix incremental regexp searches (bug reported by Bruno Haible).

	* info/search.c (regexp_search): Take an additional argument,
	pret.  Return the final state of search binding if it is given.
	* info/search.h (regexp_search): Update prototype.
	* info/session.c (info_search_in_node_internal): New function.
	(info_search_in_node): Rewrite as a wrapper over
	info_search_in_node_internal.
	(info_search_internal): Take an additional argument.  Initialize
	window->point from it if it is given.
	Use info_search_in_node_internal.

2008-06-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/session.c (_looking_at_newline, point_next_line)
	(point_prev_line, point_forward_char, point_backward_char)
	(point_skip_ws_forward, point_skip_ws_backward)
	(point_forward_word, point_backward_word): New functions.
	(info_end_of_line, info_forward_char, info_backward_char)
	(info_forward_word, info_backward_word): Reimplement to work
	correctly in multibytes locales.
	* info/window.c (window_scan_line): New function.
	(window_compute_line_map): Rewrite using window_scan_line.
	(window_end_of_line): New function.
	* info/window.h (LINE_MAP): Change type of map to long.
	(window_end_of_line): New prototype.

2008-06-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix cursor positioning in multibyte locales.

	* info/display.c (process_node_text): Move to window.c
	* info/display.h (process_node_text): Move to window.h
	(handle_tag): New prototype.

	* info/window.c (window_get_cursor_column): Rewrite using
	window_point_to_column.
	(window_chars_to_goal): Change signature.
	(process_node_text): Move from display.c
	(window_line_map_init, window_compute_line_map)
	(window_point_to_column): New functions.
	* info/window.h (LINE_MAP): New data type.
	(WINDOW): New member line_map.
	(window_chars_to_goal): Change prototype.
	(window_line_map_init, window_compute_line_map)
	(window_point_to_column): New prototypes.

	* info/echo-area.c (ea_tab_insert, ea_kill_word)
	(ea_backward_kill_w): Call window_line_map_init.
	* info/session.c (move_to_new_line): Change call to
	window_chars_to_goal.
	(info_end_of_line, info_beginning_of_line): Use line map.

2008-06-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/info-utils.c (printed_representation): Fix length
	calculation.

2008-06-03  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (run_makeinfo): = not ==.
	From Ralf W, 3 Jun 2008 21:12:30.

2008-05-22  Karl Berry  <karl@tug.org>

	* pretest 4.12.90.

	* install-info/tests/Makefile.am (EXTRA_DIST): missed ii-0051-test.

2008-05-20  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (cm_image): need another byte for fullname.
	Report from Patrice Dumas, 15 May 2008 00:40:03.

2008-05-19  Duncan Murdoch <murdoch@stats.uwo.ca>

	Added --internal-links option to print file of internal links:
	* makeinfo/makeinfo.c (OPT_INTERNAL_LINKS, long_options, main, usage):
        add command-line option.
	(convert_from_loaded_file): write the file.
	* makeinfo/html.c (internal_links_filename,
	internal_links_stream, escaped_anchor_name): new globals and fn.
	(add_escaped_anchor): call escaped_anchor_name.
	* makeinfo/html.h: declare them.
	* makeinfo/index.c (cm_printindex): write out indexed links.
	* makeinfo/toc.c (toc_add_entry, contents_update_html): write out
	TOC entries, use escaped_anchor_name rather than duplicating code.
        * doc/texinfo.txi (Invoking makeinfo): document it.

2008-05-18  Karl Berry  <karl@gnu.org>

	* install-info/install-info.c (split_entry): split at period-newline,
	too.  Report from Ulrich Mueller, 14 May 2008 06:59:35.

2008-05-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Xref Command Expansion): add @leq,
	@geq, @arrow, @textdegree Unicodes.  Suggestion from
	Patrice Dumas, 15 May 2008 01:02:37.

2008-05-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/display.c (find_diff): New function.
	(display_node_text): When computing differences between old and
	new lines use character, not byte offsets.

2008-05-12  Karl Berry  <karl@gnu.org>

	* install-info.c (split_entry, add_missing_basenames,
	add_mission_descriptions, --name and --description parsing):
	use ". " to delimit the description from the node name,
	rather than just ".", since we want to support nodes and names
	containing "config.status".
	* doc/texinfo.txi (Menu Parts): mention need for ". ".
	(Invoking install-info): mention bzip2 and lzma checks.

2008-05-11  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (usage): give -l input samples as latex and texinfo,
	not LaTeX and Texinfo.
	Report from Hilmar Preusse, 10 May 2008 15:03:23, Debian bug #472758.

	* install-info/tests/0051, 52: new tests for periods in item names.
	Bug report from Ulrich Mueller, 7 May 2008 01:56:38.

2008-05-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Handle multibyte encodings correctly.

	* info/display.c (ITER_SETBYTES,ITER_LIMIT): New defines.
	(process_node_text): New function.
	(display_node_text): New function.
	(display_update_one_window): Correctly process multibyte
	characters.
	* info/display.h (process_node_text): New function prototype.
	* info/info-utils.c (printed_representation): Rewrite to take into
	account multibyte sequences.
	* info/info-utils.h (printed_representation): Change prototype.
	* info/info.h: Include string.h, mbiter.h and mbchar.h.
	* info/window.c (calculate_line_starts ): Rewrite using
	process_node_text to take into account multibyte characters.

	Bootstrap from GNU gnulib 2008-04-23 06:09:44:

	* gnulib/lib/Makefile.am: Import mbchar, mbiter and mbschr.
	* gnulib/lib/sys_stat.in.h, gnulib/lib/wctype.in.h,
	gnulib/lib/sys/stat.h, gnulib/m4/gnulib-cache.m4,
	gnulib/m4/gnulib-comp.m4, gnulib/m4/sys_stat_h.m4,
	gnulib/m4/wctype.m4: Updated files.

2008-05-05  Karl Berry  <karl@gnu.org>

	* doc/info-stnd.texi (Stand-alone Info): rename node from What is Info?
	for sake of xref in info.texi.
	* doc/info.texi (Top): xref.

2008-04-30  Thomas Thorberger  <thor@erlm.siemens.de>  (tiny change)

	* install-info/install-info.c (split_entry): use valid pointer
	entry, not ptr.  bug-texinfo mail 30 Apr 2008 11:59:57.

2008-04-25  Peter Breitenlohner <peb@mppmu.mpg.de>

	* info/session.c (info_search_internal): cast to `char *' in
	order to avoid compiler warning.

2008-04-23  Bruno Haible  <bruno@clisp.org>

	Allow "gendocs -o /some/absolute/dir".
	* gendocs.sh (dotdot_outdir): New variable.

2008-04-19  Karl Berry  <karl@gnu.org>

	* Version 4.12.

2008-04-19  Per \O{}yvind Karlsen  <peroyvind@mandriva.org>  (tiny change)

	* info/filesys.c (compress_suffices): decompress .lzma with unlzma.
	* install-info/install-info.c: support lzma.

2008-04-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\math): \let the Texinfo accent commands
	(\" \' ... \dotaccent) to their plain TeX math equivalents
	(\ddot \acute ... \dot), where possible.
	Report from John Mandereau, 17 Apr 2008 17:53:28.

2008-04-17  Karl Berry  <karl@gnu.org>

	* util/texi2dvi: allow more characters special to plain TeX
	in the directory name in tidy mode (but not the base file name).

	* util/texi2dvi: more quoting of file name args for the sake of
	names containing whitespace.  A spurious message still results.

	* install-info/tests/defs.in: new file.
	* configure.ac: generate install-info/tests/defs.
	* install-info/tests/ii-*-test: source it.
	* install-info/tests/Makefile.am: do not use export,
	which is only supported by GNU make.

2008-04-13  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	DJGPP specific issues.
	* djgpp/config.sed: Fixes required to use configure scripts generated
	by autoconf 2.62.

2008-04-09  Karl Berry  <karl@gnu.org>

	* pretest 4.11.96.

	* doc/texinfo.txi (geq leq): New node to document new commands
	@geq{} and @leq{}, suggested by Arnold Robbins.
	* doc/texinfo.tex (\geq, \leq): new macros.
	* makeinfo/cmds.c (cm_geq, cm_leq): new fns.
	(cm_minus): make static.
	* makeinfo/cmds.h (cm_minus): remove decl.

	* makeinfo/insertion.c (handle_verbatim): ignore rest of @verbatim
	line, including the newline.
	Report from Thien-Thi Nguyen, 01 Apr 2008 11:14:48.

2008-04-09  Reinhold Kainhofer  <reinhold@kainhofer.com>  (tiny change)

	* makeinfo/insertion.c (begin_insertion): do not indent via
	whitespace for html, since we already do <blockquote>.
	Reported 30 Mar 2008 00:56:56.

2008-04-02  Jim Meyering  <jim@meyering.net>  (tiny change)

	* doc/texinfo.tex: fix typos in comments.

2008-03-31  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\dopdfimage): try .PDF too.
	(\imagexxx): reduce space around vmode image to \medskip from \bigskip.
	Start \noindent paragraph for vmode image so that @quotation etc.
	indentation will be respected.
	Report from Reinhold Kainhofer, 28 Mar 2008 17:33:05.

2008-03-28  Karl Berry  <karl@gnu.org>

	* info/Makefile.am (funs.h): change target from all of
	$(generated_sources) to avoid problems with parallel builds.
	From Michael Haubenwallner, 20 Mar 2008 22:52:20.

2008-03-26  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (search_forward): use const.
	Also (from William Xu) fix typo in comment.
	* makeinfo/makeinfo.h (search_forward): change decl.

2008-03-25  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (TEX): only unset it if it was nonempty and a
	directory.

2008-03-25  Akim Demaille  <akim@epita.fr>

	* doc/Makefile.am: Use util_srcdir (new var) where appropriate.
	(man_MANS): Also install texi2pdf.1 and pdftexi2dvi.1.
	(unset_envvars): New.
	Use it.
	* util/local.test: Check we don't use $().
	Simplify sed usage: don't use \| which is not portable enough.
	* util/Makefile.am: Re-enable tests, in maintainer mode.

2008-03-23  Benno Schulenberg  <bensberg@justemail.net>  (tiny change)

	* info/session.c (_scroll_backward): better cursor placement.

2008-03-23  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (TEX): unset if it refers to a directory; I think
	the University of Utah installation does this.

2008-03-22  Karl Berry  <karl@gnu.org>

	* info/session.c (info_move_to_xref): conditionalize "no xref"
	message on cursor_movement_scrolls_p.  Proposed by
	Benno, 22 Mar 2008 15:17:49.

2008-03-21  Karl Berry  <karl@gnu.org>

	* pretest 4.11.95.

	* info/Makefile.am (funs.h): use this as the dependency

2008-03-21  Karl Berry  <karl@gnu.org>

	* info/session.c (_scroll_forward): leave cursor on last line.
	(_scroll_backward): use info_beginning_of_node for consistency.
	Changes proposed by Benno Schulenberg, 21 Mar 2008 16:31:27.

2008-03-20  Karl Berry  <karl@gnu.org>

	* info/info.c (main): avoid declaration after statement.

2008-03-17  Karl Berry  <karl@gnu.org>

	* texinfo.tex (\xrefX): avoid TeX expansions of _ etc.
	in the info filename argument (#4).
	Report from Ralf Wildenhues, 15 Mar 2008 11:23:38.

2008-03-14  Karl Berry  <karl@gnu.org>

	* pretest 4.11.94.

	* install-info/install-info.c: portability fixes.
	(parse_dir_file): declare void, since it is.
	(split_entry): Remove unused variable ostream.
	(add_missing_basenames, add_missing_descriptions): Avoid
		declarations after statements.
	(main): Do not use // comments.
	(format_entry): avoid using isblank, linking fails on osf-alpha,
	others.
	* util/texi2dvi: use `...` instead of $(...).  Avoid
	(...) as case labels.

2008-03-12  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (exdent): typo in example.
	Report from Jaakko Hollmen, 11 Mar 2008 19:25:01.

2008-03-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/session.c (_scroll_backward): Avoid wrapping to the end of
	page when a backward scrolling is requested on the top node.
	Patch proposed by Benno Schulenberg.

2008-03-07  Karl Berry  <karl@gnu.org>

	* pretest 4.11.93.

	* info/infodoc.c (info_internal_help_text): reorder, regroup.
	Suggestion from Benno Schulenberg, 06 Mar 2008 11:59:06.

2008-03-07  Joseph Myers  <joseph@codesourcery.com>  (tiny change)

	* doc/texinfo.tex (\includezzz): Use \turnoffactive before
	expanding @value.

2008-03-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/session.c (info_search_internal): Reword wrap-around
	messages.
	* configure.ac (AM_INIT_AUTOMAKE): Finally remove dist-bzip2.

2008-03-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	* util/gendocs.sh: Pass --node-files to texi2html only together
	with the --split option.

	* info/session.c (last_node_p): Remove unused variable.
	(info_search_internal): Print a message if the search wraps over
	the end or beginning of the document.

	* configure.ac (AM_INIT_AUTOMAKE): Move all automake options here.
	Add dist-bzip2 for completeness.
	* Makefile.am (AUTOMAKE_OPTIONS): Remove in favor of
	AM_INIT_AUTOMAKE.
	* AUTHORS: Update the URL of Translation Project.

2008-03-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	* info/session.c (_scroll_backward): Place cursor at the end of
	node if cursor_movement_scrolls_p is on.

	* Makefile.am (AUTOMAKE_OPTIONS): Raise version requirement to
	1.10.1. This is needed for dist-lzma.

	* system.h: Include <ctype.h>
	* info/session.c (scroll_last_node_choices, scroll_last_node): New
	variables.
	(forward_move_node_structure): Special behavior when a scrolling
	command is issued while on the last node.
	* info/session.h (scroll_last_node_choices, scroll_last_node): New
	variables.
	(SLN_Stop,SLN_Scroll,SLN_Top): New defines.
	* info/variables.c (info_variables): New variable
	scroll-last-node.
	* info/variables.h (scroll_last_node): New variable.
	* doc/info-stnd.texi: Document scrolling behavior at the last node
	and the scroll-last-node variable.
	* NEWS: Document scrolling behavior at the last node.

2008-03-02  Karl Berry  <karl@gnu.org>

	* configure.ac (AM_INIT_AUTOMAKE): dist-lzma instead of dist-bzip2.

2008-03-01  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	DJGPP specific issues.
	* system.h [O_BINARY]: Use HAVE_DRIVE in IS_ABSOLUTE.
	* djgpp/config.sed: Fix regex pattern to handle version numbers that
	looks like 4.NN.NN

2008-02-29  Karl Berry  <karl@gnu.org>

	* pretest 4.11.92.

2008-02-28  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\includezzz): \edef the filename in order
	to expand @value constructs (include-value).  This fix
	from Joseph S. Myers, 1 Feb 2008 01:11:11.
	Document that the \expandafter trickery is necessary in order to
	read the file outside of a group (mac-incl).
	This report from John Mandereau, 28 Feb 2008 22:12:34.

	* info/infodoc.c (info_internal_help_text): more tweaks.
	* info/infomap.c: move up/down to end, too.
	Suggestions from Benno Schulenberg, 27 Feb 2008 23:44:17
	and 28 Feb 2008 22:49:27.

2008-02-28  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (absolute): Add a missing "local".

2008-02-28  Akim Demaille  <akim@epita.fr>

	Let texi2dvi keep the trailing //.
	* util/texi2dvi ($space, $tab): New.
	($IFS): Use them to be robust to zealous white space cleanups.
	(absolute): Preserve the trailing slashes.
	(tex_envvars): Add MPINPUTS, MFINPUTS, and TFMFONTS.

2008-02-28  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi: Don't use "local foo=`cmd`", because in that case
	failures of cmd, including with set -e, will go unnoticed.  So
	always first declare with local, then run the assignment.
	(index_file_p): Adjust to be usable with index.sty.
	* util/local.test: Make the test more robust.

2008-02-27  Karl Berry  <karl@gnu.org>

	* pretest 4.11.91.

	* info/infomap.c [!INFOKEY]: remove this whole block.  It is too
	confusing having two sets of key bindings.

	* info/infodoc.c (info_internal_help_text): more tweaks.
	Suggestions from Benno Schulenberg, 26 Feb 2008 00:34:22.

2008-02-26  Brendan O'Dea <bod@debian.org>  (tiny change)

	* util/texi2dvi: slightly reformat usage message for help2man.
	(sent by peb 26 Feb 2008 12:01:11)

	* install-info/install-info.c (print_help): keep two spaces
	between option name and description, or help2man can't do a good job.

2008-02-26  Peter Breitenlohner <peb@mppmu.mpg.de>

	* info/doc.h, info/echo-area.c, info/echo-area.h,
	info/footnotes.c, info/indices.c, info/info.c, info/info.h,
	info/infodoc.c, info/infokey.c, info/infomap.c, info/m-x.c,
	info/nodemenu.c, info/session.c, info/session.h,
	info/variables.c, info/variables.h, info/window.c,
	info/window.h:
	declare constant strings as such and remove
	many `(char *)' casts -- in particular for `_(...)'.
	Avoid gcc warnings (for --disable-nls and maybe without).

2008-02-25  Karl Berry  <karl@gnu.org>

	* autogen.sh: run autoconf before autoheader, then automake
        (per autoreconf).

2008-02-24  Karl Berry  <karl@gnu.org>

	* info/infomap.c (x): bind to delete_window.
	* info/infodoc.c (info_internal_help_text): more rearrangements.
	(create_internal_info_help_node: omit incorrect exiting suggestion
		at end.
	Suggestions from Benno Schulenberg, 24 Feb 2008 22:56:44.

	* install-info/install-info.c (munge_old_style_debian_options):
	avoid use of asprintf, just xmalloc ourselves.
	In report from Juan Manuel Guerrero, 24 Feb 2008 22:06:35.

	* install-info/install-info.c (spec_entry) <text_len>: declare
	as size_t instead of int, to avoid warning.
	In report from Juan Manuel Guerrero, 24 Feb 2008 22:06:35.

2008-02-22  Karl Berry  <karl@gnu.org>

	* pretest 4.11.90.

2008-02-22  Peter Breitenlohner <peb@mppmu.mpg.de>

	* configure.ac (--enable-multiplatform): also set libdir.
	* util/defs.in (PATH): include @abs_builddir@.
	* util/texi2dvi (usage): consistently escape \$HOME.

2008-02-21  Karl Berry  <karl@gnu.org>

	* info/infodoc.c (info_internal_help_text): more simplifications.
	Suggestions from Benno Schulenberg, 21 Feb 2008 23:35:38.

	* install-info/tests/ii-0041-test,
	* install-info/tests/ii-0041-test: ensure target dir file is rw.

2008-02-19  Karl Berry  <karl@gnu.org>

	* info/infodoc.c (info_internal_help_text): rearrangements.
	* info/session.c (cursor_movement_scrolls_p): 1 by default.
	* info/window.c (window_scroll_step): 1 by default.
	* info/infomap.c <key bindings>: h to info_get_help_window,
	H to info_get_info_help_node,
	PgUp to info_scroll_backward, PgDown to info_scroll_forward,
	move q to after C-x C-c .
	Suggestions from Benno Schulenberg, 04 Jan 2008 23:20:46.

2008-02-17  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (EGREP): need egrep early.

	* util/texi2dvi: path_sep is : on djgpp too.  From Eli Z.

	* makeinfo/makeinfo.c: typos in comments.

	* makeinfo/cmds.c (cm_direntry): call close_single_paragraph,
	instead of add_char('\n'), or the INFO-DIR-SECTION lines from two
	consecutive @dircategory's are munged together.
	Bug report from Ralf Angeli, 16 Feb 2008 18:59:42.

2008-02-16  Karl Berry  <karl@gnu.org>

	* util/texi2dvi: path_sep is : on mingw as well as cygwin.
	Report from: FX Coudert, 16 Feb 2008 15:43:15.

	* makeinfo/cmds.c (cm_cite): avoid double apostrophe in
	Info output of, e.g., ... @cite{Foo}'s ...
	Report from Bob Chassell.

2008-02-15  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\tex): spurious space in redefinition of \top.

	* makeinfo/cmds.c (handle_include): set in_fixed_width_font
	for expanding the filename argument, so -- doesn't become -.
	Bug report from Daniel Richard G., 13 Feb 2008 01:50:00.

2008-02-11  Karl Berry  <karl@gnu.org>

	* info/session.c (incremental_search): if a regex search,
	search every time through the loop, not only if the search
	succeeded.
	Bug report from Ralf Wildenhues, 8 Feb 2008 23:30:51.

2008-02-10  Karl Berry  <karl@gnu.org>

	* info/session.c (show_isearch_prompt): Start with "Regexp" if
	it's a regexp i-search.
	Suggestion from Ralf Wildenhues, 8 Feb 2008 23:30:51.

2008-02-04  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\includezzz): simply do the \input (instead of
	trickily expanding it after the }) a la \verbatiminput; otherwise,
	@value expansions are not done.  The trickery just seems unnecessary.
	Report from Joseph S. Myers, 1 Feb 2008 01:11:11.

2008-02-01  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\ptextop): save plain tex \top (a math symbol).
	(tex env): restore plain text \top.

2008-01-31  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Click Sequences): new section to document new
	commands @arrow, @clicksequence, @click, and @clickstyle.
	* doc/texinfo.tex (\clicksequence, \click, \clickstyle): define them.
	* makeinfo/cmds.h,
	* makeinfo/cmds.c (cm_arrow, cm_click, cm_clicksequence,
	cm_clickstyle): new fns.
	* insertion.h,
	* insertion.c (get_item_function): no longer static.
	* xml.h,
	* xml.c (CLICK, CLICKSEQUENCE): new elements.
	* util/texinfo.dtd (Inline.misc): add click and clicksequence.
	(rarr): new entity.

	* makeinfo/xml.c (xml_insert_entity): only do XML checks if we are
	actually outputting XML; this routine is also used for HTML output.

	* makeinfo/makeinfo.c (convert_from_loaded_file): move
	xml_begin_document to after we are sure the output file is open.

2008-01-30  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi, doc/info-stnd.texi (Back-Cover Text): new
	wording from rms.

2008-01-24  Karl Berry  <karl@gnu.org>

	* info/session.c (info_move_to_xref): must use fixed-string
	searches for these Info keywords that contain *.
	Report from Ben Asselstine, 29 Dec 2007 11:21:40 (et al.).

	* doc/info-stnd.texi (What is Info): that's C-x C-c to exit, not
	C-x C-x.  Report from Benno, 24 Jan 2008 00:40:04.

2008-01-23  Karl Berry  <karl@gnu.org>

	* makeinfo/insertion.c (begin_insertion) <direntry>: ignore
	whitespace beginning the first * line inside @direntry,
	to work around the zsh manual.
	Report from Norbert Preining, 14 Jan 2008 09:09:01.

2008-01-21  Karl Berry  <karl@gnu.org>

	* info/info.c (main): silently switch to info-stnd if given
	-O (--usage) info.
	Suggestion from Benno, 19 Jan 2008 19:58:47.

2008-01-20  Karl Berry  <karl@gnu.org>

	* install-info/install-info.c (print_help): split up big help string,
	some rewording.

2008-01-19  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (run_tex): use verbose, not echo, so -q is respected.
	Report from Kurt Hornik, 19 Jan 2008 11:16:27.

2008-01-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Other Info Directories): mention starting at 0
	and what-cursor-position when figuring column positions.

2008-01-16  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (move_to_dest): compare with filenames, rather
	than cmp -s, since the output file might not actually change.
	Report from Ralf Wildenhues, 15 Jan 2008 07:20:34.

	* doc/texinfo.txi (Invoking makeinfo): --document-language default
	is @documentlanguage, as of 4.11.

	* doc/texinfo.txi (Makeinfo Pointer Creation): mention the
	need for @detailmenu here, too.

2008-01-14  Karl Berry  <karl@gnu.org>

	* NEWS: install-info NEWS details.

2008-01-13  Bruno Haible  <bruno@clisp.org>

	* util/gendocs.sh (curdate): Execute 'date' command in the locale
	specified by SETLANG.

2008-01-12  Bruno Haible  <bruno@clisp.org>

	* doc/texinfo.txi (Cross Reference Parts): better description of arg2.
	bug-texinfo mail of 12 Jan 2008 15:52:23 +0100.

2008-01-02  Karl Berry  <karl@gnu.org>

	* info/info.c (info_short_help) [__MSDOS__]: puts -b string directly.
	Suggestion from Benno.

2008-01-02  Karl Berry  <karl@tug.org>

	* util/Makefile.am (TESTS): remove dvipdf.test, it is too
	dependent on functional TeX installations.  Not our place to test that.

2008-01-02  Karl Berry  <karl@tug.org>

	* install-info/, install-info/tests/: new subdirectories.
	* util/Makefile.am: move install-info stuff to its own dir, with tests.
	* configure.ac,
	* Makefile.am (SUBDIRS): take care of new dirs.
	* doc/Makefile.am (install-info.1): new source location for man page.
	* po/POTFILES.in: update source list.

2008-01-02  Ben Asselstine  <benasselstine@gmail.com>

	* install-info/install-info.c: much work toward Debian compatibility.
	(line_data): new member num_sections to add; change type of
	add_entries_before.
	(spec_entry): new members missing_name, missing_description,
	missing_basename.
	(longopts): new options --name, --menuentry, --description,
	--no-indent, --keep-old, --maxwidth, --max-width,
	--section-regex, --dry-run.
        (remove_empty_sections, add_entries_into_all_matching_sections,
        keep_old_flag, indent_flag,
        order_new_sections_alphabetically_flag): new globals.
        (print_help): list new options.
        (output_dirfile): count sections added, and possibly sort them.
        (parse_input): handle delete_flag.
        (parse_dir_file): write the end of the last node.
        (mark_entry_for_deletion, adjust_column, format_entry,
        split_entry, reformat_new_entries, add_missing_basenames,
        add_missing_names, add_missing_descriptions,
        munge_old_style_debian_options): new fns.
        (main): new variables calign, align, maxwidth,
        entries_to_add_from_file; munge per debian if needed; handle new
        options.
        (compare_entries_text): use mbsncasecmp.
	* doc/texinfo.txi (Invoking install-info): mention the new options.

2008-01-01  Karl Berry  <karl@gnu.org>

	* info/info.c (info_short_help): break help string into smaller
	pieces, to help translators.
	Suggestion from Benno Schulenberg, 01 Jan 2008 12:22:31.

2008-01-01  Ben Asselstine  <benasselstine@gmail.com>  (tiny change)

	* doc/info-stnd.texi (Invoking Info): document this.
	* info/info.c (long_options, short_options): use -k as an alias
	for --apropos.
	(main): recognize it.
	(info_short_help): document it.
	(APROPOS_OPTION): no longer needed.

2007-12-23  gettextize  <bug-gnu-gettext@gnu.org>

	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.17.

2007-12-19  Norbert Preining  <preining@logic.at>  (tiny change)

	* makeinfo/insertion.c (begin_insertion) <direntry>: use add_word
	instead of insert_string, so that the "This is ..." line is
	written before the START-INFO-DIR-ENTRY.

2007-12-17  Karl Berry  <karl@gnu.org>

	* doc/info-stnd.texi (Searching Commands): Document the new regex
	search, a little.
	(@copying): Update Back-Cover Text.
	* doc/info.texi (@copying): Update Back-Cover Text.

2007-12-17  Stephane Chazelas  <stephane_chazelas@yahoo.fr>

	* info/infomap.c (R): new command info_toggle_regexp.
	* info/session.c (use_regex): new static (true by default).
	(info_toggle_regexp): new command.
	* info/session.h (info_toggle_regexp): declare it.
	* info/search.c (regexp_search): new fn.
	* info/search.h (regexp_search): declare it.
	Savannah bug 15572.

2007-12-16  Karl Berry  <karl@gnu.org>

	* info/session.c: remove more status messages.
	Report from Benno Schulenberg, 16 Dec 2007 12:24:12.

2007-12-15  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\pdffontattr): only do the cmaps if this pdftex
	primitive is defined, for the sake of those running ancient versions.

2007-12-13  Karl Berry  <karl@gnu.org>

	* info/session.c: remove status report messages, said to be noise.
	Report from Benno Schulenberg, 11 Dec 2007 00:19:57.

2007-12-09  Benno Schulenberg  <bensberg@justemail.net>  (tiny change)

	* makeinfo/makeinfo.c (usage): improve help message.
	bug-texinfo mail of 02 Dec 2007 23:43:10 +0100.

2007-12-09  Fabian Groffen  <grobian@gentoo.org>  (tiny change)

	* info/makedoc.c (main): reorder calls following the Makefile
	dependencies, for high-precision filesystems.
	http://bugs.gentoo.org/show_bug.cgi?id=200662
	bug-texinfo mail of 3 Dec 2007 17:59:13 +0100.

2007-12-02  Karl Berry  <karl@gnu.org>

	* info/info.c (main): undo change of 2006-08-13 in this file,
	so info can be easily tested in multibyte locales.

	* all files: use the multibyte case comparison functions
	mbscasecmp and mbsncasecmp from gnulib, instead of simply
	strcasecmp and strncasecmp.  (1) gnulib strcase is buggy,
	declaring the str* functions in string.h instead of strings.h,
	leading to build failure on AIX 4.3.3 (report from Gary E. Barnes,
	21 Nov 2007 12:37:12).  (2) we want to support multibyte locales
	better anyway.

2007-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	* doc/Makeinfo.am: Rename txi-no.tex to txi-nb.tex (see
	2007-10-31).

2007-11-27  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (headings on off): clarify the meaning of
	@headings on.  Report from Dilyan Palauzov, 25 Nov 2007 17:07:09.

2007-11-25  Stephane Chazelas  <stephane_chazelas@yahoo.fr>

	*  info/indices.c (info_next_index_match): use the line number
	specified in the index entry, if available.

2007-11-23  Benno Schulenberg <bensberg@justemail.net>  (tiny change)

	* info/infodoc.c: keep help strings together for translation.

2007-11-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* util/texi2dvi: Fix quoting for white space in file names.

2007-11-21  Karl Berry  <karl@gnu.org>

	* makeinfo/lang.h (hz): #undef, since apparently it is defined on
	AIX 4.3.3.
	Report from: Gary E. Barnes, 21 Nov 2007 12:37:12.

2007-11-16  Karl Berry  <karl@gnu.org>

	* info/info.c (info_error): use puts instead of fprintf if we
	don't actually have any arguments.  Else
	info --file=".%x.%x." will try to print NULL.
	Report from Cody Rester, 16 Nov 2007 08:59:48.

2007-10-31  Karl Berry  <karl@gnu.org>

	* doc/txi-no.tex: rename to txi-nb.tex.
	* po/no.po: remove.
	* po/LINGUAS: remove no.

2007-10-24  Karl Berry  <karl@gnu.org>

	* makeinfo/node.c (cm_node),
	* makeinfo/cmds.c (cm_settitle): no need to call xml_begin_document.
	* makeinfo/makeinfo.c (convert_from_loaded_file): call
	xml_begin_document in docbook case too, else some frontmatter
	can be lost.
	Bug report from Sam Varshavchik, 14 Oct 2007 12:10:04, for binutils.

	* makeinfo/insertion.c: formatting.

	* makeinfo/xml.c (xml_begin_document): arg can be const;
	use basename of @setfilename instead of "book-root".
	(xml_push_current_element, xml_pop_current_element): use
	warning fn for consistent formatting.

	* util/dir-example: binutils update, etc.

2007-10-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	* util/gendocs.sh: New option --texi2html, to use texi2html for
	creating HTML output.
	Handle special conditional constructs in the template: %%IF
	HTML_SECTION%% and %%IF HTML_CHAPTER%% (both closed with a
	corresponding %%ENDIF) to conditionally enable parts of the output
	depending on texi2html split outputs.
	* util/gendocs_template: Conditionally enable section and chapter
	split HTMLs.
	* util/gendocs_template_min: Likewise.

2007-10-19  Karl Berry  <karl@gnu.org>

	* info/display.c (display_update_one_window): don't try to display
	a window unless both width and height are >0.
	* window/window.c (window_new_screen_size): try to ensure that
	no window width/height ever becomes negative.
	Bug report and ideas from Vitezslav Crhonek, 18 Oct 2007 15:15:51,
	as well as https://bugzilla.redhat.com/show_bug.cgi?id=243971.

2007-10-13  Karl Berry  <karl@gnu.org>

	* makeinfo/cmds.c (cm_dircategory): use add_word instead of
	insert_string so that the info file header ("This is ...") comes
	after the INFO-DIR-SECTION magic.
	Bug report from Katsumi Yamaoka, emacs-devel 10 Oct 2007 11:17:10.

2007-10-08  Bruno Haible  <bruno@clisp.org>

	* makeinfo/lang.c (unicode_map): New variable.
	(cm_search_iso_map): In case of UTF-8 encoding, return a Unicode code
	point.
	(add_encoded_char_from_code): New function.
	(add_encoded_char, cm_accent_generic_no_headers): Use it.

2007-10-03  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (math): @math{k_{75}} is allowed, despite bare
	braces.

2007-10-02  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (math): Make description more accurate.
	Ideas by Patrice Dumas, 16 Sep 2007 12:02:46.

2007-09-26  Karl Berry  <karl@gnu.org>

	* makeinfo/index.c (count_strn_chars): new fn.
	(insert_index_output_line_no): call it.
	(cm_printindex): call it.
	This is to fix off-by-one width computation due to @tie{},
	reported by Werner Lemberg, 16 Sep 2007 16:48:47.

	* makeinfo/cmds.c,
	* makeinfo/xref.c: #include "index.h", instead of explicit
	extern printing_index.
	* makeinfo/index.c (the_indices, index_element_compare): can be static.
	* makeinfo/index.h: make order of decls match index.c.

2007-09-25  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Six Parts): End segment should not have toc anymore.

2007-09-24  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (convert_from_file): free `input_filename' leak.
	Reported by Stephen Compall, 21 Sep 2007 20:25:54.

2007-09-21  Stephen Compall <s11@member.fsf.org>  (tiny change)

	* makeinfo/makeinfo.c (convert_from_file): excise code testing
	case in suffixes that doesn't arise.

2007-09-21  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c,
	* info/info.c,
	* util/texindex.c,
	* util/install-info.c (main): unify declaration on char *argv[].

2007-09-20  Greg Schafer <gschafer@zip.com.au>  (tiny change)

	* util/dvipdf.test,
	* util/texi2dvi.test (required): need tex, or the tests fail.

2007-09-17  Karl Berry  <karl@gnu.org>

	* util/defs.in (TEXI2DVI_run): try "type" instead of "which".
	Report from Michael Deutschmann, 13 Sep 2007 01:29:39.

	* util/defs.in (optionset_get): use `...`, not $(...).  Still too
	newfangled.  Report from Bert Deknuydt.

2007-09-16  Thien-Thi Nguyen  <ttn@gnuvola.org>  (tiny change)

	* doc/texinfo.tex (w): Do s/indenting manual/manual indenting/.

2007-09-15  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.h,
	* makeinfo/makeinfo.c,
	* makeinfo/defun.c,
	* makeinfo/html.c,
	* makeinfo/node.c,
	* makeinfo/toc.c,
	* makeinfo/xref.c (__): rename to gdt, since HP-UX uses it in
	<stdsyms.h>.  (Report from Bert Deknuydt, 12 Sep 2007 12:17:34).

2007-09-09  Karl Berry  <karl@gnu.org>

	* Version 4.11.

2007-09-05  Karl Berry  <karl@gnu.org>

	* doc/info-stnd.texi (Variables): make an anchor for
	scroll-behavior, and use it.  Idea from Benno Schulenberg,
	04 Sep 2007 00:21:01.

2007-09-03  Karl Berry  <karl@gnu.org>

	* pretest 4.9.92.

	* doc/texinfo.tex (\baselinefactor): new macro, 1 by default.
	(\setleading): use it, to allow for poor man's double spacing.
	(\afourpaper, \letterpaper): use absolute dimension for height,
	instead of a multiple of \baselineskip.  (Otherwise things run off
	the bottom when double-spacing.)

2007-09-01  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	* djgpp/config.bat: change file names arguments and configure.orig
	to args and configure.org.
	Remove the command line that deletes co*.tmp files.

2007-08-31  Karl Berry  <karl@gnu.org>

	* info/info.c (main) [LC_MESSAGES]: conditionalize setlocale on
	LC_MESSAGES, since djgpp 2.04 doesn't have it.
	Report from Juan Manuel Guerrero, 28 Aug 2007 21:38:18.
	* info/man.c (get_manpage_contents) [LC_MESSAGES]: likewise.
	* makeinfo/makeinfo.c (main): doc fix, likewise.

2007-08-26  Karl Berry  <karl@gnu.org>

	* info/infodoc.c (info_internal_help_text): hardwire
	menu-digits help string; bug report from Benno.

2007-08-16  Karl Berry  <karl@gnu.org>

	* makeinfo/lang.c (iso8859_2_map): include known HTML entities,
	from the 88592.txt file in the GNU enscription distribution.

2007-08-04  Juan Manuel Guerrero  <juan.guerrero@gmx.de>

	* djgpp/config.bat: replace the string diffutil*.pot by
	the correct one texinfo*.pot

	* djgpp/config.sed: adjust for the use with autoconf 2.61

	* djgpp/config.site: adjust for the use with autoconf 2.61

2007-08-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	* doc/info-stnd.texi: Document cursor-movement-scrolls variable.
	Document different spellings of scroll-behaviour variable.
	* info/info-utils.c (info_references_internal): Initialize
	line_number.
	* info/infodoc.c (info_internal_help_text): Update docstrings
	for move-to-next-xref and move-to-prev-xref.
	* info/session.c (forward_move_node_structure)
	(backward_move_node_structure): Return int
	(cursor_movement_scrolls_p): New variable.
	(info_next_line,info_prev_line,info_forward_char,info_backward_char)
	(info_forward_word,info_backward_word): Scroll through the
	entire document if cursor_movement_scrolls_p is set.
	(info_move_to_xref,info_move_to_prev_xref): Return int
	* info/session.h (cursor_movement_scrolls_p): New variable
	* info/variables.h: Likewise
	* info/variables.c (scroll-behavior): Alias for scroll-behaviour
	(cursor-movement-scrolls): New variable.

2007-07-30  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\badparencount, \badbrackcount): make these
	just warnings, not \errmessage's.

2007-07-29  Karl Berry  <karl@gnu.org>

	* pretest 4.9.91.
	* doc/texinfo.txi (Inserting Quotes): wording.

	* util/Makefile.am (TESTS): remove local.test.  It fails and I
	would prefer not to replace local with a shell function anyway.

	* util/texi2dvi.test: with -o output, do not expect input.dvi
	to remain.

2007-07-26  Karl Berry  <karl@gnu.org>

	* util/Makefile.am (pdftexi2dvi): copy texi2pdf, not texi2dvi.

2007-07-24  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (move_to_dest): really move the file,
	don't just copy it, else automake tests fail.
	From Michael Deutschmann, 23 Jul 2007 20:55:32.

2007-07-23  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (license notice): punctuation changes to
	match recommendation.  From Paul Eggert.

2007-07-23  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi: Update DVIPSHEADERS so that dvips finds its
	special headers.
	Don't rely on non-IFS splitting when using local.
	Maybe we should just not use local at all.
	Or never use it to assign at the same time: declare, then assign.
	* util/local.test: Check that "local" is used properly with quotes.

2007-07-23  Akim Demaille  <akim@epita.fr>

	Use hevea more like we use tex itself, no longer as a tool
	that does everything magically.
	* util/texi2dvi (run_hevea): Remove trailing spaces in the
	output.
	(run_tex_suite): Change to the working directory here, no longer
	in...
	(run_core_conversion): here, so that even when running hevea where
	are in the working directory.
	No longer call cd_orig, do it...
	(run_tex_suite): here.
	(run_hevea): Pass verbose flags to it when --debug.
	(run_tex_suite): Since we now want to run the whole suite of tools,
	including bibtex, with hevea, use run_core_conversion, not
	run_tex.
	(run_core_conversion): Now call run_tex.

2007-07-15  Karl Berry  <karl@gnu.org>

	* doc/info-stnd.texi (@copying, GFDL): remove, since it's
	not part of info.texi either.
	(Invoking Info): mention customization here and elsewhere,
	to make it a bit more prominent.

2007-07-15  Oleg Katsitadze  <olegkat@gmail.com>

	* doc/texinfo.tex (\quotedblleft, \quotedblright, \quoteleft,
	\quoteright): aliases for the quotation marks from the CM fonts.
	(\guillemetleft, \guillemotleft, \guillemetright, \guillemotright,
	 \guilsinglleft, \guilsinglright, \quotedblbase, \quotesinglbase):
	 new macros to borrow quotation marks from the EC fonts.  The
	 following font macros support these glyphs.
	(\ecfont): new macro to switch to a EC font as close as possible
	 to the current style.
	(\textecsize, \smallecsize, \smallerecsize, titleecsize, \chapecsize,
	 \sececsize, \ssececsize, \reducedecsize): new macros to store EC
	 font name sizes.
	* makeinfo/cmds.c, makeinfo/cmds.h: added defs for the new
	quotation marks.
	* makeinfo/lang.c (cm_special_char): added guillemetleft,
	guillemotleft, guillemetright, guillemotright.
	* util/texinfo.dtd (lsquo, rsquo, sbquo, bdquo, laquo, raquo,
	 lsaquo, rsaquo): entities for the new quotation marks.
	* doc/texinfo.txi (Inserting Quotation Marks): new section.
	(General Syntactic Conventions): moved quotation mark syntax to
	Inserting Quotation Marks.
	(Preparing for TeX): added info on installation of EC and Euro fonts.

2007-07-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (@copying, GNU Sample Texts),
	* doc/info-stnd.texi (@copying): update Back-Cover Text.

2007-07-12  Karl Berry  <karl@gnu.org>

	* makeinfo/lang.c (default_country_for_lang): strcasecmp returns 0
	when we find en.

2007-07-10  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.h (enable_encoding): default to 1.
	* makeinfo/makeinfo.c (long_options): new option --disable-encoding
	to set to zero.
	(usage): document --disable-encoding.
	* makeinfo/lang.c (add_encoded_char): don't enable 8-bit unless we
	have a document encoding.
	* doc/texinfo.txi (makeinfo Options, documentencoding): document this.

2007-07-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\xrefX): use \putwordSection for external
	cross-references, too.
	Report from Ludovic C, 09 Jul 2007 18:09:13.

2007-07-09  Oleg Katsitadze  <olegkat@gmail.com>

	* doc/texinfo.tex (\thissection): renamed to \lastsection.
	(\thissectionname, \thissectionnum, \evenheadingmarks,
	 \oddheadingmarks, \evenfootingmarks, \oddfootingmarks,
	 \everyheadingmarks, \everyfootingmarks): new macros.
	(\thischapter, \thischaptername, \thischapternum, \thissection,
 	 \thissectionname, \thissectionnum): defined these using marks.
	(\chapoddpage): omit heading and footing on blank filler pages.
	* doc/texinfo.txi (Page headings): documented
	\thissection{,name,num} and \{even,odd,every}{head,foot}ingmarks.
	* makeinfo/cmds.c (command_table): added
	{even,odd,every}{head,foot}ingmarks.

2007-07-08  Karl Berry  <karl@gnu.org>

	* makeinfo/node.c (validate_file): don't check for warning limit,
	it was hit in gnulib.
	* makeinfo/makeinfo.h (reference_warning_limit): remove.
	* makeinfo/makeinfo.c (main): ignore the option (but leave it in
	so any Makefiles or scripts that use it won't gratuitiously break).
	* doc/texinfo.txi (Invoking makeinfo): remove documentation for
	--reference-limit.

2007-07-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (@copying): new Back-Cover Text.

2007-07-06  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Other Info Directories): recommend columns 32
	and 48.  Suggestion from Antonio Diaz Diaz.

2007-07-05  Karl Berry  <karl@gnu.org>

	* texinfo.tex (\setnonasciicharscatcodenonglobal,
	\setnonasciicharscatcode): no newline after #1, that counts as a space.
	(\pagebody, \pagesizesyyy): likewise.

2007-07-03  Oleg Katsitadze  <olegkat@gmail.com>

	* doc/texinfo.tex: use \setcolor for color changes instead of
	\pdfsetcolor, to preserve color changes across page breaks.  Use a
	darker red (which comes out almost black in b&w print) for links
	and urls.

2007-07-02  Oleg Katsitadze  <olegkat@gmail.com>

	* doc/pdfcolor.tex: removed (merged with doc/texinfo.tex).
	* doc/texinfo.tex: merged doc/pdfcolor.tex, omitting unused colors.
	* doc/Makefile.am, doc/README, doc/texinfo.txi, util/srclist.txt:
	removed any mention of pdfcolor.tex.

	* doc/texinfo.tex (\chapmacro):  avoid potential breakpoint at
	interline glue between \pdfdest and the heading.
	(\safewhatsit): typo.

2007-07-01  Karl Berry  <karl@gnu.org>

	* pretest version 4.9.90.

	* COPYING, all source files: GPLv3.

	* makeinfo/makeinfo.c,
	* info/info.c,
	* info/infokey.c,
	* util/install-info.c,
	* util/texindex.c: update --version output.

	* Makefile.am (EXTRA_DIST): remove config.rpath, it's in build-aux now.
	* lib/Makefile.am (libtxi_A_SOURCES): system.h at top level now.

	* util/texi2dvi (move_to_dest): still more tweaks to try avoid
	complaints from cp and cmp.

	* makeinfo/tests/copying.txi: test with nonempty copying text.
	* makeinfo/insertion.c (cm_insert_copying): call output_head.

2007-06-29  Karl Berry  <karl@gnu.org>

	* Version 4.9 (GPLv3, made from 4.8 branch).

2007-06-29  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (move_to_dest): do not cmp a directory.

2007-06-27  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (move_to_dest): do not copy a file onto itself,
	GNU cp complains.

2007-06-27  Oleg Katsitadze  <olegkat@gmail.com>

	* doc/texinfo.tex (\setnonasciicharscatcodenonglobal): new macro.
	(\scanctxt):  in case of non-ASCII encodings, un-activate 8-bit
	chars to avoid their expansion.  Report from John Mandereau,
	22 Jun 2007 17:26:09 +0200.

2007-06-24  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\internalpagesizes): must reset \pdfhorigin and
	\pdfvorigin after changing \pdfpageheight and \pdfpagewidth.

2007-06-20  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\documentlanguagetrywithoutunderscore): new macro,
	to try txi-de.tex if @documentlanguage de_DE.
	(\documentlanguage): call it.

	* lang.c (default_country_for_lang): just return country code, not
	whole locale string.

	* makeinfo.h (output_head_p): new global.
	* makeinfo.c (info_output_head, output_head): new fns.
	(add_char): call it.  This is so we can translate the file header
	("produced by Makeinfo ...") in Info output as well as HTML.
	* html.c,
	* html.h,
	* cmds.c: change usage of html_output_head_p to output_head_p, etc.

2007-06-17  Karl Berry  <karl@gnu.org>

	* makeinfo/lang.c (default_country_for_lang): implement using the
	same locales_with_principal_territory list as gettext's msginit.c.

	* makeinfo/lang.c (language_table): update from current list,
	write out update procedure for next time.
	* makeinfo/lang.h (language_code_type): update enum.
	* doc/texinfo.txi (documentlanguage): don't include the list of
	language codes, change is too rapid.

	* doc/texinfo.tex (\codequoteright, \codequoteleft): support
	@set txicodequoteundirected and
	@set txicodequotebacktick, respectively, as well as the non-txi names.
	* doc/texinfo.txi (Inserting Quote Characters): new node.
	* NEWS: mention both.

2007-06-14  Karl Berry  <karl@gnu.org>

	* makeinfo/lang.c (cm_documentlanguage): add _CC part if necessary,
	or split LL_CC if that's given.  Set document_language so that
	getdocumenttext strings will be translated.
	* doc/texinfo.txi (documentlanguage):
	* NEWS: mention this.

	* util/gendocs_template: mention possibility of buying manuals

2007-06-13  Karl Berry  <karl@gnu.org>

	* makeinfo/xml.c (xml_insert_element_with_attribute): close
	menu_entry and menu_entry_comment elements before handling the
	detailmenu element (either start or end).
	From Thien-Thi Nguyen, 04 Jun 2007 01:18:37.

2007-06-03  Per Bothner  <per@bothner.com>

	* xml.c (docbook_element_list): Map ANCHOR to "anchor".
	* node.c (cm_anchor): Handle docbook.

2007-05-22  Karl Berry  <karl@gnu.org>

	* util/gendocs_template{,_min}: missing period on source link.

2007-05-21  Karl Berry  <karl@gnu.org>

	* makeinfo/multi.c (select_output_environment): C is not Perl.

	* util/install-info.c (--test, --debug): new options,
	via new variable chicken_flag and debug_flag,
	and (minimal) implementation thereof.
	(--silent): synonym for --quiet.
	* doc/texinfo.txi (Invoking install-info): document them.

2007-05-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Invoking install-info): document them.

2007-05-18  Norbert Preining  <preining@logic.at>

	* util/install-info.c (longopts): new options --remove-exactly,
	--section-regex.
	(main): handle them.

2007-05-17  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Image Syntax): findex entry should just be for
	"-", not "@-".  (Which fails due to \initial{\} in texinfo.fns,
	but that's a different story.)

2007-05-04  Karl Berry  <karl@gnu.org>

	* makeinfo/node.c (cm_anchor): ignore following whitespace,
	including newlines.  Reported by Kevin Ryde.
	* doc/texinfo.txi (anchor): state this more clearly.

	* doc/texinfo.tex (\tocreadfilename): allow override of
	\jobname.toc for sake of 2-volume printed lispref.
	(\finishentry): change test for no page number (and hence no
	leaders) again, for "Volume N" in lispref.
	(\smallbook): adjust margins to be more equal.

2007-05-03  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\urlcolor, \linkcolor): define both as \BrickRed
	by default.

2007-04-29  Werner Koch  <wk@g10code.com>

	* makeinfo/html.c (process_css_file): Don't omit copying the i
	of @import.  (Reported on 27 Sep 06.)

2007-04-29  Karl Berry  <karl@gnu.org>

	* system.h [__CYGWIN__]: #define STRIP_DOT_EXE 0 (since gunzip.exe
	may no longer exist), and PIPE_USE_FORK as 1.
	From Christopher Faylor, 28 Apr 2007 20:25:56.

	* makeinfo/cmds.c (cm_strong): doc fix.

	* makeinfo/makeinfo.h (paragraph_buffer_len): move decl here ...
	* makeinfo/makeinfo.c (paragraph_buffer_len): from here.
	* makeinfo/multi.c (select_output_environment): save and restore
	paragraph_buffer_len.  Otherwise, an exceptionally long multitable
	entry (gcal.texi) might realloc output_paragraph, thus increasing
	paragraph_buffer_len, and then we get back to the main text and
	restore the old output_paragraph, we'll be out of sync.  Yikes.
	(Thank you to Electric Fence and valgrind.)

2007-04-26  Oleg Katsitadze  <olegkat@gmail.com>

	* doc/texinfo.tex (cmapOT1, cmapOT1IT, cmapOT1TT): new definitions
	for pdf so that searching and copying from pdf documents will find
	text properly, e.g., the "fi" in "file".  Report from
	Frank K on tex-live.

2007-04-26  Karl Berry  <karl@gnu.org>

	* util/gendocs_template: conform to new GNU style.  From Yavor.
	* util/gendocs_template_min: previous version, without SSI.

2007-04-21  Karl Berry  <karl@gnu.org>

	* system.h (DMALLOC_FUNC_CHECK) [DMALLOC_DEBUG]: #define.

2007-04-17  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: findex set and clear.
	From Kevin Ryde, 16 Apr 2007 11:15:00.

2007-04-12  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: improve @: usage and documentation throughout.

2007-04-08  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (bs_escape_quote): new fn.
	(cm_image) <Info output>: call it, to escape the alt string.
	Also expand the alt string.
	bug-texinfo mail from Kevin Ryde, 26 Mar 2007 07:06:14.

	* doc/texinfo.tex (\printindex): set \plainfrenchspacing.

2007-04-07  Oleg Katsitadze  <olegkat@gmail.com>

	* doc/texinfo.tex (\defunpenalty): new register.
	(\startdefun): use it to avoid page breaks between a defun and a
	single defunx -- only allow breaks between multiple defunx's.

2007-04-03  Oleg Katsitadze  <olegkat@gmail.com>

	* doc/texinfo.tex (\whatsitskip, \whatsitpenalty): new registers.
	(\safewhatsit): generalization of \dosubindsanitize.  Change call.
	(\pdfmkdest, \dosubind, \setref): call it.  This avoids a page
	break at an anchor (lispref/loading.texi/load-read-function).

2007-04-02  Karl Berry  <karl@gnu.org>

	* util/gendocs_template: "bytes" is more accurate than "characters".
	* util/gendocs.sh: force English settings; improve --help.
	From Bruno.

2007-03-31  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (init_paragraph): only free output_paragraph
	if it is non-null.

2007-03-31  Roland Levillain  <roland@lrde.epita.fr>

	* makeinfo/makeinfo.c (cm_image): Look for a JPEG image in the
	include search path before giving up.
	Fix inclusion of JPEG images (with non explicit extension)
	not present in the current directory, but in the include search path.

2007-03-28  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Menus): missing word "text".
	From Matt Kraai, 27 Mar 2007 10:26:28 -0700.

2007-03-18  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (cm_image): malloc enough space for the .txt
	when given an extension.

2007-03-17  Karl Berry  <karl@gnu.org>

	* util/dir-example: dmalloc, alignment.

2007-03-13  Oleg Katsitadze  <olegkat@gmail.com>

	* doc/texinfo.tex (\enddoublecolumns): add \penalty0 so the
	recent contributions won't be spuriously added to an index page.

2007-02-26  Karl Berry  <karl@gnu.org>

	* info/info.c (info_short_example): example for dumping a whole
	manual, suggested by Dan Jacobson, 21 Feb 2007 08:37:08.

2007-02-24  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (The Top Node): no @insertcopying recommended,
	per rms.

2007-02-21  Karl Berry  <karl@gnu.org>

	* system.h: simplify system header inclusion, following current
	practice; that is, copied from GNU Hello.

	* makeinfo/test/no-headers (nulldev): just always use /dev/null.
	Also from Brian.

	* system.h (strcase.h) [!HAVE_STRCASECMP...]: remove this
	inclusion entirely, apparently with gnulib string.h suffices.
	Report from Brian Dessent, 31 Oct 2006 15:50:34.

2007-02-21  Brian Dessent  <brian@dessent.net>  (tiny change)

	* info/info.c,
	* info/infokey.c,
	* info/makedoc.c,
	* util/texindex.c (program_name): declare as non-static, for
	non-glibc, e.g., Cygwin.  bug-texinfo mail from 31 Oct 2006 15:50:34.

2007-02-14  Miloslav Trmac  <mitr@redhat.com>

	* makeinfo/makeinfo.c (getdocumenttext): Correctly save and
	restore the current locale configuration.
	bug-texinfo mail of 14 Feb 2007 16:28:37 +0100.

2007-02-11  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Xref Link Basics): manual is metasyntactic.

	* doc/texinfo.txi (documentencoding, documentlanguage):
	mention the UTF-8 is (sort of) supported, and that these commands
	should be given after @setfilename.

	* doc/texinfo.tex (\pdfmkdest): \makevalueexpandable,
	so simple @value in @node names can work.
	Report from Jorge Barros de Abreu, 14 Jan 2007 08:24:57 (+ff).

2007-02-10  gettextize  <bug-gnu-gettext@gnu.org>

	* gnulib/m4/gettext.m4: Upgrade to gettext-0.16.
	* gnulib/m4/lib-link.m4: Upgrade to gettext-0.16.
	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.16.

2007-02-07  Miloslav Trmac  <mitr@redhat.com>

	* configure.ac: Remove unnecessary wcwidth () test.  Add missing
	setlocale () test.
	* makeinfo/makeinfo.c (string_width): Remove.
	* makeinfo/makeinfo.h (string_width): Remove declaration.

	* makeinfo/cmds.c (cm_center)
	* makeinfo/index.c (insert_index_output_line_no, cm_printindex):
	* makeinfo/makeinfo.c (do_flush_right_indentation)
	* makeinfo/multi.c (output_multitable_row): Use mbswidth () and
	mbsnwidth () instead of string_width ().

2007-01-25  Karl Berry  <karl@gnu.org>

	* makeinfo/float.c (cm_listoffloats): always use the short caption
	in the list of floats if it is provided.  Report from
	Jay Berkenbilt, 19 Jan 2007 11:58:00 -0500.

2007-01-16  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (insert_commands): Use fatal for errors.
	(insert_commands): Actually, use "error", not "fatal".
	White space changes.

2007-01-16  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (run_makeinfo): Instead of putting the whole
	function in a "case", return if the language is not texinfo.

2007-01-16  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi: White space changes.

2007-01-08  Karl Berry  <karl@gnu.org>

	* util/texinfo.dtd (rArr): define, per Per.

2007-01-07  Karl Berry  <karl@gnu.org>

	* makeinfo/cmds.c (cm_result): use rArr for html or docbook.

	* makeinfo/lang.c (encoding_table): include UTF-8, just passing
	through everything as-is.
	(asis_map): rename us_ascii_map (and change US-ASCII entry).

2007-01-03  Karl Berry  <karl@gnu.org>

	* makeinfo/xml.c (xml_id): oops, whitespace should be replaced
	too.  And probably more, but let's leave it at this for now.

2007-01-02  Karl Berry  <karl@gnu.org>

	* makeinfo/xml.c (xml_id): do not use the SGML rules for id's,
	which were very restrictive (no 8-bit chars).  Instead, just pass
	along what we are given, more or less, per current XML.

2006-12-30  Karl Berry  <karl@gnu.org>

	* makeinfo/xml.c (xml_insert_element_with_attribute): remove the
	warning again, the html-docdesc test triggers it for no apparent
	reason, and I don't want to debug it now.

	* doc/texinfo.tex (\DeclareUnicodeCharacter, et al.): new macros
	to support @documentencoding UTF-8 (as well as Computer Modern
	can).  From Werner Lemberg.

2006-12-28  Karl Berry  <karl@gnu.org>

	* makeinfo/xml.c (xml_insert_element_with_attribute): give a
	warning if we need to ignore an insertion because the book hasn't
	started.  Can this ever happen with acceptable Texinfo documents?
	I saw it in a document without @settitle but with @copying.
	(xml_add_char): ensure that we have an element stack before
	testing xml_current_element and failing the assertion.
	(xml_pop_current_element): do not try to print the value of the
	current element on underflow, there isn't one.

2006-12-23  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\xrdef, \xrefX, \pdfmkdest): sanitize the node
	name, so accents (either 8-bit chars or cmds) can be used.

2006-12-22  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\setnormaldispenv, \setsmalldispenv): do
	\endgraf before changing fonts, to get leading of previous
	paragraph right when there is no blank line.
	From John Gabriele, 21 Dec 2006 18:00:24.

2006-12-11  Miloslav Trmac  <mitr@redhat.com>

	* configure.ac: Test wcwidth () availability.
	* makeinfo/makeinfo.h (string_width, current_output_column): New
	declarations.
	(output_column): Remove.  All users replaced by
	current_output_column (), all modifications dropped.
	* makeinfo/makeinfo.c (output_paragraph_start_column): New
	variable.
	(string_width, current_output_column): New functions.
	(get_char_len): Remove.
	(init_paragraph): Initialize output_paragraph_start_column.
	(flush_output): Update output_paragraph_start_column.

	* makeinfo/cmds.c (cm_center)
	* makeinfo/index.c (insert_index_output_line_no, cm_printindex):
	* makeinfo/makeinfo.c (do_flush_right_indentation)
	* makeinfo/multi.c (output_multitable_row):
	Don't assume number of columns == number of bytes.

2006-12-11  Miloslav Trmac  <mitr@redhat.com>

	* makeinfo/makeinfo.h (NON_BREAKING_SPACE): New macro.
	(control_character_bit, meta_character_bit, CTL, UNCTL, META)
	(UNMETA): Remove.
	* makeinfo/makeinfo.c (add_char, flush_output): Use
	NON_BREAKING_SPACE instead of META (' ').
	(get_char_len): NON_BREAKING_SPACE is only one column wide.

2006-12-05  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (@documentencoding): mention that it is
	(somewhat) supported in TeX now.

2006-12-05  Paulo Sequeira  <psequeira@gawab.com>

	* doc/texinfo.tex (\documentencoding): real implementation.
	(\setnonasciicharscatcode): new macro.
	(\missingcharmsg): new macro.
	(\latonechardefs, latninechardefs, \lattwochardefs): new macros.

2006-11-24  Karl Berry  <karl@gnu.org>

	* Makefile.am (po-check): new utility target from coreutils.

2006-11-08  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\dopdfimage): look for png, jpg/jpeg/JPG, and
	  as well as pdf images, since they are supported in pdftex with
	  no further ado.
	* doc/texinfo.txi (Image Syntax): document it.

2006-11-05  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (Image Syntax): don't mention GIF any more.

2006-11-01  Miloslav Trmac  <mitr@redhat.com>

	* util/texindex.c (main): Remove off-line sort implementation.
	(tempdir, tempbase, tempcount, last_deleted_tempcount)
	keep_tempfiles): Remove variables.
	(sort_offline, initbuffer, readline, merge_files, merge_direct)
	(gettempname, maketempname, flush_tempfiles):
	Remove functions.
	(texindex_options): Remove --keep and --no-keep documentation.
	(decode_command): Ignore --keep.
	(writelines): Fix comment.

2006-10-24  Karl Berry  <karl@gnu.org>  (tiny change)

	* util/texindex.c (readline): do the reallocation (more) correctly.
	From Miloslav Trmac.

2006-10-10  Karl Berry  <karl@gnu.org>

	* TODO: would be nice if accent commands implicitly used
	dotless i/j.

2006-10-09  Miloslav Trmac  <mitr@redhat.com>  (tiny change)

	* util/texindex.c (gettempname): new fn, split off from maketempname.
	(maketempname): call it.  We weren't deleting temp files.
	(sort_offline): check result from maketempname.

2006-10-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* makeinfo/tests/quote-args: Add missing $srcdir.

2006-10-04  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\singlequotechar): rename to \codequoteright.
	(\quoteexpand): rename to \rquoteexpand.
	(\codequoteleft): new def, to look for @set codequotebacktick.
	(\lquoteexpand, \quoteexpand): new defs.
	(\lquoteChar, \rquoteChar, \dashChar, \underChar): new \chardef's.
	(\code): must use new \...Char values, since now ` is active.

2006-10-01  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (run_bibtex): also run bibtex if "no .aux file" in
	the .log, and "\bibdata" in the aux, for the first run of a btxmac
	file.  Report from Oleg Katsitadze.

2006-09-30  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Inserting Braces): spurious ppp.

2006-09-22  Stepan Kasal  <kasal@ucw.cz>

	* configure.ac: Add a comment explaining `env -i PATH=$PATH'.

2006-09-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (code): spurious "in the printed manual", from
	Bob C.

2006-09-01  Eli Zaretskii  <eliz@gnu.org>

	* doc/texinfo.txi (Multitable Rows): Document the Info output of
	@headitem.

2006-08-26  Karl Berry  <karl@gnu.org>

	* makeinfo/cmds.c (command_table): new command @textdegree{}.
	* makeinfo/lang.c (cm_special_char): handle textdegree.
	* doc/texinfo.tex (\textdegree): define it.

	* doc/texinfo.txi (Output Formats): update Beebe paper reference.
	(Printed Books): update texinfo.tex reference.
	Report from VAN VLIERBERGHE Stef, 22 Aug 2006 22:05:27 +0200.

2006-08-23  Karl Berry  <karl@gnu.org>

	* doc/Makefile.am (man_rule_bin): use help2man -o, instead of
	redirection, so that `missing' can infer the output filename.

2006-08-13  Alexander E. Patrakov  <patrakov@ums.usu.ru>  (tiny change)

	* info/man.c (get_manpage_contents), info/info.c (main):
	Info apparently assumes equivalence of bytes and characters,
	leading to (for example) translated man output in multibyte
	locales being broken within a character.  In lieu of a
	real fix, if MB_CUR_MAX > 1, revert to C.  bug-texinfo mail,
	07 Aug 2006 14:59:42 +0600.

2006-08-12  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (error \box0): smaller font.

2006-08-08  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Invoking Macros): all commas inside macro calls
	are quoted, it seems.  From Patrice.

2006-07-25  Karl Berry  <karl@gnu.org>

	* configure.ac (AC_MINIX): remove, as it seems there is nowhere to
	call it, and is it really necessary these days?

	* doc/info-stnd.texi (What is Info?): suggest the Emacs Info
	reader for the nicest display.

2006-07-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\onepageout): hardwire a 24pt space before
	\footlinebox, instead of 2\baselineskip.  If the page break occurs
	at a heading, for instance, \baselineskip might be larger, causing
	the footer to jump.
	(\oddfootingyyy): likewise (although doesn't really matter here).
	Report from Werner Lemberg, 02 Jun 2006 07:44:36 +0200.

	* doc/texinfo.txi: use @copyright{} in @copying, not (C).

2006-07-15  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\code): make ' active.
	(@lisp,@example): call \quoteexpand.
	(\quoteexpand): new definition to make ' active.
	(\singlequotechar): the active definition of '; if
	the variable codequoteundirected is @set, use char"d from tt
	instead of the regular directed quote.
	This is all to make pasting of ' in examples work in more pdf
	viewers, at least evince.
	From: Han-Wen Nienhuys, 2 Jun 2006 01:22:44 +0000.

2006-07-10  <Ralf.Wildenhues@gmx.de>

	* makeinfo/html.c (insert_html_tag_with_attribute): Treat `samp'
	special, to allow it to nest.
	* makeinfo/cmds.c (cm_code): use insert_html_tag to add `samp'
	instead of add_word, so that the roll-back of outer tags works
	correctly.  (This fixes @option inside of @emph causing badly
	nested tags in the HTML output, see 8 Jun 2006 00:12:55 +0200 mail.
	The general problem still remains.)
	* makeinfo/tests/emph-option: New test.
	* makeinfo/tests/emph-option.txi: New file.
	* makeinfo/tests/Makefile.am: Adjust.

2006-07-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (makeinfo Pointer Creation, Writing a Menu):
	mention that accesskey is used in the HTML output.

2006-07-09  <Ralf.Wildenhues@gmx.de>

	* doc/texinfo.txi: Fix some typos.

2006-07-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	* makeinfo/macro.c (add_macro): Initialize def->argcount
	(get_brace_args): Change argument type to enum quote_type.
	(All callers updated.) Implement default argument quoting.
	(expand_macro): Use def->argcount to control the number of passed
	arguments.
	(define_macro): Issue a warning if @allow-recursion or @quote-arg
	is used.
	* makeinfo/macro.h (MACRO_DEF): New member argcount
	(enum quote_type): New data type.
	(get_brace_args): Change argument type to enum quote_type
	(ME_QUOTE_ARG): Remove the macro
	* makeinfo/makeinfo.c (cm_ifeq): Update call to get_brace_args
	* makeinfo/tests/Makefile.am (TESTS): New test quote-args
	(EXTRA_DIST): New file quote-args.txi
	* makeinfo/tests/quote-args: New test
	* makeinfo/tests/quote-args.txi: New file
	* doc/texinfo.txi: Document automatic argument quoting

2006-07-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	* doc/txi-pl.tex: Do not use \prefixing and \notprefixing. They
	were defined in PLaTeX, but are no longer global. Use ISO-8859-1
	instead.

2006-06-27  Akim Demaille  <akim@epita.fr>

	* util/defs.in ($latex_paragraph): New.
	* util/latex2html.test (input.tex): Make it big enough to trigger
	the info file splitting.
	* util/texi2dvi (move_to_dest): Accept several arguments.
	(run_hevea): Use it to move the whole family.

2006-06-27  Akim Demaille  <akim@epita.fr>

	Fix the clean invocations to hevea.
	Note that this breaks document using images (to be fixed).
	* util/latex2html.test (run_hevea_check): Extend to support
	various build modes.
	Test them.
	Force the creation of aux files (something the previous test
	failed to do...).
	* util/defs.in (title): New.
	* util/texi2dvi: Fix incorrect "error" invocations.
	(run_hevea): Don't pass -o to hevea.
	Move the result to the expected destination.
	Don't pass -noiso.

2006-06-26  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (generated_files_get): Call uniq.

2006-06-07  <Ralf.Wildenhues@gmx.de>

	* Makefile.am (AUTOMAKE_OPTIONS): Require Automake 1.9, since
	non-direct subdirs in SUBDIRS (gnulib/lib) is a 1.9 feature.

2006-06-24  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (anchor): pxref Node Line Requirements since the
	same name restrictions apply.  Suggested by Eli.

2006-06-21  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (fatal): Rename as...
	(error): this.
	If the exit status is 0, don't exit.
	(run): New.
	Use it where appropriate.
	(run_dvipdf): New.
	Use it.

2006-06-21  Akim Demaille  <akim@epita.fr>

	* util/Makefile.am, info/Makefile.am, makeinfo/Makefile.am,
	* lib/Makefile.am (DEFS): Remove, included in...
	(AM_CPPFLAGS): this.
	Add -I $(top_srcdir) to find system.h.

2006-06-19  Karl Berry  <karl@gnu.org>

	* system.h: move to top level.
	* */Makefile.am (AM_CPPFLAGS): no longer need -I$(top_srcdir)/lib.

	* makeinfo/makeinfo.c (getdocumenttext): replace with a modified
	version of get_title from gettext, as suggested by Bruno Haible,
	back on 2 Dec 2003.
	* gnulib: import xsetenv module.

	* doc/texinfo.tex (\indexdotfill): back to regular (non-italic)
	periods, suggested by Werner Lemberg and others.

2006-06-19  Akim Demaille  <akim@epita.fr>

	Support dvips and dvipdf for sake of pstricks, and to
	spare the use tweaking TEXINPUTS.
	* util/defs.in (optionset_get, assert_and_remove_files): New.
	* util/texi2dvi (out_lang_tex, out_lang_ext): New.
	Use them.
	($language): Rename as...
	($in_lang): this for consistency.
	Support --dvipdf and --ps.
	Not documented yet.
	* util/dvipdf.test: New.
	* util/Makefile.am (TESTS): Adjust.
	* util/texi2dvi.tests (one_run): New.

2006-06-18  Karl Berry  <karl@gnu.org>

	* gnulib: new subdirectory, managed by gnulib-tool.
	* m4: delete entire subdirectory, now replaced by gnulib/m4.
	* build-aux: new subdirectory.
	* README.dev: doc.
	* autogen.sh: aclocal needs -I gnulib/m4 now.
	* Makefile.am, util/Makefile.am, lib/Makefile.am, info/Makefile.am,
	  makeinfo/Makefile.am (AM_CPPFLAGS, LDADD): use new gnulib dirs.
	* lib/alloca.c, lib/getopt*, lib/gettext.h, lib/mem*, lib/str*,
	  etc.: delete, now using gnulib modules (as recorded in
	  gnulib/m4/gnulib-cache.m4)

2006-06-08  Karl Berry  <karl@gnu.org>

	* po/Makevars (XGETTEXT_OPTIONS): add --keyword=__, so that the
	gettext will mark the new __ strings (2006-05-29 change from
	Norbert) for translation again.

2006-06-07  <Ralf.Wildenhues@gmx.de>

	* makeinfo/footnote.c (output_pending_notes): Use
	add_html_block_elt instead of add_word for final part of
	footnote, so no extra <p> is output.

2006-06-05  Akim Demaille  <akim@epita.fr>

	* util/bibtex.test: Add it for real.

2006-06-03  Karl Berry  <karl@gnu.org>

	* util/texi2dvi: always report tex command being used.

2006-06-02  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (--src-specials): new option,
	requested by Charlie Zender.

2006-06-01  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\thischapternum): new macro for
	headings/footings, requested by Werner.
	* NEWS, doc/texinfo.txi (Command List, Custom Headings): document it.

2006-06-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	* makeinfo/html.c (html_output_head): Insert external CSS
	reference if css_ref is set.
	(fix_filename): Attempt to transliterate the name before falling
	back to numeric symbol representation.
	* makeinfo/lang.c (iso8859_2_map): Add transliterations
	(koi8_map): New map for koi8-u and koi8-r encodings.
	(encoding_table): Add koi8-u and koi8-r
	(cm_search_iso_map_char,lang_transliterate_char): New functions.
	* makeinfo/lang.h (encoding_code_type): Add KOI8_R, KOI8_U
	(struct iso_map_type): New member `translit'.
	(lang_transliterate_char): New function prototype.
	* makeinfo/makeinfo.c: New options --css-ref and
	  --transliterate-file-names.
	* makeinfo/makeinfo.h (css_ref, transliterate_file_names): New
	variables.
	(URL_SAFE_CHAR): Bugfix: Make sure argument is in isalnum() domain.

	* doc/texinfo.txi: Document new options.

2006-05-30  <Ralf.Wildenhues@gmx.de>

	* configure.ac (sigblock): Fix underquoted macro usage.

2006-05-30  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (aux_file_p): Rename the second occurrence as...
	(bibaux_file_p): this.
	(run_bibtex): Use it.
	(options processing, $usage): Support --dvi for symmetry and to
	ease systematic tests.
	* util/bibtex.test: New.

2006-05-30  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi: Add support for latex to text and info using
	hevea.
	Don't document it yet, as it's preliminary and on some regards
	incomplete.  It is usable though.
	(IFS): Use a more robust definition, taken from Autoconf.
	(bibaux_file_p): New, extracted from...
	(run_html): Generalize and rename as...
	(run_hevea): this.
	(run_core_conversion): Adjust.
	(option processing): Accept --text and --info.
	* configure.ac: Check for TEX and HEVEA.
	* util/defs.in: No longer create a texi file by default.
	Handle hevea requests.
	(create_input_tex, create_input_texi): New.
	(assert_files, list_files): Rework to use diff instead of test.
	And sort both lists of files before comparing them.
	* util/latex2html.test: New.
	* util/Makefile.am (TESTS): Update.

2006-05-29  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.h (getdocumenttext, __): new definitions for
	strings translated according to the document language, instead of
	the interface language.
	* makeinfo/makeinfo.c (getdocumenttext): new fn.
	(usage): new option --document-language to specify.
	* makeinfo/lang.h (document_language): new declaration.
	* makeinfo/lang.c (document_language): define.
	* makeinfo/defun.c, makeinfo/html.c, makeinfo/node.c,
	makeinfo/toc.c, makeinfo/xref.c: use __ instead of _ for document
		strings.
	* doc/texinfo.txi (makeinfo options): minimal documentation.
	From Norbert Preining, 10 Mar 2006 02:22:19 +0100.
	Debian bugs 113988 and 355367.

2006-05-28  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\indexdummies): \let\endinput=\empty, to
	avoid premature end of processing when an index entry is generated
	from a macro.
	Report from Graham Percival to help-texinfo, 22 May 2006 12:03:12.

	* doc/texinfo.tex (\dots): use width of three period characters if
	that is wider than 1.5em.  Report from Steve Peter.

	* system.h [__CYGWIN__] (NULL_DEVICE): define as /dev/null.
	From Ralf W.

2006-05-27  Karl Berry  <karl@gnu.org>

	* texi2dvi (IFS): initialize, since otherwise when we save/restore
	it may end up being set-but-empty, which may disable splitting.
	Report from Ralf W.

2006-05-20  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (run_makeinfo): use $TEX instead of hardwiring
	tex, to maybe avoid running into some
	misconfigured TeX installations, resulting in
	 ---! /var/lib/texmf/web2c/etex.fmt was written by pdfetex
	 (Fatal format file error; I'm stymied)
	Original report from Ralf Wildenhues, 12 May 2006 11:19:13 +0200.

2006-05-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* util/gendocs.sh: quoting, url fixes.

2006-05-08  Karl Berry  <karl@gnu.org>

	* autogen.sh: new name for bootstrap, and improve msg.  From Bruno
	via hello.

2006-05-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\dopdfimage): width and height args might have
	whitespace.  Report from Bob Chassell.

2006-05-05  Karl Berry  <karl@gnu.org>

	* texinfo.tex (\definetextfonsizexi, \definetextfonsizex): new cmds.
	(\fonttextsize): new user-level command @fonttextsize to change
	text font size.  (To be used for the next Emacs edition.)
	* makeinfo/cmds.c (cm_fonttextsize): new fn.
	(command_table): include it.
	* NEWS, doc/texinfo.txi (Fonts): document it.

2006-05-04  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Reporting Bugs): wording to match hello.

2006-04-26  Karl Berry  <karl@gnu.org>

	* doc/Makefile.am (TXI_XLATE): add txi-ru.tex and txi-uk.tex,
	from Sergey Poznyakoff.
	* doc/txi-ru.tex, doc/txi-uk.tex: new files.

2006-04-13  Karl Berry  <karl@gnu.org>

	* makeinfo/insertion.c (end_insertion): kill_self_indent(-1) to
	remove all indentation.  From Brian Gough, 11 Apr 2006 16:42:29 +0100.

2006-04-11  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (GNU Sample Texts): GFDL is version 1.2 now.
	Report from Claudio.

2006-03-28  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Xref Command Expansion): use U+2605 for
	@point{} and U+22A3 for @print{}.  From Patrice.

2006-03-25  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (copying): warn not to indent lines within the
	@copying.

2006-03-24  Karl Berry  <karl@gnu.org>

	* makeinfo/html.c (escape_string): do not free the old string,
	that is dangerous, only the caller should do it.
	(add_link): escape the title string.
	Report from Ralf Wildenhues, 17 Mar 2006 05:08:11 +0100.

2006-03-21  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\parseargusing, \finishparsearg): Use \argtorun
	  instead of \next.
	(\argcheckspacesY): Change the wording of the comment about \next.
	(\braceorline, \braceorlinexxx): Do not suppose that \next is
	  preserved during the run of \parsearg, anyway.

2006-03-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (section, subsection, unnumberedsubsec,
	subsubsection): make it clear that @section can be used within
	any chapter unit.
	Report from: Hynek Hanke, 11 Mar 2006 20:44:34 +0100.

	* doc/texinfo.tex (\imagexxx): do not center the image by default.
	The manual says we don't do that, and Lilypond needs
	left-justification.
	From: Han-Wen Nienhuys, 9 Mar 2006 21:08:26 +0000.

2006-03-13  Miloslav Trmac  <mitr@redhat.com>  (tiny changes)

	* info/Makefile.am (infokey_LDADD): don't link with curses.

	* makeinfo/sectioning.c: cast arguments to substring, to placate
	current gcc.

2006-03-13  Karl Berry  <karl@gnu.org>

	* util/texi2dvi: reindent --help message.

2006-03-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Writing a Node): show example of specifying
	some pointers but not others.

2006-02-28  Akim Demaille  <akim@epita.fr>

	Be robust to spaces in directory names.
	* util/texi2dvi (absolute): Be robust to non directories.
	(run_tex): Quote in_input properly.
	(compile): Quote args of eval properly.

2006-02-25  Karl Berry  <karl@gnu.org>

	* info/nodes.c (info_get_node_of_file_buffer): try to avoid
	running man Top, which returns the top(1) man page on Debian.

2006-02-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	* util/texi2dvi: New options --translate-file and --recode-from.

2006-02-13  Karl Berry  <karl@gnu.org>

	* makeinfo/cmds.c (cm_enddots): output three dots, not four, for
	consistency with texinfo.tex.

	* doc/texinfo.tex (\doignore): move \obeylines here.
	(\dodoignore): from here.  (just putting catcode changes together.)
	(\doignoretextyyy): revert to previous code, no ##2^^M;
	that caused blank lines in verbatim envs inside failing conditionals.
	(\enddoignore): ignore any text after the @end #1 here, instead.
	Bug report from Bob Wilson, 5 Oct 2005 21:22:33 -0700,
	amended fix from Stepan, 13 Feb 2006 21:57:07 +0100.

	* info/nodes.c (info_get_node): don't try man Top and man top and
	man TOP.  Debian bug 234848.

2006-02-11  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (write_trailer): new fn.
	(convert_from_loaded_file) <finished>: call it *after* the
	tag table has been written, else Emacs likely won't seeit.
	Report from: Juri Linkov, 11 Feb 2006 03:11:33 +0200.

2006-02-10  Karl Berry  <karl@gnu.org>

	* util/texinfo.dtd (menucomment): more inclusive.
	(enumerate): allow indexes.
	From Torsten.

2006-02-06  Karl Berry  <karl@gnu.org>

	* util/texinfo.dtd: apparently we cannot have -- in an XML
	comment.  Kludge.

2006-02-05  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (run_makeinfo): eval $makeinfo, for gettext
	0.14.5's complex $MAKEINFO definition.

2006-01-30  Karl Berry  <karl@gnu.org>

	* util/texinfo.dtd: many additions and fixes from
	Torsten Bronger.

2006-01-27  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\sectionheading): \nobreak before the \vbox
	with the heading.
	Report from: Norbert Preining, 2 Nov 2005 10:07:57 +0100,
	Debian bug 276000.

2006-01-25  Karl Berry  <karl@gnu.org>

	* makeinfo/lang.c (cm_accent_generic_no_headers): do nothing
	if end == 0 (accent command in @menu with --no-headers).
	Report from Akim Demaille, 23 Jan 2006 16:41:38 +0100.

2006-01-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (key): more examples.

2006-01-18  Akim Demaille  <akim@epita.fr>

	Sometimes the temporary directory remains.
	Reported by Wybo Dekker.
	* util/defs.in (assert_files): New.
	* util/texi2dvi.test: Use it.
	Extend to check the local builds.
	* util/texi2dvi (aux_file_p, index_file_p, xref_file_p): Check
	that the file exists.
	(generated_files_get): Simplify according to these changes.
	(remove, cleanup): New.
	Use the latter in the cleaning trap.
	(mostly_clean): Use them.

2006-01-17  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (generated_files_get): Skip nonexistent files
	earlier.

2006-01-15  Karl Berry  <karl@gnu.org>

	* info/infodoc.c (info_internal_help_text): combine messages
	which are single sentences into one string.
	Report from Clytie Siddall, via
	http://sourceforge.net/tracker/index.php?func=detail&aid=1406541&group_id=40033&atid=426818

	* po/POTFILES.in: add missing makeinfo/xref.c, makeinfo/float.c.
	Report from Torsten.

2006-01-09  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi: set -e.
	Stop using the idiom "test && action" in favor of "if test; then
	action; fi".
	(xref_files_save): Use tar instead of cp.
	(run_makeinfo): Fix a "local" use.

2006-01-08  Loic Minier  <lool@dooz.org>  (tiny change)

	* info/display.c (display_update_one_window): systematize
	check as to whether `entry' is non-null before referring to it.
	Still some segfaults when resizing the window rapidly.

2006-01-08  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\normalturnoffactive): restore setting of
	active \ to \normalbackslash.
	(\onepageout): restore call to \normalturnoffactive.
	Otherwise, if a page break happens at the wrong time, the active
	\ will result in writing an actual \ character,
	instead of {\tt \backslashcurfont }.
	Report from Kurt.Hornik@wu-wien.ac.at, 6 Jan 2006 14:38:38 +0100.
	[test idxback-exts]

2005-12-26  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (node, Node Names): pxref Node Line Requirements,
	about restrictions on characters in node names.

2005-12-25  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\pdfurl): make @/ a no-op.
	Report from Kurt Hornik, 23 Dec 2005 13:17:56 +0100.

	* util/texi2dvi (no_file_line_error): new control,
	with option --no-line-error to set it.  Wybo Dekker's mk program
	wants to parse TeX's original error messages.
	(run_tex): obey it.

2005-12-22  Akim Demaille  <akim@epita.fr>

	Implement --mostly-clean, improve the detection of aux files.
	* util/texi2dvi ($action): New.
	(--mostly-clean): New.
	(cd_orig): New.
	(generated_files_get, aux_file_p, index_file_p, xref_files_p):
	New.
	(get_index_files): Remove, replaced by the previous functions.
	(get_xref_files): Rename as...
	(xref_files_get): this.
	(run_index): Use generated_files_get.
	(clean): Rename as...
	(mostly_clean): this.
	Strengthen.
	($t2ddir): Try to have a `local' absolute file name, not a fully
	absolute one to avoid very very long file names.
	* util/texi2dvi.test: Exercise --mostly-clean.

2005-12-20  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (key): DELETE, not DEL, per rms.

2005-12-19  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (run_conversion): Rename as...
	(run_core_conversion): this.
	(compile): New.
	This is the former main program.
	(clean): New.
	Use it.
	(language): Compute it in the main loop.

2005-11-18  Akim Demaille  <akim@epita.fr>

	Factor the handling of list of directories.
	* util/texi2dvi (list_append, list_prefix, list_infix)
	(list_dir_to_abs, absolute): New.
	Use them.
	($miincludes, $txincludes): Remove, replaced by...
	($includes): this one.
	(func_dirname): Don't use fd6 that might not be set up yet.
	(run_to_html): Use $includes.

2005-11-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Top Node Example): missing @end iffnottex.
	(The Top Node): @end ifnottex, not ifnottext.
	From Steve Peter.

2005-11-10  Akim Demaille  <akim@epita.fr>

	Make the naming conventions more consistent and shorter.
	* util/texi2dvi (oformat): Rename as...
	(out_lang): this.
	(filename_input, filename_src, filename_xtr, filename_rcd,
	filename_noext, filename_dir, filename_dir_abs): Rename as...
	(in_input, in_src, in_xtr, in_rcd, in_noext, in_dir, in_dir_abs)
	this.
	(in_base, out_name, out_dir, out_dir_abs, out_base, out_noext): New.
	(output_base_name): New.
	(move_to_dest): Use it.
	(run_tex): Catch invalid calls.
	Be robust to inclusion in subdirs.
	(run_bibtex): Simplify when this is not a LaTeX file.
	(run_tex_suite): cycle is local.
	(input_file_name_decode): New, extracted from the main loop.
	Some variables are now local.

	Use the output file name as root for the t2d directory name.
	* util/texi2dvi (t2ddir): Use $out_noext, no $in_noext.
	* util/texi2dvi.test: Adjust.

	Be robust to inclusion in subdirs.
	* util/texi2dvi (run_tex): Look for \include of files in subdirs.
	(run_bibtex): Citations might be in another aux file.

	Support html.
	* util/texi2dvi (run_to_html): New.
	(run_conversion): New, extracted from the main loop.
	Support --html.


2005-11-10  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Def Cmd Template): mismatched example and output.
	Report from: Steve Peter, 09 Nov 2005 12:46:02 -0500.

2005-10-23  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (insert_commands): missing $ in case statement;
	from report by Simon Josefsson.

2005-10-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\doignoretext): ignore characters after
	ignored conditionals, e.g., @end ifset.  Otherwise the newline
	following results in a blank line being output in verbatim
	environments.
	From: Bob Wilson, 5 Oct 2005 21:22:33 -0700.

2005-10-05  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi.test: Make sure --build=clean passes.
	* util/texi2dvi: Fix the handling of --build.

2005-10-05  Karl Berry  <karl@gnu.org>

	* util/texindex.c (maketempname): use mode 0600.

2005-10-02  Karl Berry  <karl@gnu.org>

	* util/texindex.c (maketempname): avoid race condition.
	(concat): now take three args, so rename to concat3.
	Debian bug 328365.

2005-09-30  Karl Berry  <karl@gnu.org>

	* configure.ac: reenable utils/defs generation, now that we have
	the files below.

2005-09-29  Akim Demaille  <akim@epita.fr>

	* doc/texinfo.txi: Document pdftexi2dvi.
	* doc/Makefile.am (common_texi2dvi_deps): New.
	Handle texi2pdf and pdftexi2dvi.
	* util/texi2dvi: Stop supporting shortened long options, as it's
	causing troubles.  Short options are here anyway.
	(local): Provide a default implementation if not supported by the
	shell.
	(findprog): Use return.
	(get_xref_files): Rename as...
	(xref_files_get): this.
	(xref_files_changed, xref_files_save): New.
	(run_tex_suite): New.
	(move_to_dest): Use `local'.
	($textra_cmd): Compute it in...
	(insert_commands): here.

	* tests/defs.in, tests/texi2dvi.test, tests/local.test: New.
	* configure.ac, tests/Makefile.am: Adjust.

2005-09-22  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi ($build_dir): New.
	(--build-dir): New.
	($usage): Adjust.
	($line_error): New.
	AUC-TeX wants regular TeX error messages, so don't require
	GNU style error message when under AUC-TeX.
	($filename_dir_abs): New.
	($t2ddir): When the build-dir is specified, make sure to avoid
	collisions between files with equal names, but in different
	directories.
	($command_line_filename): Decode possible TeX commands.
	* util/Makefile.am (pdftexi2dvi): New.

2005-09-20  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi: Be sure to return to the current directory even
	after obeying --clean.

2005-09-17  Sergey Poznyakoff  <gray@Mirddin.farlep.net>  (tiny change)

	* makeinfo/cmds.c (handle_include): don't expand @verbatiminclude,
	so that texi2dvi will pass it through to texinfo.tex.  Otherwise
	the dvi/pdf output is wrong.

2005-09-05  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex: Fix typo in a comment.

2005-09-05  Karl Berry  <karl@gnu.org>  (tiny change)

	* util/texi2dvi: look for btxmac.tex's "Undefined citation" message.
	Then texi2dvi works with (e)plain, too, by setting LATEX=tex.
	Report from Oleg Katsitadze.

2005-08-31  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi: Fix white space issues.
	Quote uses of directory and file names.
	Don't expect "export var=val" to work (e.g., SunOS 5.9): do it in
	two steps.
	($tex_help): Compute it where needed (run_tex), in particular so
	that $tex is defined when used.
	(func_dirname): New.
	($quiet, $verb): Now regular true/false variables.
	(verbose): Adjust.
	(run_tex): When we introduced white space by making absolute file
	names, circumvent TeX's phobia of space in file names by
	introducing a symbolic link.
	(filename_dir): Keep it relative when not $tidy.

2005-08-30  Karl Berry  <karl@gnu.org>

	* makeinfo/xref.c (cm_xref): if the following wrong char is ),
	suggest @pxref.  Suggested by Kevin Ryde, 30 Aug 2005 09:23:39 +1000.

2005-08-17  Predrag Rakic  <pec@uns.ns.ac.yu>

	* doc/txi-sr.tex: Serbian translation.

2005-08-15  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\normalturnoffactive): Now contains the body of
	\turnoffactive.  Don't explicitly restore the original value of active \
	---just let it be.
	(\turnoffactive): Can now be redefined as \normalturnoffactive
	  \otherbackslash.
	(\atdummies): All calls were followed by \turnoffactive; remove that
	  and add \otherbackslash to the definition, since it already calls
	  \normalturnoffactive indirectly.
	(\xrefX): One of the calls of \refx missed the second parameter;
	  fix that.
	(\commondummiesnofonts): No need to make ~ other for the definition;
	  it contains only \~ now.
	(\backChar, \plusChar, \underChar): Nuke.
	(\colonChar, \commaChar, \dotChar, \exclamChar, \questChar, \semiChar):
	  Move just before the definition of ...
	(\plainfrenchspacing): ... since it's the only place where it's used.
	(\activebackslash): Remove both definitions; the first one was shadowed
	  by the second one; and the second one can easily be eliminated; it
	  was used only on one place.
	(\backslashlparen): No need for this; \realbackslash( is enough.
	(\backslashrparen): Likewise.

2005-08-14  Per Bothner  <per@bothner.com>

	* makeinfo/index.c (cm_printindex): Don't defer index if docbook,
	since we don't need it and it prevents output to a pipe.

	* makeinfo/insertion.h (default_item_function): New declaration.
	* makeinfo/insertion.c (default_item_function): New variable.
	(begin_insertion): Use default_item_function for @bullet default.
	(pop_insertion): Check if item_function is default_item_function.
	* makeinfo/xml.c (xml_begin_table): Don't emit mark attribute
	if the item_function was implied.

2005-08-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\writetocentry, ...): restore calls to
	\turnoffactive after \atdummies removed in the July 1 change (v.194).
	\turnoffactive and \normalturnoffactive are not the same -- we need
	actual backslash characters in the pdf destinations and .aux and
	index files, not expansions.  (I'm not sure we ever need
	\normalturnoffactive, actually.)

2005-08-12  Karl Berry  <karl@gnu.org>

	* doc/info.texi: merge changes from Emacs, by Juri.

2005-08-06  Per Bothner  <per@bothner.com>

	* makeinfo/index.c (cm_printindex): Don't xml_insert_indexentry if
	docbook, since we'll let the doxbook processor generate the index.
	* makeinfo/xml.h (xml_sort_index, xml_insert_indexentry): Remove.
	* makeinfo/xml.c (xml_begin_index): Don't actually do any formatting.
	(xml_end_index):  Don't do anything except close <index>.
	(xml_insert_indexentry): Remove no-longer-used function.

	* makeinfo/xml.c (element docbook_element_list): The docbook <index>
	element should *not* be contained_in_para.

	* makeinfo/xml.c (xml_begin_document): Add id attribute to top-level
	book if emitting docbook.

2005-08-05  Stepan Kasal  <kasal@ucw.cz>

	* configure.ac: (auto)update.
	* info/Makefile.am, makeinfo/Makefile.am, utils/Makefile.am:
	s/INCLUDES/AM_CPPFLAGS/
	* lib/Makefile.am (INCLUDES): Remove.

2005-08-05  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\Efloat): Revert the previous change, ...
	(\commondummiesnofonts): ... instead, add the three commands here.

2005-08-04  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\Efloat): make \xref, \pxref, \ref no-ops.
	Report from: Aaron S. Hawley, 3 Aug 2005 19:46:40 -0400.
	(But what about all the other commands, don't we need to no-op
	everything?)

2005-07-31  Per Bothner  <per@bothner.com>

	* makeinfo/cmds.c (cm_code): For html output use lsquo and rsquot
	entities around @samp.

2005-07-10  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\texinfoversion): Update.

2005-07-05  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (verbatim): mention @verbatim inside
	@smallformat, now that it works.

2005-07-04  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\commondummies): Remove \unsepspaces, it's already
	  called by \normalturnoffactive.  Move \normalturnoffactive near the
	  end of the macro.

2005-07-01  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex: Remove all occurences of \normalturnoffactive or
	  \turnoffactive attached to \indexdummies or \atdummies, since they
	  are redundant; \indexdummies and \atdummies both call \commondummies,
	  which calls \normalturnoffactive, which calls \turnoffactive.
	(\indexdummies, \atdummies): Move the definitions of \definedummy* ...
	(\commondummies): ... here; they now take a control sequence as their
	  parameter; all callers fixed.
	(\indexnofonts): Fixed the definitions of \definedummy* macros.
	(\indexdummies): Define \escapechar = `\\ ...
	(\onepageout): ... thus remove it from here.
	(\macrolist): Now has the form of \definedummyword\macro1...  It also
	  gathers user-defined aliases, so there is ...
	(\addtomacrolist): ... a new macro ...
	(\macroxxx, \aliasyyy): ... caled from these two.
	(\unmacro, \unmacrodo): Adapted to the new form of \macrolist.
	(\turnoffmacros, \emptyusermacros): Removed, mere \macrolist is enough
	  now.

2005-07-01  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\nonarrowing): Update the description.
	(\cartouche): Set \nonarrowing to "t", not \comment.
	(\nonfillstart, \quotation): Reset \nonarrowing.

2005-06-30  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\setupverbatim): Use \nonarrowing to declare that
	we don't want to narrow the environment.

2005-06-24  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi: Move the computation of $makeinfo to...
	(run_makeinfo): here.

	* util/texi2dvi (tex, bibtex, texindex): Move their computation to...
	(run_tex, run_bibtex, run_texindex): here, to clarify.
	(move_to_dest): New.
	(run_tex): Use it to copy the result back.
	Don't bother exporting the log.

2005-06-10  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\., \!, \?): include \space after setting
	\spacefactor, else all space disappears.
	Report from Jim Meyering, 09 Jun 2005 23:03:22 +0200.

2005-06-10  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (run_tex): Updating the output is also needed when
	-o is used, not just when $tidy.

2005-06-09  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi: Support --tidy, a new build mode which lets all the
	compilations happen in a local directory.  This is
	similar to using --clean, but the files are preserved.  The
	benefits are:
	- the output is updated when each tex compilation is completed:
	  - to allow interactive viewing
	  - to preserve the previous output is the compilation fails
	- if the compilation fails, the previous state is preserved.
	- a fixed set of files to clean in this end (this directory)
	- complete independence between DVI and PDF compilations.

	(comment_iftex_sed, uncomment_iftex_sed): No
	longer external files, but simple strings named...
	(comment_iftex, uncomment_iftex): like this.
	(utildir): Remove.

	Make the structure clearer by introducing auxiliary functions.
	* util/texi2dvi (run_bibtex, run_index, insert_commands)
	(run_recode, run_thumpdf): New.
	Extracted from the main loop.

	Simplify some variable handling.
	* util/texi2dvi (clean, debug): Now true/false Booleans.
	Adjust dependencies.

	Introduce a cycle counter.
	* util/texi2dvi (cycle): New, to inform the user about the number
	of compilation cycles.  That's also a nice tool to help debugging:
	look for "cycle" in the trace to go from cycle to cycle.

	Introduce the work dir, and use it.
	* util/texi2dvi (ensure_dir, workdir): New.
	(tmpdir_src, tmpdir_xtr, tmpdir_rcd, tmpdir_bak): Replace with...
	(work_src, work_xtr, work_rcd, work_bak): these.
	Adjust dependencies.
	(filename_src, filename_xtr, filename_rcd, filename_bak): these.
	(run_tex): Update the output.
	Remove this task from the core of the loop.
	(get_xref_files): Simplify by considering all the files around,
	instead of try to select only those that correspond to a given
	pattern.
	Also, there's no reason to build the string result and then echo
	it, just directly echo all the components.
	(get_index_files): New.
	(build_mode): New.
	Adjust all dependencies (tex_help, command line parsing, clean,
	tidy).

2005-06-05  Karl Berry  <karl@gnu.org>  (tiny change)

	* doc/texinfo.txi: typos from Christian von Schultz,
	5 Jun 2005 16:45:48 +0200.

2005-06-03  Karl Berry  <karl@gnu.org>

	* info/man.c (get_manpage_contents): pass -a to man if no explicit
	section is found.  Suggestion from lacall@micron.com on
	help-texinfo, 1 Jun 2005 16:44:20 -0600.

2005-05-28  gettextize  <bug-gnu-gettext@gnu.org>

	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.14.5.

2005-05-25  Stepan Kasal  <kasal@ucw.cz>

	* util/texi2dvi (findprog): Rewrite the test for an executable
	again, per suggestion of Eric Blake.  Restore IFS earlier.

2005-05-24  Stepan Kasal  <kasal@ucw.cz>

	* util/texi2dvi (findprog): Rewrite the test for an executable and
	the explanation above it.

2005-05-20  Karl Berry  <karl@gnu.org>

	* doc/texinfo.texi (\allowcodebreaks, \kbdinputstyle): use \txiarg
	instead of \arg; \arg already has a meaning in plain TeX (the
	complex math function "arg").
	Report from: Brian Gough, 19 May 2005 19:48:57 +0100.

2005-05-19  Stepan Kasal  <kasal@ucw.cz>

	* configure.ac (AM_GNU_GETTEXT): The comment should not recommend
	calling gettextize with --intl.

2005-05-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (First Node): ok for (dir) to be the prev node,
	and fix missing example.
	From from Christian von Schultz, 13 May 2005 10:37:26 +0200.

2005-05-10  Matthias Kilian  <kili@outback.escape.de>

	* makeinfo/cmds.c, makeinfo/defun.c, makeinfo/insertion.c,
	makeinfo/lang.c, makeinfo/macro.c, makeinfo/multi.c,
	makeinfo/node.c, makeinfo/xml.c: More bounds checking.

2005-05-09  Andreas V\"ogele  <voegelas@gmx.net>  (tiny change)

	* makeinfo/multi.c (output_multitable_row): don't look past
		beginning of cell memory.  bug-texinfo mail,
		1 May 2005 10:00:33 +0200.

2005-05-09  Christian von Schultz  <admcvs@Skolwebben.tibro.se>  (tiny change)

	* doc/texinfo.txi (Emacs chapter): wrong key bindings for
		narrow-to-page, up-list, and texinfo-insert-braces.
		bug-texinfo mail, 9 May 2005 10:01:06 +0200.

2005-04-29  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: remove ls(1) and rcsintro(1) references at rms'
	request.  No (n) in GNU.

2005-04-24  Karl Berry  <karl@gnu.org>

	* configure.ac (AM_GNU_GETTEXT): switch to [external], since this
	seems the most popular method nowadays.
	(AC_CONFIG_FILES): remove intl/Makefile, also m4/Makefile.
	* Makefile.am (SUBDIRS): remove intl and m4.
	* intl/*: remove.
	* m4/Makefile.am: no longer needed.
	* lib/system.h (locale.h): unconditionally include, else syntax
	error from system locale.h.

	* gettext 0.14.4.

2005-04-22  Per Bothner  <per@bothner.com>

	* makeinfo/xml.c (docbook_element_list): Map EMAILADDARESS to "email".
	* makeinfo/xref.c (cm_email): For docbook, if there is no name,
	use <email> tag, rather than <ulink>.  If there is a name, we must use
	<ulink>, but we need to explicitly escape expansion of addr.

2005-04-22  Per Bothner  <per@bothner.com>

	* makeinfo/xml.c (docbook_element_list, xml_begin_defterm): Improved
	docbook translation of definition commands: Use <synopsis> for the
	summary line, and don't include it (only the body) in a <blockquote>.
	Wrap the whole definition in an <informalfigure>.

2005-04-21  Karl Berry  <karl@gnu.org>

	* util/texi2dvi: also accept .drv and .dtx as LaTeX.
	Suggestion from Wybo Dekker.

2005-04-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\smallerbook): new (test) definition for 6x9,
		which is what lulu.com (print-on-demand) accepts.

2005-04-05  Matthias Kilian  <kili@outback.escape.de>  (tiny changes)

	* makeinfo/html.c (rollback_empty_tag): be sure to avoid negative
	array indexing.
	* makeinfo/multi.c (env): make static.
	* makeinfo/tests/cond, html-extrali, include-value: use grep -c,
	instead of piping to wc -l, since that avoids the output files
	being treated as binary on BSD.

2005-04-04  Stepan Kasal  <kasal@ucw.cz>

	* makeinfo/makeinfo.c (usage): Add indentation to the examples and
	  fix the indentation of the --footnote-style option, so that
	  help2man can recognize these; also some cosmetic indentation fixes.
	* doc/Makefile.am (makeinfo.1): Add a sed command to postprocess
	  the generated manpage.
	* doc/makefile.1: Refresh.
	Thanks to Jim Razmus for the bug report.

2005-04-04  Torsten Bronger  <bronger@physik.rwth-aachen.de>  (tiny changes)

	* doc/texinfo.txi: Fix several typos.

2005-04-04  Stepan Kasal  <kasal@ucw.cz>

	* doc/Makefile.am: Fix my previous patch, so that the rules work; and
	  don't modify $PATH, it's simpler to give help2man the full pathname.

2005-03-31  Per Bothner  <per@bothner.com>

	* makeinfo/makeinfo.c (maybe_escaped_expansion): Don't start a new
	para during string expansion.

	* makeinfo/xml.c (xml_element_dummy): Dummy variable so that enum
	names get emitted in debug symbols, which helps debugging.

2005-03-31  ezra peisach <epeisach@med-xtal.bu.edu>  (tiny change)

	(bug-texinfo mail 30 Mar 2005 16:40:24 -0500.)
	* defun.h (get_base_type): now takes an enum insertion_type.
	  defun.c (get_base_type): use enum instead of int internally.
	  (defun_internal): takes enum insertion_type instead of int and use
			  enum internally.
	 (cm_defun): ditto.
	* insertion.c (do_enumeration, end_insertion, cm_end): ditto.

2005-03-27  Karl Berry  <karl@gnu.org>

	* util/texinfo.dtd: remove -- and ^L from inside comments, since
	apparently XML cannot handle them.
	Report from Torsten, bronger@physik.rwth-aachen.de.

	* configure.ac (AC_INIT): quote address.
	(AC_PREREQ): move to after AC_INIT, per current recommendation.

2005-03-25  Stepan Kasal  <kasal@ucw.cz>

	* doc/Makefile.am: help2man should use the native binaries in the
	  build tree, not the one found on $PATH; thanks to Thomas Schwinge
	  for reporting the problem.
	  The rules also make sure the binaries are up-to-date, and generate
	  the man pages in the source tree, not build tree.
	  There is no need to depend on MAINTAINER_MODE, because help2man is
	  handled by the `missing' script.
	(INSTALL_INFO): Comment out; it's not used.
	* Makefile.am (distcleancheck_listfiles): Removed this variable, it
	  doesn't seem to be needed.
	* configure.ac (AC_INIT): Add our bug report address.

2005-03-21  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (allowcodebreaks): new node.
	* makeinfo/cmds.c: define @allowcodebreaks (as a no-op).
	* doc/texinfo.tex (\allowcodebreaks): new macro.
	(\code): use it.
	(\realunder, \keywordtrue, \keywordfalse, \ifallowcodebreaks):
	helpers.

2005-03-15  gettextize  <bug-gnu-gettext@gnu.org>

	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.14.3.

2005-03-12  gettextize  <bug-gnu-gettext@gnu.org>

	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.14.2.

2005-03-12  Karl Berry  <karl@gnu.org>

	* process_css_file: fclose the file when we're through with it,
	to avoid fd leaks.
	From: Matthias Kilian <kili@outback.escape.de>,
	11 Mar 2005 19:42:27 +0100.

2005-03-08  Keith Marshall  <keith.d.marshall@ntlworld.com>

	* makeinfo/tests/no-headers: ($nulldev): new variable.
	  set it to `/dev/null' normally, but to `nul' on Win32,
	  so Cygwin doesn't fail this test, in `make check'.

2005-03-08  Karl Berry  <karl@gnu.org>

	* info/filesys.h (DEFAULT_INFOPATH): make . first in the path,
	instead of last.  That way info -f foo/bar finds foo/bar.info.
	From: Bruno Haible <bruno@clisp.org>, 8 Mar 2005 13:45:28 +0100.

2005-03-07  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi: Fix -o when -c is not passed.
	Don't make thumbpdf failures fatal.

2005-03-05  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (General Index): Rename from Concept Index.

2005-02-28  Stepan Kasal  <kasal@ucw.cz>

	* util/texi2dvi: When running bibtex, improve quoting and again,
	  we can save a process by not running ls.  (Thanks, Akim.)

2005-02-24  Stepan Kasal  <kasal@ucw.cz>

	* util/texi2dvi (get_xref_files): No need to use ls, save a process.

2005-02-22  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (absolute_filenames): Skip nonexistent directories.
	Factor its invocations for TeX envvars.
	(fd6): Document and use more extensively.
	(get_xref_files): Accept bu[0-9]#.aux files from the bibunits
	package.
	Also adjust the bibtex invocation.

2005-02-19  Karl Berry  <karl@gnu.org>

	The main user-visible change of all this is to make
	section names with \ characters work in pdf outlines.  As a side
	effect, .toc files now use @ instead of \ for the escape char.
	* doc/texinfo.tex (\backChar, \plusChar): new \chardef's.
	(\activebackslash): debugging macro.
	(\activebackslashdouble): new macro.
	(\HyPsdSubst): replace tokens.
	(\HyReturnAfterFi): helper.
	(\backslashparens): new macro, change () to \( and \) resp.
	(\backslashlparen, \backslashrparen): new macros.
	(\pdfmkdest): double backslashes, backslashparens, and @ for escape.
	(\dopdfoutline): similarly.
	(\pdfmakeoutlines): \readdatafile on the .toc the first time,
	 instead of straight \input.
	(\makelinks, \picknum, \pn, \ppn, \ppnn, \pdfmklink): rm.
	(\writetocentry): now we use @ for escape in the .toc instead of \.
	(\activecatcodes, \readtocfile): new macros.
	(\startcontents): don't swap \ and @ catcodes from Texinfo.
	(\setref, \dofloat): no need to call \otherbackslash.
	(\xrefX): no need to call \otherbackslash, also double backslashes
	and backslash parens for pdf output.
	(\readauxfile): generalize and rename to \readdatafile.
	(\doublebackslash): new macro.

	* util/texi2dvi: do not have -o (used by Autoconf/make) imply
	--clean.  That results in TeX always running at least twice, since
	the aux files are stuck (and removed) in the temp directory for clean.

2005-02-18  Karl Berry  <karl@gnu.org>

	* util/texi2dvi: call absolute_filenames on BIBINPUTS and
	BSTINPUTS, too.  te, 17 Feb 2005 20:10:23 +0100.

2005-02-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (frenchspacing): new code.
	* makeinfo/cmds.c (command_table): add frenchspacing.
	(cm_frenchspacing): new fn.
	* util/texinfo.dtd (frenchspacing): new element.
	(option.cmds): new entity; use in Inline.phrase, I guess.
	* makeinfo/xml.h (xml_element): add FRENCHSPACING.
	* makeinfo/xml.c (docbook_element_list, texinfoml_element_list): same.
	* doc/texinfo.tex (\frenchspacing): new macro for new command.
	(\onword, \offword): args to that command.
	(\plainfrenchspacing, \plainnonfrenchspacing): the commands which
		really do the work; change calls.
	(\endofsentencespacefactor): set in \plain...frenchspacing to 3000
		or 1000 as appropriate.
	(\., \!, \?): use here, instead of hardwiring 3000.

2005-02-10  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (findprog): also check for foo.exe, for Cygwin.

2005-02-10  Karl Berry  <karl@gnu.org>

	* info/dir.c (dir_file_list_entry_type): use dev_t and ino_t
	instead of unsigned long.  (Breaks on cygwin.)  David Hunter
	bug-texinfo mail, 08 Feb 2005 23:05:37 -0500.  Paul Eggert says
	these types should were present in 7th Edition and consequently
	should be portable to any Unixish system.

2005-02-09  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (report): New.  Use it.
	(fatal): Take the exit status as argument.
	Use report.
	(run_tex): New function to factor the two tex invocations.
	Move the handling of tex arguments in here to improve locallity.
	Enforce the batch mode by branching /dev/null to its stdin.

2005-02-05  Per Bothner  <per@bothner.com>

	* makeinfo/xml.c (docbook_element_list): Add two missing entries.

	* makeinfo/xml.c (xml_begin_document): Check for mismatch between
	enum xml_element and texinfoml_element_list/docbook_element_list.

	bug-texinfo-mail, 05 Feb 2005 00:13:44 -0800.

2005-02-05  Per Bothner  <per@bothner.com>

	* makeinfo/xref.c (cm_uref): Ulink urls in Docbook need to be
		html-escaped.  bug-texinfo mail, 05 Feb 2005 00:57:55 -0800.

2005-01-30  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\chapmacro) <Ynothingkeyword>: failed to
	\gdef\thischapter inside the group, resulting in "Chapter 1:"
	appearing in the headline of an @unnumbered.
	help-texinfo bug report from: <tdovera@libero.it>,
	27 Jan 2005 11:45:31 +0100.

2005-01-28  Karl Berry  <karl@gnu.org>

	* util/texi2dvi <verbose>: rename variable to verb, since
		functions and variables apparently cannot have the same
		name on Digital UNIX 4.0E, AIX 3.2.5 (325102), ULTRIX V4.5.
		(and related releases, presumably).
	<pgm>: simplify sed expression to avoid \| operator, which does
	        not work on above platforms (and also be more correct).
	<RUNNING_KSH>: switch to ksh under Ultrix.
	All of this stuff reported by Bernhard Simon <simon@zid.tuwien.ac.at>
	and te.

2005-01-25  Karl Berry  <karl@gnu.org>

	* doc/Makefile (texmf_dvips, texmf_pdftex_misc): new paths to
	match teTeX.  tex-k mail from peb, 25 Jan 2005 15:45:37 +0100.

2005-01-23  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (findprog): split $PATH at $path_sep, not spaces.
	(path_sep): don't let ComSpec fool us under cygwin.
	Report from: Eric Blake <ebb9@byu.net>, 19 Jan 2005 05:36:26 -0700.

	* doc/texinfo.txi (euro): mention the font we use for the Euro
	symbol and where to get it.  help-texinfo report from:
	christoph.sobotka@utanet.at, 19 Jan 2005 21:29:20 +0100.

	* doc/info-stnd.texi (Top): per rms, don't use @insertcopying here.
	* doc/texinfo.txi (Top): Likewise.  Also, remove recommendations
		to use it.

2005-01-20  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi: Have a consistent function declaration style.
	(verbose, absolute_filenames): New functions.
	Use them.
	Report TEXINPUTS and INDEXSTYLE when verbose.

2005-01-20  Karl Berry  <karl@gnu.org>

	* doc/texinfo.5, doc/info.5: define and use .EX/.EE instead of
		.RS/RE, to placate esr.

	* util/texi2dvi (findprog): make sure test -x isn't returning true
	for a directory.  From Stepan and others, 20 Jan 2005 12:35:08 +0100.

2005-01-16  Torsten Bronger  <bronger@physik.rwth-aachen.de>  (tiny change)

	* makeinfo/insertion.c (handle_verbatim_environment): do HTML
		conversions, to make ]]> work.
	* makeinfo/xml.c (xml_add_char): also escape >.

2005-01-16  Torsten Bronger  <bronger@physik.rwth-aachen.de>  (tiny change)

	* makeinfo/cmds.c (cm_tie): use &nbsp; for HTML, &#xa0; for
		XML/Docbook.

2005-01-15  Karl Berry  <karl@gnu.org>

	* makeinfo/xref.c (cm_xref): output *note for @ref, instead of
		*Note.  @ref is always used in the middle of a sentence.
	* doc/texinfo.txi (pxref): rewrite, since now it can be used at
	the ends of sentences.
	(ref): likewise rewrite.

2005-01-11  Karl Berry  <karl@gnu.org>

	* util/gendocs.sh: eval $cmd instead of just $cmd, so allow for
		embedded quotes.
	From: Sergey Poznyakoff <gray@Mirddin.farlep.net>,
	11 Jan 2005 16:16:32 +0200.

2004-12-31  Karl Berry  <karl@gnu.org>

	* Version 4.8.

2004-12-21  Karl Berry  <karl@gnu.org>

	* pretest version 4.7.94.

	* makeinfo/xref.c: doc fix.

2004-12-20  Karl Berry  <karl@gnu.org>

	* makeinfo/html.c (cm_node) <html>: need old-style names in the normal
	(not no_headers) html case, too, of course.
	(add_html_names): canon_white the new name, too.

2004-12-19  Karl Berry  <karl@gnu.org>

	* pretest version 4.7.93.

	* automake 1.9.4.

	* makeinfo/xml.c (try_docbook_image): new fn.
	(xml_insert_docbook_image): call it, trying additional formats
	pdf, svg, etc.
	* makeinfo/makeinfo.c (cm_image): check for gif too.
	http://www.gnu.org/philosophy/gif.html says:
	"we can and will include support for displaying GIF files in GNU
	 software."  Leaving it undocumented, though.
	Based on patch from Jens Elkner, 18 Dec 2004 01:56:28 +0100.

2004-12-19  Torsten Bronger  <bronger@physik.rwth-aachen.de>

	* util/texinfo.dtd: define most entities, add <neos>.

2004-12-17  Juan M. Guerrero  <st001906@hrz1.hrz.tu-darmstadt.de>

	* djgpp/config.bat: remove files like coXXXXXX.tmp created
	in the top_srcdir by the gl_FUNC_MKSTEMP test.

2004-12-15  Karl Berry  <karl@gnu.org>

	* pretest version 4.7.92.

	* util/texinfo.dtd: merge with makeinfo/texinfo.dtd.
	* makeinfo/texinfo.dtd, makeinfo/texinfo.xsl: remove.

2004-12-15  Stepan Kasal  <kasal@ucw.cz>

	* Makefile.am (EXTRA_DIST): Removed po/Makevars.template, sorry.

2004-12-15  Juan M. Guerrero  <st001906@hrz1.hrz.tu-darmstadt.de>

	* djgpp/config.sed: adjust for new autoconf.
	* makeinfo/node.c (enumerate_filename): make dos_file_names const
	instead of static, since it may involve a fn call to pathconf.

2004-12-15  Karl Berry  <karl@gnu.org>

	* Makefile.am (EXTRA_DIST): include ChangeLog.46, README.dev,
	and po/Makevars.template.  From Stepan.

2004-12-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (inforef): try to explain possible uses more
	thoroughly.
	From: Luc Teirlinck, 13 Dec 2004 21:45:58 -0600.

	* doc/texinfo.txi (pxref): more explanation.
	* doc/info-stnd.texi (Basic Windows): put pxref in parens.
	help-texinfo mail from adl, 13 Dec 2004 17:07:50 +0100.

2004-12-13  Andreas Schwab  <schwab@suse.de>

	* info/echo-area.c (DECLARE_INFO_COMMAND): Add intermediate cast
	to avoid warning.
	* info/infokey.c (compile): Likewise.
	* info/session.c (forward_move_node_structure): Likewise.
	(DECLARE_INFO_COMMAND): Likewise.

	* makeinfo/makeinfo.c (init_paragraph): Don't use free_and_clear
	to avoid strict aliasing issue.

	* makeinfo/cmds.c (cm_center): Avoid strict aliasing issue.

2004-12-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Cross-reference Command Expansion): add
	@euro{} -> U+20AC.  texinfo-pretest mail from Patrice,
	12 Dec 2004 23:49:50 +0100.

2004-12-12  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (makeinfo options): don't be so suggestive about
	skipping xref validation.
	emacs-devel mail from: Luc Teirlinck, 12 Dec 2004 13:02:11 -0600.

2004-12-08  Karl Berry  <karl@gnu.org>

	* pretest version 4.7.91.

	* info/echo-area.c, info/infokey.c, info/session.c: omit useless
	casts to intptr_t, since we're just casting to (void *) next.
	intptr_t is not defined with gcc 3.04 on Tru64 Unix V5.1
	(This whole vararg stuff needs to be redone correctly.)
	Report from: Svend Tollak Munkejord (via te)
	8 Dec 2004 17:15:17 +0100.

	* doc/texinfo.txi (ref): rewrite last two redundant paragraphs.

2004-12-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Macro Details): document @c kludge in macro
	definitions to work around some newline problems.  (From Werner.)

2004-12-05  Karl Berry  <karl@gnu.org>

	* makeinfo/html.c (add_escaped_anchor_name): prefix g_t if the
	nodename begins with a nonletter.  Ugh.
	* doc/texinfo.txi (HTML Xref Node Name Expansion): document this.
	http://ff0.org/pipermail/texinfo-pretest/2004-December/000210.html

	* doc/texinfo.txi (HTML Xref 8-bit Character Expansion): define
	behavior for Unicode code points above 0xfff.

	* makeinfo/makeinfo.c (reader_loop): <wbr> didn't make it into
	HTML 4, remove it.  Sigh.
	texinfo-pretest mail from wl, 05 Dec 2004 23:39:05 +0100.

2004-12-02  Karl Berry  <karl@gnu.org>

	* configure.ac (install-warnings): simplify default case.  From te.

2004-12-01  Karl Berry  <karl@gnu.org>

	* pretest version 4.7.90.

	* util/texi2dvi (recode): new option, off by default.
	Unconditionally calling recode seems problematic, when there
	hasn't been a release for years and its Texinfo support is less than
	perfect.

2004-11-30  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Quotations and Examples): @quotation does not
	reduce interparagraph spacing.

	* makeinfo/node.c (cm_node) <html>: do not bother calling
	add_html_nodes in the split case, the filename is wrong.

2004-11-29  Karl Berry  <karl@gnu.org>

	Support for writing <a name="..."> using the old-style node name
		to HTML name conversion, to keep the gcc folks happy.
	* makeinfo/node.c (add_html_names): new routine, factoring out
	common code (plus new code) from cm_node.
	(cm_node) <html>: call it.
	* makeinfo/makeinfo.h (OLD_HTML_SAFE, OLD_URL_SAFE_CHAR):
	(re)define these.
	* makeinfo/html.c (add_escaped_anchor_name): take new argument to
	optionally output the old-style conversion.
	(add_anchor_name): change call.
	* index.c: change calls.
	* makeinfo/html.h (add_escaped_anchor_name): change decl.

2004-11-26  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (reader_loop): allow <wbr> after &mdash;

2004-11-25  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Fonts): document new command @sansserif.
	* doc/texinfo.tex (\sansserif): new command.
	* makeinfo/cmds.h (cm_sansserif): new cmd.
	* makeinfo/cmds.c (cm_sansserif): new cmd.
	(command_table): add it.
	* makeinfo/texinfo.dtd (Inline.fonts): add it; also slanted.
	* makeinfo/xml.h (SANSSERIF, SLANTED): define these new elements.
	* makeinfo/xml.c (texinfoml_element_list): add them.
	From: Frank K\"uster, 21 Oct 2004 23:27:33 +0200, Debian bug#277754.

	* doc/texinfo.txi (Quotations and Examples, end titlepage): state
	that there must be only one space between the @end and its
	argument.  Report from: christoph.sobotka, 26 Oct 2004 22:04:03 +0200.

2004-11-22  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (euro): new node, documenting new command,
		@euro{}, for the Euro currency symbol.
	* doc/texinfo.tex (\euro): new command, along with \eurofont to
	support it.  The following extra font support is also related to
	supporting @euro{}:
	(\bfstylename): define this.
	(\textnominalsize .. \ssecnominalsize): new macros.
	(\textfonts .. \ssecfonts): define \curfontsize.
	* makeinfo/cmds.c (command_table): add euro.
	* makeinfo/lang.c (cm_special_char): handle euro.
	(iso8859_15_map): new global.

2004-11-18  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\ptexnewwrite): Save \newwrite.
	(\newwrite): Call it.

2004-11-17  Karl Berry  <karl@gnu.org>

	* configure.ac (install-warnings): new --enable option, requested
		by te.

2004-11-11  Karl Berry  <karl@gnu.org>

	* texinfo.dtd (metainformation): add documentdescription.
	(documentdescription): define.
	* xml.h (DOCUMENTDESCRIPTION): new value for xml_element.
	* xml.c (texinfoml_element_list): define documentdescription.
	(docbook_element_list): likewise, but don't know how to handle it.
	* cmds.c (cm_documentdescription): insert opening xml tag.
	* insertion.c (end_insertion): insert closing xml tag.

	* makeinfo/makeinfo.c (insert_string): declare const char * arg.
	* makeinfo/makeinfo.h: likewise.
	Report from: Vincent Lefevre, 20 Oct 2004 15:40:39 +0200,
	noting a spurious </para> after </dircategory>.

2004-11-08  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\pdfmakeoutlines): in the first run through the
	toc, define \thischapnum...\thissubsecnum as 0, rather than \empty.
	This is so \expnumber doesn't end up trying to expand
	\csname sec\empty\endcsname, i.e., \sec, which is the secant function.
	Report from: Oliver Beck, help-texinfo, 8 Nov 2004 08:05:55 +0100.

2004-11-07  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (main) [LC_MESSAGES]: #ifdef the setlocale
	using LC_MESSAGES.  From te, 6 Nov 2004 23:36:10 +0100.

2004-11-06  Karl Berry  <karl@gnu.org>

	* lib/Makefile.am (libtxi_a_SOURCES): add strdup.h.
	Report from: Thomas Esser <te@dbs.uni-hannover.de>,
	6 Nov 2004 18:11:51 +0100.

2004-11-01  Karl Berry  <karl@gnu.org>

	* makeinfo/xref.c (cm_xref): don't include the external file name
	in the HTML output, since it's pretty traditional not to
	distinguish internal and external links in HTML, and it disturbs
	the flow of reading.
	From: Han-Wen Nienhuys <hanwen@xs4all.nl>, 31 Oct 2004 00:13:36 +0200.
	(For lilypond.)

2004-10-31  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\setmultitablespacing): just let \multistrut be
	the same as \strut.  Its previous computation was wrong.
	See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.

2004-10-22  Stepan Kasal  <kasal@ucw.cz>

	* info/Makefile.am (generated_sources): Add dependencies defining
	  a total order on the files, to prevent race conditions with
	  parallel make.
	  Move the code about generated sources to the end of the file.

2004-10-20  Stepan Kasal  <kasal@ucw.cz>

	* info/Makefile.am (doc.c, key.c, funs.h): Don't distribute them.
	  of these three files.
	(ginfo_SOURCES, nodist_ginfo_SOURCES): Move files.
	(infokey_SOURCES, nodist_infokey_SOURCES): Likewise.
	(DISTCLEANFILES): Include generated_sources.

2004-10-20  Stepan Kasal  <kasal@ucw.cz>

	BUILT_SOURCES is a special variable for a hack to supplement
	  the automatic dependency tracking; we need it for funs.h only.
	  See the explanation in the automake manual.

	* info/Makefile.am (BUILT_SOURCES): All occurences replaced by ...
	(generated_sources): ... this new variable.
	(BUILT_SOURCES): set to ``funs.h''.

2004-10-20  Stepan Kasal  <kasal@ucw.cz>

	* info/Makefile.am (ginfo_SOURCES): replace $(BUILT_SOURCES)
	  with ``doc.c funs.h''; this reflects the true situation.
	(infokey_SOURCES): Add funs.h.

2004-10-20  Stepan Kasal  <kasal@ucw.cz>

	* info/Makefile.am (EXTRA_DIST): No need to mention the generated
	  sources here, they are in ginfo_SOURCES or infokey_SOURCES.

2004-10-19  Stepan Kasal  <kasal@ucw.cz>

	* configure.ac: When cross compiling, we have to remove
	  ./config.status, not "$native_tools"/config.status.
	  Replace ``echo'' with AC_MSG_NOTICE.  Quote the variable
	  values passed to ``env.''

2004-10-17  Karl Berry  <karl@gnu.org>

	* makeinfo/node.c (cm_node): don't output <br> after the
		navigation line, it's apparently just extra space.

	* configure.ac: Clean environment for native configure.
	From: Mark Fortescue <mark@mtfhpc.demon.co.uk>,
	17 Oct 2004 19:09:53 +0100.

2004-10-11  Stepan Kasal  <kasal@ucw.cz>

	* configure.ac: Add a short explanation about cross compile.

2004-10-08  Karl Berry  <karl@gnu.org>

	* info/Makefile.am (generated_sources): remove.  Found by Stepan.

2004-10-08  Stepan Kasal  <kasal@ucw.cz>

	Support cross compiling.  Based on research by Mark Fortescue.
	Maciej W. Rozycki pointed out this issue previously.

	* configure.ac: If cross compiling, run second configure script
	  in a subdirectory ${native_tools}.  New automake conditional
	  TOOLS_ONLY is set inside that subdirectory.
	* Makefile.am (SUBDIRS): Add $(native_tools); restrict the
	  SUBDIRS to minimum, if we are inside the $(native_toos) dir.
	(distclean-local): Remove directory $(native_tools).
	* doc/Makefile.am: If necessary, use makeinfo and install-info
	  from $(native_tools).
	* info/Makefile.am: Similarily with the ``makedoc'' program.

2004-10-07  Stepan Kasal  <kasal@ucw.cz>

	@table command doesn't work inside environment @display.
	There is no point in trying to fix it: just give up with a cry.

	* doc/texinfo.tex (\table, \ftable, \vtable): Instead of calling
	  \tablex directly, call ...
	(\tablecheck): ... this new macro which checks for active newline;
	  if it's found, it reports an error and uses \doignore to recover.
	* doc/texinfo.txi (display): mention this.

2004-10-06  Karl Berry  <karl@gnu.org>

	* doc/*.texi: more consistent use of dashes.
	From Stepan and Benno Schulenberg <benno@nietvergeten.nl>.

2004-10-04  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (cm_value): increment and restore
		input_text_offset before execute_string on the value,
		so cm_xref doesn't complain about missing punctuation.
	From: Sergey Poznyakoff <gray@Mirddin.farlep.net>,
	04 Oct 2004 15:04:33 +0300.

2004-10-01  Karl Berry  <karl@gnu.org>

	* lib/Makefile.am (libtxi_a_SOURCES): add getopt_.h.

	* configure.ac: bump version to 4.7.90, although we're not really
		pretesting yet.  (I need a distribution to check an
		automake issue.)

2004-09-14  Karl Berry  <karl@gnu.org>

	* util/srclist.txt (getopt.h): renamed to getopt_.h.
	* lib/getopt_.h: new file.
	* lib/getopt.h: just include getopt.h.

2004-09-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Image Syntax): mention @noindent, @center.

2004-09-06  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\Efloat): Take care to run \scantokens on
	  \thisshortcaption before writing the lof line to auxfile.
	  Otherwise, when a newline appears in the argument to
	  @shortcaption, a literal ^^M is written to the aux file.
	  Report from Patrice, 1 Aug 2004 15:54:44 +0200.

2004-09-01  Karl Berry  <karl@gnu.org>

	* util/gendocs.sh: show commands, allow / in description.

2004-08-30  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (maybe_escaped_expansion): new routine, like
		expansion but does HTML escapes.
	* makeinfo/makeinfo.h (maybe_escaped_expansion): declare.
	* makeinfo/index.c (cm_printindex): call it.
	This is @cindex Kahrs, J@"urgen does not get
	gawk.texi:23425: Unknown command `&quot;urgen'.
	(in gawk 3.1.4).
	Report from: Stepan Kasal <kasal@ucw.cz>, 24 Aug 2004 12:36:34 +0200.

2004-08-29  Karl Berry  <karl@gnu.org>

	* makeinfo/node.c (split_file): do not search for output file
		along the path when calling find_and_load (can cause seg
		fault when cross-compiling).
	From: Martin Husemann <martin@duskware.de>, 29 Aug 2004 08:40:33 +0200.
	http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=26791

2004-08-27  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Macro details): more warnings about macro usage.
	Report from: Stepan Kasal <kasal@ucw.cz>, 24 Aug 2004 09:29:35 +0200.

	* doc/texinfo.tex (\Efloat): \vskip\parskip after printing the
	caption; previous \printedsomething code to do this had become
	obsolete.  Reported by Stepan.

	* doc/texinfo.txi (caption shortcaption): show an example for
	@shortcaption, and remark that weird commands like @c and @verb
	are not allowed.  Suggested by Stepan.

2004-08-27  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\initial): when breaking the column before the
	  initial, allow for some space at the bottom of the column, so
	  the baselineskip is preserved (more or less).
	  Don't give negative penalty, it encourages creating of underfull
	  columns with stretched baselineskip.
	  At the end, the \nobreak should be before \vskip, not after it.

2004-08-26  Stepan Kasal  <kasal@ucw.cz>

	* util/texi2dvi: fix the sed script searching for @documentencoding;
	  Double-quote some instances of "$filename_???"

2004-08-26  Akim Demaille  <akim@epita.fr>

	Let DVI and PDF files honor the document encoding in TeX.

	* util/texi2dvi ($language): Be sure to set its value.
	(get_xref_files): Turn this external shell script into a function.
	(filename_rcd, $tmpdir_rcd): New.
	If the file is in Texinfo, and has @documentencoding, and recode
	is available, then run it.

2004-08-25   Akim Demaille  <akim@epita.fr>

	* util/Makefile.am (texinfo.cat): Fix for srcdir != builddir.

2004-08-25  Karl Berry  <karl@gnu.org>

	* util/texi2dvi: @ is also ok for the first character of xref_files.

2004-08-20  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\tablez): accidentally removed assignments
		enabling @item and @itemx within @table.

2004-08-19  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\multitable): \def\item to \crcr, instead of
		\let, to avoid errors with a nested @itemize inside
		@multitable.
	Report from: Pierre-Luc Veilleux <plv@centretiv.com>,
	18 Aug 2004 13:26:00 -0400.

2004-08-19  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\scanmacro): Make backslash active, not other,
	  as this is the default when processing texinfo files.
	  Otherwise, a \ inside @copying will eventually print as ``.

2004-08-18  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\scantxt): " is another active char to be
	  sanitized.

2004-08-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (exampleindent): document that the default is
		different in TeX.
	From: Simon Josefsson <jas@extundo.com>, 18 Aug 2004 13:44:32 +0200.

2004-08-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\cslet): equivalent-or-better, and shorter,
	version from dak, 12 Aug 2004 19:17:27 +0200.

	* doc/texinfo.txi (makeinfo options): use --no-number-sections
		with non-hierarchical manuals.

2004-08-13  Karl Berry  <karl@gnu.org>

	* util/texi2dvi: check for -file-line-error, since -style is no
		longer part of the name.

2004-08-07  Karl Berry  <karl@gnu.org>

	* info/echo-area.c (inform_in_echo_area): avoid buffer overrun.
	Report from: Roman Werpachowski <rwerp@gazeta.pl>,
	7 Aug 2004 01:18:32 +0200.

	* info/echo-area.h (inform_in_echo_area): declare arg as const,
	while we're at it.

2004-08-02  Karl Berry  <karl@gnu.org>

	* makeinfo/cmds.c (cm_acronym_or_abbr): use strchr, not index.
	Report from: Prof Brian Ripley <ripley@stats.ox.ac.uk>,
	2 Aug 2004 12:47:36 +0100 (BST)

2004-07-31  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi,
	* doc/texinfo.tex,
	* makeinfo/cmds.c, cmds.h, xml.c, xml.h,
	* util/texinfo.dtd: new command @abbr, suggested by Paul Eggert,
	who also sent the original documentation.

2004-07-30  Karl Berry  <karl@gnu.org>

	* info/infomap.c (initialize_vi_like_keymaps): bind j to
	info_next_line and k to info_prev_line.  From Eli.

2004-07-30  Maciej W. Rozycki  <macro@linux-mips.org>

	* info/filesys.c (extract_colon_unit): Clean up handling of the
	end of string.

2004-07-27  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (verb): explicitly warn that @verb cannot be
	used in xref contexts.

2004-07-27  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\float): The parameters for @float are
	  separated by commas; allow a space after each of the commas.

	The TeX code for @caption, @shortcaption and @copying now uses
	a similar mechanism to macro definitions.  In detail:

	* doc/texinfo.tex (\macrobodyctxt, \macroargctxt): Generalize, ...
	  (\scanctxt, \scanargctxt): ... and introduce new variants.
	  (\scanexp): New macro--expand the parameter and call \scantokens.
	  (\copying, \docopying, \insertcopying): Use \scanargctxt and
	  \scanexp--this simplifies things a lot.
	  (\caption, \shortcaption): Redefine, using \scanargctxt via ...
	  (\docaption, \defcaption): ... these new macros.
	  (\appendtomacro): Simplify code, using \expandafter.

2004-07-26  Karl Berry  <karl@gnu.org>

	Avoid using the path for output files, since this led to problems
	when incompatible files created by previous versions were found.
	* makeinfo/files.c (find_and_load): introduce second parameter
		use_path, set to 0 from the call in handle_delayed_writes,
		1 in all cases.
	* makeinfo/files.h: change decl.
	* makeinfo/cmds.c, makeinfo.c, node.c: change calls.
	From: Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>,
	14 Jul 2004 00:31:54 +0200.

2004-07-25  Werner Lemberg  <wl@gnu.org>

	Rename @s to @slanted.

	* doc/texinfo.tex (\s): Replace with...
	(\slanted): This.
	* doc/texinfo.txi: Updated.

	* makeinfo/cmds.c (command_table): Add @slanted, not @s.
	(cm_s): Replace with...
	(cm_slanted): This.
	* makeinfo/cmds.h: Add cm_slanted, not cm_s..

	* NEWS: Updated.

2004-07-24  Karl Berry  <karl@gnu.org>

	* info/echo-area.c (ea_possible_completions),
	* info/session.c (forward_move_node_structure),
	* info/infokey.c (compile): cast to intptr_t to avoid cast to
		pointer from integer of different size.
	From Havard Eidnes <he@netbsd.org>, 14 Jul 2004 20:38:59 +0200.

2004-07-19  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (main): with XML, instead of directly calling
	handle_variable_internal for -D and -U command line flags, hold the
	variable declarations until output document is started.
	(convert_from_loaded_file): handle variables provided with -D and -U
	flags here, just before entering the reader_loop.
	(Otherwise, -D/-U with --xml cause a segfault.)

2004-07-15  Werner Lemberg  <wl@gnu.org>

	* doc/texinfo.tex (\s): New command to typeset text with a slanted
		font.
	* doc/texinfo.txi: Document @s.

	* makeinfo/cmds.c (command_table): Add @s.
	(cm_s): New function.  Currently the same as cm_i -- it probably
		has to be adapted to Docbook and XML.
	* makeinfo/cmds.h: Add prototype for cm_s.

	* NEWS: Document new command @s.

2004-07-15  Werner Lemberg  <wl@gnu.org>

	* doc/texinfo.tex (\TeX): Adjust \spacefactor to make it act like a
		lowercase letter, not like a period.

2004-07-12  Karl Berry  <karl@gnu.org>

	* texinfo/texinfo.txi (Useful Highlighting): Include
		cross-references to each of the commands.  Suggestion from
		Wolfgang Pausch, 12 Jul 2004 08:26:28 +0200.

	* texinfo/texinfo.txi (Invoking makeinfo),
	* makeinfo/makeinfo.c: mention that --if-noFORMAT also processes
	@ifnotFORMAT blocks.
	Suggestion from Stepan.

2004-07-11  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (discard_until): leave input_text_offset at
		the end of input_text if not found, not at one past the
		end of input_text.  (Had erroneously put that in the block
		only if an error was given.)  The result was a null byte
		after macro expansions.  Report from Werner,
		10 Jul 2004 15:36:40 +0200.

	* makeinfo/node.c (split_file): fwrite Local Variables trailer so
		it actually gets into the output of the top-level info
		file; don't just insert_string.
	Report from: Werner LEMBERG, 11 Jul 2004 08:58:13 +0200.

2004-07-10  Karl Berry  <karl@gnu.org>

	* util/texi2pdf: new script.
	* util/Makefile.am: install it.
	* doc/texinfo.txi: document it.

2004-07-05  Karl Berry  <karl@gnu.org>

	* makeinfo/xref.c (cm_email, cm_uref, et al.):
	* makeinfo/xml.c (xml_insert_indexentry, xml_insert_indexterm):
	* makeinfo/sectioning.c (sectioning_underscore):
	* makeinfo/makeinfo.c (cm_listoffloats): use %s, don't pass string to
		execute_string.  Report from Christian Schenk.

2004-07-02  Karl Berry  <karl@gnu.org>

	* makeinfo/makinfo.c (execute_string): don't worry about
		mismatched multiline commands if executing_macro.

2004-06-27  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex: Various doc fixes.
	(\dosubindsanitize): propagate the same penalty
	>10000, don't just use \nobreak.
	(\sectionheading): insert a final penalty of
	10001, not 10000.  This causes \aboveenvbreak to
	insert \parskip glue, cancelling the
	\vskip-\parskip done here.  Otherwise, when (e.g.)
	@section is followed immediately by @example, the
	example can be shrunk up above the section title.

2004-06-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\commondummies, \indexnofonts): dummy-up @comma.
	Report from Arnold.

2004-06-06  Karl Berry  <karl@gnu.org>

	* makeinfo/index.c (index_add_arg): ensure all elements are always
	initialized, including output_file, section, and section_name.
	(cm_printindex): don't pass index->output_file to
	add_html_block_elt_args if it is null.  Also do
	not pass spurious extra index_name argument.

	* makeinfo/makeinfo.c (add_char): don't call html_output_head if
	only_macro_expansion (e.g., a macro call in the
	Top menu).  From: Yuri D'Elia <wavexx@yuv.info>,
	05 Jun 2004 21:11:00 +0200.

2004-06-03  Karl Berry  <karl@gnu.org>

	* info/session.c (info_menu_digit): use menu, rather than entry, to
	avoid seg fault on "0" (the last item),
	since menu has already been checked.
	From: Malcolm Rowe <malcolm-gnu@farside.org.uk>,
	02 Jun 2004 21:32:37 +0100.

2004-05-17  Karl Berry  <karl@gnu.org>

	* util/gendocs.sh, gendocs_template: use package.format.tar.gz
		consistently.  Before, -, _, and . were all used.

2004-05-16  Karl Berry  <karl@gnu.org>

	* lib/Makefile.am (libtxi_a_SOURCES): include strcase.h.
	From: "Gerrit P. Haase" <gp@familiehaase.de>,
	15 May 2004 21:50:52 +0200.

	* util/gendocs.sh: force HTML output name, otherwise Emacs fails
	with its "@setfilename ../...".

2004-05-04  Karl Berry  <karl@gnu.org>

	* util/texi2dvi (TEX): don't use the value when it ends in
	"latex"; TEX is also used by mpost.  Report from
	Yvon.Henel@wanadoo.fr.

2004-04-29  Karl Berry  <karl@gnu.org>

	* doc.texinfo.txi (Invoking makeinfo): mention --plaintext.
	From Akim.

	* doc/texinfo.tex (\emptyusermacros): can use \asis.
	(\identity): remove.

2004-04-29  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\commondummiesnofonts, \indexnofonts):  In order
	  to correctly transform words like `Dvo\v{r}\'{a}k' to `Dvorak'
	  for index sorting, one has to define all accent control sequences
	  as @asis.  (Current code would produce `Dvor{a}k'.)

2004-04-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	* makeinfo/makeinfo.c (remember_error): Try cm_bye not more than
	twice.  Fixes `Too many errors!  Gave up.' looping.

2004-04-26  Karl Berry  <karl@gnu.org>

	* lib/system.h (STRCASEEQ, STRNCASEEQ): new #defines for
		convenience.
	* makeinfo/cmds.c (cm_strong): actually change the output to avoid a
	spurious xref.  Suggestion from Jan Nieuwenhuizen
	<janneke@gnu.org>, 26 Apr 2004 00:04:04 +0200, emacs-devel.

	* automake 1.8.4.

2004-04-24  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\emptyusermacros, \identity): new macros.
	(\indexdummiesnofonts): call it.
	This is to semi-support macro calls in the arg to @deffn.
	Report from: Akim Demaille <akim@epita.fr>, 20 Apr 2004 17:48:28 +0200.

2004-04-21  Karl Berry  <karl@gnu.org>

	* configure.ac (gl_FUNC_MKSTEMP): rename from UTILS_FUNC_MKSTEMP,
	per new gnulib code.

2004-04-20  Karl Berry  <karl@gnu.org>

	* makeinfo/tests/copying: force POSIX language setting.

2004-04-19  Karl Berry  <karl@gnu.org>

	* makeinfo/cmds.c (cm_code): use <samp> for commands other than
	@code, so we get typewriter output; and add `...'
	for @samp.
	Report from: John Blevin <blevin@lucent.com>,
	16 Apr 2004 11:40:01 -0400.

	* makeinfo/html.c (html_output_head) [CSS_FONT_ROMAN,
	CSS_FONT_SMALL_CAPS]: prettify.

2004-04-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\Orb): define if undefined.
	Report from Laurent Siebenmann.

	* util/dir-example: diff updates.

2004-04-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex: remove trailing blanks.  suggestion from Jim.

2004-04-12  Paul Eggert  <eggert@twinsun.com>

	* doc/Makefile.am (info.1, infokey.1, install-info.1,
	makeinfo.1, texi2dvi.1, texindex.1): Don't use $< in ordinary
	rules; it's not portable.
	* util/Makefile.am (texinfo.cat): Likewise.

2004-04-12  Karl Berry  <karl@gnu.org>

	* bootstrap: update from berlios.

2004-04-11  Karl Berry  <karl@gnu.org>

	* Version 4.7.

2004-04-09  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (execute_string): do not free the temporary copy
	of input_filename until we're definitely done with
	it.  It is used in line_error, etc.

	* INSTALL: mention texinfo.tex install step.

	* util/Makefile.am (texinfo.cat): new name instead of just
		`catalog'.  rename files.
	* util/Makefile.am (EXTRA_DIST): texinfo-cat.in now, not
		catalog.in.

2004-04-09  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (begin_insertion): after @copying, do not
	discard until a newline if we are looking at one.
	(end_insertion): decrement input line number after @end copying.

2004-04-08  Karl Berry  <karl@gnu.org>

	* util/Makefile.am: doc fix, as automake.diff is no longer needed.

2004-04-07  Karl Berry  <karl@gnu.org>

	* pretest version 4.6.95.

	* doc/texinfo.tex (\dodonode): new macro to remove trailing comma.
	(\donode): call it, after removing space-comma.

	* doc/texinfo.txi (indicateurl): new name for url.
	(uref): url is now a synonym for uref.
	* doc/texinfo.tex (\url, \indicateurl): implement.
	* makeinfo/cmds.c (cm_indicate_url): rename from cm_url.
	(command_table): make "url" a synonym for "uref".
	* makeinfo/cmds.h (cm_indicate_url): declare it.

2004-04-06  Karl Berry  <karl@gnu.org>

	* makeinfo/sectioning.c (insert_and_underscore): use `...' quote
	instead of "..." in error message.
	* info/*.c: likewise.

2004-04-07  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_colon): check if the character we are erasing
	from the output belongs to an XML tag.

2004-04-07  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (cm_author): use author element in XML output
	for attribution.

2004-04-06  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (convert_from_loaded_file): do not call
	write_tag_table if the output filename is "-".

2004-04-06  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (end_insertion): <pre> blocks implicitly ends
	the previous paragraph, so avoid </p> after the end tag.

	* makeinfo/footnote.c (output_pending_notes): made Footnotes anchor
	non translatable, and changed it to "texinfo-footnotes-in-document" to
	lessen the chance of getting in the way of another Footnotes anchor.

2004-04-04  Jim Meyering  <jim@meyering.net>

	* info/nodes.c (info_load_file_internal): Don't free lowered_name
	until *after* using fullpath, since they may be one and the same.

2004-04-03  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Image Syntax): had missing @'s in cookies.

	* makeinfo/cmds.c (cm_w): insert a comment at the end of @w, so that
	@w{$}Log$ doesn't end up as <dollar>Log<dollar>.
	Report from rms.
	* doc/texinfo.txi (GNU Sample Texts, w): mention this.

2004-04-02  Karl Berry  <karl@gnu.org>

	* configure.ac: pretest version 4.6.94.

	* doc/texinfo.txi (Node Line Requirements): discuss whitespace.

	* doc/texinfo.tex (\node, \donode): remove trailing
	spaces (before the first comma) in the @node line.

2004-03-29  Karl Berry  <karl@gnu.org>

	* util/install-info.c (menu_line_lessp, menu_line_equal): move to
		before all uses.

2004-03-27  Karl Berry  <karl@gnu.org>

	* info/signals.c (initialize_info_signal_handler) [SA_NOCLDSTOP]:
	use instead of HAVE_SIGACTION, since Solaris 2.7+
	with Sun CC don't have sa_handler, sa_flags, sa_mask.

	* info/session.c (search_string_index): remove unused variable.
	* info/terminal.c (term_mo): remove unused variable.
	* info/display.c (display_clear_display): remove unused variable
		display_line.
	* util/install-info.c (infilelen_sans_info): remove unused
		variable.

	* doc/texinfo.txi: mistakenly had * name: node: in menu items instead
	of * name: node.

	* util/install-info.c (menu_item_equal): must declare ret at beginning
	of function.  From Werner.

2004-03-27  Jim Meyering  <jim@meyering.net>

	* info/info-utils.c (info_parse_node): Don't read beyond end
	of buffer when looking for ``(line ...)'' in a menu item.

2004-03-27  Andreas Schwab  <schwab@suse.de>

	* util/install-info.c (menu_item_equal): Don't scan past
	term_char.

2004-03-26  Karl Berry  <karl@gnu.org>

	* pretest version 4.6.93.

	* util/install-info.c (menu_item_equal): compare basenames,
	so lilypond/ subdir will match.  Bug report from Werner,
	21 Mar 2004 08:31:10 +0100.

	* configure.ac (AC_CHECK_DECLS): skip strncasecmp again.
	* lib/system.h (strcase.h): change conditional to
	!HAVE_STRNCASECMP || !HAVE_STRCASECMP.  Extra
	!HAVE_DECL seems superfluous.

	* lib/system.h: include <unistd.h> last, following Autoconf's
		ac_includes_default.

2004-03-25  Karl Berry  <karl@gnu.org>

	All these changes are because strncasecmp is only declared in
	<strings.h> on IBM AIX 4.2.  (Report from Nelson Beebe.)

	* configure.ac (AC_CHECK_DECLS): add memchr; no need to check for
	  	     strcasecmp.(gl_STRCASE): call this ...
	(AC_REPLACE_FUNCS): ... replacing checks for
	strcasecmp and strncasecmp here.
	* lib/system.h (memchr) [!HAVE_DECL_MEMCHR]: add conditional
	     declaration.
	(strcase.h) [!HAVE_DECL_STRNCASE]: add conditional include.
	(strings.h) [HAVE_STRINGS_H]: include if
	available, even if <string.h> is also available.
	* info/session.c (strncasecmp) [M_XENIX]: remove this conditional
	declaration, since we haven't been testing for M_XENIX in many
	years.
	* m4/Makefile.am (EXTRA_DIST): add strcase.m4.
	* util/srclist.txt (lib/strcase.h, m4/strcase.m4): add, updating
		from gnulib.

2004-03-24  Karl Berry  <karl@gnu.org>

	* makeinfo/index.c:
	* makeinfo/float.c: avoid use of snprintf, which is not available on
	all platforms.  Bug report by Nelson and Vin Shelton (22mar03).

	* automake 1.8.3.

2004-03-23  Karl Berry  <karl@gnu.org>

	* doc/info-stnd.texi (Searching Commands): typo from jesper.

2004-03-21  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\indexnofonts): \definedummyletter needs to
	define the control letters to be empty, without
	taking any argument; most control letters, such as
	@:, don't take arguments, and it won't hurt to
	just always ignore them for index sorting.
	Report from Arnold.

	* info/doc.h (InfoFunction): cast NULL to VFunction *, to
	prevent pgcc from complaining.  From Nelson.

2004-03-20  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Structuring Command Types): be even more explicit
	about @unnumbered vs. @heading.

	* makeinfo/html.c (insert_html_tag_with_attributes): use the same
	parameter names (start_or_end and tag) in both stdc and !stdc
	cases.  Report from Nelson.

	* info/m-x.c (info_execute_command): don't dereference
	InfoFunction(command) as a function call if it's NULL.  Report
	from Nelson, pgcc-5.1-3 complains.

2004-03-19  Karl Berry  <karl@gnu.org>

	* info/signals.h [!SA_NOCLDSTOP]: borrow test from coreutils'
	sort.c, to avoid using sigset_t when it's not
	defined (apparently).

	* makeinfo/html.c (escape_string): escape ", too, for @image's
	alttext among others.
	* makeinfo/html.h: doc fix.
	* doc/texinfo.txi (Image Syntax): making empty alt text, do
		escaping.

	* util/dir-example: reorder.

	* doc/texinfo.txi (title subtitle author): using them outside
	@titlepage is an error, they're not actually "ignored".
	* makeinfo/insertion.c (cm_author): one mdash suffices.

2004-03-19  Jim Meyering  <jim@meyering.net>

	* makeinfo/makeinfo.c (add_char): Use memmove, rather than strncpy,
	since source and destination strings overlap.

	* makeinfo/float.c (add_new_float): Avoid buffer overrun when
	appending `.' to a chapter number.

2004-03-18  Karl Berry  <karl@gnu.org>

	* pretest version 4.6.92.

2004-03-18  Andreas Schwab  <schwab@suse.de>

	* lib/xmalloc.c: Include "system.h" instead of declaring malloc
	and realloc ourselves.
	(xmalloc): Change type of size parameter to size_t.
	(xrealloc): Likewise.

	* lib/system.h (xmalloc, xrealloc): Change type of size parameter
	to size_t.

2004-03-18  Karl Berry  <karl@gnu.org>

	* makeinfo/xref.c (cm_xref): ignore any directory part or extension
	in html case, warn if nothing left.
	* doc/texinfo.txi (HTML Xref Link Basics): ignore directory part in
	@xref cmd.

	* lib/getopt.h (__GNUC_PREREQ) [! __GNUC_PREREQ]: change
	conditional to the actual symbol, instead of just
	__GNUC, else --disable-nls compilation fails under
	SunOS 5.8 with gcc 3.2.3 (at least).
	Report from Vin Shelton, 15 Mar 2004 08:51:14 -0500.

	* util/texindex.c: add some const declarations.
	* util/install-info.c: add some const declarations.
	(by no means all)

	* doc/texinfo.txi (HTML Xref *): new nodes.

2004-03-15  Karl Berry  <karl@gnu.org>

	* makeinfo/xref.c (cm_xref): need ../ in reference to foreign html
	manual, if splitting.

2004-03-14  Jim Meyering  <jim@meyering.net>

	* makeinfo/index.c (insert_index_output_line_no): Ensure that `i'
	is larger than zero before (not after) using `i-1' as an array index.

	* makeinfo/cmds.c (cm_acronym): Don't write description[-1]
	when description is the empty string.

	* makeinfo/makeinfo.c (insert): Avoid buffer under-run when
	output_paragraph_offset is zero.
	(canon_white): Rewrite not to use strcpy (was used with
	overlapping source and destination)

2004-03-14  Andreas Schwab  <schwab@suse.de>

	* info/session.c: Fix buffer overflows.

2004-03-14  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xref.c (cm_xref): print the fifth arg (or fourth if it's
	not available), in parens for the visible text of the HTML link.

2004-03-14  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/tests/node-expand.txi:
	* makeinfo/tests/node-whitespace.txi: added titles to @top.

2004-03-14  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/sectioning.c (sectioning_underscore): check if title is
	pointing to NULL before calling strlen (happens when there is no
	@settitle before @top.)

2004-03-14  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/sectioning.c (sectioning_underscore): warn if both @top and
	@settitle are empty.
	(sectioning_html, insert_and_underscore): use @settitle argument if
	@top is empty.
	(insert_and_underscore): removed with_char argument from function
	declaration.

	* makeinfo/sectioning.h: insert_and_underscore proto update.

2004-03-13  Karl Berry  <karl@gnu.org>

	* pretest version 4.6.91.

	* info/*.[ch]: copyright dates, and final ugly casts.

	* doc/texinfo.txi (Generating HTML): make its own chapter, since we
	have lots to say about xrefs now.

	* doc/texinfo.txi (Refilling Paragraphs): @ignore this, just
	describe @refill better in the summary.
	(Obtaining TeX): make a section of Hardcopy,
	instead of its own appendix.
	(Command Syntax): subnode of @@-Command List.
	This reduction in the number of appendices will hopefully make the
		manual less overwhelming.

2004-03-13  Alper Ersoy  <dirt@gtk.org>

	* info/dir.c:
	* info/display.c:
	* info/display.h:
	* info/doc.h:
	* info/dribble.c:
	* info/dribble.h:
	* info/echo-area.c:
	* info/echo-area.h:
	* info/filesys.c:
	* info/filesys.h:
	* info/footnotes.c:
	* info/footnotes.h:
	* info/gc.c:
	* info/gc.h:
	* info/indices.c:
	* info/indices.h:
	* info/info-utils.c:
	* info/info-utils.h:
	* info/info.c:
	* info/info.h:
	* info/infodoc.c:
	* info/infokey.c:
	* info/infomap.c:
	* info/infomap.h:
	* info/m-x.c:
	* info/makedoc.c:
	* info/man.c:
	* info/man.h:
	* info/nodemenu.c:
	* info/nodes.c:
	* info/nodes.h:
	* info/search.c:
	* info/search.h:
	* info/session.c:
	* info/session.h:
	* info/signals.c:
	* info/terminal.c:
	* info/terminal.h:
	* info/tilde.c:
	* info/tilde.h:
	* info/variables.c:
	* info/variables.h:
	* info/window.c:
	* info/window.h:
	* lib/system.h: protoized.

2004-03-12  Karl Berry  <karl@gnu.org>

	* makeinfo/sectioning.c (sectioning_underscore): don't segfault when
	generating xml if @top arg was empty.  Report from Pat.

2004-03-11  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\pdfoutput): check also for \relax and 0, not
	just \undefined, in case pdftex is being run in dvi mode.
	Reported by Thomas Esser.

	* lib/Makefile.am (libtxi_a_SOURCES): add getopt_int.h.

2004-03-11  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/html.c (add_escaped_anchor_name): removed unnecessary
	ampersand check.
	(fix_filename): removed size calculation and memory reallocation for
	filename as it is already PATH_MAX bytes.  Added a check so we don't
	cross PATH_MAX boundary while expanding not-isalnum to hex values.

	* makeinfo/toc.c (toc_add_entry): generate links following html cross
	refs proposal from Patrice Dumas.

2004-03-11  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.h: changed URL_SAFE_CHAR to isalnum.

	* makeinfo/html.c (add_escaped_anchor_name, add_anchor_name)
	(fix_filename): generate links following html cross refs proposal
	from Patrice Dumas.

	* makeinfo/xref.c (cm_xref): tweaked references to external manuals,
	to better follow html cross refs proposal.

2004-03-08  Karl Berry  <karl@gnu.org>

	* pretest version 4.6.90.

	* makeinfo/Makefile.am (makeinfo_SOURCES): include multi.h.
	* makeinfo/cmds.c (cm_verb): avoid spurious warning.

2004-03-06  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/lang.c (cm_special_char): call add_encoded_char for Info
	output too.

2004-03-01  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_minus): use minus entity for HTML too.

2004-03-01  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (reader_loop): disable multiple dashes and
	quotes entity substitution for HTML and XML, if escape_html is not
	true.

2004-03-01  Alper Ersoy  <dirt@gtk.org>

	* util/texinfo.dtd: added math element and updated footnote.

2004-03-01  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (xml_insert_footnote): start <para> if not already
	started.

2004-03-01  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/index.c (index_add_arg): make entry node name 'Footnotes'
	if the output format is non-split HTML, and we are handling footnotes.

	* makeinfo/footnote.c (output_pending_notes): added anchor at the
	start of footnotes block for the non-split HTML output, so @printindex
	can refer to that point as the nodename.

2004-03-01  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/defun.c (defun_internal): use var element for HTML, instead
	of i.

2004-03-01  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (cm_image): reset filling_enable to its previous
	state after getting the cookie done.

2004-03-01  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (cm_image): insert magic cookie only if there's
	a bitmap file (if all we have is a text file, skip the cookie.)

2004-02-29  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/node.c (cm_node): moved node order handling to ...
	(remember_node): here.

2004-02-29  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/multi.c (draw_horizontal_separator): insert a space before
	the newline so it looks different than @subsection's.

2004-02-29  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (insert): do not strip trailing whitespace in
	multitables.

2004-02-29  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (execute_string): removed XML tag balance
	checks.

2004-02-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (begin_insertion, end_insertion): for rawxml,
	rawhtml and rawdocbook blocks, change the state of escaping depending
	on raw_output_block in order to avoid problems when these blocks are
	used within a @rmacro.

2004-02-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (end_insertion): for quotation use
	default_indentation_increment.

2004-02-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (info_trailer): call current_document_encoding
	here too.

2004-02-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/lang.h: new variable unknown_encoding.

	* makeinfo/lang.c (cm_documentencoding): save and use the encoding
	argument even if it's unknown.

	* makeingo/html.c (html_output_head): call current_document_encoding
	instead of checking document_encoding_code.

2004-02-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c (cm_listoffloats): simplified entry generation.

2004-02-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/files.h: new members node_order and index_order in
	DELAYED_WRITE struct.

	* makeinfo/files.c (register_delayed_write): save current node and
	index order.
	(handle_delayed_writes): update tag_table positions and index line
	numbers by comparing orders, not line numbers they are defined.

	* makeinfo/index.c: made index_counter not static and ...
	* makeinfo/index.h: extern.

	* makeinfo/node.h: new member order in TAG_ENTRY struct.

	* makeinfo/node.c (cm_node): keep the order of the node entry.

2004-02-27  Karl Berry  <karl@gnu.org>

	* util/gendocs.sh: generate ASCII in static file, not stdout, so
	toc/index can get written.

	* util/gendocs_template: XHTML version from
	http://www.gnu.org/boilerplate.html, via John Darrington
	<john@cellform.com.au>, 9 Jan 2004 07:24:27 +0800.

2004-02-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	* doc/texinfo.txi (Image Syntax): Update.

	* makeinfo/makeinfo.c (cm_image): Only insert a period between the
	image's NAME and EXTENSION as a second guess, to retain backward
	compatibility.

2004-02-27  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (xml_insert_element_with_attribute): if we are
	closing either TABLEITEM, ITEM or DEFINITIONITEM during string
	execution, update relevant state.

2004-02-27  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (execute_string): moved state updates below
	insertion and element stack checks, so any code executed in those
	checks will be aware of executing_string.

2004-02-27  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (xml_insert_docbook_image): for Docbook, if paragraph
	is open, use inlinemediaobject instead of mediaobject in an
	informalfigure.
	(xml_insert_element_with_attribute): indent after informalfigure.

2004-02-27  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c:
	* makeinfo/xml.h: new element INLINEIMAGE.

	* makeinfo/makeinfo.c (cm_image): for XML, use INLINEIMAGE or IMAGE
	depending on paragraph state.

2004-02-27  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (cm_image): for Info, enclose text image in
	brackets if @image is used inline (ie. paragraph is open).

2004-02-27  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_noindent_cmd, cm_indent): start paragraph for
	Info too.

2004-02-27  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (cm_image): for HTML, if paragraph is not open,
	enclose image in a <div> block.

2004-02-27  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_noindent_cmd, cm_indent): insert <p> for HTML.

2004-02-26  Alper Ersoy  <dirt@gtk.org>

	* util/texinfo.dtd: moved verbatim to &block;.

2004-02-25  Stepan Kasal  <kasal@ucw.cz>

	A first step towards general cleanup of sectioning macros:
	* doc/texinfo.tex (\genhead): A generalized version of ...
	  (\numhead, \apphead, unnmhead): ... these, which uses ...
	  (\chapheadtype, \unmlevel, \maxseclevel): ... these "variables".

2004-02-25  Karl Berry  <karl@gnu.org>

	* makeinfo/index.c (cm_printindex): insert cookie in Info output
	for benefit of Info readers.

2004-02-26  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (end_insertion): removed obsolete Docbook
	indentation work-around.

2004-02-25  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (cm_author): new function.
	(cm_titlepage_cmds): removed @author parts.

	* makeinfo/cmds.c: made @author call cm_author.

2004-02-24  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: avoid duplicate index entries within the same
	node (from Alper): syncodeindex, lines 9627 and 9633 TEXINPUTS,
	lines 14157 and 14202 texinfo-format-buffer 15131 and 15159
	texinfo-format-region 15130 and 15149

2004-02-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.h: new variable example_indentation_increment.

	* makeinfo/cmds.c (set_default_indentation_increment): renamed to
	set_example_indentation_increment.
	(cm_exampleindent): call set_example_indentation_increment.

	* makeinfo/insertion.c (begin_insertion, end_insertion): @example,
	@display and the like now rely on example_indentation_increment.

2004-02-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (begin_insertion, end_insertion): @float should
	not play with indentation.

2004-02-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c (cm_listoffloats): check if we are crossing the
	caption boundaries looking for a space to break at.

2004-02-24  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c: TEXINFO_OUTPUT -> TEXINFO_OUTPUT_FORMAT,
	after discussion with tar maintainer.

2004-02-20  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\infochapter, \infosection, etc.): these stubs
		of sectioning commands nuked.

2004-02-24  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\centerchap): Fixed to work again,
	  don't open group.
	  (\centerparameters): New macro.
	  (\centerchfplain): Nuked.

	The following continues with prosecution of @setchapterstyle{open}:
	* doc/texinfo.tex (\chfplain): renamed to \chapmacro.
	  (\CHAPFplain): Nuked.
	  (\setchapterstyle): Moved next to its deprecated friends.

2004-02-24  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\dofloat): start a paragraph.

2004-02-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (cm_caption): check if the innermost
	environment is @float.

2004-02-24  Alper Ersoy  <dirt@gtk.org>

	* info/session.c (info_menu_digit): if the menu entry has a line
	number, go to that line.

2004-02-24  Alper Ersoy  <dirt@gtk.org>

	* info/info.c (main): make sure dir file is not listed for option
	--where.

2004-02-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (xml_insert_element_with_attribute, xml_add_char)
	(xml_begin_table, xml_end_table, xml_begin_table_item)
	(xml_continue_table_item): separated ITEM and TABLEITEM states to
	handle @table environments better.

2004-02-24  Alper Ersoy  <dirt@gtk.org>

	* util/texinfo.dtd: added float and friends, updated tableitem and
	Inline.reference.

2004-02-23  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Structuring Command Types): slightly more info
	about headings.  Fix other references, too.

	* Makefile.am (EXTRA_DIST): explicitly list every file in djgpp,
	so that the CVS directory is not included in the dist.tar.gz.

2004-02-23  Arnold D. Robbins  <arnold@skeeve.com>

	* makeinfo/cmds.c (cm_code): For @samp, using single quotes instead of
	double quotes, to match TeX output more closely.

2004-02-23  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/index.h: new output_file and entry_number members in
	index_elt struct.

	* makeinfo/index.c (index_add_arg, cm_printindex): rewrote hyperlink
	generation for HTML to avoid duplicate anchors, and to work with
	splitting enabled.

2004-02-20  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c (cm_listoffloats): create HTML hyperlinks with
	add_word instead of using @ref to avoid problems with commas in
	captions.

2004-02-20  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/node.c (cm_node): remove whitespace before the node
	separator sequence.

2004-02-20  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/sectioning.c (handle_enum_increment): do not increment
	counters for ENUM_SECT_NO heading commands (ie. @unnumbered,
	@majorheading, etc.)

2004-02-20  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/multi.c (multitable_item): unset hsep if item command is
	not @headitem.

2004-02-19  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex: More hyphenation exceptions.
	(\author, \quotation): implement @author inside
	@quotation, for attribution purposes.

2004-02-19  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_exampleindent): fixed paragraph handling after
	@exampleindent lines.

2004-02-19  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/index.c (index_add_arg): create an anchor where @index is
	used in HTML documents.
	(cm_printindex): make index text an hyperlink to the created anchor.

2004-02-19  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (begin_insertion): skip empty lines following
	@table, @ftable, @vtable and @itemize lines.

2004-02-18  Karl Berry  <karl@gnu.org>

	* lib/substring.c,
	* lib/xexit.c,
	* lib/xmalloc.c,
	* lib/system.h: ANSI-fy.  (Other lib files come from gnulib.)

	* doc/texinfo.txi (Definition Commands): describe the argument/@var
	situation more accurately.

	* doc/texinfo.txi (Definition Commands): explicitly document the
	implicit index entry creation in all cases.

	* doc/texinfo.txi (Printing Indices & Menus, Indices, Predefined
	Indices): remove redundancies, make different
	purposes clear, etc.

2004-02-18  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.h:
	* makeinfo/xml.c (xml_get_assoc_for_id, xml_associate_title_with_id):
	removed these functions.

	* makeinfo/xref.c (cm_xref): do not call xml_get_assoc_for_id.

	* makeinfo/sectioning.c (sectioning_underscore): added xreflabel
	attribute to @unnumbered for Docbook.

2004-02-18  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xref.c (cm_xref): for Docbook, use lowercase ``see'' when
	printing index.

2004-02-18  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (xml_insert_indexentry): removed ``see'' from index
	entries as cm_xref takes care of it.

2004-02-17  Karl Berry  <karl@gnu.org>

	* doc/info.texi (Help-Int): mention the new line number feature.
	* doc/texinfo.txi (Indices): plural correction.
	* doc/info-stnd.texi (Invoking Info): matche typo.
	(Searching Commands): grammar.
	* info/session.c (info_menu_or_ref_item): need to subtract 1 from
	the actual line number to get to the right place,
	don't really know why.

	* makeinfo/makeinfo.c, info/info.c, util/texindex.c,
	utils/install-info.c, util/texi2dvi: update copyright year to
	2004, and do not mark copyright line for translation, since
	international law says to always use the English word "copyright".

2004-02-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (end_insertion): use add_html_block_elt instead
	of add_word for </pre> ending @example and the like.
	* makeinfo/float.c (cm_listoffloats): use add_html_block_elt for <li>.

2004-02-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (begin_insertion): do not expand @copying for
	HTML and Info too.
	(cm_insert_copying): expand copying_text for all formats here.

	* makeinfo/html.c (html_output_head): use text_expansion for copying
	text.

2004-02-17  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (float): mention @multitable and @image
	as typical contents.  From Arnold.

2004-02-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (xml_insert_element_with_attribute): removed check
	to see if current element contains para before calling xml_start_para,
	as that check is performed in xml_start_para too.

2004-02-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (end_insertion): indent float caption.

2004-02-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (begin_insertion): for XML and Docbook, do not
	expand @copying text.  Instead of calling @anchor, use <float
	name="floatlabel"> for XML.
	(cm_copying): removed ugly copying_text manipulation for Docbook.
	Warn if there is no @copying before @insertcopying.

	* makeinfo/xml.c: made floats contain para.
	(xml_start_para): check if current element can contain para.
	(xml_add_char): removed @copying checks.

2004-02-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (end_insertion): if the output format is XML,
	do not call close_insertion_paragraph after @end menu.

2004-02-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (xml_insert_element_with_attribute): indentation
	fixes for @multitable.

2004-02-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/multi.c (do_multitable): remove trailing newline when the
	output format is Docbook or XML, as output_paragraph becomes unusable
	later for xml_indent during select_output_environment.

2004-02-16  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_bye): do not call flush_output as text appended
	by convert_from_loaded_file may need to play with output_paragraph.

2004-02-16  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (xml_end_document): insert newline after </texinfo>
	only if indentation is disabled (otherwise xml_indent takes care of
	the newline.)
	(xml_insert_indexentry): disable warnings when executing implicit
	@xref commands  for Docbook, otherwise makeinfo will warn about
	missing punctuation.

2004-02-16  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (begin_insertion): eat one newline after
	@xml/@docbook blocks for proper indentation.

2004-02-16  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_center): fixed line wrapping after the @center
	command.

2004-02-15  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (xml_begin_document): disabled warnings around the
	implicit register_delayed_write("@documentencoding") call.

2004-02-15  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (begin_insertion, end_insertion): when handling
	@xml, @html and @docbook blocks, do not touch para elements, and keep
	whitespace as-is.

2004-02-15  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.h: made xml_keep_space extern.

2004-02-15  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_noindent_cmd, cm_indent): implicitly start
	para element for Docbook and XML.

2004-02-15  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\hyphenation): add more hyphenation exceptions,
	gleaned from the log in TUGboat.
	* doc/info-stnd.texi: document new option --where.
	* info/info.c (main): in print_where_p case, ensure we don't try
	to print NULL.

2004-02-14  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\addtokens): had two identical definitions,
	remove one.
	(\maketoks): no space token after |ENDTOKS|,
	although I guess it hasn't mattered.
	(\entry): make clear what is the argument to
	\pdfgettoks and what is output.
	(\appendtomacro): use our own token registers,
	for safety.
	(\listoffloatsdoentry): fully expand the page
	number, and don't expand the lof text.

2004-02-14  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_strong):
	* makeinfo/xml.c (xml_begin_index): cast output_paragraph to char, to
	avoid warnings with -pedantic.

2004-02-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c:
	* makeinfo/cmds.h:
	* makeinfo/defun.c:
	* makeinfo/defun.h:
	* makeinfo/files.c:
	* makeinfo/files.h:
	* makeinfo/float.c:
	* makeinfo/float.h:
	* makeinfo/footnote.c:
	* makeinfo/footnote.h:
	* makeinfo/html.c:
	* makeinfo/html.h:
	* makeinfo/index.c:
	* makeinfo/index.h:
	* makeinfo/insertion.c:
	* makeinfo/insertion.h:
	* makeinfo/lang.c:
	* makeinfo/lang.h:
	* makeinfo/macro.c:
	* makeinfo/macro.h:
	* makeinfo/makeinfo.c:
	* makeinfo/makeinfo.h:
	* makeinfo/multi.c:
	* makeinfo/node.c:
	* makeinfo/node.h:
	* makeinfo/sectioning.c:
	* makeinfo/sectioning.h:
	* makeinfo/toc.c:
	* makeinfo/toc.h:
	* makeinfo/xml.c:
	* makeinfo/xml.h:
	* makeinfo/xref.c:
	* makeinfo/xref.h: protoized functions.

2004-02-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/multi.h: new file.

2004-02-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\caption): make \long.
	* doc/texinfo.txi (Nodes): mention that changing node names is bad.
	(caption shortcaption, listoffloats): write these, finishing the
	first cut at @float documentation.

2004-02-12  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_verb): end @verb only if delimiter is followed
	by a closing brace.

2004-02-12  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/lang.c (cm_accent_generic): warn if accented character is
	whitespace.

2004-02-12  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertionc. (end_insertion): decrement current_indent
	only if the output format is Info.

2004-02-12  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (end_insertion): adjusted caption styles for
	label and type conditions.
	(begin_insertion, end_insertion): indent first paragraphs inside
	@float, even if first paragraph in a chapter.  Increment/decrement
	current_indent.

2004-02-12  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/tests/defxcond: look for `--' instead of `-'.

2004-02-12  Karl Berry  <karl@gnu.org>

	* makeinfo/float.c (cm_listoffloats): change warning wording.

2004-02-11  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\dofloat): initialize caption macros here, not
		globally.
	(\Efloat): rewrite for more consistent caption
	line, matching documentation.
	(\appendtomacro): new macro.
	(\currentparindent): this \newdimen was not used; removed.
	* doc/texinfo.txi (float): continue documenting.

	* makeinfo/files.c (register_delayed_write): change wording of msgs.

2004-02-10  Karl Berry  <karl@gnu.org>

	* makeinfo/defun.c: --- (which gets reduced to --)
	instead of -- (which gets reduced to -).
	Report from Akim Demaille <akim@epita.fr>, 09 Feb 2004 18:06:29 +0100.

2004-02-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\pickupwholefraction): allow the fraction to be
	an integer without a decimal point, like `1'.  Report from: Dumas
	Patrice <dumas@centre-cired.fr>, 9 Feb 2004 16:46:30 +0100.
	* makeinfo/multi.c (setup_multitable_parameters): compute width
	and pass it, for clarity.

2004-02-07  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (cm_insert_copying): insert double newlines
	instead of one in non XML outputs.

2004-02-07  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_code): do not decrement in_fixed_width_font as
	it gets decremented elsewhere.

2004-02-07  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (next_nonwhitespace_character): also check
	global input_text since filestack does not contain it.

2004-02-07  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (next_nonwhitespace_character): go through the
	whole filestack looking for the next character.

2004-02-06  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\indexnofonts): define \bullet .. \result, so
	they can be used in @?index commands.
	Report from: Akim Demaille <akim@epita.fr>, 06 Feb 2004 13:34:15 +0100.

2004-02-05  Karl Berry  <karl@gnu.org>

	* makeinfo/xref.c (add_xref_punctuation): if we insert anything,
	make it a period.
	(cm_xref): include command name in error message.
	* doc/texinfo.txi (ref): mention generating a period, if needed.
	Too many complaints when we made a warning for @ref not followed
	by period or comma.

2004-02-05  Alper Ersoy  <dirt@gtk.org>

	* info/info-utils.c (info_parse_node): look for ``(line '' instead of
	skipping any non-digit characters.

2004-02-05  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/index.c (insert_index_output_line_no): made ``(line NNN)'' not
	translatable for Info output.

2004-02-03  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (flush_output): increment node_line_number too.

	* makeinfo/makeinfo.h: new variable node_line_number to hold the last
	output line number the current node.

	* makeinfo/nodes.c (cm_node): reset node_line_number just before the
	node start cookie.

	* makeinfo/files.h: new node member in DELAYED_WRITE struct.
	* makeinfo/files.c (register_delayed_write): save current node name if
	there's one.
	(handle_delayed_writes): adjust line numbers in indices only if the
	output is plaintext, or the index entry appears in the changed node.

	* makeinfo/index.c (index_add_arg, cm_printindex): use
	node_line_number instead of output_line_number if the output is an
	Info file.

2004-02-03  Alper Ersoy  <dirt@gtk.org>

	* info/info-utils.h: new line_number member in REFERENCE struct.

	* info/info-utils.c (info_parse_node): parse (line ...) strings
	from menu items.
	(info_references_internal): save parsed line number in the entry.

	* info/session.c (info_menu_of_ref_item): if selected entry has a line
	number associated with it, jump to that line after updating window.

2004-02-02  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (add_xref_punctuation): new function that inserts
	necessary punctuation after @ref and @pxref commands.
	(cm_xref): call add_xref_punctuation when multiple parameters are
	given, make use of next_nonwhitespace_character function in the END
	case.
	(cm_ref): do not call cm_xref in the END case.

2004-02-02  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (next_nonwhitespace_character): new function.

2004-02-02  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_code): call xml_start_para instead of tweaking
	in_fixed_width_font, and use entities rather than quotes.

2004-02-02  Arnold D. Robbins  <arnold@skeeve.com>

	* makeinfo/cmds.c (cm_TeX, cm_LaTeX): Add docbook support.
	(cm_code): Add opening and closing single quotes for @samp in the
	Docbook output.
	* makeinfo/xml.c (xml_begin_document): Add `tex' and `latex' entities.
	* makeinfo/xref.c (cm_xref): Add `See' and `see' strings for docbook
	and xml.

2004-01-31  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (main): fixed ``--option: makeinfo'' messages.

2004-01-31  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_TeX, cm_LaTeX): really ignore the arguments as
	the warning suggests.

2004-01-31  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_TeX, cm_LaTeX): warn if there are any arguments.

2004-01-31  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/files.c (pop_path_from_include_path): do not mock with
	include_files_path address directly, as it confuses realloc.

2004-01-31  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (main, usage): new --output-indent option.

2004-01-31  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (xml_add_char): break long lines in paragraphs
	when the output format is Docbook.

2004-01-31  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/files.c (prepend_to_include_path, append_to_include_path)
	(pop_path_from_include_path): new functions to manipulate
	include_files_path.

	* makeinfo/makeinfo.c (convert_from_file): prepend the loaded file's
	path to include_files_path in order to make relative include files to
	be found, then remove afterwards.
	(main): make use of new functions for -I and -P options.

2004-01-30  Alper Ersoy  <dirt@gtk.org>

	* util/texinfo.dtd: added exdent element.

2004-01-29  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (convert_from_loaded_file): call
	xml_begin_document after opening the output stream for writing.

	* makeinfo/files.c (register_delayed_write): use delayed_command
	instead of command in messages as it may differ from the actual
	command name.  Check the usability of current_output_filename.

2004-01-28  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (HTML Splitting): describe when two nodes are
		written to one output file.

	* doc/texinfo.tex (\TeX): \edef using original \TeX definition.

2004-01-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/defun.c (process_defun_args, defun_internal):
	* makeinfo/insertion.c (begin_insertion, end_insertion): execute XML
	only blocks for Docbook also.

	* makeinfo/xml.c: added Docbook elements for definition commands.
	(xml_begin_def_term): for Docbook, generate an Info-like @defun line.
	(xml_insert_element_with_attribute): do not indent DEFINITION and
	DEFINITIONTERM when the output is Docbook.

2004-01-25  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c: changed majorheading and the like with bridgehead
	for Docbook.

	* makeinfo/sectioning.c (sectioning_underscore): do not start sections
	with @majorheading and the like, only insert title.

2004-01-25  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c:
	* makeinfo/xml.h: new element EXDENT.

	* makeinfo/cmds.c (cm_comment): save the paragraph state.
	(cm_exdent): use EXDENT element for XML, LINEANNOTATION for Docbook.

	* makeinfo/html.c (html_output_head):
	* makeinfo/xml.c (xml_begin_document): erase output_paragraph.

	* makeinfo/insertion.c (begin_insertion): canonize whitespace around
	copying text.
	(cm_insert_copying): comment fixes.  Do not append newline if the
	output is Docbook.

	* makeinfo/makeinfo.c (close_paragraph): return if Docbook too.

	* makeinfo/sectioning.c (sectioning_underscore): removed newline from
	the end of titles.

	* makeinfo/lang.c (cm_documentencoding): insert encoding attribute
	into XML and Docbook prologs when handling delayed writes.

	* makeinfo/xml.c (xml_begin_document): register a delayed write for
	@documentencoding when writing the prolog.
	(xml_end_para): removed docbook checks.
	(xml_insert_element_with_attribute): skip indentation if
	xml_keep_space is true, indent after table element.  When the output
	is Docbook, do not insert xml:space attribute, and do not remove from
	the end of group element and keep_space blocks.
	(xml_add_char): join lines in a paragraph for Docbook too.

2004-01-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/multi.c (out_char): simple use add_char for XML and Docbook
	outputs too.

	* makeinfo/makeinfo.c (close_paragraph): just return when the output
	format is XML.

	* makeinfo/makeinfo.h: new variable xml_indendation_increment.

	* makeinfo/cmds.c (cm_comment): insert a newline before the comment,
	if there is not already one.
	(cm_noindent_cmd): skip whitespace after the command.

	* makeinfo/xml.c:
	* makeinfo/xml.h: new element DETAILMENU.

	* makeinfo/xml.c: menuentry and menucomment should not contain para.
	(xml_indent, xml_indent_end_para): use xml_indentation_increment
	value, and indent only if it is a positive number.
	(xml_start_para): apply indentation for XML output too.
	(xml_end_para): add newline if xml_indentation_increment is positive.
	(xml_insert_element_with_attribute): major indentation fixes.
	(xml_start_menu_entry): skip whitespace at the start of menu comments.
	(xml_add_char): fixed paragraph detection in menus, and added a check
	to detect multiple whitespaces after newline in menu comments.  Do not
	return when inside multitable to avoid concatenation of two lines
	without a space char in between.

	* makeinfo/insertion.c (cm_insert_copying, cm_lisp, cm_smalllisp)
	(cm_format, cm_smallformat, cm_display, cm_smalldisplay, cm_example)
	(cm_smallexample): do not insert newline when the output is XML.
	(end_insertion): ditto for the above mentioned block commands and
	@group.  Do not increment in_fixed_font for XML output.
	(begin_insertion, end_insertion): enclose @detailmenu in a detailmenu
	element.

	* util/texinfo.dtd: added detailmenu, and fixed menucomment and
	tableitem definitions.

2004-01-23  Alper Ersoy  <dirt@gtk.org>

	* util/Makefile.am: substituted catalog in EXTRA_DIST with catalog.in,
	and added catalog to CLEANFILES.

2004-01-23  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/files.h: new input_filename member in delayed_write struct.

	* makeinfo/files.c (register_delayed_write): added input_filename to
	saved variables, and adjusted line_number saving.
	(handle_delayed_writes): set input_filename and line_number for
	correct warning and error messages.

2004-01-23  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c (cm_listoffloats):
	* makeinfo/index.c (cm_printindex): decrement line_number only if
	not handling delayed writes.

	* makeinfo/float.c (float_type_exists): check if float has a label.

2004-01-23  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (main): updated copyright year in --version text.

2004-01-23  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/tests/Makefile.am: commented top2.texi to fix distcheck.

2004-01-23  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (xml_begin_document): use PUBLIC id for TexinfoML
	instead of SYSTEM.

2004-01-23  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/Makefile.am: removed texinfo.dtd and texinfo.xsl and ...

	* util/Makefile.am: added here.

2004-01-23  Alper Ersoy  <dirt@gtk.org>

	* utils/catalog.in: catalog file for texinfo.dtd.

2004-01-23  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/texinfo.dtd:
	* makeinfo/texinfo.xsl: moved to ...

	* utils/texinfo.dtd:
	* utils/texinfo.xsl: here.

2004-01-23  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/texinfo.dtd: added ordm and ordf entities and dmn element.
	updated indexterm location in tables.

2004-01-22  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\dofloat): handle empty float type and empty
	float label separately, matching makeinfo behavior.
	* doc/texinfo.txi (Floats): new section, not yet fully written.
	(Special Displays): new chapter to hold it.
	(Footnotes, Images): move these sections to the new chapter.
	(@@-Command Summary): list new commands.
	* NEWS: mention new commands here too.

2004-01-21  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (xml_begin_index): move data to a temporary location
	for delayed use and insert back when handling delayed writes.

	* makeinfo/index.c (cm_printindex): call xml_begin_index when not
	handling delayed writes too.

2004-01-19  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex: doc fix.

2004-01-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\commondummies): dummify @tie and remaining
	@<char> commands.
	(\tocindent): reduce to 15pt to match \defaultparindent.
	(\setref): use XR as control sequence prefix
	instead of just X; seems nicer.  Change calls.

	Finish implementing @listoffloats:
	(\xrdef): keep lists of each float type.
	(\dofloat): save the floattype in the aux file.
	(\Efloat): write the lof text to the aux file.
	(\iffloat, \doiffloat, \listoffloats,
	\listoffloatsdo, \listoffloatsentry): new macros.
	* bootstrap: autoheader should come after aclocal, I think.

2004-01-17  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\doitemize): rename from \itemizey.
	(\itemizeitem): do not set \parskip=0 if the last
	thing was a \nobreak (e.g., from \sectionheading).
	Report from: Jesper Harder <harder@ifa.au.dk>,
	17 Jan 2004 22:03:51 +0100.

	* doc/texinfo.txi (email): no angle brackets in TeX output.
	Report from: Jesper Harder <harder@ifa.au.dk>,
	17 Jan 2004 21:03:21 +0100.

2004-01-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c (cm_listoffloats): Prefixed captions with
	float_type.  For HTML, used an <ul> block.

2004-01-17  Alper Ersoy  <dirt@gtk.org>

	* info/info.c (main, info_short_help): new option -w, --where,
	--location that prints the physical location of Info file.

2004-01-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/defun.c (defun_internal):
	* makeinfo/insertion.c (end_insertion): enclose paragraphs in @def
	blocks in a blockquote element for indentation in the HTML output.

2004-01-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/html.c (insert_html_tag_with_attribute): new function.
	(insert_html_tag): only call insert_html_tag_with_attribute with
	NULL attribute string and return.
	(push_tag, pop_tag): keep the element attributes in stack too.
	(html_output_head): fixed span.roman in the default CSS.

	* makeinfo/html.h: new attribs member in hstack struct.

	* makeinfo/cmds.c (cm_dmn, cm_code, cm_sc, cm_r): use
	insert_html_tag_with_attribute for setting element class.

2004-01-15  Karl Berry  <karl@gnu.org>

	* texinfo.tex (\readauxfile): \ must have catcode other to
	handle \ in node/section names.

2004-01-16  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/toc.c (cm_contents): fixed Docbook element stack underflow.

	* makeinfo/xml.c (xml_insert_indexterm): set xml_dont_touch_items_defs
	for only XML output.

2004-01-14  Simon Josefsson <jas@extundo.com>

	* util/gendocs.sh: new option --html.

2004-01-14  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/html.c (rollback_empty_tag): rewrote to also identify empty
	elements with attributes.
	(insert_html_tag): increment and decrement in_html_elt.

	* makeinfo/index.c (index_add_arg): do not call flush_output for xml
	and html outputs as they do not need an accurate output line number
	tracking, and flush_output makes rollback_empty tag useless.

2004-01-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_code): increment and decrement in_html_elt when
	inserting the class attribute to avoid space char being replaced with
	entities.
	(cm_r, cm_dmn): use insert_string instead of add_word for the class
	attribute.

2004-01-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_r): changed add_word_args with insert_html_tag,
	and changed inline style with a class attribute.

	* makeinfo/html.c (insert_html_tag): when the current element is the
	same with the last in the stack, do not return if it's span.
	(html_output_head): new CSS class roman (for @r.)

2004-01-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/node.c (cm_node): reset output_position when closing the
	current HTML output file.

	* makeinfo/files.c (handle_delayed_writes): fixed position updating of
	the next writes.

2004-01-13  Karl Berry  <karl@gnu.org>

	* makeinfo/files.c (register_delayed_write): reword warning, and
	only warn if writing to stdout, not /dev/null.

2004-01-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/node.c (glean_node_from_menu): removed unnecessary
	line_number incrementation.

2004-01-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c (cm_listoffloats):
	* makeinfo/index.c (cm_printindex): decrement line_number just after
	get_rest_of_line to make messages refer to the correct line,
	re-increment it just before returning.

2004-01-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/node.c (cm_node): fixed prev, next, up nodes defaulting
	code to not make use of @menus after @bye.

2004-01-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/index.c (cm_printindex): handle @printindex immediately
	if the output format is Docbook, rather than waiting for delayed
	writes.

2004-01-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c (cm_listoffloats): insert xml elements also for
	docbook.

2004-01-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c (float_type_exists): new function that checks if a
	specific type of @float is previously used.
	(cm_listoffloats): warn if requested float_type is unknown.

2004-01-12  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/files.c (register_delayed_write): warn if delayed write is
	requested when the output file is not seekable.

2004-01-10  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Using Include Files): mention the possibility
	of no nodes in an include file.  From Bob.

2004-01-10  Simon Josefsson  <jas@extundo.com>

	* makeinfo/node.c (cm_node): Only print ",\n" at correct places.

2004-01-10  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/html.c (html_output_head): use insert_string instead of
	add_word for css inclusion to avoid reformatting.

2004-01-09  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c:
	* makeinfo/xml.h: new variable xml_dont_touch_items_defs.

	* makeinfo/cmds.c (cm_comment, cm_sp):
	* makeinfo/xml.c (xml_insert_indexterm): set and unset
	xml_dont_touch_items_defs.

	* makeinfo/xml.c (xml_insert_element_with_attribute)
	(xml_add_char): do not do anything about @deffnx and @itemx commands
	if xml_dont_touch_items_defs is non-zero.

2004-01-09  Alper Ersoy  <dirt@gtk.org>

	* info/Makefile.am: define INFODIR2 that points to $datadir/info.

	* info/info.c (main): prepend INFODIR2 to infopath, if defined and if
	not the same with INFODIR.

2004-01-08  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/index.c (cm_printindex): adapted to delayed writing,
	decreased the space between the columns of plaintext output.

	* makeinfo/float.c (cm_listoffloats): disabled menu header checks,
	synced column_width with @printindex.

2004-01-08  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/index.c: moved INDEX_ELT and INDEX_ALIST typedefs to ...

	* makeinfo/index.h: here

	* makeinfo/files.h:
	* makeinfo/files.c (register_delayed_write): save line number in input
	document that the calling command is in.
	(handle_delayed_writes): adjust byte offsets in tag table and output
	line numbers in all of the indices,

	* makeinfo/makeinfo.c (convert_from_loaded_file): when finished, write
	the tag table after handling delayed writes.

	* makeinfo/node.c (write_tag_table): accept a filename argument, and
	open the file in append mode.

2004-01-08  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c (add_new_float):
	* makeinfo/float.h: save the line number @float command used.

2004-01-08  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/toc.c (cm_contents): moved the call to html_output_head
	to ...

	* makeinfo/files.c (register_delayed_write): here.

2004-01-08  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c (cm_listoffloats): adapted for delayed writing,
	and slightly fixed formatting with no_headers.

2004-01-08  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c: use cm_contents for @shortcontents
	and @summarycontents too.

	* makeinfo/files.c (register_delayed_write)
	(handle_delayed_writes): new functions.

	* makeinfo/files.h: new delayed_write struct and
	handling_delayed_writes variable.

	* makeinfo/makeinfo.c (insert): use whitespace macro instead of
	testing characters manually.
	(convert_from_loaded_file): call handle_delayed_writes when finished.

	* makeinfo/toc.c (contents_update_html, contents_update_info)
	(shortcontents_update_html, shortcontents_update_info): changed file
	read/writes with insert and insert_string.
	(rewrite_top, contents_update, shortcontents_update)
	(toc_update, cm_shortcontents): removed functions.
	(cm_contents): for HTML and Info, only call register_delayed_write if
	handling_delayed_writes is not true.  Call contents_update_html and
	other variants according to output format and command name.

	* makeinfo/toc.h: removed obsolete variables and functions.

2004-01-08  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/index.c (index_add_arg): keep line number of the index
	entry where it appears in the output.
	(insert_index_output_line_no): new function.
	(cm_printindex): call insert_index_output_line_no for info and
	plaintext outputs.

2004-01-08  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.h: new variable output_line_number.

	* makeinfo/makeinfo.c (flush_output): keep number of lines in the
	flushed data, in output_line_number variable.

2004-01-07  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c (cm_listoffloats): when there is no caption, do not
	insert space between the float number and the colon.

2004-01-07  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c (cm_listoffloats): use shorttitle only if it's
	defined.

2004-01-07  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c: new command @shortcaption.

	* makeinfo/xml.c:
	* makeinfo/xml.h: new element SHORTCAPTION.

	* makeinfo/insertion.c (cm_caption): insert CAPTION or SHORTCAPTION
	according to command.
	(begin_insertion): read @shortcaption too.  Fixed XML floatpos
	contents.

	* makeinfo/float.h: added shorttitle and position to the float_elt
	struct.

	* makeinfo/float.c (add_new_float): accept a shorttitle argument.
	(current_float_shorttitle, current_float_position): new functions.
	(cm_listoffloats): if title is too long to fit into a line, try
	shorttitle.

2004-01-07  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.h: new variable node_has_listoffloats.

	* makeinfo/float.c (cm_listoffloats): insert menu header string only
	if node_has_listoffloats is not true.

	* makeinfo/node.c (cm_node): reset node_has_listoffloats.

2004-01-06  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (begin_insertion): fixed a thinko in @float
	arguments parsing code, regarding string termination; changed manual
	input text skipping with skip_whitespace_and_newlines for proper
	line_number handling; and changed magic number 10 with sizeof for
	improved readability.

	* makeinfo/float.c (cm_listoffloats): end paragraph before the menu
	header.  Use add_html_block_elt to insert <div> element.

2004-01-06  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/crossrefs.c:
	* makeinfo/crossrefs.h: moved to ...

	* makeinfo/xref.c:
	* makeinfo/xref.h: new files.

	* makeinfo/Makefile.am:
	* makeinfo/cmds.c:
	* makeinfo/footnote.c:
	* makeinfo/html.c:
	* makeinfo/makeinfo.c:
	* makeinfo/node.c:
	* makeinfo/node.h:
	* makeinfo/sectioning.c:
	* makeinfo/toc.c: adjusted for new names.

2004-01-06  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c:
	* makeinfo/makeinfo.h: moved cross referencing commands to ...

	* makeinfo/crossrefs.c:
	* makeinfo/crossrefs.h: new files.

	* makeinfo/cmds.c:
	* makeinfo/footnote.c:
	* makeinfo/html.c:
	* makeinfo/makeinfo.c:
	* makeinfo/node.c:
	* makeinfo/sectioning.c:
	* makeinfo/toc.c: added crossrefs.h to includes.

	* makeinfo/Makefile.am: added new files crossrefs.c and crossrefs.h

2004-01-06  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/node.c (cm_node): removed ``Node: <nodename>'' from the
	node headers.

2004-01-06  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (begin_insertion): keep line_number the same
	before and after get_until, so messages issued inside full_expansion
	have correct line numbers.

2004-01-06  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (handle_menu_entry):
	* makeinfo/node.c (glean_node_from_menu): adjust line_number.

2004-01-05  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\rawbackslashxx): rename to \backslashcurfont,
	to keep reducing the number of `xx's here.

	* doc/texinfo.tex (\setref): call \atdummies, not \indexnofonts; we
	need to keep the user's commands.
	(\dofloat): call \indexnofonts and \turnoffactive
	to support commands and special characters in the
	float type name.

	* doc/texinfo.txi (firstparindent): shorten name so it doesn't
	break in the toc.

2004-01-05  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/html.c (html_output_head): new CSS entry span.sc for
	small-caps font variant.

	* makeinfo/cmds.c (cm_sc): use span with class attribute sc, instead
	of small.

2004-01-04  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\commondummies, \indexnofonts): Merge the
	  common part of these two to ...
	  (\commondummiesnofonts): ... a new macro.
	  (\indexdummylatex, \indexdummytex, \indexdummydots): Nuke,
	  the time saved is not worth the hassle.

2004-01-04  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\makedispenv): Determine the size of the fonts
	  according to the value of SETdispenvsize, using ...
	  (\setnormaldispenv, \setsmalldispenv, \SETdispenvsize, \smallword):
	  (\nosmallword): ... these new macros.
	  (\flushleft): No longer defined via \makedispenv.

2004-01-03  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\TeX): new macro, copying plain but make a
	period following end a sentence.  Idea from LaTeX.

2004-01-02  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/node.c (clean_old_split_files): new function.
	(split_file): moved filename generation code to a ...
	(enumerate_filename): new function.

	* makeinfo/makeinfo.c (convert_from_loaded_file): call
	clean_old_split_files before calling split_file.

2004-01-02  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (create_html_directory): new function.
	(insert_toplevel_subdirectory): moved common if blocks to
	create_html_directory.  Adjusted checks to reuse existing
	directories, and remove existing <output>.html files, when
	falling back to suffices.

2004-01-02  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_code): for HTML, use span for @command, @env,
	@file, @option and @samp, and insert command name as class attribute.

2003-12-31  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (add_char, handle_menu_entry): end <ul> block
	before inserting <p>, and restart afterwards.

2003-12-31  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (handle_menu_entry): for HTML, append colon only
	if there is a description following the menu item.

2003-12-31  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (usage): removed short forms of output options.

2003-12-30  Alper Ersoy  <dirt@gtk.org>

	* cmds.c (cm_comment): do not output comments before HTML header is
	written.

2003-12-30  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (main): new option --plaintext.
	(usage): added short forms of --html, --xml, --docbook and --plaintext
	to the help text.

2003-12-30  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/multi.c (multitable_item): removed thead and tbody from
	HTML tables.  Added hsep after @headitem for Info.
	(multitable_item, multitable_tab): for HTML, use th instead of td for
	@headitem rows.

	* makeinfo/xml.c (xml_begin_multitable): moved Docbook TGROUP code to
	a ...
	(xml_begin_multitable_group): new function.
	(xml_end_multitable_row): restart TGROUP on @headitem.
	(xml_end_multitable): warn if @headitem is the last item in
	multitable, and output format is Docbook.  Joined common code between
	XML and Docbook.

2003-12-30  Arnold D. Robbins  <arnold@skeeve.com>

	* makeinfo/cmds.c (cm_strong): Use <emphasis role="bold"> for docbook.

2003-12-30  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c (cm_listoffloats): substituted fixed numbers with
	the sizeof operator where possible, and commented code where not, to
	improve code readability.

2003-12-30  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (cm_image): do not escape backslash and double
	quote characters in plaintext output.

2003-12-30  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (cm_image): do not write magic cookie when
	output format is plaintext.

2003-12-30  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (add_char): added forgotten html check to
	in_html_block_level_elt if block.

2003-12-30  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c:
	* makeinfo/xml.h: added new element alttext (IMAGEALTTEXT),
	as a child of image.

	* makeinfo/makeinfo.c (cm_image): moved alttext attribute to the new
	alttext child in XML output, to keep markup intact.  Moved filename
	CDATA to name attribute.

	* makeinfo/texinfo.dtd: updated image element.

2003-12-30  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (cm_image): use HTML entities in alt attribute.

2003-12-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (cm_item): do not call close_single_paragraph
	and use rollback_empty_tag for empty <dd> removal.

2003-12-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/html.c (rollback_empty_tag): new function.
	(insert_html_tag): try rollback_empty_tag before closing both
	tag and old_tag.

2003-12-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_sp): for HTML use <pre>.

	* makeinfo/defun.c (defun_internal): do not close paragraph when
	outputting HTML to avoid empty <p> elements.
	(process_defun_args): joined duplicate if/else blocks.

	* makeinfo/html.c (insert_html_tag): removed redundant paragraph
	starting code.

	* makeinfo/insertion.c (begin_insertion): keep state of the first <dt>
	child of a <dl> in the new html_deflist_has_term variable for ...
	(cm_item): cleaner <br> insertion checks.  Fixed non-functional empty
	<dd> rollback code.

	* makeinfo/makeinfo.c (add_html_block_elt, add_html_block_elt_args):
	new functions for inserting block level elements that must not be
	preceded by a <p> element.
	(add_char): insert <p> only if in_html_block_level_elt is not true.

	* makeinfo/cmds.c (cm_comment, cm_center):
	* makeinfo/footnote.c (output_pending_notes):
	* makeinfo/html.c (html_output_head):
	* makeinfo/index.c (cm_printindex):
	* makeinfo/insertion.c (enum_html, begin_insertion, end_insertion)
	(handle_verbatim_environment, cm_item):
	* makeinfo/makeinfo.c (handle_menu_entry):
	* makeinfo/multi.c (do_multitable):
	* makeinfo/node.c (cm_node):
	* makeinfo/sectioning.c (sectioning_html): use add_html_block_elt and
	add_html_block_elt_args instead of add_word and add_word_args
	respectively, when inserting <ul>, <div>, <h?> and the like.

2003-12-25  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Def Cmd Continuation Lines): new node.
	* NEWS: mention this new feature.

2003-12-25  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (end_insertion): inhibit paragraph indentation
	for more cases after example, display and the like environments.

	* makeinfo/xml.c (xml_start_para, xml_end_para): made <para> and
	</para> indentation more newline-aware.

2003-12-25  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (end_insertion, cm_example, cm_smallexample)
	(cm_lisp, cm_smalllisp, cm_format, cm_smallformat, cm_display)
	(cm_smalldisplay): unified whitespaces inside these elements
	in XML and Docbook output (always one newline at the beginning
	and one at the end).

2003-12-25  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/lang.c (cm_accent_generic_no_headers): do not issue
	warnings when substituting non-ASCII accents with punctuation.

2003-12-24  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (cm_xref): rparen is not allowed after all,
	confirmed by experimentation (thanks to Luc).
	* doc/texinfo.txi (ref): remove it from doc.

2003-12-23  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (convert_from_loaded_file): when finished, do
	not indent body and html closing tags, and do not use comment tags if
	there is no trailing information.

2003-12-23  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_acronym):
	* makeinfo/cmds.h: save second arguments of acronym in acronyms_stack
	and reuse them as title attributes of acronym element of HTML output,
	when there is only one argument given.

2003-12-23  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (cm_image): use text_expansion for alt
	attribute of images.

2003-12-23  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/sectioning.c (sectioning_html): do not insert "%s "
	unconditionally for title enumerations, which causes unnecessary
	blanks for @unnumbered and @top.

2003-12-23  Arnold D. Robbins  <arnold@skeeve.com>

	* float.h (FLOAT_ELT): New member: `title_used'. Avoids reuse of
	title inside nested floats.
	(current_float_used_title, current_float_set_title_used): declared.

	* float.c (add_new_float): Init `new->title_used' to zero.
	(current_float_used_title, current_float_set_title_used): new
	functions.

	* xml.c (xml_begin_docbook_float): Make use of new functions to
	avoid omitting title, tag, id if have already done so inside
	nested float.

2003-12-22  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (cm_xref): warn if character after @ref does
		not produce a valid Info ref.
	(cm_ref): call cm_xref in both START and END cases.
	* doc/texinfo.txi (ref): make the second example being a "wrong"
	        one explicit (report from Luc), and mention the warning.

2003-12-21  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\comma): new command.
	* makeinfo/cmds.c (cm_comma): new fn.
	(command_table): use it for @comma.
	* doc/texinfo.txi (Atsign Braces Comma): Rename node.
	(Inserting a Comma): new node.
	(@@-Command Summary): include it here.

2003-12-20  gettextize  <bug-gnu-gettext@gnu.org>

	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.13.1.

2003-12-19  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\ordf, \ordm): use \lllsize instead of \lsize.
	Advice from Steve Peter.

	* doc/texinfo.txi (Printing Indices & Menus): typo, @@index ->
		@@vindex.  From Luc.

2003-12-19  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_acronym): read and make use of second argument
	like texinfo.tex does.

	* makeinfo/xml.c:
	* makeinfo/xml.h:
	* makeinfo/texinfo.dtd: new elements acronymword and acronymdesc.

2003-12-19  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (begin_insertion): insert float element for
	docbook too.

2003-12-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi, doc/info-stnd.texi: fix incorrect cross-manual
	xrefs.  From: Juri Linkov <juri@jurta.org>, 18 Dec 2003 05:01:07 +0200.

2003-12-18  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (insert): rollback unnecessary whitespace before
	newline characters.

2003-12-17  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\ordf, \ordm): new macros.
	(\commondummies): include them.
	(\indexnofonts): here too.
	* makeinfo/makeinfo.c (command_table): add them.
	* makeinfo/lang.c (cm_special_char): first cut at handling them.
	* doc/texinfo.txi (Inserting Accents): document them.

2003-12-16  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/defun.c (process_defun_args): use execute_string instead
	of add_word so accent commands are honored.

2003-12-16  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (xml_begin_document): output xml process instruction
	also in the Docbook prolog.

2003-12-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (dots): document enddots spacing.

2003-12-16  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\dots): Use \hfil instead of \hss and only
	  the stretch factor in explicit skips; I don't suppose the dots
	  will overlap.
	  (\enddots): Merged with \dots.

2003-12-16  Karl Berry  <karl@gnu.org>

	* makeinfo/makeinfo.c (cm_image): quote the src= arg in the Info
	case, since apparently that's what Jan implemented.  Report from:
	Torsten Bronger <bronger@physik.rwth-aachen.de>, 16 Dec 2003
	12:55:30 +0100.

	* util/dir-example: wdiff tools.

2003-12-15  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\dofloat): Move \startsavinginserts before
	  the begin of the vtop; it's still local---within the group
	  open by \float.
	  (\dofloat, \Efloat): Fix indentation.

2003-12-15  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\innerdef, \innernewcount): Nuked.
	  (\getfloatno): New macro, to establish the right float count.

2003-12-15  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\innernewbox): Nuked, the call expanded.

2003-12-14  Karl Berry  <karl@gnu.org>

	* makeinfo/tests/*: unset TEXINFO_OUTPUT where necessary.

2003-12-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Smallcaps, acronym): Compare and contrast these
		a bit more fully.
	* doc/texinfo.tex (\setfontstyle): just \def the string; since we
		are \edef'd, we can't make ourselves a control sequence.
	(\selectfonts): new macro.
	(\doacronym): print acronym in smaller size, and \unsepspaces for
		if we're called inside @display.
	(\registeredsymbol): we can use \lllsize here too.

	* configure.ac: gettext 0.13 (many generated files updated).

	* Makefile.am (AUTOMAKE_OPTIONS): 1.8.

	* makeinfo/makeinfo.c: give warning if TEXINFO_OUTPUT value is
		unrecognized.
	* doc/texinfo.txi (makeinfo options): document TEXINFO_OUTPUT.

	* doc/texinfo.txi (tex): document @LaTeX.

	* doc/texinfo.tex (\loggingall): reduce \errorcontextlines for
	sake of infinite loops.
	(\setfontstyle): \def better than \edef?
	(\commondummies): LaTeX is a new dummy.
	(\indexdummies): likewise.
	(\indexdummylatex): sorted the obvious way.

	* doc/texinfo.tex (\LaTeX): New macro for new command.
	(\setfontstyle): new macro to remember current font style.
	(\rm,\it,\sl,\bf,\tt,\sf,\ttsl): call it; all but
	the last two are new too.
	(\ssecsc): use correct magnification, we do for everything else.
	(\reducedrm..\reducedsy): new fonts.
	(\reducedfonts): new macro.
	(\textfonts..\smallerfonts): set \lsize and \lllsize macros.

2003-12-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (main): changed TEXINFO_XML_OUTPUT to
	TEXINFO_OUTPUT.  It now specifies the default output format.

2003-12-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/defun.c (defun_internal): implemented basic line
	continuation.

2003-12-13  Karl Berry  <karl@gnu.org>

	* CVSROOT/loginfo: put filename/version number in mail subject.

	* util/srclist.txt (help2man): remove, we require cvs-builders to
		have this installed now (or accept `missing's replacement),
		along with the rest of the dev tools.

2003-12-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/defun.c (defun_internal):
	* makeinfo/insertion.c (end_insertion): do not use tables for HTML
	@deffns.

2003-12-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (begin_insertion): strip whitespace from @float
	arguments.

	* makeinfo/sectioning.c: last_section_title and last_section_number
	now default to empty strings.

2003-12-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_LaTeX): new function for @LaTeX{}.

	* makeinfo/texinfo.dtd: new latex entity.

2003-12-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.h:
	* makeinfo/xml.c: new element DIMENSION.

	* makeinfo/cmds.c (cm_dmn): new function for @dmn.

2003-12-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (main): if TEXINFO_XML_OUTPUT envvar is set,
	default to XML output.

2003-12-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (main): enabling one output format effectively
	disables others.

2003-12-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/lang.h:
	* makeinfo/lang.c (current_document_encoding): new function.

	* makeinfo/xml.c (xml_begin_document): specify encoding in the XML
	prolog if different from no_encoding.

2003-12-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c:
	* makeinfo/texinfo.dtd: moved documentlanguage out of para.

2003-12-13  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c (add_new_float): now expects position argument too.

	* makeinfo/insertion.c (begin_insertion): read arguments from @float
	line, do not look for @anchor.
	(end_insertion): changed info caption style.
	(cm_caption): use is_in_insertion_of_type instead of
	current_insertion_type.

	* makeinfo/xml.h:
	* makeinfo/xml.c: new element floatpos.
	(xml_begin_enumerate): check actual supplied value, not first digit.
	Also special case for GPL's silly `@enumerate 0'.  From Aharon Robbins
	<arnold@skeeve.com> Tue, 9 Dec 2003 12:38:04 +0200.

2003-12-12  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (ifnotdocbook,ifnotxml): define these @-commands.
	Report from Arnold.

	* doc/texinfo.tex (\setfilename): make the \openout\auxfile be
	\immediate, again.

2003-12-09  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\envparseargdef): New macro, a combination
	  of \envdef and \parseargdef.
	  (\enumerate, \float): Use it.

2003-12-09  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\float, \Efloat, \caption, \shortcaption):
	(\listoffloats): Adapt to the new environment definition framework.

2003-12-09  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\setref, \xrefX): Make the ``\indexnofonts''
	  setups in these two consistent.

2003-12-09  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\innernewbox): New macro, non-outer \newbox.
	  (\newsaveinsX): Use it.

2003-12-09  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex: after test for epsf.tex, \closein 1, even if the
	  file wasn't there.
	  (\summarycontents, \tryauxfile): Similarily, \closein 1 even if eof.
	  (\startcontents, \contents, \summarycontents): fix indentation.

2003-12-09  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\pdfmakeoutlines): Fix a typo, need
		\def\thisubsecnum not \let.

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\makedefun): Add `\def\deffnheader' or the like
	  at the end; all calls of this macro changed.

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\normaldefunargs): Renamed to ...
	(\defunargs): ... this; all callers changed.
	(\ampdefunargs): Nuked, the only call expanded.

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\setfilename): Simplify the code for conditional
	\input of texinfo.cnf.
	(\contents): Call \pdfmakeoutlines only if .toc exists.
	(\pdfmakeoutlines): Thus .toc must exist, no need to check again.
	(\documentlanguage): Simplify, fix indentation.

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\center): Separate the horizontal and vetical...
	(\centerH, \centerV): ... versions; account for \leftskip in \centerV.

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\group, \Egroup): Don't call \offinterlineskip;
	to fix the line spacing after the group, propagate \prevdepth.
	(Else, @exdent inside @group gets the wrong spacing.)

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\acronym): Check for second parameter, ...
	(\doacronym): using this new function; remove smallcaps.

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\pdfmakeoutlines): Make the counting macros
	  robust, so that they won't break on incorrectly nested sections.
	  (For instance, in the bzip2 manual.)

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\author): If appears inside a @quotation
	environment, interpret it as an affiliation; otherwise it has to
	appear directly inside @titlepage.

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\argremovec, \argcheckspaces): Add support for
	continued lines to \parsearg, while ...
	(\domakedefun, \printdefunline): ... removing it from @defun's ...
	(\parsedefunline): ... and thus nuking this.
	(\startdefunx): Replaced by ...
	(\dodefunx): ... this; it reuses the code of the respective @defun.

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\defparsearg): Rename to ...
	(\parseargdef): ... this; all uses changed.

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	New framework for environments in texinfo.tex.  It's used like this:
		\envdef\foo{...}
		\def\Efoo{...}
	It's the responsibility of \envdef to insert \begingroup before the
	actual body; @end closes the group after calling \Efoo.
	\envdef also defines \thisenv, so the current environment is known;
	@end checks whether the environment name matches.
	The \checkenv macro can be used also elsewhere to check whether the
	current environment is the one expected.

	Non-false conditionals (@iftex, @ifset) don't fit into this, so they
	are not treated as enviroments; they don't open a group.
	(The implementation of @end takes care not to call \endgroup in this
	special case.)

	* doc/texinfo.tex: All environment definitions, true conditionals and
	@ifset, @ifclear, changed.

	Another issue:
	@set and @value allowed - and _ in variable names, but @clear, @ifset
	and @ifclear were not ready to accept such variables.

	* doc/texinfo.tex (@set, @clear, @ifset, @ifclear): Call
	\makevalueexpandable.

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\multitable): Move \everytab={} and the check
	for saved inserts to \everycr; thus \item is \crcr again.
	(\Emultitable): Call \setpercentfalse only after the last \crcr.

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\readauxfile): Read it, unconditinally;
	don't open the aux file for writing.
	(\tryauxfile): A new wrapper around \readauxfile, which checks
	whether the file exists.
	(\setfilename): Call \tryauxfile, then open the aux file for writing.

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\readauxfile): Don't hide serious problems by
	setting the catcode of backslash to other.

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\setref): Call \indexnofonts to get nicer names
	of reference identifiers expanded in \edef.

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\scanmacro): Add \spaceisspace, in case we are
	  in an environment with active spaces; without this, \eatspaces
	  didn't work.

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\scanmacro): Define only one version, using ...
	  (\scantokens): ... which is a primitive of e-TeX; under ordinary
	  TeX, define a replacement.

2003-12-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\spaceisspace): A macro which resets space's
	catcode to its normal value; use where appropriate.

2003-12-08  Karl Berry  <karl@gnu.org>

	* util/texi2dvi: use etex/pdfetex if available.
	(findprog): new helper fn.
	* NEWS (texi2dvi): mention this.
	* doc/texinfo.txi (Format with texi2dvi): use @TeX{} instead of
	@code{tex}, since we don't literally run `tex' any more.

	* info/session.c (info_select_reference_this_line): don't crash if
	we have no window->line_starts, as it is after
	set-screen-height to less than 5.
	Report from: Christian Biere <christianbiere@gmx.de>,
	8 Dec 2003 19:12:08 +0100.

	* doc/texinfo.tex (\comma): new command.

	* bootstrap: make need for --enable-maintainer-mode more explicit.

	* doc/texinfo.tex (\xrefX): otherify everything before getting the
	-title \csname, so that _'s (et al.) are allowed.

2003-12-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\xrefX): handle float case.
	(\parsefloat): take additional optional arg for xref label.
	(\dofloat): call \setref to define the float in
	the aux file.
	(\Yfloat): new macro for \setref.
	(\floatmagic): new macro for \xrefX and \dofloat
	to communicate.

2003-12-03  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Not Ending a Sentence): mention special
	entities output for @: in Docbook and XML.

2003-12-02  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_punct): new function to handle @., @! and @?
	commands.
	(cm_comment): crunch multiple dashes to a single dash for XML
	validity.

	* makeinfo/texinfo.dtd: new entities: period, eosperiod, quest,
	eosquest, excl, eosexcl.

2003-12-02  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (begin_insertion): look for a newline before
	@anchor and @caption commands in floatenv.

2003-12-2 Arnold Robbins  <arnold@skeeve.com>

	* makeinfo/insertion.c (end_insertion): Change tests for docbook
	and insertion to check current insertion type instead of if deep
	inside a float insertion.
	(cm_example, cm_smallexample, cm_lisp, cm_smalllisp, cm_cartouche)
	(cm_caption): Same.

	* xml.h (FLOATCARTOUCHE): New constant.
	* xml.c (texinfoxml_element_list, docbook_element_list): Add "sidebar"
	for FLOATCARTOUCHE.  For docbook, map @display, @smalldisplay to
	"literallayout".
	(replacement_elements): Add entry for CARTOUCHE -> FLOATCARTOUCHE.
	(xml_begin_docbook_float): Special case for CARTOUCHE, sidebars don't
	have labels.

2003-12-01  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\float, \listoffloats): new macros for new
		@-commands -- skeletal implementation only now.

	From: Aharon Robbins <arnold@skeeve.com>, 1 Dec 2003 17:43:12 +0200:
	* makeinfo/float.h (current_float_type): declare.
	* makeinfo/cmds.c (cm_colon): new fn.
	(command_table): use it for @:.

2003-11-29  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (@turnoffactive): include @unsepspaces, so
	spaces in anchor names don't expand in the .aux file.  From
	Stepan.

2003-11-28  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Abstract Objects): class names are no longer
	printed in rm by default.
	* doc/texinfo.tex (\cite): redefine to always use \sl, never \ttsl.
	* doc/texinfo.tex (\ttslanted): new macro.
	(\normaldefunargs): use it for @var; go back to
	\sl by default.

	* doc/texinfo.txi: document @deftypecv.

2003-11-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_comment): do not perform expansion.

2003-11-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_r): also set font-weight to normal in HTML.

2003-11-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_comment): new function to output comments in
	HTML, XML and Docbook outputs.

2003-11-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/index.c: new section and section_name properties in
	index_elt struct.

	* makeinfo/index.c (index_add_arg): save current section number and
	title for plain text output.
	(cm_printindex): simplified printing with no_headers output.

2003-11-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.h: new section and section_name properties in
	float_elt struct.

	* makeinfo/float.c (add_new_float): save current section number and
	title for plain text output.
	(cm_listoffloats): list floats with no_headers too, following
	printindex @example.

2003-11-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/sectioning.h:
	* makeinfo/sectioning.c (current_sectioning_number)
	(current_sectioning_title): new functions.

	* makeinfo/sectioning.c (get_sectioning_number): moved space char at
	the end of numbers to ...
	(insert_and_underscore, sectioning_html): here.
	(get_sectioning_number, insert_and_underscore): keep track of the last
	number/title to be used by @float, @cindex like commands that need to
	know in which section they are used.

2003-11-27  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_math): new function that encloses @math
	statements in a math element in XML.

	* makeinfo/xml.c:
	* makeinfo/xml.h: new element math.

2003-11-27  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c (cm_listoffloats): made the layout in Info output
	the same with indices.

2003-11-25  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c (cm_listoffloats): generate a menu for Info, with
	automatically shortened captions.

2003-11-25  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_acronym): use acronym element for HTML.
	Report from: Torsten Bronger <bronger@physik.rwth-aachen.de>
	Tue, 25 Nov 2003 10:30:52 +0100.

2003-11-25  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/sectioning.c (cm_appendix): reset numbers only when
	changing enum_marker.

2003-11-25  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/index.c (cm_printindex): made Appendix matching locale
	aware.

2003-11-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/index.c (cm_printindex): also catch Appendix and A.1 kind
	of numbers with --no-headers Info output.

2003-11-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (cm_example):
	* makeinfo/xml.c (xml_insert_docbook_image, xml_begin_multitable):
	moved common floatenv handling to ...
	(xml_begin_docbook_float): here.

	* makeinfo/insertion.c (end_insertion, cm_smallexample, cm_lisp)
	(cm_smalllisp): insert FLOATEXAMPLE for Docbook if inside @float.

2003-11-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (is_in_insertion_of_type): don't return the
	level, as it is not useful.
	(begin_insertion): instead of is_in_insertion_of_type, use
	float_active.

	* makeinfo/insertion.c (cm_example):
	* makeinfo/xml.c (xml_insert_docbook_image, xml_begin_multitable):
	insert empty label for @floats with no @anchor.

2003-11-24  Karl Berry  <karl@gnu.org>

	* doc/Makefile.am (EXTRA_DIST): remove no-longer-defined
	noinst_SCRIPTS.

2003-11-24  Akim Demaille  <akim@epita.fr>

	* configure.ac (HELP2MAN): Look for it.
	* doc/help2man: Remove.
	* doc/Makefile.am (HELP2MAN, noinst_SCRIPT): Remove.
	(common_mandeps): Don't depend on HELP2MAN which can be a complex
	command such as "missing --run help2man.

2003-11-24  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex: doc/\global fixes.

2003-11-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c: new command @listoffloats.

	* makeinfo/float.c (count_floats_of_type_in_chapter): only count
	floats with @anchors.
	(cm_listoffloats): new function.

	* makeinfo/insertion.c (end_insertion): do not prepend float type and
	number if no @anchors.

2003-11-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c:
	* makeinfo/xml.h: new element listoffloats.

2003-11-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.h: number sections by default.

2003-11-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (cm_xref): if a reference is being made to a
	float with only one parameter, use the float number in HTML, and
	prepend it to the link in Info outputs.

2003-11-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.h:
	* makeinfo/float.c (get_float_ref): new function to retrieve a float's
	number by its id.

2003-11-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (end_insertion): indent the first paragraph
	after @float.

2003-11-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c: new commands @float and @caption.

	* makeinfo/insertion.h: new environment floatenv.

	* makeinfo/insertion.c (cm_float, cm_caption): new functions.
	(begin_insertion, end_insertion): handle floatenv.

	* makeinfo/xml.c:
	* makeinfo/xml.h: new elements float, floattype, caption, floattable,
	floatfigure, floatexample.

	* makeinfo/insertion.c (cm_example):
	* makeinfo/xml.c (xml_insert_docbook_image, xml_begin_multitable):
	insert label and id attributes, title element for docbook if used
	inside @float.

	* makeinfo/xml.c: replacements for multitable and informalfigure.
	(xml_insert_element_with_attribute): special-cased float element for
	docbook to make it appear in element stack and thus enable element
	replacements inside floatenv.

2003-11-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/float.c:
	* makeinfo/float.h: new files for float environment functions.

	* makeinfo/Makefile.am: added new files to makeinfo_SOURCES.

2003-11-24  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (cm_xref): xstrdup the result from
	xml_get_assoc_for_id, as it gets freed later.

	* makeinfo/xml.c (xml_get_assoc_for_id, xml_associate_title_with_id):
	reimplemented unnumbered_labels handling.
	(xml_insert_docbook_image): Docbook expects format attribute values to
	be uppercase.

2003-11-23  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex: doc fix for multitable.
	* util/gendocs.sh: docbook support, from Simon Josefsson.

	* doc/texinfo.tex (\defttsl): new font.
	(\df): set ttsl too.
	(\deffngeneral,\deftypefngeneral,\deftypecvgeneral,
	 \deftypheader): call \ampdefunargs or \normaldefunargs.
	(\normaldefunargs): new macro, typesetting defun
	 args in ttsl (instead of sl).
	(\ampdefunargs): treat & specially and then call \normaldefunargs.
	(\defname): typeset defun name in tt (instead of bf).

	* doc/texinfo.tex: uniformly comment out eol with {% at macro
	starts.

2003-11-23  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (is_in_insertion_of_type): return the level
	where the insertion is found.

	* makeinfo/makeinfo.c (search_forward_until_pos): new function that
	sets search_forward boundary.
	(text_expansion): also reset docbook.

	* makeinfo/sectioning.h:
	* makeinfo/sectioning.c (current_chapter_number): new function that
	returns top level chapter numbers.
	(handle_enum_increment): always do the incrementation. but return
	strings conditionally.

	* makeinfo/xml.c: changed screen element's contained_in_para to 0 for
	Docbook. @lisp/@smalllisp create programlisting.
	(xml_insert_quotation): reimplemented quotation_stack handling.

2003-11-22  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\tocentry): same as \entry, no second 1pt of
	stretch.  And a couple doc fixes.

	* doc/texinfo.txi (Conventions): finally, get rid of @vskip
	-@baselineskip kludge, we handle index entries after @item's now.

2003-11-22  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.txi: use new @quotation feature.

	* texinfo.tex (\putwordDeftypevar, \putwordDeftypefun): Remove.
	* txi-cs.tex, txi-de.tex, txi-en.tex, txi-es.tex, txi-fr.tex,
	  txi-it.tex. txi-nl.tex, txi-no.tex, txi-pl.tex, txi-pt.tex,
	  txi-tr.tex: The same.
	[texinfo-20031120-deftype-del.patch]

	* doc/texinfo.tex (\verbatim,\Everbatim): remove one extra level
	of grouping; move two lines of code ...
	(\setupverbatim): ... here.
	(\doverbatiminclude): just call the new \setupverbatim.
	(\setupverbatiminclude): remove.
	[texinfo-20031121-verbatim2.patch]

	* doc/texinfo.tex (\math): no need for \mathcode, and we actually
		can use $ not \implicitmath.
	[texinfo-20031121-math.patch]

	* doc/texinfo.tex (\zeroskipmacro): new macro, so we can
	check for true zero skip.
	(\dosubindsanitize): use it.
	[texinfo-20031120-zeroskip.patch]

	* doc/texinfo.tex (\doignore): scan in verbatim mode.  Without this,
	if the last line of ignored text ended with ``@'', the ``@end ifxxx''
	tag was missed.
	(\dodoignore): use \_STOP_ instead of \ST@P.
	[texinfo-20031120-ignore-at.patch]

	* doc/texinfo.tex (\defparsearg): new macro, to simplify places
	where the user macro just calls \parsearg.  Use it in many places.
	[texinfo-20031121-defparsearg.patch]

	* doc/texinfo.tex (\begin): remove, this is undocumented
	and unused.
	[texinfo-20031121-begin.patch]

	* doc/texinfo.tex (\title,\subtitle,\author,...): move to outer
	level (was inside \titlepage), it's more readable than nested
	definitions.
	[texinfo-20031116-titlepage1.patch]

	* doc/texinfo.tex (\evenheadingxxx,\oddfootingyyy): might as well
		use \ and avoid changing catcode of @.
	[texinfo-20031116-catofat.patch]

	* doc/texinfo.tex (\set): use new macros: \parseargusing and
	\makecsname.
	[texinfo-20031116-set.patch]

	* doc/texinfo.tex (\cartouche): avoid \par if we are already in
	vertical mode, in case it has an effect, eg. in an @example;
	avoid extra space from the @cartouche line itself.
	(\Ecartouche): force vertical mode, so that the \kern has the desired
	effect.
	[texinfo-20031120-cart.patch]

	* doc/texinfo.tex (\ptexfootnote,\ptexinsert): save orig definitions.
	(\startsavinginserts): new macro (with relatives), call from
		\cartouche, \group, \table.
	[texinfo-20031118-saveins.patch]

	* doc/texinfo.tex (\table, \ftable, \vtable, \tablex, \tabley,
	\tablez): Cleaned up indentation, etc.
	(\kitem, \kitemx, \xitem, \xtemx, \description): Removed; they
	  didn't look as if they would work in their present state, anyway.
	[texinfo-20031114-table.patch]

	* doc/texinfo.tex (\filenamecatcodes): new macro.
	(\include,\verbatiminclude): use it, with new \parseargusing.
	(\pushthisfilestack,etc.): implement our own stack of filenames
	instead of reading the @include argument in a group.
	[texinfo-20031109-include.patch]

	* doc/texinfo.tex (\indexbreaks): remove, and remove call.
	(\entry): read arguments on the fly, to avoid fixing catcodes.
	[texinfo-20031121-indexbreaks.patch]

	* doc/texinfo.tex (\makevalueexpandable): new macro.
	Change occurrences of \let\value=\expandablevalue to use it,
	to reduce code duplication.
	[texinfo-20031121-value.patch]

	* doc/texinfo.tex (\parsedefunlineX,\defunchkspace,defunchktab,
	\defunloop,\defunchkfinish,\replaceeols): New macros.
	(\parsedefunline): start them off.  This is to support continuations
	lines for @defun headers.
	[texinfo-20031108-defun-cont.patch]

	* doc/texinfo.tex (\defun and all related commands):
	rewrite to use \parsearg and uniform command generation.
	(\makecsname): New macro, to be used within \edef's only.
	[texinfo-20031120-defun.patch]

	* doc/texinfo.tex (=, \equalChar): remove active definition of =
	and hacks that printed = in \tt sometimes.  We want to print
	everything in \tt anyway, ultimately.
	[texinfo-20031120-defun-pres3.patch]

	* doc/texinfo.tex (\defopheader,\defcvarheader,defivarheader):
	use \code for the class name.
	[texinfo-defun-pres2.patch]

	* doc/texinfo.tex (\parsearg): Reset the catcode of space before
		we scan the argument; so we don't have to worry about
		obeyed spaces before and after the argument.
	(\parseargx, \parseargy): Nuke, it was wrong anyway--\obeyedspace,
	which is a macro, was compared with \temp which could have been let
	to an obeyed space, but it couldn't be a macro.
	(\removeactivespaces,\removeactivespacesX,\removeactivespacesY): Nuke.
	(\argremovespace): If the argument scanned by \parsearg ends with
	a space, remove it.
	[texinfo-20031108-parsearg-space.patch]

	* doc/texinfo.tex: use \other, for clarity and efficiency;
		use `\^^M instead of raw number 13.
	[texinfo-20031108-other.patch]

	* doc/texinfo.tex (\doverbatim): \xdef and \gobble, to avoid
		the active space between `\end' and `verbatim'.
	[texinfo-20031120-verbatim.patch]

	* doc/texinfo.tex (\quotationlabel): new macro to print label,
		with a \bf space.
	(\quotation): change call so \parsearg is at the end.
	[texinfo-20031118-quot.patch]

2003-11-21  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (cm_xref): removed the warning about
	@xrefs to @unnumbered sections, as there are many situations where
	there is no way to fix them.

	* makeinfo/insertion.c: removed lingering titlepage_cmd_present
	declaration.

2003-11-21  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_titlepage, cm_titlepage_cmds): moved to ...
	* makeinfo/insertion.c: here.

	* makeinfo/cmds.h (titlepage_cmd_present): moved to ...
	* makeinfo/makeinfo.h: here.

	* makeinfo/insertion.c (is_in_insertion_of_type): new function to
	query insertion_stack to see if we are inside a given insertion type.

	* makeinfo/makeinfo.h:
	* makeinfo/insertion.c (begin_insertion, end_insertion):
	* makeinfo/xml.c (xml_add_char):
	* makeinfo/xml.h: removed xml_in_copying and inside_titlepage_cmd
	global variables in favor of the new query function.

2003-11-21  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (discard_until, execute_string): reworded
	multiline related error messages.
	(discard_until): rollback input_text_offset only if not dealing with a
	multiline error, otherwise the same block gets in the way repeatedly.

2003-11-21  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.h:
	* makeinfo/xml.c (xml_get_assoc_for_id, xml_associate_title_with_id):
	new functions.
	(xml_insert_indexentry): call execute_string(xref) instead of creating
	references directly.

	* makeinfo/makeinfo.c (cm_xref): check to see if xref is being made to
	an @unnumbered, and only one argument is given.  issue a warning, use
	@unnumbered's title as the third argument.

	* makeinfo/sectioning.c (sectioning_underscore): keep track of
	unnumbered sections, and their node names.

2003-11-21  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/sectioning.c (sectioning_underscore): for Docbook, always
	provide label attribute for chapter and unnumbered.
	(handle_enum_increment): simplified enumeration constraints, and
	changed to follow TeX way.  Moved marker handling to ...
	(cm_chapter, cm_unnumbered, cm_appendix): here.
	(cm_appendix): restart numbering.

2003-11-21  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.h:
	* makeinfo/insertion.c: new rawdocbook and rawxml insertion types to
	provide better block names in error messages (instead of "rawhtml" for
	everything.)
	(current_item_function, insertion_type_pname, find_type_from_name)
	(begin_insertion, end_insertion, discard_insertions, cm_docbook)
	(cm_xml, cm_item): honor new types.

2003-11-21  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (cm_image): issue only a warning instead of an
	error when .txt file is unreadable, to better comply with the manual.

2003-11-21  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/sectioning.c (sectioning_underscore): insert label="" only
	when the output format is Docbook.

2003-11-21  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (cm_end): get rest of the line before returning
	in case of error, so the parameter to @end does not get leaked into
	the output document.

	* makeinfo/makeinfo.c (discard_until): when the expected string is not
	found, check to see if we are looking for @end, and if so issue a more
	descriptive error message.
	(execute_string): keep track of insertion stack to catch multiline
	commands where they are not allowed.
	Report from: Dumas Patrice <dumas@centre-cired.fr>, Wed, 18 Jun 2003
	09:41:56 +0200.

2003-11-21  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/multi.c (multitable_item): start <tbody> immediately if
	this a regular @item, and first in the table

2003-11-19  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/footnote.c (output_pending_notes): always output footnotes
	with in_fixed_width_font = 0, so entity substitutions can take place.

2003-11-19  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/footnote.c (cm_footnote, output_pending_notes): provide
	back link from footnote marker.

2003-11-19  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (cm_insert_copying): remove blockquote from
	copying_text when inside bookinfo and the output format is Docbook.

2003-11-19  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (cm_value): return immediately instead of
	just suppressing bogus warnings.

2003-11-19  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (cm_value): do not issue bogus warnings about
	undefined values when @value is used inside a @menu environment, and
	the output format is Docbook.

2003-11-19  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/sectioning.c (sectioning_underscore): use @settitle value
	if @top parameter is empty.

2003-11-19  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (xml_begin_index): make sure we are removing the
	label attribute and not something else.

2003-11-19  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/sectioning.c (get_sectioning_number): do not append space
	with Docbook.
	(sectioning_underscore): insert label attribute to make
	distinction between chapter and unnumbered in Docbook.
	(handle_enum_increment): also increment for Docbook.

	* makeinfo/xml.c (xml_begin_index): remove label attribute from index
	element.

2003-11-18  Karl Berry  <karl@gnu.org>

	* cmds.c (command_table): new commands @deftypecv, @deftypecvx.
	* defun.c, insertion.[ch], xml.c: implement them.

2003-11-18  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (execute_string): better para handling in case
	of nested executions.

2003-11-18  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Multi-column Tables): include cmd name in
	section name.
	(Multitable Rows): use @headitem in example.

2003-11-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (xml_begin_document): upgraded docbook DTD to Docbook
	XML 4.2.

	* makeinfo/makeinfo.c (cm_xref):
	* makeinfo/xml.c (xml_insert_docbook_image, xml_insert_indexentry)
	(xml_begin_multitable): close previously open-tag-only elements.

2003-11-17  Karl Berry  <karl@gnu.org>

	* bootstrap: honor environment variables.

2003-11-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (execute_string): end paragraphs if
	executing @copying text with xml.

	* makeinfo/xml.c: disallow nested quotations, legalnotice in abstract,
	and samp in var with Docbook.

2003-11-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/insertion.c (begin_insertion): keep @copying state.
	use legalnotice instead of abstract for @copying.
	(cm_insert_copying): removed redundant work arounds.

	* makeinfo/makeinfo.c (execute_string): try to keep tags balanced with
	Docbook and xml.

	* makeinfo/xml.c
	(xml_current_stack_index, xml_end_current_element): new functions.
	(xml_add_char): enclose @copying text in a quotation element with
	Docbook.

2003-11-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_settitle): do not automatically start bookinfo
	element after settitle.

2003-11-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c (xml_synindex): new function to keep track of index
	redirections.
	(xml_insert_indexterm): added a check to see if any index
	redirections are made.

	* makeinfo/index.c (cm_synindex): let xml_synindex() handle xml part.

2003-11-17  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (cm_uref):
	* makeinfo/xml.c: use ulink for @uref with Docbook.

2003-11-16  Karl Berry  <karl@gnu.org>

	* util/install-info.c: protoize.
	* util/texindex.c: protoize.
	* util/dir-example (protoize,unprotoize): add.

	* doc/texinfo.tex (\everytab): new \toks.
	(\headitem): use it to typeset in bold.
	(\item): reset it.

2003-11-15  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (quotation): document it.
	* doc/texinfo.tex (\quotation): accept optional argument.
	(\doquotation): new macro to test for and typeset it.

	* doc/texinfo.txi (Multitable Rows): document @headitem.

	* doc/texinfo.tex (\headitem): error by default, redefine inside
	@multitable (= \dotable).  New command suggested by Arnold.

2003-11-15  Akim Demaille  <akim@epita.fr>

	* util/texi2dvi (fatal): New function. Use it.
	(txiversion): Be robust to broken texinfo.tex.

	* doc/texinfo.txi (example): mention use of @r for annotations.

2003-11-15  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c: new command @headitem.

	* makeinfo/insertion.c (cm_headitem): new function.

	* makeinfo/insertion.h: new variables to keep head item state.

	* makeinfo/multi.c (multitable_item, end_multitable):
	* makeinfo/xml.c (xml_end_multitable_row, xml_end_multitable):
	insert thead element if @headitem is used.

	* makeinfo/xml.h: new element THEAD.

	* makeinfo/texinfo.dtd: updated multitable structure.

	* NEWS: announced @headitem.

2003-11-14  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (cm_xref): make use of third and fifth arguments
	of @xref with Docbook.

	* makeinfo/xml.c: use Docbook citetitle for @cite.

2003-11-13  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex: doc fixes.

	* configure.ac, NEWS: autoconf 2.59.

2003-11-13  Akim Demaille  <akim@epita.fr>

	* configure.ac: Use AC_CHECK_DECLS, not txi_CHECK_DECLS.
	Also use # instead of dnl for comments.
	* acinclude.m4: Remove.

2003-11-14  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_noindent): output continued paragraphs with
	docbook and xml only when @noindent command is used.
	(cm_noindent_cmd): new function.  Patch from Arnold Robbins
	<arnold@skeeve.com>, 13 Nov 2003 15:43:02 +0200.

2003-11-11  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_i, cm_b, cm_r): do not use lineannotation if we
	are printing indices.

	* makeinfo/insertion.c (cm_insert_copying): removed unnecessary xml
	fix.

	* makeinfo/texinfo.dtd: added OElig and oelig entities.

2003-11-11  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_sp): disabled parameter expansion.

2003-11-10  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c:
	* makeinfo/insertion.c (cm_html): do not process @xml blocks.
	(cm_xml): new function to process @xml.

	* makeinfo/xml.c (xml_start_para, xml_end_para): skip para handling in
	footnote.
	(xml_insert_footnote): keep state in xml_in_footnote variable.

	* makeinfo/texinfo.dtd: updated settitle definition.

2003-11-10  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Output Formats): rewrite to fix underfull
	boxes.

2003-11-10  Alper Ersoy  <dirt@gtk.org>

	* doc/texinfo.tex (\commondummies): added registeredsymbol.

2003-11-09  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/makeinfo.c (main): fixed a segfault with --html
	--no-header.

2003-11-09  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/html.c (html_output_head): output node name in title first.

2003-11-09  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c:
	* makeinfo/xml.h: new Docbook elements for quotation: tip, note,
	important, warning, caution.

	* makeinfo/xml.c: better font tags for Docbook.
	(xml_insert_quotation): new function that is aware of specialized
	Docbook elements for quotation.
	(xml_insert_entity): use add_char() instead of insert() for correct
	paragraph handling.

	* makeinfo/insertion.c (begin_insertion, end_insertion): use
	xml_insert_quotation() for quotations.
	(cm_quotation): removed quotation element insertion.
	(cm_insert_copying): also work around xml tags.

	* makeinfo/cmds.c (cm_b): really use bold with Docbook.

	* NEWS: @quotation changes.

2003-11-08  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (registeredsymbol): new node.

	* doc/Makefile.am (HELP2MAN): invoke explicitly from $(srcdir), in
	case . is not in PATH.

	* configure.ac (AC_CONFIG_HEADERS): apparent AM_CONFIG_HEADERS is
	obsolete now, and we get to use AC_CONFIG_HEADERS again.

	* doc/texinfo.txi (Fonts): mention <lineannotation> feature in
	Docbook feature.

	* doc/texinfo.txi (itemx): warn not to use blank lines between
	@itemx's.

2003-11-08  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c (cm_i, cm_b, cm_r): for Docbook, use <lineannotation>
	in @example-like environments.
	(cm_r): For HTML use <span> to make sure we always get roman text.

	* makeinfo/xml.c:
	* makeinfo/xml.h: new docbook element <lineannotation>.  Added also to
	replace_elements to avoid nesting.

2003-11-08  Alper Ersoy  <dirt@gtk.org>

	* doc/texinfo.txi (Custom Headings): removed a newline that broke
	Docbook output.

	* NEWS:
	* makeinfo/cmds.c: new command @registeredsymbol

	* makeinfo/cmds.c (cm_registeredsymbol): new function.
	(cm_code): fixed in_fixed_width_font adjustment for XML and Docbook
	outputs.
	(cm_noindent, cm_indent): set xml_no_indent as well.

	* makeinfo/makeinfo.c (reader_loop): use entities for double quotes
	and dashes in HTML, XML and Docbook outputs.

	* makeinfo/multi.c (setup_multitable_parameters): convert
	@columnfractions to integer percentages (original code from Arnold
	Robbins <arnold@skeeve.com>.)
	(multitable_item, cm_tab): add width attribute to <td> element if
	@columnfractions is used.

	* makeinfo/texinfo.dtd: added an optional role attribute to para
	element (used for @noindent.)  New attributes ldquo, rdquo, ndash,
	mdash, registered.

	* makeinfo/xml.c: replaced repeated command element with more
	appropriate Docbook elements in docbook_element_list.
	(xml_start_para, xml_end_para): new functions to centralize paragraph
	handling.

	* makeinfo/xml.h: new variable xml_no_indent.

2003-11-07  Karl Berry  <karl@gnu.org>

	* bootstrap: run the various auto* tools we need instead of
		autoreconf, which copies in older versions of files.

	* doc/Makefile.am (texinfo): remove the special rule, it seems to
		be fixed.

	* Makefile.am (AUTOMAKE_OPTIONS): bump to 1.7.8.
	* doc/version.texi, doc/version-stnd.texi: cvs add these again,
	because with AM_MAINTAINER_MODE they are not created
	(unless --enable-maintainer-mode is given).

	* doc/Makefile.am (*.1) [MAINTAINER_MODE]: use this conditional
	instead of TEXINFO_MAINT, now that we have it.
	* configure.ac (TEXINFO_MAINT): no longer needed, since we call
	AM_MAINTAINER_MODE.

2003-11-06  Karl Berry  <karl@gnu.org>

	* bootstrap: ok, restore --force since it doesn't help Alper
	anyway.

	* AUTHORS: Silly syntax.
	* bootstrap: no --force, everything is considered obsolete then
	(thanks Alper).

2003-11-06  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/html.c (html_output_head): add <link> elements pointing to
	top, up, next, prev nodes when splitting output, and to top when not
	splitting.  Also provide a link to Texinfo homepage.
	(add_link): use nodename as title attribute.

2003-11-05  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/html.c (html_output_head): append node name to title if
	splitting.  Escape special chars in title.

	* makeinfo/node.c (cm_node): removed <link> elements from HTML node
	navigation <div> as they are only allowed in <head>.

2003-11-05  Alper Ersoy  <dirt@gtk.org>

	* doc/texinfo.txi (Installing Dir Entries): fixed @uref for Free
	Software Directory.
	(Command List): Escaped @/.

	* info/display.c (handle_tag, handle_tag_start, handle_tag_end): new
	functions.
	(display_update_one_window): ignore the text between magic
	tags/cookies.

	* makeinfo/cmds.c (cm_dots, cm_enddots): use insert_string() for HTML
	to avoid escaping.
	(cm_bullet): use entity name (bull) instead of number (149).

	* makeinfo/index.c (cm_printindex): escape expanded_index.

	* makeinfo/lang.c (cm_accent_generic_html): handle @dotless{i}
	correctly.
	(cm_special_char): use entity names for @OE (OElig) and @oe (oelig)
	instead of numbers.

	* makeinfo/node.c (cm_node): escape node names in HTML output.

	* makeinfo/xml.c (xml_id): check to see if the character is allowed.

	* makeinfo/tests/accent-text.txi: new @dotless{j} lines.

	* makeinfo/tests/accent: look for &acute;j instead of &acute;i.

	* TODO: removed item about @dotless in HTML output.

2003-11-04  Karl Berry  <karl@gnu.org>

	* util/Makefile.am (EXTRA_DIST): spurious space after trailing
	backslash.

	* configure.ac (AC_PREREQ): 2.58.

2003-11-03  Karl Berry  <karl@gnu.org>

	* util/Makefile.am (EXTRA_DIST): add gdoc.

2003-11-02  Karl Berry  <karl@gnu.org>

	* util/gendocs.sh: doc fix.

	* doc/texinfo.txi (Using Texinfo): merge most details into ...
	(Output Formats): ... this section.

	* util/dir-example (VM): add.

2003-11-01  Alper Ersoy  <dirt@gtk.org>

	* doc/texinfo.txi (Conditional Commands): Docbook text should
		really use @ifdocbook.

	* info/info.c (raw_escapes_p): 1 by default.
	(long_options): new option no-raw-escapes.
	* doc/info-stnd.texi (Invoking Info): document it.

2003-10-31  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/xml.c:
	* makeinfo/xml.h:
	* makeinfo/insertion.c (handle_verbatim_environment): use
	<![[CDATA...]]> for @verbatim in docbook output too.

2003-10-31  Karl Berry  <karl@gnu.org>

	* TODO: image scaling in html needed.
	* makeinfo/cmds.c (cm_strong): only give the warning if we're
	actually producing Info output.

	* makeinfo/cmds.c (cm_strong): reword message and check for only
	*Note:, not *Note:*.  From: Kevin Ryde <user42@zip.com.au>, 31 Oct
	2003 06:19:05 +1000.

2003-10-29  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Def Cmd Template): shorten.
	* makeinfo/makeinfo.c: help message.
	* doc/texinfo.tex: version update.
	* makeinfo/texinfo.dtd: update copyright.

2003-10-28  Alper Ersoy  <dirt@gtk.org>

	* makeinfo/cmds.c: output correct elements for @command,
	@env, @file, @option and @samp commands, and also handle
	@titlepage in xml output.  New commands: @docbook,
	@ifdocbook and @ifnotdocbook for conditional docbook output.

	* makeinfo/defun.c (args_from_string): allow comma to be
	recognized as a separate token to help XML side of things.
	(process_defun_args): let xml.c handle xml output.

	* makeinfo/insertion.c: handle @verbatim properly when
	outputting xml.  This means: surround data with a <verbatim>
	block, use <![[CDATA ... ]]> and disable escaping.
	Recognize @titlepage, @docbook, @ifdocbook and
	@ifnotdocbook.
	(cm_insert_copying): do not trust the consistency of
	copying_text, because full_expansion doesn't let open
	docbook elements to be closed.
	(cm_item): generate correct index entries in xml output.

	* makeinfo/insertion.h: new insertion types: ifdocbook,
	ifnotdocbook, titlepage.

	* makeinfo/lang.c: notify language changes with
	@documentlanguage in xml output, using <documentlanguage
	xml:lang=".." /> elements.

	* makeinfo/makeinfo.c: trailing encoding settings in html
	output are commented.  Do not append any encoding settings
	to xml and docbook outputs.  Set process_docbook variable
	for @docbook, etc. and updated --help about it.
	(set):
	(clear): Output @set and @clear in xml so it's possible to
	pass variables to further processors.

	* makeinfo/makeinfo.h: process_docbook and
	inside_titlepage_cmd (to check validity of @author, @title,
	@subtitle, etc.)

	* makeinfo/sectioning.c: heading-only commands (@chaphading,
	etc.) do not start/end sections in xml output.  They are now
	equivalents of the title element.

	* makeinfo/toc.c: @contents and @shortcontents now appear in
	the output.

	* makeinfo/xml.c: changed element_list typedefs to also note
	whether an element is filled.  Prefilled elements get
	xml:space="preserve" attribute.  Added xml prolog.  Root element
	in xml output gets the document language like it does in
	docbook, but with xml:lang.  Removed indentation for xml
	output.  Also lines in paragraphs are joined.
	(xml_process_defun_args):
	(xml_begin_definition):
	(xml_end_definition):
	(xml_begin_def_term):
	(xml_end_def_term): functions to handle @def environments.

	* makeinfo/xml.h: new elements in xml_element enum:
	TITLEPAGE, AUTHOR, BOOKTITLE, BOOKSUBTITLE, COMMAND_TAG,
	ENV, FILE_TAG, OPTION, SAMP, CONTENTS, SHORTCONTENTS,
	DOCUMENTLANGUAGE, VERBATIM, SETVALUE, CLEARVALUE, DEF*.
	(Suffices of COMMAND_TAG and FILE_TAG are to avoid variable
	name clashes.)

	* makeinfo/texinfo.dtd: updated to reflect changes.

	* doc/texinfo.tex: skip @docbook and @ifdocbook.

2003-10-28  Karl Berry  <karl@gnu.org>

	* util/gendocs.sh: new -o option to specify output directory.

2003-10-27  Karl Berry  <karl@gnu.org>

	* lib/system.h (LC_MESSAGES): no longer needed according to
	Bruno, libintl.h defines it.
	Message of 16 Jul 2003 18:17:23 +0200.

2003-10-27  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\defname): be sure to declare the space
	  we get from \rightskip in the first line.
	  (\parsebodycommon): Be careful not to issue \medbreak after
	  \penalty 2000.
	  (\defxbodycommon): The penalty changed from 2000 to 3000;
	  it should be higher that the one in \parsebodycommon.
	  -- added "@c vim:sw=2:" near the end, for my comfort.

2003-10-27  Stepan Kasal  <kasal@ucw.cz>

	More cleanup of active chars in @defxx arguments:

	* doc/texinfo.tex (\opnr, \clnr): Reimplemented, ...
	  (\oprm, \clrm, \opnested, \ampnr): ... nuking these, and using ...
	  (\parenfont, \infirstlevel, \bfafterword): ... 3 new macros, ...
	  (\ifampseen): ... and a new \if.
	  (\brackcount): New count, to count also square braces, ...
	  (\lbrb, \rbrb): ... here.
	  (\checkparencounts): Macros to check whether both counts get back
	  to 0; ...
	  (\badparencount, \badbrackcount): ... if not, issue an error
	  message and reset the respective count.
	  (\deftypefnheaderx): Don't call \normalparens, it has no effect.
	  (\defvarargs): Call \boldbrax instead of \normalparens.
	  (\normalparens): Nuked.

2003-10-26  Eli Zaretskii  <eliz@is.elta.co.il>

	* info/session.c (info_menu_or_ref_item): If point is before all
	the cross-references, use the first one as the default, instead of
	setting which to -1 and crashing.  (Patch originally sent 2000-10-09.)
	Debian bug 74278, reported from: Josip Rodin <joy@cibalia.gkvk.hr>,
	7 Oct 2000 19:44:24 +0200.

2003-10-26  Karl Berry  <karl@gnu.org>

	* configure.ac (AM_MAINTAINER_MODE): enable, to avoid lossage
	when Texinfo sources are imported into other
	repositories (NetBSD, TeX Live).
	Most recently suggested by Thomas Klausner
	<wiz@danbala.ifoer.tuwien.ac.at>, 9 Sep 2003 14:57:09 +0200.

	* makeinfo/node.c (validate_file): ensure tem1 && tem2 before
	running STREQ.  Report from: Akim Demaille <akim@epita.fr>,
	13 Oct 2003 10:43:10 +0200.

	* doc/Makefile.am (infokey.1): new target.
	(man_MANS): include infokey.1.
	Noticed this in Debian diff.

	* util/texi2dvi: check for tex up front; inspired by Debian diff.

	* TODO: makeinfo -E should do simple macro expansion, not
	validity checking (even syntax, for @tex processing).

	From: Stepan Kasal <kasal@ucw.cz>, 24 Oct 2003 19:10:02 +0200.
	Start at making makeinfo -E behave more like a macro preprocessor,
		avoiding consistency checks.
	* makeinfo/insertion.c (cm_menu,cm_detailmenu): avoid checks if
	macro_expansion_output_stream.
	* makeinfo/makeinfo.c (main): set validating=0 if
	macro_expansion_output_stream.

	* util/texi2dvi (comment_iftex_sed): don't think we need to
	comment out @ifhtml sections here, makeinfo will not expand them
	by default.

2003-10-25  Karl Berry  <karl@gnu.org>

	* info/info.c: --raw-escapes affects Info files, not just man
	pages.

	* doc/texinfo.tex: novalis doesn't like my clarification, so make
	it a special exception instead.

2003-10-24  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\defname): Cleanup of this macro.
	  (\boldbraxnoamp): Nuked, it's equivalent to \boldbrax;
	  the caller changed.
	  Other minor cleanups around active paretheses.
	  (\defunargs): After reporting the "Unbalanced paretheses" error,
	  reset the count.

2003-10-24  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (makeinfo advantages): mention that plain text
	--no-headers does --enable-encoding.

2003-10-23  Karl Berry  <karl@gnu.org>

	* makeinfo/macro.c (define_macro): write the macro definition
	itself to the output stream, to give texinfo.tex a chance at it.
	Report from: Akim Demaille <akim@epita.fr>, 22 Oct 2003 17:15:34
	+0200.

	* doc/texinfo.tex (\readauxfile): make the \openout\auxfile be
	\immediate, to avoid spurious terminal output from the
	\immediate's in \setref.

2003-10-23  Stepan Kasal  <kasal@ucw.cz>

	Rewrite \parsearg:
	* doc/texinfo.tex (\parsearg, \parseargusing): \parseargusing is
	  a new macro which works just like good old \parsearg but takes
	  one more parameter which contains code to be performed within
	  a group just before we slurp the rest of the line---typically,
	  some catcode chages go here.
	  (\parseargx): Insert an \empty token before the arg to be read,
	  to prevent loosing of braces.  (Thus @end{foo} no longer works.)
	  (\parseargline, \argremovecomment, \argremovec): Change the way
	  comments are stripped; do not use \toks0.
	  (\removeactivespaces): is now called directly from \parsearg (via
	  \parseargusing and \argremovec), and stripps only the trainling
	  active spaces, doesn't perform expansion.
	  (\finishparsearg): New macro, finishes \parsearg by nuking the
	  added \empty token.
	  (\end, \endxxx): Don't call \removeactivespaces, don't use \toks0;
	  because of efficiency, move the error handling to ...
	  (\badenderror): ... a new macro.
	  (\doverbatim): ``\end{verbatim}'' changed to ``\end verbatim.''

	Cleanup of various details with active spaces.
	  (\parseargx): Do the \futurelet and move the rest ...
	  (\parseargy): ... to a new macro;
	  (\parseargusing): caller changed;
	  (\parseargdiscardspace): the other caller nuked.
	  (\obeyedspace, \sepspaces, \unsepspaces): Move near to \parsearg.
	  (\obeyedspace): Is now a macro containing the active space.
	  (\unsepspaces): No longer makes spaces active.
	  (\ignoreactivespaces): Nuked, it's only appearance in ...
	  (\aliasxxx): ... replaced by direct code.

2003-10-23  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex: comments at top.

	* AUTHORS: add kama.  (kama's address is now khmarbaise@gmx.de.)

2003-10-21  Karl Berry  <karl@gnu.org>

	* util/gendocs.sh: revision of mohit's original.
	* util/Makefile.am (EXTRA_DIST): add gendocs.sh and
		gendocs_template.

2003-10-20  Karl Berry  <karl@gnu.org>

	* makeinfo/cmds.c (handle_include): only close_paragraph if
	!insertion_stack, else we get extra blank lines when
	used inside @example.
	* makeinfo/insertion.c (handle_verbatim_include): likewise, plus
		move the indentation around.
	Report from: Brian Gough <bjg@network-theory.co.uk>,
	20 Oct 2003 14:36:49 +0100.

	* makeinfo/makeinfo.c (close_paragraph): formatting changes to
		minimize lines.

	* makeinfo/insertion.c (end_insertion): for html output in the
	example/etc. case, kill_self_indent to get rid of
	leading whitespace.
	Report from: Brian Gough <bjg@network-theory.co.uk>,
	20 Oct 2003 14:36:49 +0100.

2003-10-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\shortcontbf): cmb10 scaled \magstep1, not cmb12,
	since cmb12 is not a standard font.
	Report from: Staszek Wawrykiewicz <staw@gust.org.pl>,
	16 Oct 2003 06:44:40 +0200.

2003-10-14  Karl Berry  <karl@gnu.org>

	* lib/xstrdup.c: put old version back, we're not ready for gnulib
	xmalloc yet.

	* makeinfo/insertion.c: undo xml_no_para change, it causes more
	problems than it solves, according to Alper (Ersoy, <dirt@gtk.org>).

2003-10-12  Karl Berry  <karl@gnu.org>

	* makeinfo/insertion.c (begin_insertion,end_insertion): in rawhtml
	case (also used for rawxml), increment and decrement xml_no_para.

	* makeinfo/lang.c (cm_documentencoding): force the normal (info)
	expansion when reading the arg, even when parsing xml/html/docbook.
	Report from: Kevin Ryde <user42@zip.com.au>,
	13 Oct 2003 10:02:23 +1000.

2003-10-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\chapterzzz,...,\unnumberedsubsubseczzz): make
	section number settings \global.  Otherwise, when chapters are
	@included, they are ineffective and every chapter is numbered 1.
	For instance, the Emacs and Elisp manuals.  Thanks to Stepan for
	analysis.

	* doc/texinfo.tex: add arch-tag for miles.

2003-10-08  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\onepageout): At the beginning of \shipout, call
	    \pdfdest directly, not via \pdfmkdest.
	  (\pdfmkdest): Call also \atdummies before \pdfdest.
	  (\donoderef): Remove the unsuccessful attempt to expand \lastnode
	    before passing it to \setref (it only expanded `{' twice);
	    things would screw up if \lastnode was expanded too much.
	  (\setref): Rewritten, don't call \atdummies, don't expand
	    \thissection.
	  (\dosetq, \internalsetq, \Ypagenumber, \Ytitle): Nuked.
	  (\chfplain): Remove referrence to \Ytitle from a comment.

2003-10-08  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex: spurious space and comment (from Stepan).

	* NEWS: automake 1.7.8.
	* util/dir-example: include netpbm.

2003-10-07  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\defbf, shortcontbf): use \bfshape instead of
	\bxshape, so we use cmb consistently instead of cmbx.

	* doc/texinfo.txi: more index entries for em/en dashes, fix
		capitalizations of cindex entries.

2003-10-07  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\defname): Don't use \ifempty.
	  (\ifempty): Nuke.

2003-10-06  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\dosubind, \doind): Cleanup, move code ...
	  (\dosubindwrite, \dosubindsanitize): ... to new macros,
	  (\emptymacro): and nuke this one.

	* doc/texinfo.tex (\Ypagenumber): Add `\noexpand,' so that ...
	  (\dosetq): ... doesn't have to redefine \folio.  Move \iflinks ...
	  (\setref): ... here.

2003-10-06  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\setdeffont): remove; this used DEF instead of
	def, and thus had no effect for some years, so
	clearly no one has been using it.  Noticed by Stepan.

2003-10-04  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: document hyphen -> dash suppression in literal
	contexts, and verbatim commands not working inside other commands.
	Report from: Luc Teirlinck <teirllm@dms.auburn.edu>, 2 Oct 2003
	22:45:14 -0500,

	* doc/texinfo.tex (\commondummies,\indexnofonts): no-op @verb; I
	doubt this is sufficient to make @verb work in index entries etc.,
	but it's a start.  Analysis from: Andreas Schwab <schwab@suse.de>,
	02 Oct 2003 18:54:40 +0200.

2003-09-28  Karl Berry  <karl@gnu.org>

	* TODO: add item for conversion of non-texinfo manuals.

2003-09-26  Karl Berry  <karl@gnu.org>

	* CVSROOT/loginfo: back to log_accum.

	* doc/texinfo.tex (\parsebodycommon): increase \penalty between
	headers to 2000 from 0.
	(\defxbodycommon): check for 10002, not 1000.  We don't want to
	allow a page break after a section heading.  Hmm, but it seems
	this should never be called next after a section heading?

2003-09-25  Karl Berry  <karl@gnu.org>

	* makeinfo/cmds.c (cm_strong): warn if argument is exactly
	"Note:", since that conflicts with Info usage.  Suggestion from
	rms.

2003-09-24  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\dosubind): must propagate penalty after all,
	because we insert a non-discardable item (the whatsit), which
	makes following glue a breakpoint.  Now I understand (maybe).
	(\sectionheading): must end with \nobreak after
	all, purely to make \lastpenalty 10000 so future code can check
	that and avoid breaks.
	(\parsebodycommon): such as this code; don't do a
	\medbreak if lastpenalty >=10000.

	* doc/texinfo.tex (\tocindent): decrease to 2pc.
	(\{app,unn}sub{sub,}secentry): redefine so that they
	indent properly.

2003-09-23  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\dosubind): remove my misbegotten idea of
	propagating the penalty; all that did was increase the chance of a
	valid breakpoint.  Bug report from: Werner LEMBERG <wl@gnu.org>,
	23 Sep 2003 15:47:31 +0200.
	(\numhead,\apphead,\unnmhead): avoid spurious
	blank spaces, for cleanliness.

	* CVSROOT/loginfo: syncmail instead of external log_accum.
	* doc/texinfo.tex (\sectionheading): remove extraneous \nobreak,
	found by Stepan (of course).

2003-09-22  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\sectionheading): the space below a section
	  heading should have fixed size; \nobreak after a \vskip is
	  redundant.

2003-09-21  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\sectionheading): make space below be half of
	space above, and don't add \parskip to space above.  Suggestion
	from Han-Wen Nienhuys <hanwen@cs.uu.nl>, implementation ideas from
	Stepan Kasal <kasal@math.cas.cz>, 16 Sep 2003 11:30:43 +0200.

2003-09-21  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\dosuppressfirstparagraphindent): change the
	  redefinition of \indent and \noindent and factor out common
	  parts of all redefinitions to ...
	  (\restorefirstparagraphindent): ... a new macro.

2003-09-20  Karl Berry  <karl@gnu.org>

	* makeinfo/macro.c (cm_alias): do not expand when calling
	get_until_in_line, since xml/docbook expansion is empty.
	Report from: Richard Kreuter <kreuter@anduril.rutgers.edu>,
	17 Sep 2003 17:59:58 -0400.

	* info/signals.c: Clear the screen when exiting from a SIGQUIT.
	From: Wojciech Polak <polak@gnu.org>, 19 Sep 2003 10:27:28 +0200.

2003-09-16  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\sectionheading): there is no need to insert
	  \nobreak before a kern which is not followed by
	  a glue.  Such a kern is not a permissible breakpoint.

2003-09-16  Simon Law <sfllaw@uwaterloo.ca>

	* doc/texinfo.tex (\dosuppressfirstparagraph): Gobble \noindent
	if it occurs in the first paragraph.
	(\ptexnoindent): for saving/restoring \noindent in @tex.
	(\footnote): Neutralise the effect of @noindent within a footnote.

2003-09-16  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex: Changes to make pdf references go to the correct
	place on the page.  This is most easily testable
	at high magnifications (I used 400% and 800%).
	(\output): put \the\pageno pdfdest at very
	beginning of \shipout.(\dopdfoutline): new macro.
	(\pdfmakeoutlines): recompute all section numbers.
	(\unnumberedno): \newcount.
	(\chapterzzz,\appendixzzz,\unnumberedzzz,
	 ..., \unnumberedsubsubseczzz): abstract common
	elements, keep track of numbering for everything.
	(\doheading,\dosubheading,\dosubsubheading): call
	\sectionheading directly instead of \plain*secheading.
	(\chfplain, \sectionheading): take additional section type
	argument; call \writetocentry and \donoderef.
	(\unnchfopen): mention this is deprecated.
	(\writetocentry): handle "omit" case, and
	\global\pdfmakepagedesttrue.
	(\startcontents, \summarycontents): sectioning
	commands take an extra arg.
	(\dosub*secentry): take extra arg with section
	number; change callers.
	(\pdfcatalog): move this call to the opening PDF
	commands, for clarity.
	(\unnumbnoderef): no longer needed, collapsed into
	\donoderef.(\Yomitfromtoc): new xref constant.
	(\Ynumbered,\Yappendix): renamed from
	\Ysectionnumberedandtype and
	\Yappendixletterandtype, for clarity.

	* doc/texinfo.txi (cartouche): omit invalid @group.

	* makeinfo/node.c (cm_node): restore accesskey= on the <link>s.
	From hanwen.

2003-09-15  Karl Berry  <karl@gnu.org>

	* util/dir-example: add guile-tut.

	* info/session.c (info_follow_menus): take the first best_guess
	rather than the last.
	From: Rob Browning <rlb@defaultvalue.org>,
	15 Sep 2003 01:26:17 -0500.

2003-09-13  Karl Berry  <karl@gnu.org>

	* automake 1.7.7.

	* makeinfo/insertion.c (begin_insertion): start cartouche html output
	with <p>.  @cartouche can't be used meaningfully
	within a paragraph.
	Report from: Simon Josefsson <jas@extundo.com>,
	11 Sep 2003 19:25:20 +0200.

2003-09-12  Karl Berry  <karl@gnu.org>

	* makeinfo/tests/html-manuals: include -I../../doc for case when
	version-stnd.texi is in build tree.
	From: ezra peisach <epeisach@med-xtal.bu.edu>,
	12 Sep 2003 13:53:32 -0400.

2003-09-11  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Cartouche): document that @cartouche needs to
		be outside the @example for HTML output to work.  This
		is painful to fix in the current makeinfo.
	Report from: Simon Josefsson <jas@extundo.com>,
	11 Sep 2003 15:21:44 +0200.

2003-09-10  Karl Berry  <karl@gnu.org>

	* makeinfo/sectioning.c (section_alist): add entry for centerchap,
	so at least makeinfo does not bomb out.  (No centering is actually
	done.)  From: Denys Duchier <duchier@ps.uni-sb.de>, 10 Sep 2003
	21:35:24 +0200.

	* lib/system.h: __CYGWIN__ in comments, too.

2003-09-09  Karl Berry  <karl@gnu.org>

	* bootstrap: --include=m4.  From Werner.

2003-09-08  Karl Berry  <karl@gnu.org>

	* lib/system.h: make that __CYGWIN__, not __unix__.  From Eli.
	* lib/system.h (DEFAULT_TMPDIR,PATH_SEP) [O_BINARY && !__unix__]:
	new case for cygwin, from: Thomas Klausner
	<wiz@danbala.ifoer.tuwien.ac.at>, 8 Sep 2003 13:43:29 +0200
	(for cross-building netbsd).

2003-09-04  Karl Berry  <karl@gnu.org>

	* texinfo.txi (Conventions): say more about quotations and dashes,
	based on a report to help-texinfo from
	David.Billinghurst@riotinto.com, 18 Jul 2003 16:07:00 +1000.

	* NEWS: mention @tex/@iftex are executed in a group.

2003-09-03  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Macro Details): mention some makeinfo
	limitations too, from recent bug reports by Patrice Dumas
	<dumas@centre-cired.fr> and (16 Jul 2003 17:21:56 +0200) Jesper
	Harder <harder@ifa.au.dk>.
	* makeinfo/macro.c (define_macro): "end rmacro" is 10 chars long.

2003-08-29 Reiner Steib <Reiner.Steib@gmx.de>

	* makeinfo/lang.c (encoding_table): Downcase coding system
	names, since Emacs does not recognize the uppercase names.

	* makeinfo/lang.h: doc fixes.

2003-08-28  Karl Berry  <karl@gnu.org>

	* bootstrap: new file (cvs only).
	* README.dev: mention it.
	Report from hanwen@cs.uu.nl, sample script from
	Akim Demaille <akim@epita.fr>.
	* aclocal.m4: remove from cvs repository.

2003-08-26  Karl Berry  <karl@gnu.org>

	* makeinfo/node.c (cm_node): add <LINK> tags. This will produce a
	navigation bar in Mozilla 1.4 (and perhaps earlier).  Original
	code from Han-Wen Nienhuys <hanwen@cs.uu.nl>.

2003-08-23  Karl Berry  <karl@gnu.org>

	* util/texi2dvi: Run tex --help in $tmpdir, to avoid leaving
	texput.log for old TeX versions.  Report from Patrick Welche
	<prlw1@newn.cam.ac.uk>, patch from Akim.

2003-08-20  Karl Berry  <karl@gnu.org>

	* makeinfo/defun.c (cm_defun): skip @ifset/@ifclear insertions
	when looking for the @defun going with this @defunx.  Report from:
	Akim Demaille <akim@epita.fr>, 14 Aug 2003 12:10:37 +0200.

	* makeinfo/insertion.c (cm_end): rewrite error message for
	clarity.

2003-08-13  Karl Berry  <karl@gnu.org>

	* info/indices.c (info_index_apropos): correct typo, whoses ->
	whose.  From: Jesper Harder <harder@ifa.au.dk>, 13 Aug 2003
	14:49:26 +0200.

2003-08-11  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex: excise spurious spaces, etc.

2003-08-09  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi: don't use @ifinfo/@heading construct to replace
	@section any more, the XML output is wrong.

	* doc/texinfo.tex (\pdfmakeoutlines): doc fixes, and use \def once
	instead of \let twice.

	* doc/texinfo.txi: rewrite @ifinfo text sections to take better
	 account of HTML.  Suggestion from: Dumas Patrice
	<dumas@centre-cired.fr>, 8 Aug 2003 17:19:22 +0200.

2003-08-07  Derek Price  <derek@ximbiot.com>

	* makeinfo/insertion.c (cm_direntry): Skip @direntry in --no-headers
	mode.

2003-08-05  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (Beginning a File, title, titlefont): more
	clarifications.  Suggestions from Patrice.

	* doc/texinfo.txi (emph & strong): inconsistent source & example.
	From Jesper Harder.

2003-08-04  Karl Berry  <karl@gnu.org>

	* doc/texinfo.txi (titlefont): discuss html output a bit.
	Suggestion from Patrice.

2003-07-31  Karl Berry  <karl@gnu.org>

	* doc/texinfo.tex (\doignorecount): no need to initialize.
	(\doignoreyyy): doc fix.
	From Stepan.

2003-07-29  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\doignorecount): No need to initialize the
	  count while reading texinfo.tex.
	  (\doignoreyyy): Tiny comment change.

2003-07-28  Karl Berry  <karl@gnu.org>

	* makeinfo/html.c (process_css_file): @c (for @charset) should
	also put us into import_state.

	* doc/texinfo.txi (Conditional Nesting): new section; also change
	other conditional sections slightly.

	* doc/texinfo.tex (\doignoretext, \doignoretextyyy): Only look for
	conditionals at the beginning of a line, to avoid problems with a
	commented conditional.  Fix from: Stepan Kasal
	<kasal@math.cas.cz>, 28 Jul 2003 02:50:41 +0200.

2003-07-27  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\doignore): Rewritten to handle nesting.
	  (\ignoremorecommands, \obstexwarn, \ifwarnedobs): No longer needed.
	  (\nestedignore): No longer needed.
	  (\readauxfile): Remove reference to \warnedobstrue.

2003-07-27  Karl Berry  <karl@gnu.org>

	* util/dir-example: lowercase automake.

2003-07-26  Karl Berry  <karl@gnu.org>

	* makeinfo/html.c (process_css_file): in null_state, only consider
	@i to be the start of an @import, since @media can get misparsed.
	Report from: Dumas Patrice <dumas@centre-cired.fr>, 22 Jul 2003
	12:13:29 +0200.

2003-07-25    <karl@gnu.org>

	* doc/texinfo.txi (Raise/lower sections): mention difficulties with
	node pointer creation and top nodes.
	Report from: Dumas Patrice <dumas@centre-cired.fr>,
	22 Jul 2003 13:08:24 +0200.

2003-07-24    <karl@gnu.org>

	* makeinfo/sectioning.c (what_section): take additional SECNAME
		argument; change callers.
	* makeinfo/sectioning.h (what_section): remove redundant decl.
	* makeinfo/node.c (cm_node): change what_section call here, too.
	Report from: Dumas Patrice <dumas@centre-cired.fr>,
	22 Jul 2003 13:09:19 +0200.

	* doc/texinfo.tex (\doheading,\dosubheading,\dosubsubheading):
	rationalize names.
	(\heading,\subheading,\subsubheading): change
	calls.  (yesterday's patch called the undefined
	\subsecheadingyyy, etc.)

2003-07-23  Stepan Kasal  <kasal@ucw.cz>

	* doc/texinfo.tex (\heading, \subheading, \subsubheading): Call
	  \suppressfirstparagraphindent after setting the heading.
	  (\headingyyy, \subheadingyyy, \subsubheadingyyy): New macros.
	  (\chapheadingzzz): Call \suppressfirstparagraphindent at the end
	  and move \chapbreak ...
	  (\chapheading): ... here.
	  (\majorheading): Do a modified \chapbreak, then call \chapheadingzzz.
	  (\majorheadingzzz): Deleted.

2003-07-16    <karl@gnu.org>

	* doc/texinfo.txi (makeinfo Pointer Creation): must pxref Menus,
	since Menu Location is not a valid xref point for
	TeX, because of the special @heading stuff.

	* makeinfo/insertion.c (begin_insertion): lack of */ caused
	display: and smalldisplay: cases to be ignored.

	* lib/system.h (LC_MESSAGES) [!defined (HAVE_LC_MESSAGES) &&
	!defined (LC_MESSAGES)]: change conditional.  Report from
	Christian Krackowizer <ckrackowiz@std.schuler-ag.com>, 16 Jul 2003
	14:40:30 +0200.

2003-07-14    <karl@gnu.org>

	* util/install-info.c (ensure_dirfile_exists): replace literal ^_ with
	\x1f.  Report from Trond Endrest\o{}l
	<trond@ramstind.gtf.ol.no>, 14 Jul 2003 13:31:29 +0200.

	* makeinfo/sectioning.c (sectioning_html): forgot to change closing </hN>
	to match opening <hN> (that is, maximum h3).
	Report from: Jesper Harder <harder@ifa.au.dk>,
	14 Jul 2003 15:04:04 +0200.

2003-07-03    <karl@gnu.org>

	* doc/info.texi: copy from Emacs (with revisions by Luc).

2003-07-02   Akim Demaille  <akim@epita.fr>

	* util/texi2dvi: Add thumbpdf support.
	Use FD 6 instead of /dev/null so that when --debugging, the output
	from auxiliary tools can be observed.

2003-07-02    <karl@gnu.org>

	* doc/texinfo.txi (kbd): document actual makeinfo behavior.

2003-07-01    <karl@gnu.org>

	* doc/texinfo.txi (Menus): require that menus come at the end of the
	node, since Info readers can't determine the end
	of a menu.
	Report from: Luc Teirlinck <teirllm@dms.auburn.edu>,
	29 Jun 2003 21:33:19 -0500.

	* makeinfo/insertion.c (begin_insertion): do not increment
	in_fixed_width_font for @display or @format; this
	incorrectly caused quotes to be omitted in @kbd
	output in those environments.
	Report from: Luc Teirlinck <teirllm@dms.auburn.edu>,
	26 Jun 2003 21:59:48 -0500.

2003-06-24    <karl@gnu.org>

	* doc/texinfo.txi (tex): misplaced period.
	From: Jesper Harder <harder@ifa.au.dk>.
	(GNU Sample Texts): don't end the $Id index entries with a :.
	Report from: Luc Teirlinck <teirllm@dms.auburn.edu>.

2003-06-20    <karl@gnu.org>

	* makeinfo/defun.c (process_defun_args): only insert the HTML
	start/end tags if we're actually generating html.
	Report from: Shawn Betts <sabetts@sfu.ca>, 12 Jun 2003
	16:48:50 -0700.

	* TODO: support translated manuals, from polak@gnu.org.

	* doc/texinfo.txi: Edit Options node no longer exists in the Emacs
		manual.  From: Luc Teirlinck <teirllm@dms.auburn.edu>.

2003-06-18    <karl@gnu.org>

	* config.{guess,sub}, install-sh, lib/xalloc.h: update from gnulib.

2003-06-10    <karl@gnu.org>

	* version 4.6.


Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
2013, 2014, 2015, 2016, 2017
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.
