2023-10-18 Gavin Smith Texinfo 7.1 * configure.ac, NEWS: update 2023-10-18 Gavin Smith * doc/texinfo-tex-test.texi (Line macros): Avoid checking example with leading space on a line after an "@" continuation character, as TeX's treatment of leading space on a line differs from that of texi2any. 2023-10-18 Gavin Smith * doc/texinfo.texi (Inserting Quotation Marks): Place @code around cindex entries for ` and `` to avoid them being changed to ' and '' in the Info index. 2023-10-17 Gavin Smith * README-hacking: reorder instructions slightly 2023-10-17 Gavin Smith * po_document/adjust-translations.pl: new script. * po_document: Run the script to adjust *.po files. * README-hacking: update to mention this script. 2023-10-16 Patrice Dumas Update tex-html test results in tp/tests 2023-10-15 Gavin Smith * tp/tests/coverage_macro.texi: Insert further blank lines in blocks of glyph commands. 2023-10-15 Gavin Smith * README-hacking: update 2023-10-15 Gavin Smith * tp/Texinfo/XS/parsetexi/api.c (reset_parser): Update comment re using malloc/free. 2023-10-15 Eli Zaretskii * tp/Texinfo/XS/parsetexi/api.c (reset_parser), * tp/Texinfo/XS/xspara.c (xspara__add_pending_word, xspara_end, xspara__add_next): Add dTHX to allow compilation on MinGW. [Note from Gavin: this may be needed because these functions call fprintf.] 2023-10-14 Gavin Smith pretest 7.0.94 2023-10-14 Patrice Dumas Update tex-html test results in tp/tests 2023-10-13 Gavin Smith * tp/tests/coverage_macro.texi: Insert blank lines in blocks of glyph commands in attempt at avoiding divergent test results on MinGW, due to varying wcwidth values. Report from Eli. 2023-10-12 Patrice Dumas Update test results in tp/tests 2023-10-12 Patrice Dumas update po files 2023-10-12 Patrice Dumas Use translation context for definition aliases in converters * tp/Texinfo/Convert/HTML.pm (_convert), tp/Texinfo/Convert/LaTeX.pm (_convert), tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/Convert/Text.pm (_convert): use untranslated extra translation context if set. Report and analysis by Gavin. 2023-10-12 Patrice Dumas Add definition aliases translation context in the tree if needed * tp/Texinfo/Common.pm (pgdt_context, %def_map), tp/Texinfo/ParserNonXS.pm (_parse_def), tp/Texinfo/XS/parsetexi/def.c (DEF_ALIAS, def_aliases, parse_def): add pgdt_context to mark strings, which returns the context too. Use the context in _parse_def to add it to the tree for untranslated type. Similarly in def_aliases in def.c add a translation context if needed and add it to the tree in parse_def. Report and analysis by Gavin. * po_document/Makevars (XGETTEXT_OPTIONS): add pgdt_context. 2023-10-12 Gavin Smith * tp/maintain/regenerate_docstr.sh: Correct path to Makefile.am. 2023-10-12 Gavin Smith * tp/tests/coverage_macro.texi: Insert blank lines in block of accent commands to avoid divergent test results on MinGW, due to varying wcwidth values. Report from Eli. 2023-10-08 Eli Zaretskii * install-info/install-info.c (readfile): Correct check for whether a compression program is being used in order to correctly close a file. 2023-10-08 Eli Zaretskii * install-info/install-info.c (open_possibly_compressed_file): Close stdin file description in main process after calling popen on compression program. This allows the file to be removed or renamed on Windows. 2023-10-08 Gavin Smith * tp/Texinfo/XS/parsetexi/input.c (next_text): Use positive value for getline argument. From Eli. 2023-10-08 Gavin Smith * tp/Texinfo/XS/parsetexi/input.c (next_text): Initialise argument to getline to 0, as per documentation. Attempt to fix crash under MinGW, reported by Eli. 2023-10-07 Gavin Smith * tp/Texinfo/XS/xspara.c (xspara__print_escaped_spaces): Avoid unnecessary use of malloc/free. malloc/free would require use of dTHX on MS-Windows. Report from Eli Zaretskii. 2023-09-30 Gavin Smith pretest 7.0.93 2023-09-30 Gavin Smith * po_document/fix-translations.sh: Remove file. 2023-09-27 Gavin Smith Allow translation of @emph{See} * tp/Texinfo/Convert/HTML.pm (_convert_printindex_command): Change "@emph{See}" in translated string to "@emph{See@:}" in translated string. This avoids a msgfmt error "a format specification for argument 'See' doesn't exist in 'msgstr'" due to {See} being seen as a placeholder for a string (with perl-brace-format). Adding the non-alphabetic characters "@:" inside the braces stops this. Report from Petr Pisar for Czech translation. 2023-09-21 Patrice Dumas * tp/Texinfo/XS/configure.ac: do not reset CPPFLAGS to user-provided PERL_EXT_CFLAGS, as CPPFLAGS is modified by gnulib macros (specifically libunistring). Report from Bruno Haible. 2023-09-21 Patrice Dumas * configure.ac: require Unicode::Normalize. Report from Bruno on CentOS Stream 9 where this module may not be installed. 2023-09-20 Gavin Smith Update gnulib * (top-level): Run "gnulib-tool --add-import" * tp/Texinfo/XS: Run "gnulib-tool --add-import". A gnulib update needed at top level to fix compilation on AIX 7.3.1. Report from Bruno Haible. 2023-09-19 Gavin Smith * doc/texinfo-tex-test.texi (TOC display): Add new example of section name with @/ in it, from Karl Berry. Before the last change, this led to an overfull hbox. 2023-09-19 Gavin Smith Simplify toc/index entry formatting * doc/texinfo.tex (\entry): Eliminate code allowing stretching into the margins, as it complicates the code and was questionable whether this was a good idea in the first place. Do not hardcode 70:30 ratio for splitting text across multiple lines. 2023-09-17 Patrice Dumas * tp/tests/many_input_files/different_encodings.sh: skip test if $PERL_UNICODE_COLLATE_OK is no, as this test requires compatible unicode collation. Report from Gavin based on Nelson Beebe pretest test results. 2023-09-13 Gavin Smith pretest 7.0.92 2023-09-13 Gavin Smith * install-info/install-info.c (main) <--description>: Free string when concatenating text. 2023-09-13 Gavin Smith * install-info/install-info.c (output_dirfile): Free string passed to popen. 2023-09-13 Gavin Smith * install-info/install-info.c (open_possibly_compressed_file): Free string passed to popen. 2023-09-13 Gavin Smith * install-info/install-info.c (reformat_new_entries): Free strings set by split_entry. 2023-09-13 Gavin Smith * install-info/install-info.c (readfile): Do not truncate input file at 8192 bytes. Report from Andreas Schwab. 2023-09-12 Gavin Smith * doc/texinfo.tex (\newlineloadsconf): Hook into definitions made with \envdef as well as ends-of-lines and commands defined with \parsearg. Werner Lemberg reported an error when a @tex block followed "\input texinfo" immediately. 2023-09-11 Gavin Smith pretest 7.0.91 2023-09-11 Gavin Smith * README-hacking: adjust release instructions 2023-09-09 Patrice Dumas * tp/t/html_tests.t (automatic_menus): test with FORMAT_MENU menu and no explicit menus. 2023-09-09 Patrice Dumas Automatic menu in HTML if missing and FORMAT_MENU is menu * tp/Texinfo/Convert/HTML.pm (%available_converter_info) (_convert_heading_command): add 'labels' to the %available_converter_info. Automatic menu setup and formatting if FORMAT_MENU is menu, a sectioning command is being formatted, associated node is with automatic directions and without menu and there is no table of contents already formatted. 2023-09-09 Patrice Dumas * tp/Texinfo/Structuring.pm (new_complete_menu_master_menu), tp/Texinfo/Convert/Plaintext.pm (_convert): move code setting up a menu and detailed menu if node is Top to Texinfo::Structuring as new_complete_menu_master_menu. 2023-09-08 Patrice Dumas * tp/Texinfo/Convert/Unicode.pm (string_width): remove explicit matching of 0-width characters, they correspond to the remaining characters after matching printing characters except for Marks. 2023-09-08 Patrice Dumas * tp/Texinfo/Convert/Unicode.pm (string_width): replace IsPrint by more explicit character classes. 2023-09-07 Patrice Dumas * tp/Texinfo/Convert/Unicode.pm (string_width): use DefaultIgnorableCodePoint for better compatibility with old perls. 2023-09-07 Gavin Smith * README-hacking: add note re *.pot versions. 2023-09-06 Patrice Dumas * tp/t/input_files/in_menu_only_special_spaces_node.texi, tp/t/input_files/only_special_spaces_node.texi: separate node for LINE SEPARATOR and PARAGRAPH SEPARATOR in test files. 2023-09-06 Patrice Dumas * tp/Texinfo/Convert/Unicode.pm (string_width): consider Default_Ignorable_Code_Point to be of zero width. These codepoints are described as having no visible glyph or advance width in and of themselves. 2023-09-06 Patrice Dumas Consider control characters to have a 0 width * tp/Texinfo/Convert/Unicode.pm (string_width): do not consider space control characters especially. This is better for line feed, carriage return and form feed, and vertical or horizontal tabs should not happen in situations where we want to know the width of strings. 2023-09-05 Patrice Dumas Add customization of external node reference names * doc/texi2any_api.texi (Customizing Output Target Names) (Customizing External Node Output Names), tp/Texinfo/Convert/HTML.pm (%customizable_file_id_setting_references, _external_node_href): add external_target_split_name and external_target_non_split_name file id setting customization function reference. Based on Jonas Hahnfeld feedback. 2023-09-04 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_external_node_href): initialize explicitly $target_split. Use a different variable for the case of $target_split ($file) and !$target_split ($directory). Rearrange code returning the final href to have less conditions. If target is empty and TOP_NODE_FILE_TARGET is not set use the directory and target_filebase as in the other cases. This case probably never happens, though, as TOP_NODE_FILE_TARGET is always set. 2023-09-04 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_external_node_href): do not call _normalized_to_id in $target, it is already done in _normalized_label_id_file. 2023-09-04 Patrice Dumas Add last element argument to format_end_file * doc/texi2any_api.texi (Customizing HTML File End), tp/Texinfo/Convert/HTML.pm (_default_format_end_file, output): add the last element to the call of format_end_file in output. Idea from LilyPond init file commit from Jonas Hahnfeld where converter state is used, to be able to get the output unit directly instead. 2023-09-03 Gavin Smith * tp/Texinfo/Config.pm (GNUT_load_init_file): Check if message is non-empty as well as defined before printing. (_GNUT_document_fatal): Keep going if FORCE is set. 2023-09-02 Gavin Smith Fatal error for init file loading * tp/Texinfo/Config.pm (_GNUT_document_fatal): copy from _GNUT_document_warn and exit program. (GNUT_load_init_file): Load init file with "do" rather than "require". As calling code has already located the file with Texinfo::Common::locate_init_file, we do not need "require" to locate the file in @INC. Call _GNUT_document_fatal if "do" could not load or parse the file. Report from Jonas Hahnfeld who is working on an init file for GNU Lilypond. It was not helpful to continue on if there was a syntax error in the init file. 2023-09-01 Patrice Dumas Run 'gnulib-tool --add-import libunistring' under tp/Texinfo/XS. Update gnulib. 2023-08-20 Gavin Smith * tp/README: Add Unicode::Collate to list of modules. Mention possibility of not using internal versions of some modules. * tp/t/README: Say to look at tp/README for the module requirements. 2023-08-19 Bruno Haible * doc/Makefile.am (wwwdoc-install): Indent all lines in the rule with a tab. 2023-08-19 Bruno Haible * doc/Makefile.am (refcard/txirefcard.pdf, refcard/txirefcard-a4.pdf): Combine Makefile rules in attempt to forestall two make processes running at the same time in case of a parallel make. 2023-08-19 Gavin Smith * doc/Makefile.am (refcard/txirefcard.pdf, refcard/txirefcard-a4.pdf): Add rules for these files, as they aren't tracked in git any more and are needed for make dist. From Bruno. 2023-08-19 Gavin Smith * contrib/gen-dir-node, * contrib/javaprop2texiflag.pl, * doc/refcard/Makefile: Eliminate $Id keyword expansion. 2023-08-19 Gavin Smith * configure.ac: Check for Unicode::Collate and issue a warning if not found. Report from Bruno Haible on CentOS 8-stream. 2023-08-19 Gavin Smith * tp/Texinfo/Structuring.pm (sort_indices): Put collator options in a hash variable to make code clearer. Reorder code slightly. 2023-08-19 Gavin Smith * tp/Texinfo/Structuring.pm (Texinfo::CollateStub): Provide fall-back module in case Unicode::Collate can't be loaded. (sort_indices): Use it if loading Unicode::Collate fails. 2023-08-19 Patrice Dumas * tp/Texinfo/Structuring.pm (complete_node_tree_with_menus): add missing extra for menus key. 2023-08-18 Gavin Smith * install-info/tests/ii-0059-test: Fix malformed menu entry. 2023-08-18 Gavin Smith * README-hacking: remove recommendation to check with -Wdeclaration-after-statement, as it may not be a relevant warning any more. From Bruno. 2023-08-18 Gavin Smith * install-info/install-info.c (readfile): null-terminate file data so to avoid reading off the end in mark_entry_for_deletion. (mark_entry_for_deletion): Add checks for end of data. 2023-08-18 Gavin Smith * install-info/install-info.c (output_dirfile): Avoid mixed declaration and statements. 2023-08-18 Gavin Smith install-info atomic dir update * install-info/install-info.c (output_dirfile): Get name of temp file by appending to dir file name. This ensures that the temporary file is in the same directory and thus on the same disk volume. Report from Bruno Haible. 2023-08-18 Gavin Smith * install-info/install-info.c (output_dirfile): Change further uses of perror to pfatal_with_name for concision and to print program name. 2023-08-18 Gavin Smith * install-info/install-info.c (output_dirfile): In case removing and renaming to target dirfile failed, print error message and exit with pfatal_with_name function. Lack of exit reported by Bruno Haible. 2023-08-16 Gavin Smith pretest 7.0.90 2023-08-16 Gavin Smith * util/srclist.txt: Update source for INSTALL to doc/INSTALL.ISO in gnulib sources to avoid non-ASCII sequences. 2023-08-15 Gavin Smith * INSTALL: integrate text from doc/README about *.tex installation. use https: for ftp.gnu.org link. * doc/README: eliminate file. * doc/Makefile.am (install-data-local): update reference to INSTALL. 2023-08-15 Gavin Smith * info/session.c: removed unused variable. 2023-08-15 Gavin Smith * README-hacking: update suggested configure invocation to disable some unneeded warnings 2023-08-15 Gavin Smith parsetexi compiler warnings * tp/Texinfo/XS/parsetexi/parser.c (isolate_last_space): Change a condition to make it easier to see that a variable is not used uninitialised. * tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): Restructure to make it clearer that a variable is not used uninitialised, especially as this is quite a long function. * tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block) : Comment out declaration of unused variable. 2023-08-15 Gavin Smith parsetexi compiler warnings * tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): Do not save separator characters into unused variables. * tp/Texinfo/XS/parsetexi/separator.c: Removed unused "funexit:" label. 2023-08-15 Gavin Smith * README-hacking: add pod2texi to list of programs with copyright years in --version calls. Adjust commands for looking for copyright years to update. 2023-08-15 Gavin Smith Bump version to 7.0.90 for pretest * configure.ac: version * README-hacking: reorder some instructions 2023-08-15 Gavin Smith * doc/refcard/txirefcard.tex: 2023, 7.1 2023-08-15 Gavin Smith * build-aux/pre-inst-env.in: set TEXINFO_DEV_SOURCE rather than TEXINFO_UNINSTALLED as the latter is not used anywhere. 2023-08-15 Gavin Smith Translator comments and contexts * tp/Texinfo/Common (%def_map): Change "users-modifiable" to "user-modifiable" in a translator comment, and shorten context for @deftypefn "Function" to be similar to context for @deffn -- we don't need to describe what the difference is in these contexts. 2023-08-15 Gavin Smith Move month names translation strings * tp/Texinfo/Convert/Converter.pm, * tp/Texinfo/Convert/Utils.pm: move appearance of month names in gdt to Utils.pm, in order to be next to the @MONTH_NAMES array that these strings are used with. 2023-08-15 Gavin Smith * ChangeLog, texindex/ChangeLog: Move texindex ChangeLog entries into top-level file. 2023-08-15 Gavin Smith * tp/maintain/regenerate_cmd_tests.sh, * tp/maintain/regenerate_docstr.sh: do not place copyright year in generated files as this complicates updating copyright years. * tp/maintain/regenerate_docstr.sh: add a comment as to the purpose of this file. 2023-08-15 Gavin Smith * README-hacking: tweak advice on updating copyright years 2023-08-14 Gavin Smith * README-hacking: start of advice on how to update copyright years automatically 2023-08-14 Gavin Smith * tp/prove.sh: Add a comment stating the purpose of this file (mail from Patrice, October 24th, 2022). 2023-08-14 Gavin Smith * README-hacking: reorder to put longer, less predictable tasks further away from the final release instructions. 2023-08-14 Gavin Smith * INSTALL.generic, build-aux/compile, build-aux/config.guess, build-aux/config.sub, build-aux/depcomp, build-aux/mdate-sh: update from gnulib 2023-08-14 Gavin Smith * doc/texinfo.texi (Menus): Be clearer about when menus are output in HTML. 2023-08-14 Gavin Smith * doc/Makefile.am (MAKEINFO_ENVIRONMENT): Do not use shell export statements as this may lead to the same problem experienced with TEXI2DVI_ENVIRONMENT. 2023-08-14 Gavin Smith Do not rely on texi2dvi internal directory layout * doc/Makefile.am (TEXI2DVI_ENVIRONMENT), * doc/tp_api/Makefile.am (TEXI2DVI_ENVIRONMENT): Use $(abs_top_srcdir) and $(abs_top_builddir) to reference texindex files, rather than $(top_srcdir) and $(top_builddir) concatenated with a certain number of "../", as this is hard to understand and depends on internal details of texi2dvi that we shouldn't have to think about. 2023-08-14 Gavin Smith Fix "make distcheck" without installed texinfo.tex * doc/Makefile.am (TEXI2DVI_ENVIRONMENT), * doc/tp_api/Makefile.am (TEXI2DVI_ENVIRONMENT): Do not export TEXINDEX or TEXINDEX_SCRIPT shell variables in separate shell statements. As texi2dvi was run by Makefile rules like TEXINPUTS=... MAKEINFO=... \ TEXINDEX=... ; export TEXINDEX ; \ TEXINDEX_SCRIPT=... ; export TEXINDEX_SCRIPT ; ../util/texi2dvi ... the first semicolon ended the shell statement where TEXINPUTS and MAKEINFO were set, so they were not set correctly for texi2dvi. This broke "make distcheck" under doc/tp_api, where texinfo.tex was not found, if not installed on the user's system. 2023-08-13 Gavin Smith * tp/Texinfo/XS: Run "gnulib-tool --add-import" * tp/Texinfo/XS/Makefile.am (XSParagraph_la_LDFLAGS, Parsetexi_la_LDFLAGS): Add $(LTLIBUNISTRING) as recommended by gnulib-tool --add-import. * tp/Texinfo/XS/parsetexi/labels.c, * tp/Texinfo/XS/parsetexi/source-marks.c: include before . 2023-08-13 Gavin Smith * README-hacking: advice on LDADD for new gnulib modules 2023-08-13 Gavin Smith gnulib LDADD * info/Makefile.am (LDADD), install-info/Makefile.am (LDADD): Revise and extend variable use from gnulib so that the correct libraries will be linked on various platforms reliably. 2023-08-13 Gavin Smith Run "gnulib-tool --add-import" (top level) 2023-08-13 Gavin Smith * README-hacking: note that we can't use gettext 0.22. 2023-08-13 Gavin Smith * doc/texinfo.tex (\entry): Reduce possible margin overhang from 2.1em to 1.5em. (\indexdotfill): Reduce minumum length from 1em to 0.5em. This stops long section titles jutting out into the margin too visibly. 2023-08-13 Gavin Smith * NEWS: texinfo.tex, info updates. 2023-08-13 John Wheeler * install-info/tests/ii-0058-test, * install-info/tests/ii-0059-test: Add new tests to check blank lines between sections on repeated addition and deletion of sections. 2023-08-12 Gavin Smith * info/terminal.c (term_Km): Remove. (terminal_initialize_terminal): Do not load or set Km (kmous) capability string. As the termcap string for xterm can be "\033[<" rather than the "\033[M" we expected, we cannot rely on the contents of this. (initialize_byte_map): Add KEY_MOUSE bindings unconditionally. They are harmless even if mouse support is off. (terminal_begin_using_terminal): Do not use term_Km to decide whether to try to turn on "normal tracking mode". Instead, only use the setting from the "mouse" variable. (terminal_end_using_terminal): Likewise. 2023-08-12 Gavin Smith * tp/Texinfo/XS/xspara.c (xspara_get_state): Remove unused function (which currently does nothing). 2023-08-12 Gavin Smith * doc/texinfo.texi (Command List): List new commands @defblock, @defline, @deftypeline, @linemacro, @link, @nodedescription, @nodedescriptionblock. (Node Descriptions): Add index entries for new commands. 2023-08-12 Gavin Smith * NEWS: list updated automake version used for distribution 2023-08-12 Patrice Dumas * tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): free fullpath only after error messages have been output. * tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting, parse_texi): add parentheses to avoid ambiguity and match better perl parser code. (isolate_last_space): simplify debug output code. * tp/Texinfo/XS/parsetexi/parser.c, tp/Texinfo/XS/parsetexi/input.c, tp/Texinfo/XS/parsetexi/tree.c, tp/Texinfo/XS/parsetexi/close.c, tp/Texinfo/XS/parsetexi/end_line.c, tp/Texinfo/XS/parsetexi/macro.c, tp/Texinfo/XS/parsetexi/menus.c, tp/Texinfo/XS/parsetexi/indices.c: remove unused variables. * tp/Texinfo/XS/parsetexi/close.c (close_command_cleanup), tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): add parentheses to avoid ambiguity and match better perl parser code. * tp/Texinfo/XS/parsetexi/api.c (store_source_mark_list): explicit default in switch for SM_status_none and SM_type_none. * tp/Texinfo/XS/MiscXS.xs (xs_parse_texi_regex): remove left over variable. * tp/Texinfo/XS/xspara.c (xspara_init): group expressions to avoid ambiguity. * tp/Texinfo/XS/xspara.c (xspara_get_state): avoid mixing declarations and code. 2023-08-12 Patrice Dumas * tp/Texinfo/XS/parsetexi/source_marks.c (source_marks_names): setup the source_marks_names table in the file using it and not in the header file defining the macro used to setup the table, to have the table defined only where it is used. 2023-08-12 Patrice Dumas * tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command), tp/Texinfo/XS/parsetexi/macro.c (expand_linemacro_arguments), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): avoid mixing declarations and code. * tp/Texinfo/XS/parsetexi/handle_commands.c (parse_rawline_command): remove unused variable. 2023-08-12 Gavin Smith * README-hacking: add note re "git stash list". 2023-08-07 Gavin Smith * doc/refcard/txirefcard.tex: Close TeX group as intended (broken since 2022-10-21). 2023-08-07 Gavin Smith * doc/refcard/txirefcard.tex: Document new commands. 2023-08-07 Gavin Smith * doc/refcard/txicmdcheck: ignore @item_LINE as this is not a real Texinfo command and is only used internally. 2023-08-07 Gavin Smith * po/POTFILES.in, po_document/POTFILES.in: update so that "make po-check" and "make po_document-check" work at the top level. 2023-08-07 Gavin Smith * Makefile.am (po-check): look under directories beginning A-Z as well as a-z to include Pod-Simple-Texinfo. Eliminate use of $(CVS_LIST_EXCEPT) which does not appear to be defined anywhere. 2023-08-07 Gavin Smith * po/POTFILES.in: some updates * Makefile.am (po-check): exclude tp/t/results directory. 2023-08-07 Gavin Smith * doc/texinfo.texi (Other Customization Variables) : Give @samp as an example use case, as at OPEN_QUOTE_SYMBOL. 2023-08-07 Gavin Smith * doc/texinfo.texi: Add line "@microtype on". 2023-08-07 Gavin Smith * NEWS: edit, clarify, reorder. 2023-08-07 Gavin Smith * doc/info-stnd.texi (Node Commands) : Say a little about what the dir node is. 2023-08-07 Gavin Smith * tp/Texinfo/Common.pm (@variable_string_settables): Change AUTO_MENU_DESCRIPTION_FILLCOLUMN to AUTO_MENU_MAX_WIDTH and AUTO_MENU_DESCRIPTION_INDENT_LENGTH to AUTO_MENU_DESCRIPTION_ALIGN_COLUMN. * tp/Texinfo/Convert/Plaintext.pm (_convert): Subtract one from the value of AUTO_MENU_DESCRIPTION_ALIGN_COLUMN to get the number of preceding columns in the line. 2023-08-05 Gavin Smith * NEWS: Mention AUTO_MENU_DESCRIPTION_FILLCOLUMN and AUTO_MENU_DESCRIPTION_INDENT_LENGTH. 2023-08-05 Gavin Smith * TODO: add outputting detailmenu comment lines 2023-08-06 Patrice Dumas * tp/Texinfo/Translations.pm (gdt): have the gettext framework convert translated strings to UTF-8, and decode from UTF-8 to internal perl encoding. 2023-08-06 Patrice Dumas * po_document/LINGUAS, po_document/pl.iso-8859-2.po, tp/Makefile.am (test_files), t/input_files/pl_translated_inserted_strings_8bit.texi, tp/Makefile.tres (test_files_generated_list), tp/t/formats_encodings.t (8bit_document_translations): add 8bit encoded po_document po file for testing purposes, using iconv and manual edition of charset for polish. Add a corresponding test, 8bit_document_translations, with @documentencoding ISO-8859-2 which should use the pl.iso-8859-2.po translations file. 2023-08-06 Patrice Dumas update po files 2023-08-06 Patrice Dumas * po_document/POTFILES.in: add tp/Texinfo/Structuring.pm. 2023-08-06 Patrice Dumas * TODO, tp/TODO: update. 2023-08-05 Gavin Smith * tp/Texinfo/Common.pm, tp/Texinfo/Structuring.pm (_normalized_entry_associated_internal_node, new_master_menu): Move to Structuring.pm as Common.pm should not depend on Texinfo::Structuring or Texinfo::Translations. Report from Patrice. 2023-08-05 Gavin Smith add CHECK_MISSING_MENU_ENTRY * tp/Texinfo/Common.pm (%default_main_program_customization): Add CHECK_MISSING_MENU_ENTRY, true by default. * tp/Texinfo/Structuring.pm (complete_node_tree_with_menus): Do not output warnings about missing menu entries if CHECK_MISSING_MENU_ENTRY is not set. This was formerly controlled by CHECK_NORMAL_MENU_STRUCTURE but was latterly on unconditionally. * doc/texinfo.texi (Other Customization Variables): Document. * tp/t/test_utils.pl: Set 'CHECK_NORMAL_MENU_STRUCTURE' in configuration. * NEWS: update 2023-08-04 Gavin Smith * doc/texinfo.texi (Top): Remove @menu and @detailmenu, using @nodedescription throughout. Also remove joke after end of menu. 2023-08-04 Gavin Smith Blank line before detailmenu * tp/Texinfo/Convert/Plaintext.pm (_convert) : Add a blank line before the inserted detailmenu block. 2023-08-04 Gavin Smith * tp/Texinfo/Structuring.pm, * tp/Texinfo/Common.pm (_normalized_entry_associated_internal_node): Remove duplicate definition in Structuring.pm, using the definition in Common.pm instead. 2023-08-04 Gavin Smith * tp/Texinfo/Common.pm (new_master_menu): Always take an array reference as an argument with a list of menus to operate on, so that there is only one way of calling this function. Callers updated. * tp/Texinfo/Convert/Plaintext.pm (_convert) : Check that node name is actually "Top". 2023-08-04 Gavin Smith Generate master menu in plaintext output * tp/Texinfo/Common.pm (new_master_menu): Take extra optional argument which is the menu in the Top node. * tp/Texinfo/Convert/Plaintext.pm (_convert) : At the Top node, call new_master_menu after calling Texinfo::Structuring::new_complete_node_menu, so to also generate a detailed menu. 2023-08-04 Gavin Smith * tp/Texinfo/Common.pm (_print_down_menus): Call Texinfo::Structuring:::new_complete_node_menu in order to output part of the master menu when a node is missing a @menu block. 2023-08-04 Gavin Smith * tp/Texinfo/Common.pm (%valid_tree_transformations): Add 'complete_tree_nodes_missing_menu', which should have been in this list as it is documented and implemented. 2023-08-04 Gavin Smith Move new_master_menu * tp/Texinfo/Transformations.pm * tp/Texinfo/Common.pm (new_master_menu): Move to Common.pm. * tp/t/do_master_menu.t: Update. 2023-08-04 Patrice Dumas * tp/texi2any.pl (set_translations_encoding): really pass argument. Report and investigation of faulty commit by Werner. 2023-08-04 Gavin Smith * info/session.c (info_handle_pointer): When going Up, look for the current node in the Up nodes menu and position the cursor there. * NEWS: mention this 2023-08-03 Gavin Smith * doc/texinfo.texi: Use trailing comma before 'or' more consistently. 2023-08-03 Gavin Smith * doc/texinfo.texi (Menus): Advertise the benefits of not using @menu in Texinfo sources. 2023-08-03 Gavin Smith * doc/texinfo.texi (Node Descriptions): New node to document @nodedescription and @nodedescriptionblock. (Menus): Edit slightly. 2023-08-03 Gavin Smith * NEWS: reword slightly 2023-08-03 Gavin Smith * doc/texinfo.texi (Writing a Node, Writing a Menu, Menu Parts) (Raise/lower sections, Cross Reference Parts): Refer to 'texi2any' rather than 'makeinfo'. 2023-08-03 Gavin Smith * doc/texinfo.texi: Finish removing most @menu blocks, using @nodedescription instead. 2023-08-02 Gavin Smith * tp/Texinfo/Convert/Plaintext.pm (_convert) : If adding extra space before node description, count this space in the line length. 2023-08-02 Gavin Smith * doc/texinfo.texi (Hardcopy with TeX): Edit and condense. Reference another node for details of changing the paper size. (@smallbook): Say that 8.5x11" paper is called letter size. 2023-08-02 Gavin Smith * doc/texinfo.texi (Printing): Remove node, as it is duplicative of "Texinfo Mode Printing". Move a paragraph into "Hardcopy with TeX". 2023-08-02 Gavin Smith * doc/texinfo.texi (Emacs Shell Printing): Remove node, moving some material into "Hardcopy with TeX". 2023-08-02 Gavin Smith * doc/texinfo.texi (Printing with Emacs): Move node and sub-nodes to appendix. 2023-08-02 Gavin Smith Edits to manual * doc/texinfo.texi (Insertions): Remove @iftex block listing contents of chapter. (Requirements Summmary): Remove node as the content is covered elsewhere. 2023-08-02 Gavin Smith * doc/texinfo.texi: Continue removing @menu throughout. 2023-08-02 Gavin Smith * tp/Texinfo/Convert/Plaintext.pm (_convert) : Use the same code for @nodedescription and @nodedescriptionblock for adding extra spaces if needed to separate the description. Use the previous converter for adding the spaces and add two spaces rather than one. Suggestion from Patrice. 2023-08-01 Gavin Smith * doc/texinfo.texi: Start removing @menu throughout. 2023-08-01 Gavin Smith Remove extra space for @nodedescriptionblock * tp/Texinfo/Convert/Plaintext.pm (_convert) <@nodedescriptionblock>: Check if space is needed before adding space with current paragraph formatter, as the existing check would always be true and the space would be added, leading @nodedescriptionblock descriptions to be indented by an extra space compared with @nodedescription descriptions. 2023-08-01 Gavin Smith * tp/t/10menu.t (nodedescription_descriptions): Adjust test so it tests what was tested before with a node description only fitting on the next line in a menu. 2023-08-01 Gavin Smith * doc/texinfo.texi (PDF Colors): Move up a level as the section is not just related to @link. 2023-08-01 Gavin Smith * doc/texinfo.texi (Other Customization Variables) , : Update. 2023-08-01 Gavin Smith * tp/Texinfo/Convert/Plaintext.pm (_convert) : Multiply by 0.44 instead of dividing by 2.32 as this is easier to understand. 2023-08-01 Gavin Smith * doc/info-stnd.texi: Remove remaining @menu blocks and use @nodedescription where needed. 2023-08-01 Gavin Smith * tp/Texinfo/Convert/Plaintext.pm If AUTO_MENU_DESCRIPTION_FILLCOLUMN not set, increase the text width by 10% as existing Info menus often go beyond 72 columns in width. 2023-08-01 Gavin Smith * doc/texinfo.tex (\nodedescription, \nodedescriptionblock): Add stub implementations. * NEWS: Mention these new commands. 2023-07-31 Patrice Dumas nodedescription customization * doc/texinfo.texi (Other Customization Variables), tp/Texinfo/Common.pm b/tp/Texinfo/Common.pm (@variable_string_settables), tp/Texinfo/Convert/Plaintext.pm (_convert): add AUTO_MENU_DESCRIPTION_INDENT_LENGTH and AUTO_MENU_DESCRIPTION_FILLCOLUMN customization for @nodedescription* formatting. * tp/t/10menu.t (commands_in_nodedescriptionblock): set AUTO_MENU_DESCRIPTION_INDENT_LENGTH and AUTO_MENU_DESCRIPTION_FILLCOLUMN. 2023-07-31 Patrice Dumas @nodedescriptionblock output * tp/Texinfo/Convert/HTML.pm (convert_tree_new_formatting_context) (_convert_paragraph_type, _convert_menu_entry_type): add formatting of @nodedescriptionblock. Check if node description was formatted more than once, and use convert_tree_new_formatting_context in that case. pass block_command to convert_tree_new_formatting_context to be able tp avoid paragraph markup for the first nodedescriptionblock paragraph. * tp/Texinfo/Convert/Plaintext.pm (converter_initialize) (new_formatter, _convert): formatting of @nodedescriptionblock. Add 'indent_length' to format_context considered variables for new_formatter. Use text_element_context to set the counter for nodedescription and nodedescriptionblock. Add seen_node_descriptions to the converter state to be able to be silent if a node description is formatted more than once. Determine $description_indent_length by applying a factor on text_element_context max. * tp/Texinfo/Convert/HTML.pm (_convert_printindex_command): multiple pass argument of convert_tree_new_formatting_context usable as identifier. * tp/Makefile.tres, tp/t/10menu.t (commands_in_nodedescriptionblock): test multiple @nodedescriptionblock with commands in it. 2023-07-31 Patrice Dumas @nodedescriptionblock parsing * tp/Texinfo/Convert/*.pm, tp/Texinfo/ParserNonXS.pm (_handle_line_command, _handle_block_command), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command), (handle_block_command), tp/Texinfo/command_data.txt: add @nodedescriptionblock. Set extra node key node_long_description. Also associated with node_description unless there is also a @nodedescription. * tp/Makefile.tres, tp/t/10menu.t (nodedescriptionblock_descriptions): new test. 2023-07-30 Gavin Smith * tp/Texinfo/XS/parsetexi/separator.c (handle_comma): Keep copy of return value of next_text so to avoid a memory leak. 2023-07-30 Gavin Smith * tp/Texinfo/XS/parsetexi/end_line.c (parse_line_command_args) <@defindex>: Free index name when finished. * tp/Texinfo/XS/parsetexi/indices.c (add_index): Call strdup on argument to add_index_internal. 2023-07-30 Gavin Smith * tp/Texinfo/XS/parsetexi/tree.c (destroy_node_spec): Free 'out_of_tree_elements' array. 2023-07-30 Gavin Smith * tp/Texinfo/XS/parsetexi/macro.c (parse_macro_command_line): Free return value of read_command_name in the case that the name is bad. 2023-07-30 Gavin Smith * tp/Texinfo/XS/parsetexi/macro.c (unset_macro_record): Set 'macro_name' field of MACRO to null rather than an empty string. This prevents a memory leak if the macro record is reused and the pointer to the empty string is not freed. 2023-07-30 Gavin Smith * tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line) <@value>: Free a string in one case where it was not freed. 2023-07-29 Gavin Smith * README-hacking: hints on valgrind for tp/t tests 2023-07-29 Gavin Smith * tp/Texinfo/XS/parsetexi/def.c (split_delimiters): Free return value from u8_strconv_from_encoding. 2023-07-29 Gavin Smith * tp/Texinfo/XS/parsetexi/macro.c (expandline_macro_arguments): Free return value from parse_command_name. 2023-07-29 Gavin Smith * tp/Texinfo/XS/parsetexi/source_marks.c (relocate_source_marks): Free malloc-allocated int array at end of function. 2023-07-29 Gavin Smith * tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line) <@include>: Call free on return value of locate_include_file once done with value. 2023-07-29 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_expand_linemacro_arguments), tp/Texinfo/Convert/Texinfo.pm (convert_to_texinfo), tp/Texinfo/XS/parsetexi/convert.c (convert_to_texinfo_internal), tp/Texinfo/XS/parsetexi/element_types.txt, tp/Texinfo/XS/parsetexi/macro.c (expand_linemacro_arguments): use a new type, bracketed_linemacro_arg instead of bracketed_arg for the linemacro call element holding text. It is indeed different from bracketed_arg, which contains other elements and not directly text. * tp/Texinfo/ParserNonXS.pm (_handle_macro), tp/Texinfo/XS/parsetexi/macro.c (handle_macro): rename name extra macro call key as command_name and put it in info instead of extra. * tp/t/60macro.t (macro_expansion_in_multitable_prototype): add test of macro expansion in bracketed_arg in multitable prototypes. 2023-07-29 John Wheeler (tiny change) * install-info/install-info.c (output_dirfile): Do not insert a blank line before a new section if one is there already. This prevents the number of blank lines continually increasing if a section is repeatedly deleted and inserted. 2023-07-29 Gavin Smith * doc/texinfo-tex-test.texi (Index and paragraphs): Remove section as change making index command end paragraph was reverted. 2023-07-29 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_next_text): do not try to modify the output when there was an encoding error. Do not use Encode::decode to emit a warning in case of decoding error, as it may not, and it would not be the same message as the XS parser. Instead call Encode::decode with check argument set to Encode::FB_CROAK in an eval to get the perl message and the information that there was an error. Get the erroneous byte using Encode::decode with Encode::FB_QUIET. Then call Encode::decode again with the default check argument to get the decoded string. Based on Gavin input. * tp/tests/encoded/Makefile.am (EXTRA_DIST), tp/tests/encoded/list-of-tests (test_latin1_no_documentencoding): prepare a test with a letter in latin1 but no documentencoding to test for manuals that assumed latin1, especially for accented letters in person names. Do not set it because the XS and perl parsers lead to different outputs. 2023-07-29 Patrice Dumas * NEWS: mention stricter checks of input encoding, with more errors and warnings, especially for UTF-8. 2023-07-29 Patrice Dumas * texi2any.pl: if format and converted format differ, mention both in messages including converted format (only one case). * texi2any.pl: rename set_format_menu_from_cmdline_header as set_format_menu_from_cmdline_header_option. 2023-07-29 Patrice Dumas * tp/Texinfo/Convert/Unicode.pm (check_unicode_point_conversion): in case encoding is not attempted, still use an eval to catch invalid argument to hex(). 2023-07-29 Patrice Dumas * tp/Texinfo/Convert/Unicode.pm (check_unicode_point_conversion): with strict encoding, there is a warning for nonchar with perl 5.10.1 on solaris 11, though not on solaris 10. So for a range of perl versions, 5.10.0 to 5.13.8 we do not attempt the eval and check for the codepoints to be below 0x10FFFF early. 2023-07-28 Gavin Smith * doc/texinfo.tex (\deftypeline): Read arguments correctly, in the same way as \deftypefn. 2023-07-28 Patrice Dumas * tp/Makefile.tres, tp/t/60macro.t (line_end_accent_command_macro_call): add test for a command with braces expanded in a macro followed by end of line one line command. * tp/Texinfo/Common.pm (modify_tree): error out if argument not defined or not a HASH. 2023-07-28 Patrice Dumas * tp/Texinfo/Common.pm (element_associated_processing_encoding): rename element_extra_encoding_for_perl as element_associated_processing_encoding. Update callers. 2023-07-28 Patrice Dumas * tp/Texinfo/Common.pm (%non_formatted_brace_commands): add sortas. 2023-07-28 Patrice Dumas * tp/texi2any.pl (set_translations_encoding): reset translations encoding when COMMAND_LINE_ENCODING is reset. * tp/texi2any.pl: move code around for a more logical organization. 2023-07-28 Patrice Dumas * tp/Texinfo/Convert/Unicode.pm (check_unicode_point_conversion): check that the codepoint expands to valid UTF-8, by using :encoding(utf-8) instead of :utf8 on the stream, consistently with the conversion used to output UTF-8. 2023-07-28 Patrice Dumas * tp/Texinfo/Convert/Unicode.pm (%unicode_character_brace_no_arg_commands): add a comment to described the failure with charnames::vianame. * tp/Texinfo/Convert/Unicode.pm (_eight_bit_and_unicode_point) (unicode_point_decoded_in_encoding): exclude 127, \x{7F}, DEL from the characters considered to be decoded. It is probably actually decoded, but should not represent an accented character or a specific character. 2023-07-28 Patrice Dumas * tp/Texinfo/Convert/Unicode.pm (%unicode_character_brace_no_arg_commands): revert use of charnames::vianame as an attempt to fix tests of @sc{@aa{}} in perl 5.10.1 (on solaris). 2023-07-28 Patrice Dumas * tp/Texinfo/XS/parsetexi/Parsetexi.xs (init): use macro corresponding to bytes to get file paths in the C parser. The file path comes from Texinfo::ModulePath through Texinfo::XSLoader and is a byte string. 2023-07-28 Patrice Dumas * tp/Texinfo/XS/parsetexi/Parsetexi.xs: use # comments, not C comments. 2023-07-28 Patrice Dumas Set 'no utf8' in texi2any as we substitute file names in byte strings * tp/texi2any.pl: set 'no utf8'. Through rules in Makefile.am directory paths set through configure are substituted directly in strings in the code and we always use these strings as byte string, therefore we explicitly set no utf8 to be sure that strings in code will never be considered as character strings by Perl. 2023-07-28 Patrice Dumas * tp/Texinfo/XS/parsetexi/Parsetexi.pm, tp/Texinfo/XS/parsetexi/Parsetexi.xs (parse_file) (add_include_directory): use macro corresponding to bytes to get file paths in the C parser. Add comments explaining that file paths should be binary string, with any encoding, while other strings should be UTF-8 encoded. 2023-07-28 Patrice Dumas * tp/texi2any.pl: use $curdir from File::Spec->curdir() instead of '.'. 2023-07-27 Gavin Smith * doc/texinfo.tex (\unnsecentry, \unnsubsecentry): Correct spelling of command sequences. 2023-07-27 Patrice Dumas * tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser), tp/Texinfo/XS/parsetexi/Parsetexi.xs: pass parser conf strings as UTF-8 encoded bytes, and use the macro corresponding to bytes to get the strings in the C parser. 2023-07-27 Patrice Dumas * tp/Texinfo/XS/parsetexi/Parsetexi.pm (parse_texi_piece) (parse_texi_text, parse_texi_line), tp/Texinfo/XS/parsetexi/Parsetexi.xs (parse_piece, parse_string) (parse_text): encode strings passed to the C parser to UTF-8 explicitly to make those strings byte strings. In the C parser, use the macro corresponding to bytes to get the strings. 2023-07-27 Patrice Dumas * tp/Texinfo/XS/parsetexi/api.c (store_additional_info) (store_source_mark_list, element_to_perl_hash): add fatal() calls for impossible cases (info information element added twice, source mark element registered twice, parent set after the children). Add comments to explain that since args and contents are processed before extra information, element associated to extra often have their hv already set. 2023-07-27 Gavin Smith * doc/info-stnd.texi (Top): Eliminate @menu and use new @nodedescription command in sub-nodes. 2023-07-27 Gavin Smith * doc/info-stnd.texi (Xref Commands): Eliminate @menu and use new @nodedescription command in sub-nodes. 2023-07-27 Gavin Smith * tp/Texinfo/XS/xspara.c (xspara_add_text): Re-order arguments to fprintf to match intended order. 2023-07-27 Gavin Smith * doc/info-stnd.texi (Node Commands): Remove reference to "this window". Add index entry for 'execute-command'. (More Node Commands): Subordinate comment about 'global-next-node' and 'global-prev-node' to one of the items in the table. 2023-07-27 Gavin Smith * doc/info-stnd.texi (Xref Commands): Mention menus in this node. (Parts of an Xref): Change two cases of "cross reference" to "cross-reference". Place example earlier in node. Refer to a menu entry as an "entry". Link to different node in Texinfo manual. Fix capitalisation of "Texinfo". 2023-07-27 Gavin Smith * doc/info-stnd.texi (Node Commands): Do not link to emacs manual for explanation of M-x, as this contains much irrelevant material. State that M-x is 'execute-command'. Give example using previously documented command. Change ALT to Alt and CTRL to Ctrl, as well as META to Meta. 2023-07-27 Gavin Smith * doc/info-stnd.texi (Node Commands): Edit. Do not talk about 'the current window' as this is an unnecessary complication. Say more about the hierarchical structure of an Info file. 2023-07-27 Gavin Smith * doc/info-stnd.texi (Node Commands, More Node Commands): Split off 'More Node Commands' node with the less important commands in it. (Cursor Commands, Node Commands): Move description of M-x, C-u and keystroke notation earlier in manual. 2023-07-27 Gavin Smith * doc/info-stnd.texi (Node Commands): Reduce duplication in discussion of 'l' command and talk less about 'discarding nodes'. 2023-07-27 Gavin Smith * doc/info-stnd.texi (Node Commands) : Fix example to use the right key. (Stand-alone Info, Miscellaneous Commands): Change 'makeinfo' to 'texi2any'. 2023-07-27 Gavin Smith * doc/texinfo.texi (@verbatim): Change [tab] to as is more usual in other parts of the manual. 2023-07-26 Gavin Smith TOC @subsubsection number alignment * doc/texinfo.tex (\findsecnowidths): Also collect information on the widths of subsubsection numbers. (\numsubsecentry, \unsubsecentry): Call \retrievesecnowidth. (\dosubsubsecentry): Assign \secnowidth based on result. 2023-07-26 Gavin Smith TOC @subsection number alignment * doc/texinfo.tex (\findsecnowidths): Also collect information on the widths of subsection numbers. (\retrievesecnowidth): Take an argument, being the dimension register to assign to. (\numsecentry, \unsecentry): Call \retrievesecnowidth. (\dosubsecentry): Assign \secnowidth based on result. 2023-07-26 Patrice Dumas Simpler more consistent UTF-8 and unicode handling, stricter UTF-8 conversion * tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): map utf8 to utf-8 for input_encoding, to get the same output as the perl parser with mime_name and also because it is better. * tp/Texinfo/Common.pm (%encoding_name_conversion_map): map utf8 to utf-8 to always use the same conversion in perl, and prefer the strict conversion. * tp/Texinfo/Common.pm (encode_file_name, count_bytes): do not use utf-8 specific conversion, always use Encode encode and also use the strict conversion. * tp/Texinfo/Convert/Unicode.pm (_format_eight_bit_accents_stack), tp/Texinfo/ParserNonXS.pm (_new_text_input, _next_text): use the utf-8 encoding not utf8 for Encode encode strict conversion. * tp/Texinfo/Convert/HTML.pm (converter_initialize), tp/Texinfo/Convert/Unicode.pm: use charnames::vianame to obtain characters based on a string representation of unicode codepoints, as it is simple and this is what is described in the documentation. * tp/Texinfo/Convert/Unicode.pm (unicode_point_decoded_in_encoding): handle hex strings in the ascii range for 8bit encodings. * tp/Makefile.tres, tp/t/08misc_commands.t (documentencoding_utf8): new test with documentencoding utf8. 2023-07-26 Gavin Smith * doc/texinfo.tex (\summarycontents): Set \extrasecnoskip to restore extra space in the summary contents. 2023-07-26 Gavin Smith TOC section number spacing * doc/texinfo.tex (\labelspace): Narrow from 1em to 0.6em. This is used after section numbers in the table of contents. (\tocentry, \extrasecnoskip): Add an extra skip of \extrasecnoskip after the section number. (\dochapentry): Set \extrasecnoskip so to maintain the same space after chapter numbers in the table of contents. 2023-07-26 Gavin Smith * doc/texinfo.tex (\tocentry): Fix setting of \entrycontskip to work with last change. 2023-07-26 Gavin Smith TOC section number alignment * doc/texinfo.tex (\findsecnowidths): New macro, to get maximum width of section numbers for each chapter. (\contents): Call it. (\retrievesecnowidth): New macro to get the maximum widths. (\numchapentry, \appentry): Call it. (\tocentry, \secnowidth): Use \secnowdith for alignment if set to a non-zero value. (\dosecentry): Set \secnowidth based on result of \retrievesecnowidth. This aligns section titles in the table of contents if there are 10 or more sections in a chapter. Report from Karl. 2023-07-26 Patrice Dumas in HTML associate node without section to following heading command * tp/Texinfo/Convert/HTML.pm (%defaults, _convert_heading_command), NEWS, doc/texinfo.texi (HTML Customization Variables), tp/Texinfo/Common.pm (@variable_string_settables), tp/Texinfo/Convert/Utils.pm (find_root_command_next_heading_command): add find_root_command_next_heading_command() to return a heading command found before contents that could be formatted. Use that in HTML heading formating such as not to output a heading if there is a node not associated to sectioning command but followed by a @*heading command. Use USE_NEXT_HEADING_FOR_LONE_NODE to customize that, set in the default case. * tp/Makefile.tres, tp/t/html_tests.t (headings_after_lone_nodes): new test to test association of lone node with next @*heading command. 2023-07-25 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_default_format_navigation_panel): do not output buttons corresponding to space separators if there is no button before. Do not output the paragraph in the navigation panel div if there is no navigation panel buttons output. 2023-07-25 Patrice Dumas Complete HTML menus with nodedescription * tp/Texinfo/Convert/HTML.pm (_convert_menu_entry_type): replace empty description by node_description extra information. * tp/Texinfo/Convert/Plaintext.pm (_convert): more robust determination of empty menu description. * tp/t/results/menu/nodedescription_descriptions.pl (nodedescription_descriptions): fix type in @verb name. 2023-07-25 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_expand_linemacro_arguments), tp/Texinfo/XS/parsetexi/macro.c (expand_linemacro_arguments): a comment on a linemacro defined command invokation (not in braces) is not part of the arguments, and is left after the expansion as agreed with Gavin. * tp/Makefile.tres, tp/t/65linemacro.t (comment_on_linemacro_call_out_of_braces) (comment_on_linemacro_call_macro_expansion): more tests of comments on linemacro call lines. 2023-07-25 Patrice Dumas * tp/Texinfo/Convert/ParagraphNonXS.pm (new): rename 'last_char' as 'last_letter'. a Always set 'last_letter', to an empty string when it was previously undef. * tp/Texinfo/Convert/ParagraphNonXS.pm (end, _add_next, add_text), tp/Texinfo/XS/xspara.c (xspara__end_line, xspara_end) (xspara_add_text): set last_letter to the last character when it is space or end of line, or fullwidth character. Do not unset last_letter in _add_pending_word. Unset last_letter in end. * tp/Texinfo/Convert/ParagraphNonXS.pm ($end_sentence_characters): rename $end_sentence_character as $end_sentence_characters. * tp/Texinfo/XS/xspara.c (after_punctuation_characters) (end_sentence_characters): use defin for the strings to be sure to avoid errors in code (] was missing in one place). * tp/Texinfo/Convert/ParagraphNonXS.pm: try to have all debug messages as one string. * tp/t/paragraph.t: more tests with fullwidth characters, including latin fullwidth characters that can be upper case. * tp/Makefile.tres, tp/t/plaintext_tests.t (split_punctuation_detection_in_commands): new test with all the puctuation related character tested and with @-commands. 2023-07-24 Gavin Smith No casts in isascii_* calls * tp/Texinfo/XS/parsetexi/end_line.c (isascii_alpha), * tp/Texinfo/XS/parsetexi/parser.c (isascii_alnum): Remove casts to 'unsigned char' from call sites. These should not be necessary as we check in the functions that the argument is in the ASCII range. 2023-07-24 Patrice Dumas * tp/Texinfo/Convert/Plaintext.pm (_convert): add a space after a menu entry before the added menu entry description if there is none. * tp/Texinfo/Convert/Plaintext.pm: change in spacing. * tp/t/10menu.t (nodedescription_descriptions): more tests with long node and name entries. 2023-07-24 Patrice Dumas * tp/Texinfo/Convert/ParagraphNonXS.pm (_add_pending_word, _add_next): rearrange code to be more similar to XS Paragraph. 2023-07-24 Patrice Dumas * tp/Texinfo/XS/xspara.c (xspara__print_escaped_spaces): really add this function (rename from print_escaped_spaces). 2023-07-24 Patrice Dumas * tp/Texinfo/XS/xspara.c (xspara__add_pending_word): reset state.space_counter too when indent and !state.unfilled. * tp/Texinfo/XS/xspara.c (xspara__print_escaped_spaces) (xspara__add_pending_word, xspara_end, xspara__add_next) (xspara_add_text): add debug similar to the perl Paragraph module. Enabled by changing a variable in the source file and recompiling. 2023-07-23 Patrice Dumas Complete Plaintext/Info menus with nodedescription * tp/Texinfo/Convert/Plaintext.pm (_convert): use nodedescription if a menu_entry_description is empty, using a new paragraph container. * tp/Texinfo/Convert/ParagraphNonXS.pm (counter), tp/Texinfo/XS/XSParagraph.xs (xspara_counter), tp/Texinfo/XS/xspara.c (xspara_counter): add counter() to get the current column counter value. * tp/Makefile.tres, tp/t/10menu.t (nodedescription_descriptions): new test to test @nodedescription added descriptions. 2023-07-23 Gavin Smith Fix parsetexi compilation errors * tp/Texinfo/XS/parsetexi/macro.c (expand_linemacro_arguments): Place case label after block variable declarations to prevent gcc error 'a label can only be part of a statement and a declaration is not a statement'. 2023-07-23 Patrice Dumas @nodedescription parsing in texi2any * tp/Texinfo/ParserNonXS.pm (%contain_full_text_commands) (_handle_line_command), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command), tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting), tp/Texinfo/command_data.txt: parse @nodedescription, adding extra information about the current node in and in the current node too in extra node_description. * tp/t/test_utils.pl (@contents_keys): add node_description. * tp/Makefile.tres, tp/t/08misc_commands.t (nodedescription): test parsing of @nodedescription. 2023-07-23 Patrice Dumas * doc/tp_api/Makefile.am (AM_MAKEINFOFLAGS): add the TREE_TRANSFORMATIONS complete_tree_nodes_menus, otherwise the Index appendix node in texi2any_internals_indices.texi concatenated file is not in any menu. 2023-07-23 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_expand_macro_arguments, _handle_macro), tp/Texinfo/XS/parsetexi/macro.c (expand_macro_arguments) (handle_macro): pass the leading brace and possible spaces following the leading brace to expand_macro_arguments instead of handling them in handle_macro. Add space before brace to "spaces_after_cmd_before_arg" info key as an element for macros call elements. 2023-07-23 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_new_value_element) (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (new_value_element, process_remaining_on_line) : add space before brace to "spaces_after_cmd_before_arg" info key as an element, similar to other brace commands. 2023-07-23 Patrice Dumas * tp/Makefile.tres, tp/t/65linemacro.t (protection_of_end_of_line_by_command): add specific test of protection of end of line by @ in linemacro call. From Gavin. 2023-07-22 Patrice Dumas * tp/t/60macro.t (non_ascii_in_macro_name): skip test if /a regex flag is not available. 2023-07-22 Patrice Dumas autoconf test for conversion from EUC-CN to UTF-8 by iconv * configure.ac, tp/Makefile.am, tp/Texinfo/ModulePath.pm.in, tp/t/formats_encodings.t (multiple_include_encodings), tp/t/info_tests.t (chinese_mixed_with_en_EUC_CN): add a runtime check whether iconv converts EUC-CN to UTF-8. Pass the result through Makefile.am and Texinfo::ModulePath. 2023-07-22 Patrice Dumas * tp/Texinfo/XS/parsetexi/api.c (parse_file), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line), tp/Texinfo/XS/parsetexi/macro.c (parse_macro_command_line), tp/Texinfo/XS/parsetexi/parser.c (check_line_directive): rename char variables used as a temporary placeholder for a character replaced by an end of string as saved to be more explicit and consistent. 2023-07-22 Patrice Dumas * tp/Texinfo/Common.pm, tp/Texinfo/XS/parsetexi/input.c: explain the mapping of US-ASCII encoding to ISO-8859-1 for compatibility with old manuals in which US-ASCII could have been considered to be an alias for ISO-8859-1. Based on Gavin input and looking at old Texinfo releases code and manuals. 2023-07-22 Patrice Dumas * tp/Texinfo/XS/parsetexi/end_line.c (isascii_alpha) (parse_line_command_args, end_line_starting_block) (end_line_misc_line), tp/Texinfo/XS/parsetexi/handle_commands.c (parse_rawline_command), tp/Texinfo/XS/parsetexi/macro.c (parse_macro_command_line), tp/Texinfo/XS/parsetexi/parser.c (isascii_alnum, read_command_name, read_flag_name): add isascii_alpha to replace isalpha and isascii_alnum to replace isalnum to make sure that the character is also ascii, both because we want to select ascii characters only, and because we do not want to depend on the locale. * tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): replace uses of isspace by other str* functions applied on whitespace_chars to avoid being dependent on the locale as isspace is. * tp/Texinfo/ParserNonXS.pm, tp/Texinfo/XS/parsetexi/end_line.c, tp/Texinfo/XS/parsetexi/parser.c: use more consistently \d instead of [0-9] or [[:digit:]] in the perl parser, and use consistently digit_chars in the XS parser for a more consistent code and easier comparison between the two codes. 2023-07-22 Patrice Dumas Same parsing of @macro line for both parsers * tp/Texinfo/ParserNonXS.pm (_parse_macro_command_line), tp/Texinfo/XS/parsetexi/macro.c (parse_macro_command_line): use the same code to parse @macro line for both parsers to get the same parsing and same errors message. * tp/Makefile.tres, tp/t/60macro.t (zero_argument_comment) (non_ascii_in_macro_name): new tests, with comment on zero arguments @macro line and non ascii character in macro name. 2023-07-22 Patrice Dumas * tp/Texinfo/Common.pm (element_extra_encoding_for_perl) (set_output_encodings), tp/Texinfo/Convert/Converter.pm (txt_image_text), tp/Texinfo/Convert/IXIN.pm (output_ixin), tp/Texinfo/Convert/Plaintext.pm (converter_initialize), tp/Texinfo/Translations.pm (gdt): check if encoding name is not defined, or not empty, but not that it is not '0'. * tp/Texinfo/Convert/Converter.pm (txt_image_text), tp/Texinfo/Convert/DocBook.pm (_convert), tp/Texinfo/Convert/Info.pm (format_image), tp/Texinfo/Convert/Plaintext.pm (format_image): do not remove last end of line in txt_image_text, but in callers. * tp/ext/highlight_syntax.pm (highlight_process): check close() errors. 2023-07-22 Patrice Dumas * tp/Texinfo/Convert/Converter.pm (txt_image_text): decode file name for error messages. 2023-07-22 Patrice Dumas * tp/tests/encoded/osé_utf8_no_setfilename.texi: synchronize with tp/tests/encoded/osé_utf8.texi. 2023-07-22 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (html_image_file_location_name): add leading dot to extension used in case of error. 2023-07-22 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_input_push_file, _next_text) (_end_line_misc_line), tp/Texinfo/Convert/HTML.pm (_process_css_file): do not use binmode to reset input encoding, as with buffering in input the file content is read ahead with the previous encoding. Instead set binary mode and decode upon getting the line. * tp/Makefile.am (test_files), t/include/chapter_*.texi, t/include/documentdescription_EUC_CN.texi, t/input_files/multiple_include_encodings.texi, tp/Makefile.tres, tp/t/formats_encodings.t (multiple_include_encodings): new test to test multiple encodings in a Texinfo manual with included files using different encodings. * tp/tests/encoded/Makefile.am (EXTRA_DIST), tp/tests/Makefile.onetst, tp/tests/encoded/list-of-tests (non_ascii_test_info), tp/tests/encoded/osé_utf8.texi, tp/tests/encoded/txt_çimage.txt: add image text file to osé_utf8.texi. Add an info output test for osé_utf8.texi. 2023-07-21 Patrice Dumas * tp/Texinfo/Common.pm (%encoding_name_conversion_map) (element_extra_encoding_for_perl, set_output_encodings), tp/Texinfo/ParserNonXS.pm (_end_line_misc_line): add mapping of encodings to encodings that extend them to use the extending encoding for conversion, as is done for us-ascii to ISO-8859-1 in XS parser. * tp/t/formats_encodings.t (char_us_ascii_latin1_in_refs), tp/Makefile.tres: add test with @documentencoding us-ascii and non-ascii ISO-8859-1 encoded characters. 2023-07-21 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (%parser_state_initialization) (get_parser_info, _end_line_misc_line, _handle_close_brace): set info information in get_parser_info, set input_encoding_name as a parser state. This allows not to set global parser information in parse_texi_line, as is done in the XS parser. * tp/Texinfo/XS/parsetexi/api.c (reset_parser_except_conf) (build_global_info), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line), tp/Texinfo/XS/parsetexi/input.c (set_input_encoding, reset_encoding_list), tp/Texinfo/XS/parsetexi/parser.c (wipe_global_info, wipe_global_info), tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): remove global_info.input_encoding_name, and rename input_encoding_name as global_input_encoding_name to be used instead, to have only one variable used. Set global_input_encoding_name only if the iconv conversion could be initialized. Set input encoding to utf8 after resetting the variables, not before. Rename current_encoding as current_encoding_conversion. rename struct ENCODING as ENCODING_CONVERSION. * tp/Texinfo/XS/parsetexi/input.c (set_input_encoding) (encode_file_name): distinguish encoding name used in conversion and input encoding name. * tp/Makefile.am (test_files), tp/Makefile.tres, tp/maintain/regenerate_latin1_tests.sh, tp/t/formats_encodings.t (char_utf8_latin1_in_refs), tp/t/input_files/char_latin1_latin1_in_refs.texi, tp/t/input_files/char_us_ascii_latin1_in_refs.texi, tp/t/input_files/char_utf8_latin1_in_refs.texi: change file name, minor changes in files and generated files, generate a file with US-ASCII documentencoding containing latin1 encoded characters, not ussed for now. 2023-07-21 Patrice Dumas Use any input encoding known by iconv in the XS parser * doc/texinfo.texi (@code{@@documentencoding}), tp/Texinfo/XS/parsetexi/api.c (reset_parser_except_conf), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line), tp/Texinfo/XS/parsetexi/input.c (set_input_encoding) (convert_to_utf8, encode_file_name, reset_encoding_list): use a list of encodings and iconv handlers based on the @documentencoding found in the manual. Always set utf-8 at the first position in the list. Use any encoding known by iconv instead of a fixed list of known encodings. Remove enum character_encoding. * tp/Texinfo/ParserNonXS.pm (_end_line_misc_line), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line) : trim non-ascii characters and keep only alphanumeric characters, - and _ in encoding names. iconv also seems to trim non alphanumeric non - _ characters. Consider an encoding not handled by iconv or not found in perl parser during parsing to be unhandled. * tp/Texinfo/Common.pm (get_perl_encoding) (element_extra_encoding_for_perl), tp/Texinfo/ParserNonXS.pm (%parser_state_initialization, parse_texi_text, _input_push_file) (get_parser_info, parse_texi_file, _encode_file_name), tp/Texinfo/XS/parsetexi/Parsetexi.pm (get_parser_info): add get_perl_encoding function in Texinfo::Common to set {'info'}->{'input_perl_encoding'} based on XS parser code. Use this function in both parsers. In the perl parser, add get_parser_info function to call get_perl_encoding instead of doing it while parsing, and call get_parser_info in parse_* functions as required, similar to code in the XS parser. Consider an encoding not found by perl to be unrecognized. * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/08misc_commands.t (documentencoding_zero), tp/t/info_tests.t (chinese_mixed_with_en_EUC_CN), tp/t/input_files/chinese_mixed_with_en_EUC_CN.texi: two new tests related to encodings, one using EUC-CN an ascii compatible encodding that was not available before in the XS parser. 2023-07-20 Patrice Dumas * tp/t/65linemacro.t (end_conditional_in_linemacro) (begin_conditional_in_linemacro, block_begin_end_in_linemacro_call): add another conditional test in end_conditional_in_linemacro, add begin_conditional_in_linemacro and block_begin_end_in_linemacro_call similar tests. 2023-07-20 Patrice Dumas * tp/t/65linemacro.t (recursive_linemacro_in_call): new test. 2023-07-20 Patrice Dumas * tp/t/60macro.t (arobase_brace_in_macro_call), tp/t/65linemacro.t (arobase_brace_in_linemacro_call): add tests with @{ and @} in macro and linemacro calls. * tp/t/65linemacro.t (spaces_after_command_in_call) (spaces_after_unknown_command_in_call): rename spaces_after_command_in_call as spaces_after_unknown_command_in_call and use a known brace command in the new version of spaces_after_command_in_call. * tp/t/65linemacro.t (spaces_after_macro_linemacro_commands_in_call): add test. 2023-07-20 Patrice Dumas * tp/t/60macro.t (verb_with_arobase_in_macro_call) (verb_with_brace_in_macro_call, tp/t/65linemacro.t (verb_in_linemacro_call, verb_with_arobase_in_linemacro_call) (verb_with_brace_in_linemacro_call), tp/Makefile.tres: more tests for @verb in macro and linemacro calls. 2023-07-20 Patrice Dumas * tp/t/65linemacro.t (comment_in_linemacro_call) (comment_in_one_argument_linemacro_call) (comment_at_end_of_linemacro_call): new tests with comments and linemacro. 2023-07-20 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_handle_macro), tp/Texinfo/XS/parsetexi/macro.c (handle_macro): put checks related to expansion before the expansion, as during the expansion, the text may go past the call. In particular for user defined linemacro which generally get the final new line from following text. * tp/t/65linemacro.t (call_macro_in_linemacro_body) (call_macro_in_linemacro_call, recursive_linemacro_in_body), tp/Makefile.tres: new @linemacro tests. * tp/Texinfo/XS/parsetexi/macro.c (expand_linemacro_arguments): change code to be more readable and compact. * tp/Texinfo/XS/parsetexi/debug.c (debug_print_protected_string): special message if input_string is 0. 2023-07-19 Patrice Dumas Reimplement linemacro arguments expansion in a separate function * tp/Texinfo/ParserNonXS.pm (_expand_linemacro_arguments) (_end_line_misc_line, _end_line_def_line, _end_line, _handle_macro) (_handle_open_brace, _process_remaining_on_line, _parse_texi), tp/Texinfo/XS/parsetexi/context_stack.c (context_name), tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line) (end_line_misc_line, end_line), tp/Texinfo/XS/parsetexi/macro.c (count_toplevel_braces, set_toplevel_braces_nr) (expand_linemacro_arguments, handle_macro), tp/Texinfo/XS/parsetexi/parser.c (linecommand_expansion_delimiters) (process_remaining_on_line, parse_texi), tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace): use the expand_linemacro_arguments function directly in handle_macro to parse the linemacro defined user commands arguments, such that they are expanded in a second step only. @-command are taken into account to protect spaces or braces, braces are matched, spaces separate arguments and what remains on the line is the last argument. In the XS parser, use a specific counter count_toplevel_braces, and use set_toplevel_braces_nr to count closed braces. Remove code related to the previous implementation. * tp/Texinfo/ParserNonXS.pm (%parser_state_initialization) (_end_line_def_line, _process_remaining_on_line), tp/Texinfo/XS/parsetexi/api.c (reset_parser_except_conf), tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): remove global state in_parsing_only, which is not relevant with the new implementation. 2023-07-18 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_parse_command_name) (_process_remaining_on_line), tp/Texinfo/XS/MiscXS.xs (xs_parse_command_name), tp/Texinfo/XS/misc.c (xs_parse_command_name): use more similar interface for parse_command_name in the perl parser than in the XS parser. 2023-07-18 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_parse_command_name, _parse_texi_regex) (_process_remaining_on_line), tp/Texinfo/XS/MiscXS.xs (xs_parse_command_name, xs_parse_texi_regex), tp/Texinfo/XS/misc.c (xs_parse_command_name, xs_parse_texi_regex), tp/Texinfo/XS/parsetexi/parser.c (parse_command_name) (process_remaining_on_line): process text starting with @ in one place. Determine first if starting by @ (in _parse_texi_regex in the perl parser) and afterwards determine the command name, with a new function parse_command_name. 2023-07-17 Gavin Smith Multi-line TOC entry alignment * doc/texinfo.tex (\entrycontskip): new dimen. (\entry): Use \entrycontskip for indentation of continuation lines. When splitting across several lines, cancel adjustments made to allow a slightly longer, single line. When entry text could cross over more than two lines, use the same line length for all lines. (\tocentry): New macro. Handle concatenation of section number, space and section title, before calling \entry. When a TOC entry has a section number, set \entrycontskip to the width of the number and a following space so that any continuation lines in the entry will be aligned. (\partentry, \numchapentry, \shortchaptentry, \appentry) (\unnchapentry, \shortunnchapentry, \numsecentry, \unsecentry) (\numsubsecentry, \unnsubsecentry, \numsubsubsecentry) (\unnsubsubsecentry, \dochapentry, \dosecentry, \dosubsecentry) (\dosubsubsecentry): Calls to \tocentry (previously alias for \entry) updated. Report from Karl. 2023-07-16 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_misc_line): inline and remove _encoding_alias, for simpler code more similar to XS parser. * tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): update comments and move a variable declaration. 2023-07-16 Patrice Dumas * tp/Texinfo/Convert/IXIN.pm (output_ixin): take encoding information from image element. 2023-07-16 Patrice Dumas * tp/Texinfo/Convert/Converter.pm (encoded_input_file_name), tp/Texinfo/Convert/Utils.pm (expand_verbatiminclude) (encoded_input_file_name): put encoded_input_file_name in Texinfo::Convert::Utils, and make encoded_input_file_name in Texinfo::Convert::Converter a wrapper around it. Add an optional argument to encoded_input_file_name to specify the input file encoding. Use encoded_input_file_name in expand_verbatiminclude with the optional argument. * tp/texi2any.pl: initialize correctly the converter used when SORT_ELEMENT_COUNT is set. Use the converter more consistently to find customization variables and methods. 2023-07-16 Patrice Dumas * tp/t/test_utils.pl (test): OUTPUT_PERL_ENCODING should always be set in converters, so use nly that variables to set output encoding. 2023-07-16 Patrice Dumas * tp/t/08misc_commands.t (comment_space_command_on_line): remove redundant xml test. 2023-07-15 Patrice Dumas * tp/Texinfo/XS/parsetexi/Parsetexi.pm (get_parser_info), tp/Texinfo/XS/parsetexi/api.c (build_global_info), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line) , tp/Texinfo/XS/parsetexi/parser.c (wipe_global_info): do not set input_perl_encoding in the XS parser, set in perl code in Parsetexi.pm get_parser_info. 2023-07-15 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_misc_line), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): remove input_perl_encoding from documentencoding extra hash. 2023-07-15 Patrice Dumas Replace extra input_perl_encoding by input_encoding_name in elements * tp/Texinfo/Common.pm (element_extra_encoding_for_perl), tp/Texinfo/Convert/Converter.pm (txt_image_text), tp/Texinfo/Convert/Text.pm (converter), tp/Texinfo/Convert/Utils.pm (expand_verbatiminclude), tp/Texinfo/ParserNonXS.pm (_end_line_misc_line, _handle_close_brace), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line), tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): use input_encoding_name instead of input_perl_encoding in tree extra elements. Add element_extra_encoding_for_perl to Texinfo::Common to find perl encoding based on element extra input_encoding_name. 2023-07-15 Patrice Dumas * tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace) : handle a non-ascii verb delimiter. * tp/Makefile.tres, tp/t/formats_encodings.t (verb_delimiter_not_ascii): new test to test non ascii @verb delimiters. 2023-07-15 Patrice Dumas * tp/t/formats_encodings.t (dotless_argument_non_ascii): add the test of braced non-ascii argument of @dotless. 2023-07-15 Patrice Dumas * tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line) : use an element string to get a whole UTF-8 character in error message on dotless argument. * tp/Makefile.tres, tp/t/formats_encodings.t (dotless_argument_non_ascii): new test to test the dotless incorrect argument error message with a non-ascii character. 2023-07-15 Gavin Smith * tp/t/formats_encodings.t (accent_argument_non_ascii): Enable. 2023-07-15 Gavin Smith * tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line) : Count UTF-8 continuation bytes for character following accent command. Report from Patrice. 2023-07-15 Patrice Dumas * tp/Makefile.tres, tp/t/formats_encodings.t: add accent_argument_non_ascii test. Set it to be skipped as the result is incorrect with the XS parser for now. 2023-07-15 Patrice Dumas * tp/Texinfo/Convert/Plaintext.pm (_convert): avoid undef warning with definfoenclose by checking that $brace_commands{} exists. Change in spaces. 2023-07-15 Patrice Dumas Distinguish input text macro context and input text macro expansion * tp/Texinfo/ParserNonXS.pm (_input_push_text, _next_text) (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/input.c (next_text, input_push_text), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): the macro name passed to input_push_text means that the text comes from macro expansion. The input stack is used to determine if alreay in macro context. 2023-07-14 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_parse_macro_command_line) (_expand_macro_arguments, _end_line, _handle_macro) (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line), tp/Texinfo/XS/parsetexi/macro.c (parse_macro_command_line, expand_macro_arguments, handle_macro), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): synchronize debug messages, move code around to be more consistent across parsers, * tp/Texinfo/ParserNonXS.pm (_handle_comma): remove retval return value, it is only set to the same value as the default in the caller. * tp/Texinfo/ParserNonXS.pm (_new_macro, _process_remaining_on_line): add _new_macro function to be more in line with XS parser. * tp/Texinfo/ParserNonXS.pm (_expand_macro_body, _handle_macro): allow macrobody to be undef if there is no content, similar to XS parser. 2023-07-14 Patrice Dumas * tp/t/60macro.t: add spaces after bad macro specification argument. 2023-07-14 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (run_stage_handlers): do not output the code handler reference, instead use an index to determine the handler. 2023-07-14 Gavin Smith * NEWS: mention @linemacro 2023-07-14 Gavin Smith * doc/texinfo.texi (Generic Definition Commands), NEWS: Document @deftypeline. 2023-07-12 Gavin Smith * NEWS: remove reverted change about index commands ending paragraphs. 2023-07-14 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_misc_line) (_handle_menu_entry_separators, _handle_line_command) (_handle_open_brace, _handle_comma), tp/Texinfo/XS/parsetexi/handle_commands.c (parse_rawline_command) (handle_line_command), tp/Texinfo/XS/parsetexi/menus.c (handle_menu_entry_separators), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c (handle_comma): synchronize debug messages across parsers. * tp/Texinfo/ParserNonXS.pm (_handle_open_brace), tp/Texinfo/XS/parsetexi/separator.c (handle_comma): rearrange code related to inline type. 2023-07-14 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_html_set_pages_files): set up a reproducible order following the tree units order for the call of set_file_path. 2023-07-14 Patrice Dumas * tp/Texinfo/XS/parsetexi/debug.c (debug_print_element) (debug_print_protected_string): use fputs instead of debug_nonl to output a string when there is no need for formats. 2023-07-14 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_handle_open_brace) (_process_remaining_on_line): handle @verb delimiter determination in handle_open_brace to do the same as in the XS parser. 2023-07-14 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace): call new_line after verb opening brace if the line is an empty string in case the delimiter is in macro expansion. 2023-07-14 Patrice Dumas * tp/Makefile.tres, tp/t/60macro.t: add macro_for_verb test. 2023-07-14 Patrice Dumas * tp/Makefile.tres, tp/t/65linemacro.t: add end_conditional_in_linemacro test. 2023-07-14 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line, _handle_macro) (_handle_menu_entry_separators, _handle_open_brace) (_process_remaining_on_line, _parse_texi): use exactly the whitespace_chars_except_newline chracters from the XS parser in matching. * tp/Texinfo/ParserNonXS.pm (_debug_protect_eol) (_process_remaining_on_line): use a function to protect eol in debug messages. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): add debug message for form feeds. 2023-07-13 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_expand_macro_arguments), tp/Texinfo/XS/parsetexi/macro.c (expand_macro_arguments): simplify XS parser code. More consistent code. 2023-07-13 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_close_current, _expand_macro_arguments) (_handle_menu_entry_separators, _handle_close_brace) (_process_remaining_on_line, _parse_line_command_args), tp/Texinfo/XS/parsetexi/close.c (close_all_style_commands) (close_commands), tp/Texinfo/XS/parsetexi/context_stack.c (context_name), p/Texinfo/XS/parsetexi/macro.c (expand_macro_arguments), tp/Texinfo/XS/parsetexi/menus.c (handle_menu_entry_separators), tp/Texinfo/XS/parsetexi/parser.c (abort_empty_line, process_remaining_on_line, parse_texi), tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): synchronize debug messages. * tp/Texinfo/ParserNonXS.pm (_expand_macro_arguments), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): more similar codes for both parsers. 2023-07-13 Patrice Dumas * tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser), tp/Texinfo/XS/parsetexi/Parsetexi.xs (reset_parser), tp/Texinfo/XS/parsetexi/api.c (reset_parser): pass directly DEBUG configuration value to reset_parser() to override previous parser configuration, as the configuration isn't already reset and the new configuration is set afterwards. Do not call debug() in reset_parser() but use directly the debugging configuration input value. 2023-07-13 Patrice Dumas * doc/texi2any_api.texi (Error Reporting in User Defined Functions), tp/Texinfo/Report.pm (line_warn, line_error), tp/Texinfo/XS/parsetexi/Parsetexi.pm (_get_errors), tp/Texinfo/XS/parsetexi/errors.c (debug_error_warning_message) (line_error_internal): output directly some messages for warning/errors in XS parser as is done in perl parser, using the debug_error_warning_message function. To avoid a redundant message being output when calling Texinfo::Report::line_warn or line_error from Parsetexi.pm _get_errors, add an argument to line_warn/line_error to silence the messages output normally when DEBUG is set. * tp/Texinfo/ParserNonXS.pm (parser, simple_parser) (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/close.c (close_container), tp/Texinfo/XS/parsetexi/debug.c (debug_protect_eol) (debug_print_protected_string), tp/Texinfo/XS/parsetexi/input.c (next_text), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line, parse_texi): synchronize debug messages. 2023-07-12 Gavin Smith * doc/texinfo-tex-test.texi (Definitions): Add a needed "@clear txidefnamenospace" before examples. 2023-07-12 Gavin Smith No custom gendocs template any more * doc/gendocs.chapter/gendocs_template: Remove. Not needed any more following gnulib update. * doc/Makefile.am (wwwdoc-build): Update. * README-hacking: mention necessity of installing texinfo.tex to run "make wwwdoc-build". 2023-07-12 Gavin Smith No space for @ def line continuation * doc/texinfo.texi (\argremovespace): Remove macro handling @(newline). This should only occur in line arguments on @def* lines and we do not need the complicated handling of it generally. Handling @(newline) in here makes it very hard to make any changes that just affect @def*. (\argremovespace): Reinstate definition from 2003-11-22 to handle stripping a space token from the end of an argument, which is simpler and all that is needed for most calls. (\printname, \defunargs): Make @ sequence expand to nothing. This matches the behaviour of texi2any. bug-texinfo discussion, 7 Apr 2023. 2023-07-12 Gavin Smith XS file copyright notices * tp/Texinfo/XS/MiscXS.xs * tp/Texinfo/XS/XSParagraph.xs, * tp/Texinfo/XS/parsetexi/Parsetexi.xs: Move or add copyright notice further up in files. 2023-07-12 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (%parser_state_initialization) (_end_line_def_line, _process_remaining_on_line), tp/Texinfo/XS/parsetexi/api.c (reset_parser_except_conf), tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): add in_parsing_only state set when only parsing should process, not any processing (error message, rearranging of the tree...). * tp/Texinfo/ParserNonXS.pm (%parser_state_initialization, _next_text) (_process_remaining_on_line): remove value_stack, use a simpler integer as indicator of the number of values expansion, value_expansion_nr, as in the XS parser. * tp/Texinfo/XS/parsetexi/close.c (close_commands): no debug message if stopping closing at ET_root_line. * tp/Texinfo/ParserNonXS.pm (_close_all_style_commands, _next_text) (_end_line_misc_line, _end_line_starting_block, _end_line) (_handle_other_command, _handle_open_brace, _parse_line_command_args), tp/Texinfo/XS/parsetexi/close.c (close_current), tp/Texinfo/XS/parsetexi/context_stack.c (context_name), tp/Texinfo/XS/parsetexi/end_line.c (parse_line_command_args) (end_line_starting_block, end_line_misc_line, end_line), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_brace_command), tp/Texinfo/XS/parsetexi/parser.c (parent_of_command_as_argument) (process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace, handle_close_brace), tp/Texinfo/XS/parsetexi/source_marks.c (place_source_mark): add context_name function in XS parser. Modify debug messages, synchronize debug messages across both parsers. 2023-07-12 Patrice Dumas * tp/Texinfo/XS/parsetexi/close.c (remove_empty_content) (close_container, close_commands), tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line, end_line_starting_block, end_line), tp/Texinfo/XS/parsetexi/parser.c (merge_text, abort_empty_line) (isolate_last_space), tp/Texinfo/XS/parsetexi/source_marks.c (place_source_mark): do not use print_element_debug without free'ing the result string, instead use debug_print_element more to avoid memory leaks. Report and idea of fix from Gavin. 2023-07-11 Gavin Smith NEWS: Mention CHECK_NORMAL_MENU_STRUCTURE change. 2023-07-11 Gavin Smith Warnings for missing menu entries * tp/Texinfo/Structuring.pm (complete_node_tree_with_menus): Give a warning for missing menu entries even if CHECK_NORMAL_MENU_STRUCTURE is not set. Report from Bruno Haible. 2023-07-11 Gavin Smith * doc/texinfo.texi: Fix structuring errors revealed by CHECK_NORMAL_MENU_STRUCTURE=1. 2023-07-10 Patrice Dumas * util/texinfo.dtd: fix typo in link attribute declaration. 2023-07-10 Gavin Smith @link for "Texinfo XML" * tp/Texinfo/Convert/TexinfoMarkup.pm (%commands_args_elements): Add 'link'. (_convert): Handle @link like @inforef. * util/texinfo.dtd: Add link element and its subelements. 2023-07-10 Gavin Smith * doc/texinfo.texi (@link), NEWS: Document @link. * doc/texinfo.texi (Info Format FAQ): Mention possibility of @link. 2023-07-10 Gavin Smith * util/texinfo.dtd: Add 'link'. 2023-07-10 Gavin Smith * tp/t/converters_tests.t (link): New test. 2023-07-10 Gavin Smith @link for DocBook * tp/Texinfo/Convert/DocBook.pm (_convert): Handle @link. 2023-07-09 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_close_current), tp/Texinfo/XS/parsetexi/close.c (close_current): use the current element returned by end_line_misc_line and end_line_starting_block, and get the parent/call close_container for each type. * tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line): unset parent field of linemacro_call container in source mark. * tp/Texinfo/ParserNonXS.pm (_close_container), tp/Texinfo/XS/parsetexi/close.c (close_container): output a debug message even if there are source marks. * tp/Texinfo/Structuring.pm (sectioning_structure): change in debug message. 2023-07-08 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_remove_empty_content, _close_container), tp/Texinfo/XS/parsetexi/close.c (remove_empty_content) (close_container): synchronize debug messages across the parsers. Use more print_element_debug instead of debug_print_element in XS parser. 2023-07-08 Patrice Dumas * tp/Texinfo/Common.pm (debug_command_name, debug_print_element), tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/debug.c (debug_command_name) (print_element_debug), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): escape \n and \t in command name in debug messages for better readability. 2023-07-08 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_debug_show_source_mark) (_place_source_mark, _merge_text), tp/Texinfo/XS/parsetexi/source_marks.c (source_mark_name) place_source_mark), tp/Texinfo/XS/parsetexi/tree_types.h (source_marks_names): more similar code in perl parser than in XS parser, same source marks debug message in XS parser than in perl parser. * tp/Texinfo/XS/parsetexi/api.c (store_source_mark_list), tp/Texinfo/XS/parsetexi/tree_types.h (enum source_mark_status): remove unused SM_status_fail source mark status. 2023-07-08 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (%parser_state_initialization, _next_text) (_handle_macro): register the number of expanded macros in a scalar and go through input to check if a macro is being expanded instead of keeping a stack of expanded macros, also to be more similar with XS parser. * tp/Texinfo/ParserNonXS.pm (_isolate_last_space), tp/Texinfo/XS/parsetexi/close.c (close_current), tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line) (end_line_starting_block), tp/Texinfo/XS/parsetexi/macro.c (handle_macro), tp/Texinfo/XS/parsetexi/parser.c (isolate_last_space): add debug messages in XS parser to match better perl parser. 2023-07-08 Patrice Dumas * tp/Texinfo/Common.pm (debug_print_element), tp/Texinfo/ParserNonXS.pm (_merge_text, _abort_empty_line) (_isolate_last_space, _end_line_misc_line, _parse_texi), tp/Texinfo/XS/parsetexi/context_stack.c (push_context, pop_context), tp/Texinfo/XS/parsetexi/debug.c (print_element_debug), tp/Texinfo/XS/parsetexi/end_line.c (end_line), tp/Texinfo/XS/parsetexi/macro.c (parse_macro_command_line), tp/Texinfo/XS/parsetexi/parser.c (merge_text, abort_empty_line) (parse_texi): shorten debug messages, synchronize debug messages of perl and XS parsers to some extent. 2023-07-07 Patrice Dumas * tp/t/65linemacro.t, tp/Makefile.tres: add blockitem_no_item test. 2023-07-02 Gavin Smith * doc/texinfo.tex (\link): Call \unsepspaces in case @link is used in @example environment, to stop the label in e.g. @link{One, Three} being taken as " Three" with a extra leading space. Report from Andreas Falkenhahn. 2023-06-25 Gavin Smith Rename texi2any config file * tp/texi2any.pl ($conf_file_name): Rename config file from 'Config' to 'texi2any-config.pm', as 'Config' is too generic and can clash with other uses. * doc/texi2any_api.texi (Loading Init Files): Update. Report from Jun T . 2023-06-11 Gavin Smith @link for LaTeX * tp/Texinfo/Convert/LaTeX.pm (_convert): Handle @link. 2023-06-10 Paul Eggert * doc/texinfo.tex: Fix two misspellings in comments. Originally reported by Josh Soref in: https://lists.gnu.org/r/bug-gnulib/2023-06/msg00057.html 2023-06-05 Gavin Smith * NEWS: Correct name of new variable. 2023-05-17 Gavin Smith * tp/Texinfo/XS/parsetexi/debug.h: Change include guard symbol to avoid clash with Perl headers. Report from Werner. Remove copyright notice, as this file is trivial. 2023-05-05 Gavin Smith @link for HTML * tp/Texinfo/Convert/HTML.pm (%default_commands_args): Add 'link', copied from 'inforef'. (_convert_xref_commands): Treat 'link' similarly to 'ref', but with the arguments of 'inforef'. Do not prefix a user-provided label with a parenthesised manual. 2023-05-05 Gavin Smith Error checking for @link and @inforef * tp/Texinfo/command_data.txt (link): Add ref flag. * tp/Texinfo/ParserNonXS.pm (_handle_close_brace) , * tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): Handle @link the same as @inforef. Add internal @link and @inforef to list of internal references, which results in check being done in Texinfo/Structuring.pm for references to non-existent nodes. 2023-05-05 Gavin Smith @link for Info output * tp/Texinfo/command_data.txt: Add @link. * tp/Texinfo/Convert/Plaintext.pm (_convert): Handle. 2023-04-21 Gavin Smith * info/infomap.c (default_vi_like_info_keys): Add BackTab for info_move_to_prev_xref. Report from Sebastian Carlos 2023-04-16 Gavin Smith * tp/Texinfo/Convert/Plaintext.pm (_convert): Do not insert into 'current_contents' array at all. Do not copy 'contents' array when converting element contents. This save space and time. Adapt to fact that elements are not removed from 'current_contents' as they are converted, so current element is still present. 2023-04-15 Gavin Smith * tp/Texinfo/Convert/Plaintext.pm (_convert): Insert into 'current_contents' array less, rather calling _convert recursively on added material. This seems more straightforward than modifying an array that we are iterating over. 2023-04-15 Gavin Smith * tp/Texinfo/Convert/Plaintext.pm (_convert): Move handling of cross-reference commands earlier. 2023-04-15 Gavin Smith * tp/Texinfo/Convert/Plaintext.pm (_convert): Combine brace commands into a single conditional block so all the checks for these can be easily skipped. 2023-04-15 Gavin Smith * tp/Texinfo/XS/parsetexi/api.c (store_source_mark_list): Use newRV_noinc when refering to objects we have just created. (store_additional_info): Use sv_2mortal on created hash. 2023-04-14 Gavin Smith * tp/Texinfo/XS/parsetexi/api.c (Root): Declare as a static pointer. For some reason, even though the symbol was undefined in the XS library, the program still ran, although much slower. 2023-04-14 Gavin Smith * tp/Texinfo/XS/parsetexi/api.c (reset_parser_except_conf): Always call destroy_element_and_children. 2023-04-14 Gavin Smith * tp/Texinfo/XS/parsetexi/tree.c (reset_obstacks): Do not call obstack_init more than once. Storage was not being reused in the obstack. (alloc_element): Zero element. (alloc_and_zero): Do not use for obstack_chunk_alloc definition, and remove. 2023-04-14 Gavin Smith * tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): Free a variable to avoid a memory leak. 2023-04-13 Gavin Smith * README-hacking: add note about Perl::Destruct::Level. 2023-04-13 Gavin Smith * tp/Texinfo/XS/parsetexi/api.c (element_to_perl_hash) (build_single_index_data, build_global_info, build_global_info2) (build_source_info_hash, convert_error): Use newRV_noinc instead of newRV_inc when we have just created a Perl object that we are taking a reference to, as the object already has a reference count of 1. 2023-04-13 Gavin Smith * tp/Texinfo/XS/parsetexi/tree.c (spare_element, new_element) (destroy_element, reset_obstacks): Reuse storage from destroy_element, which is called a lot from abort_empty_line. * tp/Texinfo/XS/parsetexi/end_line.c (end_line): Disable check for infinite loop when closing commands. 2023-04-12 Gavin Smith * tp/Texinfo/XS/parsetexi/tree_types.h (ELEMENT): Reorder fields slightly. 2023-04-11 Gavin Smith * tp/Texinfo/XS/parsetexi/tree.c: Remove some commented-out code. 2023-04-11 Gavin Smith * tp/Texinfo/XS/parsetexi/tree.c (alloc_and_zero): New function to wrap calloc. Use for obstack_chunk_alloc definition. (new_element): Remove explicit initialisation code. 2023-04-10 Gavin Smith * tp/Texinfo/XS/parsetexi/tree_types.h (ELEMENT): Contain ASSOCIATED_INFO structures as subfields rather than as pointers outside the structure. This avoids having to allocate these objects separately and may improve memory cache performance. * tp/Texinfo/XS/parsetexi/tree.c (alloc_associated_info) (new_associated_info): Remove. (destroy_associated_info): Do not free the ASSOCIATED_INFO object itself. (destroy_element): Call destroy_associated_info to free other storage. 2023-04-10 Gavin Smith * tp/Texinfo/XS/parsetexi/api.c (build_single_index_data): Remove commented-out code. Combine conditional blocks. Use av_unshift and av_store instead of av_push. 2023-04-10 Gavin Smith Run 'gnulib-tool --add-import obstack' under tp/Texinfo/XS. 2023-04-10 Gavin Smith Obstacks for parsetexi * tp/Texinfo/XS/parsetexi/tree.c (alloc_element, alloc_associated_info) (reset_obstacks): Use obstack allocation for tree elements. (new_associated_info, new_element): Call new functions. (destroy_element): Do not call 'free' on obstack-allocated storage. * tp/Texinfo/XS/parsetexi/api.c (reset_parser_except_conf): Call reset_obstacks. (parse_string, parse_piece): Do not create tree elements until after calling reset_parser_except_conf. 2023-04-10 Gavin Smith * tp/Texinfo/XS/parsetexi/input.c (encode_with_iconv): Remove spurious comment. 2023-04-10 Gavin Smith * README-hacking: add note of LD_BIND_NOW variable for callgrind 2023-04-10 Gavin Smith * tp/Texinfo/XS/parsetexi/api.c (build_perl_array) (store_additional_info, element_to_perl_hash) (build_target_elements_list, build_internal_xref_list): Use av_unshift to extend array followed by av_store instead of av_push for each element. 2023-04-10 Gavin Smith * tp/Texinfo/XS/parsetexi/api.c (build_perl_array): Remove case checking for a null pointer that we unconditionally dereferenced afterwards anyway. 2023-04-09 Gavin Smith * tp/Texinfo/XS/xspara.c (xspara_add_text): Use btowc instead of mbrtowc for printable ASCII characters. 2023-04-09 Gavin Smith * tp/Texinfo/XS/api.c (element_to_perl_hash): Precompute hash arguments for hv_store using PERL_HASH macro. 2023-04-09 Gavin Smith * tp/Texinfo/XS/xspara.c (PRINTABLE_ASCII): New macro. (xspara__add_next): Use btowc for printable ASCII bytes rather than mbrtowc. 2023-04-09 Gavin Smith * tp/Texinfo/XS/parsetexi/debug.c (debug_print_element): Do not construct dump string for element unless it will actually be printed. (print_element_debug): Declare as static. 2023-04-09 Gavin Smith * tp/Texinfo/XS/parsetexi/api.c (reset_parser_except_conf): Keep a few old values of the 'Root' pointer to avoid calling destroy_element_and_children on the main tree, which takes a significant length of time. 2023-04-09 Gavin Smith * README-hacking: mention callgrind for XS modules 2023-04-09 Gavin Smith * tp/Texinfo/XS/xspara.c (xspara__add_next): When getting display length of text, optimize for the common case of printable ASCII characters, not calling mbrtowc or wcwidth for such. 2023-04-09 Gavin Smith * tp/Texinfo/XS/xspara.c (xspara_add_text): Use a static buffer rather than calling malloc and free. This is significant as it is done for nearly every character output. 2023-04-09 Gavin Smith * tp/Texinfo/XS/xspara.c (xspara__add_next): Do not use mbrlen to go back one UTF-8 code point; use elementary operations instead. Use strchr instead of wcschr to check for end-of-word punctuation. 2023-04-09 Gavin Smith * tp/Texinfo/XS/xspara.c (xspara__add_next), * tp/Texinfo/Convert/ParagraphNonXS.pm (_add_next): Move code into a conditional block as it will only be run if that block is run. 2023-04-09 Gavin Smith * tp/Texinfo/XS/xspara.c (xspara_add_text): Only call mbrtowc after if current character is an ASCII space character, for which case this is not needed. 2023-04-08 Gavin Smith * tp/Texinfo/XS/xspara.c (xspara_add_text, xspara_add_next): Receive length of strings as an argument and return lengths in structure. This avoids having to call strlen. 2023-04-08 Gavin Smith * tp/Texinfo/Convert/Plaintext.pm (_convert): Inline the most frequently used call to _count_added for efficiency. 2023-04-07 Gavin Smith * tp/Texinfo/Convert/Plaintext.pm (_convert): Check for accent command after checking for style command as accents commands are slightly less used. 2023-04-07 Gavin Smith * tp/Texinfo/Convert/Plaintext.pm (_convert): Use $type variable instead of accessing 'type' value in hash. 2023-04-07 Gavin Smith * tp/Texinfo/Convert/Plaintext.pm (_convert): Assign variables $type and $command earlier so we can use them in a condition. Swap two blocks of code dealing with spaces to put the more frequently used one first, which may have a minor reduction in runtime. 2023-04-06 Gavin Smith * doc/texinfo.tex (\startxreflink): Use \ifpdforxetex conditional to avoid duplicating code for both cases. 2023-04-06 Gavin Smith * doc/texinfo.texi (Line macros): Add space in example before line continuation character. Add index entries. 2023-04-06 Gavin Smith * TODO.HTML: Update location of webkitgtk-info sources 2023-04-05 Gavin Smith Avoid gnulib/Perl definition clash * tp/Texinfo/XS/MiscXS.xs, * tp/Texinfo/XS/misc.c, * tp/Texinfo/XS/parsetexi/Parsetexi.xs, * tp/Texinfo/XS/xspara.c [defined _WIN32 && !defined __CYGWIN__]: '#undef free' after including "perl.h" and before including "XSUB.h" to avoid warnings about redefining symbols in Perl headers that Gnulib already redefined. (Same change made on 2022-10-22 to other files.) From Eli and Arash Esbati. 2023-04-05 Gavin Smith intptr_t for KEY_PAIR * tp/Texinfo/XS/parsetexi/tree_types.h (KEY_PAIR): Store 'value' field as an 'intptr_t', which is said to allow storage of pointer values, and may avoid possible warnings of pointer/integer casts when storing integer values, especially on MS-Windows. Consequent changes throughout the rest of the code. * tp/Texinfo/XS/parsetexi/extra.c (lookup_extra_element, lookup_info_element): New functions to simplify some code that called lookup_info and lookup_extra. Suggestion From Eli. 2023-04-04 Gavin Smith * doc/texinfo.texi (Line Macros): Change second example to show use of braces for the return type for @deftypeline. 2023-04-04 Gavin Smith @link in texinfo.tex * doc/texinfo.tex (\xrefX, \getprintedrefname, \startxreflink): Split out \getprintedrefname and \startxreflink so we can reuse this code. (\link): New experimental command for creating plain link in PDF output with no page number or decoration around link. (\definedummies): Add \link. Suggestion from Andreas Falkenhahn (help-texinfo, February 2023). 2023-04-03 Gavin Smith * tp/Texinfo/XS/parsetexi/def.c (parse_def): Treat @deftypeline like @deftypefn in alternating between typearg and arg in arguments. 2023-04-03 Gavin Smith * tp/t/19def.t (deftypeline): New test. 2023-04-03 Gavin Smith @deftypeline in texi2any * tp/Texinfo/command_data.txt, * tp/Texinfo/Common.pm (%def_map), * tp/Texinfo/XS/parsetexi/def.c (def_maps): Add @deftypeline. * tp/Texinfo/ParserNonXS.pm (_gather_def_item, _end_line_def_line), * tp/Texinfo/XS/parsetexi/def.c (gather_def_item), * tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line), * tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command): Treat @deftypeline the same as @defline. * tp/Texinfo/Convert/DocBook.pm (%defcommand_name_type), * tp/Texinfo/Convert/LaTeX.pm (_convert), * tp/Texinfo/Convert/Plaintext.pm (_convert), * tp/Texinfo/Convert/TexinfoMarkup.pm (%defcommand_name_type): Handle @deftypeline. 2023-04-03 Gavin Smith * install-info/Makefile.am (LDADD): Add $(GETRANDOM) in attempt to fix missing BCryptGenRandom symbol on MinGW. 2023-04-03 Gavin Smith Run gnulib-tool --add-import 2023-04-03 Gavin Smith * install-info/install-infoc (output_dirfile): Use chmod instead of fchmod as fchmod doesn't exist on MinGW. From Arash Esbati. 2023-04-03 Gavin Smith * info/pcterm.c (MAX): Add definition (removed on 2023-01-15). Report from Arash Esbati. 2023-04-02 Gavin Smith * info/indices.c (info_indices_of_file_buffer): Check for N_IsIndex flag on index nodes. This has the effect that typing 'i' avoids taking you to a node with "Index" in the name that is not a real index, as long as there are other nodes with the index marker in them. 2023-04-02 Gavin Smith * tp/Texinfo/Convert/HTML.pm (%default_no_arg_commands_formatting): In 'preformatted' context, use '...' for @dots as well as for @enddots. This is because a monospaced ellipsis looks bad inside @example. 2023-04-02 Gavin Smith * tp/t/22xtable.t (item_index_transformation): New test using 'relate_index_entries_to_item' transformation. 2023-04-02 Gavin Smith * util/htmlxref.cnf (gdb, stabs): Update. From Thérèse Godefroy 2023-04-02 Gavin Smith * tp/Texinfo/ParserNonXS.pm (_handle_brace_command, _handle_open_brace): Duplicate 'source_info' hashes to avoid disparity with XS test results. 2023-04-02 Gavin Smith * tp/Texinfo/Common.pm (_relate_index_entries_to_table_items_in): Relocate index entries before setting 'entry_associated_element'. 2023-04-02 Gavin Smith * tp/Texinfo/XS/parsetexi/multitable.c (gather_previous_item): Rename variables to match XS code. * tp/Texinfo/ParserNonXS.pm (_gather_previous_item): add comment. 2023-04-01 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_parse_texi), tp/Texinfo/XS/parsetexi/context_stack.c (in_context), tp/Texinfo/XS/parsetexi/parser.c (parse_texi): if in a linemacro command expansion at the end of input, call end_line to get new input corresponding to the linemacro command expansion. * tp/t/65linemacro.t, tp/Makefile.tres: add brace_command_not_closed, verb_not_closed and paragraph_no_paragraph tests. 2023-03-28 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line), tp/Texinfo/XS/parsetexi/end_line.c (end_line): if a linemacro command call is nested on a line, return instead of closing the precedeing commands as they may use the expansion result. * tp/Texinfo/ParserNonXS.pm (_end_line): fix name of linemacro call type. * tp/Texinfo/ParserNonXS.pm (_handle_close_brace): avoid a potential undefinition message. * tp/t/65linemacro.t, tp/Makefile.tres: add simple_nested_linemacro_calls and nested_linemacro_calls tests. * tp/t/60macro.t: always call @phooindex in macro_alias_definfoenclose_defindex and not phoo. 2023-03-28 Gavin Smith * doc/texinfo.texi (Line Macros): Write node documenting @linemacro. 2023-03-27 Gavin Smith Fix PDF page labels if pages appear between title page and contents * doc/texinfo.texi (\contentsendroman): Record end of contents in new count register, \contentsendcount. Reset \pageno to 1. (\pagelabels): Check \contentsendcount to support case of @contents appearing at end of document. Arnold Robbins reported that Roman numerals would be used for the PDF page labels throughout the gawk manual. This was because the two dedication pages before the contents were being treated as the Arabic-numbered pages in the document. 2023-03-27 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_next_bracketed_or_word_agg), tp/Texinfo/XS/parsetexi/def.c (next_bracketed_or_word_agg): to be consistent with Texinfo TeX, only spaces delimitates arguments, matching braces (bracketed_arg) do not automatically start a new argument. * tp/t/65linemacro.t: change braces_after_text to use @defline and @defblock to have results easier to interpret. 2023-03-27 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_handle_macro) (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/macro.c (handle_macro): rename arguments_container variable as macro_call_element for consistency. 2023-03-27 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): do not set source_info for linemacro call container. 2023-03-27 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_parse_def): use code more similar to XS parser to set the def_role for the rest or arguments. * tp/Texinfo/XS/parsetexi/def.c (parse_def): rename next_type as set_type_not_arg. 2023-03-27 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_parse_def), tp/Texinfo/XS/parsetexi/def.c (parse_def), tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line): handle linemacro without argument, by correct memory initialization, checking that there is a last argument and avoiding destroying element if it was not initialized. * tp/Texinfo/ParserNonXS.pm (_parse_def): do not increase results index, similar to XS parser. * tp/Makefile.tres, t/65linemacro.t: add missing_formal_arg and no_arguments tests. 2023-03-27 Patrice Dumas * tp/Texinfo/XS/parsetexi/def.c (parse_def): do not increase the index in the result array, such as to have the value at that index set. 2023-03-27 Patrice Dumas * tp/t/65linemacro.t, tp/Makefile.tres: add tests of @linemacro. 2023-03-27 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_split_def_args) (_next_bracketed_or_word_agg, _parse_def): add _next_bracketed_or_word_agg and modify _parse_def to use the same code as the XS parser, which is much cleaner. * tp/Texinfo/ParserNonXS.pm (_parse_def, _end_line_def_line), tp/Texinfo/XS/parsetexi/def.c (parse_def, end_line_def_line): do not put spaces in the last linemacro defined command call argument. 2023-03-26 Patrice Dumas linemacro implementation for the XS Parser * tp/Texinfo/XS/parsetexi/api.c (linemacro_expansion), tp/Texinfo/XS/parsetexi/context_stack.h (no_paragraph_context), tp/Texinfo/XS/parsetexi/def.c (parse_def), tp/Texinfo/XS/parsetexi/element_types.txt, tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line) (end_line_misc_line, end_line), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command), tp/Texinfo/XS/parsetexi/macro.c (handle_macro), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line) (parse_texi), tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace), tp/Texinfo/XS/parsetexi/source_marks.c (register_source_mark) (source_marks_reset_counters): handle @linemacro and linemacro defined command calls using the same design as for perl Parser. * tp/Texinfo/ParserNonXS.pm (%no_paragraph_contexts): set ct_linecommand to be no paragraph context. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line): change code opening arguments_container line_arg for linemacro command call to be more like XS parser. 2023-03-26 Gavin Smith * NEWS: add 7.0.3 news. * README-hacking: update 2023-03-26 Patrice Dumas * tp/Texinfo/XS/parsetexi/def.c (parse_def), tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line), tp/Texinfo/XS/parsetexi/tree_types.h (DEF_ARG): return parsed definition information as a list of DEF_ARG argument type name and element, instead of setting the types of arguments as structure fields. Remove DEF_INFO type. 2023-03-26 Patrice Dumas * tp/Texinfo/XS/parsetexi/def.c (DEF_MAP, def_maps, parse_def): pass the list of def commands arguments by using a list of arguments names as strings. This is a first step to allow to generalize parse_def to be able to handle linemacro defined arguments with arbitrary names and is more similar to the perl parser. 2023-03-26 Patrice Dumas linemacro implementation for the perl Parser * tp/Texinfo/ParserNonXS.pm (_parse_def, _end_line_misc_line) (_end_line_def_line, _handle_macro, _handle_block_command) (_handle_open_brace, _process_remaining_on_line, _parse_texi), tp/Texinfo/command_data.txt: handle @linemacro and linemacro defined command calls. The associated command call arguments parsing is different than for regular @macro. In _handle_macro start a linemacro_call container, but do not parse the arguments. In _process_remaining_on_line add the linemacro_call container to the tree and start a line_arg in ct_linecommand, to let regular Texinfo code parsing proceed similar to @def lines, with a special treatment of @ at end of lines. At end of line, use _parse_def to determine arguments, reusing part of the code used for @def*. Replace with linemacro body expansion text, remove the container element from the tree and associate it to the source mark. * tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/Convert/Text.pm, tp/Texinfo/Convert/TextContent.pm: ignore or handle @linemacro. * tp/Texinfo/ParserNonXS.pm (_start_empty_line_after_command): code more similar to XS parser. * util/texinfo.dtd: add linemacro. 2023-03-25 Patrice Dumas * tp/Texinfo/Convert/Texinfo.pm (convert_to_texinfo) (_expand_cmd_args_to_texi), tp/Texinfo/XS/parsetexi/convert.c (expand_cmd_args_to_texi, convert_to_texinfo_internal), tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): consider spaces_before_argument (and spaces_after_argument) only in convert_to_texinfo_internal/convert_to_texinfo. Call convert_contents_to_texinfo instead of convert_to_texinfo to avoid spaces appearing in messages. 2023-03-25 Gavin Smith * doc/texinfo.texi (Image Scaling, Predefined Indices): Move index commands back after @item in @table so that they are not considered to be part of the preceding paragraphs. These uses of @table do not have empty lines to save vertical space in Info output. This partially reverts change on 2022-11-26. 2023-03-25 Gavin Smith * tp/Texinfo/Common.pm (_relate_index_entries_to_table_items_in): Move index entries that immediately follow an @item to before the item. 2023-03-25 Gavin Smith * tp/Texinfo/ParserNonXS.pm (_gather_previous_item): Comments and variable names changed. Compare expressions to zero explicitly to be clearer. 2023-03-23 Gavin Smith Make setting TEXI2DVI_BUILD_DIRECTORY equivalent to --build-dir option * util/texi2dvi: Make setting build dir to a directory change build mode from 'local' to 'tidy' regardless of whether it is given with --build-dir or setting the TEXI2DVI_BUILD_DIRECTORY envvar. (build_dir): Make default value empty rather than '.'. (usage): Update. Suggestion from Bogdan Drozdowski. 2023-03-21 Patrice Dumas Index commands do not end paragraphs in texi2any * tp/Texinfo/ParserNonXS.pm (_parse_line_command_args), tp/Texinfo/XS/parsetexi/indices.c (add_index_command): do not set index commands as close_paragraph. 2023-03-21 Gavin Smith Index commands do not end paragraphs * doc/texinfo.tex (\doindex, \docodeindex): Do not use \indexpar. (\indexpar): Remove. This reverts change on 2023-02-19. It caused problems for the Lilypond manuals -- report from Werner. 2023-03-19 Gavin Smith * README-hacking: Update 2023-03-19 Gavin Smith * doc/texinfo-tex-test.texi (Line macros): Test @defline with continuation. Add example of nested @defblock for API documentation. 2023-03-13 Gavin Smith * doc/texinfo.tex (\linemacro): Do not set \scanctxt when getting argument in order to keep @ as the escape character, allowing @ to be kept as a line continuation character for @def*. * doc/texinfo-tex-test.texi (Line macros): Add example. 2023-03-13 Gavin Smith * doc/texinfo.tex (\linemacro): Fix definition of zero-arg @linemacro so not to break literal backslash in macro body. * doc/texinfo-tex-test.texi (Line macros): More tests. 2023-03-13 Gavin Smith * doc/texinfo.tex (\linemacro): Parameter list in macro definition is in braces and surrounded by commas, the same as for @macro. Suggestion from Patrice. 2023-03-12 Patrice Dumas * tp/Texinfo/XS/parsetexi/separator.c (handle_comma): when at the end of a line after strcspn call, do not prepend to argument text, as the line is empty. 2023-03-12 Gavin Smith Roman rather than bold for &rest etc. * doc/texinfo.tex (\amprm): Use \rm instead of \bf. * doc/texinfo.texi (Def Cmd Conventions, Sample Function Definition): Update. Bold gives too much emphasis when compared with the headword itself, which is in tt. 2023-03-12 Gavin Smith * doc/texinfo.tex (\defname, \printdefname, \defcaption, \docaptionz) (\defmacro, \macrodef): Rename macros beginning with \def... to avoid possible confusion with @def* Texinfo commands. 2023-03-12 Gavin Smith * doc/texinfo.tex (\linemacro): Do not use @xeatspaces around macro arguments as this appears to be unnecessary. 2023-03-12 Gavin Smith * doc/texinfo.tex (\linemacrodef): Do not append space to macro argument line. Require empty final argument to be given explicitly as {}. Avoid extra space before arg in @example environment. * doc/texinfo-tex-test.texi (Line macros): Update. Add case with substitution into @example environment. 2023-03-12 Patrice Dumas * tp/Texinfo/XS/parsetexi/separator.c (handle_comma): when getting a line in an inline* ignored last argument, set line to the new text gotten, even if null, as otherwise the previously freed line (freed as alloc_line) may be used. 2023-03-12 Patrice Dumas Update po files 2023-03-12 Patrice Dumas * tp/Texinfo/XS/parsetexi/end_line.c (parse_line_command_args): fix missing end of firstparagraphindent command name in message. * po/POTFILES.in: add tp/Texinfo/XS/parsetexi/labels.c * tp/Texinfo/ParserNonXS.pm: synchronize messages with XS parser. * tp/t/08misc_commands.t: use @firstparagraphindent insert to have it tested somewhere and add test of an @firstparagraphindent invalid argument. 2023-03-12 Patrice Dumas Update in-source copy of Text::Unidecode to 1.30 * tp/Texinfo/Convert/Unicode.pm (%transliterate_map): add an explicite transliterations of characters in the 0080 to 009F range to an empty string. Indeed, in Text::Unicode starting from version 1.25_01, those characters (C1 codes) are mapped to Windows-1252 characters. We still consider the Unicode standard to rule and keep on transliterating to empty strings. * tp/t/nodenormalization.t: update test result without Unidecode now that the 0085 character has an explicit transliteration. 2023-03-12 Patrice Dumas Update in-source copy of Unicode::EastAsianWidth to 12.0 2023-03-12 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (%default_special_element_info): change the 'order' of contents and shortcontents to have shortcontents separate element appear before contents separate element. 2023-03-12 Gavin Smith Swap contents and shortcontents * tp/Texinfo/Convert/HTML.pm (_convert_heading_command) (_contents_shortcontents_in_title, _prepare_special_elements): Swap the output for @contents and @shortcontents, so that @shortcontents is first, for CONTENTS_OUTPUT_LOCATION set to 'after_top', 'after_title', or 'separate_element'. From Arsen Arsenović. * NEWS: update 2023-03-12 Gavin Smith * tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace): Move declaration out of switch block to stop compilation error. 2023-03-12 Patrice Dumas * tp/t/30sectioning.t: modify node name for two_nodes_at_the_end to be more in line with the test content. 2023-03-12 Patrice Dumas * tp/Makefile.tres, tp/t/30sectioning.t: add two_nodes_at_the_end_nodes and two_nodes_at_the_end_texi2html. * tp/Makefile.tres, tp/t/40moresectioning.t: do not set TEXI2HTML in more_sections_than_nodes, but add more_sections_than_nodes_texi2html. 2023-03-11 Patrice Dumas * tp/Makefile.tres, tp/t/30sectioning.t: add chapter_between_nodes_texi2html, two_nodes_between_chapters_nodes and two_nodes_between_chapters_texi2html. 2023-03-11 Patrice Dumas * tp/t/30sectioning.t, tp/Makefile.tres: add one_node_explicit_directions_anchor_no_use_node and top_without_node_texi2html_no_use_nodes tests. 2023-03-11 Patrice Dumas * tp/t/30sectioning.t: add nodes_after_top_before_chapter_no_use_nodes_chapter test. * tp/t/40moresectioning.t: add placed_things_before_element_no_use_node and sectioning_part_appendix_texi2html_chapter tests. 2023-03-11 Patrice Dumas * tp/t/40moresectioning.t, tp/Makefile.tres: add anchor_in_footnote_split_node and anchor_in_footnote_separate_split_node tests. 2023-03-11 Patrice Dumas * tp/t/50value.t, tp/t/60macro.t, tp/Makefile.tres: add closing_brace_in_value_in_ingnored_inline and closing_brace_in_macro_call_in_ingnored_inline with end of @inline* command in @value or macro expansion in the ignored @inline* command argument. 2023-03-11 Gavin Smith * doc/texinfo-tex-test.texi (Macros): Show desired output for all test cases to make it easier to check. 2023-03-11 Gavin Smith Avoid spurious space in macro expansion * doc/texinfo.texi (\defmacro): Define a control sequence with \string rather than \relax. This avoids an extra space appearing for an argument substituted into an environment like @example. * doc/texinfo-tex-test.texi (Bugs, Substitution into @example): Update now-working test case. 2023-03-11 Patrice Dumas * tp/texi2any.pl: minor changes. Reindent, change in comments. Use $main_configuration instead of $converter for Texinfo::Common::output_files_open_out call for SORT_ELEMENT_COUNT. 2023-03-11 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): determine if an accent command argument has braces in the same way as it is done in other converters by checking if argument type is not brace_command_arg. 2023-03-11 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_close_current, _handle_close_brace), tp/Texinfo/XS/parsetexi/close.c (close_current), tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): separate code handling bracketed_arg and balanced_braces. No functional change. 2023-03-11 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_handle_open_brace, _handle_close_brace), tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace, handle_close_brace): right in a rawpreformatted, use merge_text to merge an opening or a closing brace to the preceding text, if any. 2023-03-11 Patrice Dumas * tp/Texinfo/Convert/DocBook.pm (_convert), tp/Texinfo/Convert/HTML.pm (_convert_balanced_braces_type), tp/Texinfo/Convert/LaTeX.pm (_convert), tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/Convert/Texinfo.pm (convert_to_texinfo), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/Convert/Text.pm (_convert), tp/Texinfo/Convert/TextContent.pm (_convert), tp/Texinfo/ParserNonXS.pm (_close_current, _handle_open_brace) (_handle_close_brace), tp/Texinfo/XS/parsetexi/close.c (close_current), tp/Texinfo/XS/parsetexi/convert.c (convert_to_texinfo_internal), tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace, handle_close_brace): put braces associated to the balanced_braces type in the contents of the container, as text. * tp/Texinfo/ParserNonXS.pm (_handle_close_brace), tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): abort empty line and close paragraph in brace_command_context commands only if the current container is actually a paragraph. * tp/t/03coverage_braces.t, tp/Makefile.tres: add empty_line_in_braces_in_math and empty_line_in_braces_in_math_at_begin_line tests. 2023-03-10 Patrice Dumas * tp/Texinfo/Convert/DocBook.pm (_convert), tp/Texinfo/Convert/HTML.pm (_convert_balanced_braces_type), tp/Texinfo/Convert/LaTeX.pm (_convert), tp/Texinfo/Convert/NodeNameNormalization.pm (_convert), tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/Convert/Texinfo.pm (convert_to_texinfo), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/Convert/Text.pm (_convert), tp/Texinfo/Convert/TextContent.pm (_convert), tp/Texinfo/ParserNonXS.pm (_close_current, _handle_open_brace) (_handle_close_brace), tp/Texinfo/XS/parsetexi/close.c (close_current), tp/Texinfo/XS/parsetexi/convert.c (convert_to_texinfo_internal), tp/Texinfo/XS/parsetexi/element_types.txt, tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace) (handle_close_brace): rename bracketed type as balanced_braces. * tp/t/01use.t: replace bracketed by bracketed_arg on @multitable line. 2023-03-10 Patrice Dumas * tp/Texinfo/Convert/DocBook.pm (_convert), tp/Texinfo/Convert/LaTeX.pm (_convert), tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/Convert/Text.pm (_convert), tp/Texinfo/Convert/TextContent.pm (_convert), tp/Texinfo/ParserNonXS.pm (_close_current, _split_def_args) (_end_line_starting_block, _handle_close_brace), tp/Texinfo/XS/parsetexi/close.c (close_current), tp/Texinfo/XS/parsetexi/def.c (split_def_args), tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block), tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace) (handle_close_brace): use 'bracketed_arg' instead of 'bracketed' on @multitable line for column prototypes. 2023-03-10 Patrice Dumas * tp/Texinfo/Translations.pm (complete_indices) (_non_bracketed_contents): fix _non_bracketed_contents by using 'bracketed_arg' as the type, to match with the type on @def* lines. But do not call _non_bracketed_contents as it is not clear that it is better to avoid the 'bracketed_arg' type. 2023-03-10 Patrice Dumas * tp/Texinfo/Convert/Texinfo.pm (convert_to_texinfo), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/ParserNonXS.pm (_split_def_args, _parse_def) (_end_line_def_line), tp/Texinfo/XS/parsetexi/convert.c (convert_to_texinfo_internal), tp/Texinfo/XS/parsetexi/def.c (next_bracketed_or_word_agg, split_delimiters), tp/Texinfo/XS/parsetexi/element_types.txt, tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line): rename bracketed_def_content as bracketed_arg. 2023-03-10 Patrice Dumas No capitalization of @sc argument in node name normalization * NEWS, doc/texinfo.texi (HTML Xref Command Expansion), tp/Texinfo/Convert/NodeNameNormalization.pm (_convert), tp/t/nodenormalization.t: no upper-casing of @sc argument in node normalization (and therfore in HTML cross references). 2023-03-10 Patrice Dumas * tp/t/converters_tests.t, tp/t/nodenormalization.t, tp/Makefile.tres: test commands with lower case arguments in @var, with commands_in_var and a test in nodenormalization.t. 2023-03-10 Patrice Dumas * tp/Texinfo/Convert/NodeNameNormalization.pm (_convert), tp/Texinfo/Convert/Text.pm (_convert), tp/Texinfo/Convert/TextContent.pm (_convert), tp/Texinfo/ParserNonXS.pm (_handle_line_command), tp/Texinfo/XS/parsetexi/element_types.txt, tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command): rename 'misc_arg' type as 'rawline_arg'. 2023-03-10 Patrice Dumas * tp/Texinfo/Convert/DocBook.pm (_convert): protect from upper-casing in @sc the node name and the associated text in @*ref. * tp/t/converters_tests.t, tp/t/nodenormalization.t: use a variable for the content common to the two test files for lower-case content to be tested in @sc. 2023-03-08 Patrice Dumas * tp/Texinfo/Convert/Plaintext.pm (_process_text, new_formatter) (_convert): put upper casing information on a distinct stack, to be able to stop the upper casing context, using an internal type _stop_upper_case. Use it for node and file and *note for @*ref, for @url and @inlineraw. * tp/t/info_tests.t, tp/t/nodenormalization.t: add more to commands_in_sc. 2023-03-08 Patrice Dumas * tp/Texinfo/Convert/Plaintext.pm (_process_text): remove condition on'var' state when 'upper_case' is set, as 'upper_case' implies 'var'. 2023-03-08 Patrice Dumas * tp/Texinfo/Convert/DocBook.pm (_docbook_section_element, _convert), tp/Texinfo/Convert/Info.pm (format_node), tp/Texinfo/Convert/LaTeX.pm (_associate_other_nodes_to_sections), tp/Texinfo/Structuring.pm (set_menus_node_directions), tp/Texinfo/Transformations.pm (insert_nodes_for_sectioning_commands): avoid autovivification, and use defined() for extra 'normalized' strings that can be '0'. * tp/Texinfo/Transformations.pm (_new_node): remove/warn about cases that cannot happen. * tp/Texinfo/Convert/Plaintext.pm (_process_text): use $context for 'var' state too. 2023-03-08 Gavin Smith * doc/texinfo.texi (Overview): Remove duplicate words. From Ray Kuo . 2023-03-08 Arsen Arsenović texi2any: Don't switch to subdir mode if '-' names a dir * tp/texi2any.pl (output|out|o=s): If the filename argument is specifically '-', do not consider the possibility of it being the name of a subdirectory. This prevents programs that generate info in a pipeline from being confused in weird working directories. 2023-03-08 Patrice Dumas * tp/Makefile.tres, tp/t/info_tests.t: add commands_in_sc tp/t/nodenormalization.t: add two more tests, one corresponding to commands_in_sc. 2023-03-08 Patrice Dumas * tp/Texinfo/Structuring.pm (set_menus_node_directions): use in-tree external menu_entry_node as menu direction. 2023-03-08 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (output_internal_links): determine if index entry is in code style by checking the associated index information, and not the entry information. 2023-03-08 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_prepare_index_entries), tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/LaTeX.pm (_index_entry), tp/Texinfo/Convert/Plaintext.pm (process_printindex), tp/Texinfo/Structuring.pm (index_entry_sort_string, sort_indices), tp/init/chm.pm (chm_init), tp/t/test_sort.t, tp/t/test_utils.pl (test): pass indices_information to sort_indices. Set 'code' in options for text conversion before calling index_entry_sort_string, based on indices_information. * tp/Texinfo/Translations.pm (complete_indices): do not set in_code for index entries, the information should always be taken from the entry associated index name. * tp/Texinfo/Structuring.pm (sort_indices): rename $entry as $index_entry. * tp/Texinfo/Convert/HTML.pm (_prepare_index_entries), tp/Texinfo/Convert/Plaintext.pm (process_printindex): rename $index_names as $indices_information. * tp/Texinfo/Convert/TexinfoMarkup.pm (_index_entry): use associated index information, and not the entry information to determine if index entry is in code style. 2023-03-07 Patrice Dumas * tp/Texinfo/Common.pm (lookup_index_entry): lookup_index_entry also returns index information. Update callers. * tp/Texinfo/Convert/DocBook.pm (_index_entry), tp/Texinfo/Convert/HTML.pm (_convert_printindex_command), tp/Texinfo/Convert/Plaintext.pm (process_printindex), tp/init/chm.pm (chm_init): determine if index entry is in code style by checking the associated index information, and not the entry information. * tp/Texinfo/Convert/HTML.pm (%available_converter_info): add indices_information. 2023-03-07 Patrice Dumas * tp/Texinfo/Common.pm (_copy_tree, _copy_extra_info): do not setup any extra info in _copy_tree. Rename _substitute_references as _copy_extra_info as it now copy all the extra info. Detect if an hash in _substitute_references is an element, and in that case call _copy_tree and _copy_extra_info on that out of tree element. Remove FIXME for a situation that happens fine. * tp/Texinfo/Common.pm (_substitute_references_in_array): remove the case of a text element, cannot happen right now and should be done differently as if could be an element with other information. 2023-03-07 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_parse_def, _end_line_def_line): gather initial arguments name, category... in a has, to be returned from the function after setting the extra def_role key. Set other contents extra def_role key directly. More similar to the XS parser. 2023-03-07 Patrice Dumas * tp/t/test_utils.pl (@contents_keys): remove obsolete keys. Add 'info'. Remove keys within 'info'. 2023-03-07 Patrice Dumas * tp/t/test_utils.pl (_duplicate_element_keys): remove code related to extra keys not existing anymore. 2023-03-07 Patrice Dumas * tp/Texinfo/XS/parsetexi/api.c (store_additional_info), tp/Texinfo/XS/parsetexi/extra.c (add_extra_contents_oot), tp/Texinfo/XS/parsetexi/tree.c (destroy_associated_info), tp/Texinfo/XS/parsetexi/tree_types.h (enum extra_type): remove extra_contents_oot extra type, remove add_extra_contents_oot function. 2023-03-07 Patrice Dumas * tp/Texinfo/Common.pm (_copy_tree, _substitute_references): remove handling of extra prototypes that do not exist anymore. 2023-03-07 Patrice Dumas * tp/Texinfo/XS/parsetexi/element_types.txt: remove bracketed_multitable_prototype and row_prototype. 2023-03-07 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_starting_block), tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_other_command): remove extra prototypes. Use the number of bracketed content to set max_columns, and always use max_columns for the number of columns in the XS parser. 2023-03-07 Patrice Dumas * tp/Texinfo/Convert/DocBook.pm (_convert), tp/Texinfo/Convert/LaTeX.pm (_convert), tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): use directly the multitable line argument and the bracketed on that line to determine the prototype, instead of extra prototypes. * tp/t/plaintext_tests.t, tp/Makefile.tres: use braces on @multitable line for multitable_in_example_extraneous_tab, and add multitable_in_example_extraneous_item_tab without braces. 2023-03-07 Patrice Dumas * tp/Texinfo/Common.pm (_copy_tree, _substitute_references): handle def_index_element and def_index_ref_element explicitly as out of tree elements. 2023-03-07 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_def_line), tp/Texinfo/XS/parsetexi/api.c (store_additional_info), tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line), tp/Texinfo/XS/parsetexi/extra.c (add_extra_misc_args), tp/Texinfo/XS/parsetexi/tree.c (destroy_associated_info), tp/Texinfo/XS/parsetexi/tree_types.h (enum extra_type): do not set extra def_parsed_hash in the tree. It is easy to look at the contents, and in general the @def args argument need to be collected at the same time, such that there is a need to look at the contents anyway. Remove everything related to extra_def_info, in particular the add_extra_misc_args function. 2023-03-07 Patrice Dumas * tp/Texinfo/Translations.pm (complete_indices): remove the type of the tree root returned by gdt. Do not mess with the parent of the elements, as the elements may be in the main tree. 2023-03-07 Patrice Dumas * tp/Texinfo/Translations.pm (complete_indices): determine the name and class of def command by looking at the contents instead of using def_parsed_hash. 2023-03-06 Patrice Dumas * tp/Texinfo/XS/parsetexi/api.c (store_additional_info), tp/Texinfo/XS/parsetexi/indices.c (enter_index_entry): use the "integer" extra key in extra_misc_args to pass an integer instead of a string in the extra_misc_args array. Use it for the index number. 2023-03-06 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_convert_def_line_type), tp/Texinfo/Convert/LaTeX.pm (_convert), tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/Convert/Text.pm (_convert), tp/Texinfo/Convert/Utils.pm (definition_arguments_content, definition_category_tree): determine the category, name, type and name in definition_arguments_content. Do not use def_parsed_hash in definition_category_tree. Use this information instead of def_parsed_hash in the callers. 2023-03-06 Patrice Dumas * tp/Texinfo/XS/parsetexi/indices.c (enter_index_entry), tp/Texinfo/XS/parsetexi/api.c (build_single_index_data): store the index_entry extra array directly in enter_index_entry, using extra_misc_args. 2023-03-06 Patrice Dumas * tp/Texinfo/Common.pm (lookup_index_entry), tp/Texinfo/ParserNonXS.pm (_enter_index_entry), tp/Texinfo/XS/parsetexi/api.c (build_single_index_data), t/test_utils.pl (_duplicate_element_keys): store the index name and the index entry number in the index_entry extra value, do not refer directly to the index entry structure, Texinfo::Common::lookup_index_entry should be used to get the index entry structure. 2023-03-06 Patrice Dumas * tp/Texinfo/Common.pm (lookup_index_entry) (_relate_index_entries_to_table_items_in) (_relate_index_entries_to_table_items) (relate_index_entries_to_table_items_in_tree), tp/Texinfo/Convert/DocBook.pm (_index_entry), tp/Texinfo/Convert/LaTeX.pm (_index_entry), tp/Texinfo/Convert/TexinfoMarkup.pm (_index_entry, _convert), tp/t/test_utils.pl (test), tp/texi2any.pl: add the lookup_index_entry function, to find an index entry based on the extra index_entry key, that abstracts how the index entry is found. The function requires the indices information too. Pass the indices information to _relate_index_entries_to_table_items_in through relate_index_entries_to_table_items_in_tree. * tp/Texinfo/Structuring.pm (merge_indices), tp/t/automatic_nodes.t, tp/t/test_sort.t, tp/t/test_utils.pl (test): change name of $index_names to $indices_information. * tp/Texinfo/Convert/Plaintext.pm (_convert): use index_entry_command type to determine that the commmand is an index entry command instead of using the command name. 2023-03-06 Patrice Dumas * tp/Texinfo/Common.pm (_relate_index_entries_to_table_items_in), tp/Texinfo/Convert/LaTeX.pm (_convert), tp/Texinfo/Convert/Plaintext.pm (_convert): use index_entry_command type instead of extra index_entry when this is more relevant. * tp/Texinfo/Transformations.pm (_reassociate_to_node): simplify and generalize code reassociating extra element_node, by using only that information and not information related to the element as an index element. 2023-03-06 Patrice Dumas * doc/texi2any_api.texi (Tree Element Conversion Functions), tp/Texinfo/Convert/HTML.pm (_convert) (_convert_index_entry_command_type): use the type of index commands, index_entry_command, to select index commands formatting, instead of a modified command name. Convert with _convert_index_entry_command_type, remove _convert_index_command. 2023-03-06 Patrice Dumas * tp/Texinfo/XS/parsetexi/api.c (store_additional_info), tp/Texinfo/XS/parsetexi/extra.c (add_extra_contents_array) (add_extra_index_entry), tp/Texinfo/XS/parsetexi/tree.c (destroy_associated_info), tp/Texinfo/XS/parsetexi/tree_types.h: remove extra_contents_array and extra_index_entry extra types and associated functions, add_extra_contents_array and add_extra_index_entry. 2023-03-06 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line) (_handle_open_brace, _handle_close_brace, _handle_comma): add _handle_open_brace, _handle_close_brace, _handle_comma from _process_remaining_on_line code, as in the XS parser. 2023-03-06 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_parse_texi_regex) (_process_remaining_on_line), tp/Texinfo/XS/MiscXS.xs (xs_parse_texi_regex), tp/Texinfo/XS/misc.c (xs_parse_texi_regex), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c (handle_separator): handle separately the different separators (except for menu only separators) instead of grouping them, directly in process_remaining_on_line. Remove the handle_separator function. 2023-03-06 Patrice Dumas * tp/Texinfo/Common.pm (_copy_tree, _substitute_references_in_array) (_substitute_references): copy info keys, fix _substitute_references calls in which new and current were swapped, add more checks, enable extra key hash handling setup for index_entry for all the extra key hashes, add a level argument for nicer debug messages. * tp/t/test_tree_copy.t: test copy with Texinfo manual and tests/converage/formatting.texi. 2023-03-06 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_parse_def): set parent for the definition args for the argument content gathered when there is no args to finish the item before. * tp/Makefile.tres, tp/t/19def.t: add def_groupings_args to test grouping of def args more. 2023-03-05 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): do not start a paragraph for an unknown @-command. 2023-03-05 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): do not throw away the current line in an ignored rawpreformatted. * tp/Makefile.tres, tp/t/16raw.t: add second_level_lone_braces_in_html and second_level_lone_braces_in_html_not_expanded tests with braces at the beginning of a line within an @-command within a rawpreformatted environment. 2023-03-05 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace): abort empty line before opening brace in rawpreformatted. 2023-03-05 Gavin Smith * doc/texinfo.texi (Invoking Macros): Mention possibility of using @asis to escape commas. 2023-03-05 Gavin Smith Warning for \, in macro arg * tp/Texinfo/ParserNonXS.pm (_expand_macro_arguments), * tp/Texinfo/XS/parsetexi/macro.c (expand_macro_arguments): Issue a warning if \, is used in a macro argument, recommending @comma{} instead. \, doesn't work with texinfo.tex so it is better to warn about it. 2023-03-05 Gavin Smith * tp/Texinfo/ParserNonXS.pm (_handle_line_command) Avoid a variable being undefined. 2023-03-05 Gavin Smith * tp/t/19def.t (defline_no_params, adjacent_defline, multiple_defline) (defblock_no_defline): New tests. 2023-03-05 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line, _parse_texi), tp/Texinfo/XS/parsetexi/parser.c (parse_texi), tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace) (handle_close_brace): do not abort empty line if there is a misplaced brace. Abort empty line at the very end of the document. 2023-03-05 Patrice Dumas * tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line): move end_line_def_line definition up in the file to be before the functions using it. * tp/Texinfo/XS/parsetexi/end_line.c, tp/Texinfo/XS/parsetexi/labels.c (check_register_target_element_label, parse_node_manual): move parse_node_manual and check_register_target_element_label to labels.c. * tp/Texinfo/XS/parsetexi/parser.h: do not include "def.h", let the files using functions from def.c include it directly. Do not define end_line_def_line which is only used within end_line.c. 2023-03-05 Patrice Dumas * tp/Texinfo/XS/parsetexi/end_line.c, tp/Texinfo/XS/parsetexi/handle_commands.c (skip_to_comment): (skip_to_comment_if_comment_or_spaces, parse_rawline_command): move parse_rawline_command, skip_to_comment and skip_to_comment_if_comment_or_spaces to handle_commands.c. 2023-03-05 Patrice Dumas Merge special command line data type into lineraw * tp/Texinfo/Common.pm (_informative_command_value), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/ParserNonXS.pm(_handle_line_command) (_parse_rawline_command), tp/Texinfo/XS/parsetexi/end_line.c (parse_rawline_command), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command), tp/Texinfo/command_data.txt: merge LINE_special commands in LINE_lineraw, with arguments. Rename parse_special_misc_command as parse_rawline_command and have the function return the information on whether the command had special args. 2023-03-05 Patrice Dumas * tp/t/02coverage.t, tp/Makefile.am (test_files), tp/Makefile.tres: add delcomment_on_comment with a DEL comment on a @comment line. 2023-03-05 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_handle_line_command), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command): always close a line or block line command a raw line command is on. 2023-03-05 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line): minor change, remove a useless variable, code more similar to XS parser. 2023-03-04 Patrice Dumas * tp/Texinfo/XS/parsetexi/parser.h (GLOBAL_INFO), tp/Texinfo/XS/parsetexi/parser.c (register_global_command) (wipe_global_info), tp/Texinfo/XS/parsetexi/api.c (build_global_info2): add author to global info, to be consistent with global in command_data.txt. Remove a useless TODO. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): minor changes: change order of code, remove useless retval set, changein comments, more similar codes in XS and perl parsers. 2023-03-04 Gavin Smith Multiple @defline in @defblock in texi2any * tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command) : Allow for @defline occurring part way through a @defblock. * tp/Texinfo/XS/parsetexi/def.c (gather_def_item) Check for empty contents in block, and for items before a @defline, gather an element of type 'def_item' rather than 'inter_def_item'. 2023-03-04 Gavin Smith Multiple @defline in @defblock in texi2any * tp/Texinfo/ParserNonXS.pm (_handle_line_command) : Allow for @defline occurring part way through a @defblock. (_gather_def_item): Check for empty contents in block, and for items before a @defline, gather an element of type 'def_item' rather than 'inter_def_item'. 2023-03-04 Gavin Smith * doc/texinfo.texi (Generic Definition Commands), NEWS: Document @defblock, @defline. 2023-03-04 Patrice Dumas * tp/Texinfo/Common.pm (relocate_source_marks): move from tp/Texinfo/ParserNonXS.pm. * tp/Texinfo/Common.pm (relocate_source_marks), tp/Texinfo/ParserNonXS.pm (_isolate_last_space, _split_delimiters) (_split_def_args), tp/Texinfo/XS/parsetexi/def.c (split_delimiters) (split_def_args), tp/Texinfo/XS/parsetexi/parser.c (isolate_last_space_internal), tp/Texinfo/XS/parsetexi/source_marks.c (relocate_source_marks): pass current index and added length to relocate_source_marks, and get the new current index in return. * tp/Texinfo/XS/parsetexi/end_line.c (parse_node_manual), tp/Texinfo/Common.pm (parse_node_manual): relocate source marks from removed elements. 2023-03-04 Patrice Dumas * tp/Texinfo/Common.pm (parse_node_manual): use same code as XS parser. * tp/Texinfo/XS/parsetexi/end_line.c (parse_node_manual): minor change in code. * tp/t/60macro.t, tp/Makefile.tres: add macro_call_in_node_manual, demonstrating that source marks are lost in parse_node_manual. 2023-03-04 Gavin Smith * doc/texinfo.tex (\deflinex, \newdef): Remove. 2023-03-04 Gavin Smith * tp/Texinfo/command_data.txt: Remove @deflinex as @defline is enough. 2023-03-04 Gavin Smith * doc/texinfo-tex-test.texi (Macros): Add example that doesn't work properly. 2023-03-04 Gavin Smith * doc/texinfo-tex-test.texi (Line macros): New section. 2023-03-04 Gavin Smith @linemacro, adapted from @macro implementation (\linemacro): New macro, to implement @linemacro command. (\linegetargs, \linegetparamlist, \parselinemacrobody, \linemacrodef): New macros that are part of the implementation. This is mainly intended for use with @defblock/@defline. 2023-03-04 Patrice Dumas Add alias_of info key for an alias used for an @-command element * tp/Texinfo/ParserNonXS.pm (_handle_macro, _handle_other_command) (_handle_line_command, _handle_block_command) (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_other_command) (handle_line_command, handle_block_command, handle_brace_command), tp/Texinfo/XS/parsetexi/macro.c (handle_macro), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): handle_macro returns the element containing the macro expansion argument, or 0 if there was an error instead of returning an error status. Return command element and change command element variable name in handle_*_command functions. Add alias information in command element in alias_of info key. 2023-03-03 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_handle_line_command), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command): use data command information and arg_spec more, where it makes sense even if there cannot be @item there. 2023-03-03 Patrice Dumas * tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line), tp/Texinfo/ParserNonXS.pm (_end_line_misc_line, _handle_line_command), tp/maintain/regenerate_commands_perl_info.pl: in end_line_misc_line, use item_LINE to get the command data information associated to @item. Keep item_LINE in the perl commands information as in the XS parser, modify _handle_line_command and _end_line_misc_line accordingly, also to be more in line with the XS parser code. For some selected flags that are of interest for converters but not for the parsers, duplicate the multi category, ie item_LINE information for the main command, here item. In the converters, item_LINE is not present and the tree allows to knwo in advance which type of item command is processed. 2023-03-03 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command): for @item, there is a difference between the command name, and the name used to access data information, which is item_LINE. Check preferentially command data with the modified name and use the original name in messages and command name checks. Pass both the original command and the data access name to handle_line_command. Reorganize command processing in process_remaining_on_line, closing a containing paragraph as soon as possible to be able to check the parent command, and opening a paragraph as late as possible. 2023-03-03 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_handle_other_command) (_handle_line_command, _handle_block_command, _handle_brace_command) (_process_remaining_on_line): split handle_*_command out of _process_remaining_on_line as in the XS parser. 2023-03-03 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_menu_entry, _end_line), tp/Texinfo/XS/parsetexi/end_line.c (end_line), tp/Texinfo/XS/parsetexi/menus.c (end_line_menu_entry): put code handling end of menu entry from end_line in its own function end_line_menu_entry. * tp/Texinfo/ParserNonXS.pm (_handle_menu_entry_separators), tp/Texinfo/XS/parsetexi/menus.c (handle_menu_entry_separators): rename handle_menu as handle_menu_entry_separators. 2023-03-02 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line) (_handle_menu): split _handle_menu out of _process_remaining_on_line to be more similar to XS parser. 2023-03-02 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/menus.c (handle_menu): move code that sets up a menu separator before code that handles a menu separator for improved readability. 2023-03-02 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_parse_texi_regex) (_process_remaining_on_line), tp/Texinfo/XS/MiscXS.xs (xs_parse_texi_regex), tp/Texinfo/XS/parsetexi/menus.c (handle_menu), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c (handle_separator): handle menu separator separatly from other separators (with a possible overlap for comma, considered both as a menu and other separator in the perl parser), also moving the code starting the menu_entry_separator element together with the code handling menu entries. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line): code more similar to XS parser code for accent argument without brace and for menu_entry. 2023-03-02 Patrice Dumas * tp/Texinfo/XSLoader.pm (init): call Texinfo::Parser->import() after loading the NonXS parser. 2023-03-02 Patrice Dumas * tp/Texinfo/XS/parsetexi/menus.c (handle_menu): start a node entry only if the * is at the beginning of a line, as for the perl parser. * tp/Makefile.tres, tp/t/10menu.t: add leading_space_before_menu_star test. 2023-03-02 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/menus.c (handle_menu): synchronize and improve comments and debug messages. No change in code. 2023-03-01 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_next_text): remove 'fh' at the end of STDIN too. Report from Arsen Arsenović. 2023-03-01 Patrice Dumas Remove extra misc_args for special and lineraw line commands * tp/Texinfo/Common.pm (_informative_command_value), tp/Texinfo/Convert/LaTeX.pm (_convert), tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command): do not add args to extra misc_args for special and lineraw line commands, regular args can be used instead. 2023-03-01 Patrice Dumas Merge LINE_skipline in LINE_lineraw, distinguish with arg number * tp/Texinfo/Common.pm (_informative_command_value), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/command_data.awk, tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command), tp/Texinfo/command_data.txt: merge LINE_lineraw with LINE_skipline, but set the number of arguments to 1 for former lineraw commands and to 0 for former LINE_skipline commands. Use the number of arguments to distinguish when needed. 2023-03-01 Patrice Dumas * tp/Makefile.tres, tp/t/58alias.t: add alias_macro_target_removed to test an alias resolving to a @macro after @unmacro. 2023-03-01 Patrice Dumas * tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): catch an unknown command that is an unresolved alias earlier. 2023-03-01 Patrice Dumas An alias referring to another alias at definition time is resolved * NEWS, tp/Texinfo/ParserNonXS.pm (_parse_line_command_args), tp/Texinfo/XS/parsetexi/end_line.c (parse_line_command_args), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): resolve an alias referring to another alias, at @alias defintion time. * tp/Makefile.tres, tp/t/58alias.t: add texinfo_command_alias, texinfo_command_alias_indirect, texinfo_command_alias_indirect_before and recursive_alias tests. 2023-03-01 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line) (_parse_line_command_args): unset previous alias when a macro is defined, unset macro, alias and definfoenclose when a @def*index command is defined and unset alias, macro and @def*index when a @definfoenclose command is defined. * tp/Texinfo/XS/parsetexi/commands.c (add_texinfo_command), tp/Texinfo/XS/parsetexi/macro.c (delete_macro, unset_macro_record): when adding a user-defined command, reuse the existing command but reset it, unsetting the macro record with the new function unset_macro_record based on part of delete_macro. * tp/Texinfo/XS/parsetexi/commands.c (add_texinfo_command) (remove_texinfo_command), tp/Texinfo/XS/parsetexi/commands.h, tp/Texinfo/XS/parsetexi/end_line.c (parse_line_command_args), tp/Texinfo/XS/parsetexi/indices.c (add_index_command), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): pre-register @alias existing command if it does not actually exist, using the new flag CF_REGISTERED. If the command is not defined, also set CF_UNKNOWN. Keep CF_REGISTERED when redefining the command. * tp/Texinfo/ParserNonXS.pm (_parse_line_command_args), tp/Texinfo/XS/parsetexi/end_line.c (parse_line_command_args), tp/Texinfo/XS/parsetexi/indices.c (index_by_name): do not destroy an index if it is re-defined. Reset the associated index command. * tp/Texinfo/ParserNonXS.pm (_parse_line_command_args), tp/Texinfo/XS/parsetexi/end_line.c (parse_line_command_args): warn if an alias refers to another alias and do not set it. * tp/Texinfo/XS/parsetexi/macro.c (lookup_macro_and_slot, new_macro): try to reuse empty macro_list slots instead of always adding a new macro. * tp/Makefile.tres (test_files_generated_list), tp/t/58alias.t, tp/t/60macro.t: add alias.t tests alias_non_existing_command, alias_of_macro, alias_of_macro_before_macro, alias_of_definfoenclose, alias_of_definfoenclose_before_definfoenclose, alias_of_added_index, alias_of_added_index_before_added_index to test for pre-registering of @alias referred to commands. Add macro.t tests macro_replaced_by_definfoenclose, definfoenclose_replaced_by_macro, macro_alias_definfoenclose_defindex. 2023-02-28 Patrice Dumas * tp/Texinfo/XS/parsetexi/convert.c (convert_contents_to_texinfo), tp/Texinfo/XS/parsetexi/end_line.c (check_register_target_element_label, end_line_starting_block), tp/Texinfo/XS/parsetexi/macro.c (new_macro): add the convert_contents_to_texinfo function that converts only the contents of an element. Use it. 2023-02-28 Patrice Dumas * tp/Texinfo/XS/parsetexi/convert.c (expand_cmd_args_to_texi) (convert_to_texinfo_internal): update to match Texinfo::Convert::Texinfo. * tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block) tp/Texinfo/XS/parsetexi/macro.c (new_macro): call new_element on temporary element used to convert contents only with convert_to_texinfo to initialize properly. * tp/Texinfo/Convert/Texinfo.pm (_expand_cmd_args_to_texi): there are spaces_after_cmd_before_arg only after commands. * tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): minor change, use an else if, to be like the perl parser code, and remove an old FIXME. 2023-02-28 Patrice Dumas * tp/Texinfo/Common.pm (parse_node_manual), tp/Texinfo/ParserNonXS.pm (_end_line_misc_line), tp/Texinfo/Structuring.pm (new_node_menu_entry): add an argument to control whether the element argument is modified or not as in the XS parser. Remove _parse_node_manual and call directly parse_node_manual instead. 2023-02-28 Patrice Dumas * tp/Texinfo/XS/parsetexi/end_line.c (check_register_target_element_label), tp/Texinfo/XS/parsetexi/tree.c (destroy_node_spec): add destroy_node_spec to deallocate out of tree elements coollected in a label manual and node name specification, as well as the manual and node name associated elements. Use it in check_register_target_element_label. In the other cases, the manual and node name elements are used in the tree and will be deallocated when the tree is destroyed. 2023-02-28 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_misc_line) (_end_line_starting_block, _check_register_target_element_label) (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/end_line.c (check_register_target_element_label, end_line_starting_block) (end_line_misc_line), tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): group together the call of parse_node_manual, the check of no manual element and the registering if a target element for links in _check_register_target_element_label. Remove _check_internal_node, integrated in _check_register_target_element_label. * tp/Texinfo/XS/parsetexi/end_line.c (parse_node_manual): add an argument to control whether the element argument is modified or not. Add a field in NODE_SPEC_EXTRA to keep the added elements in case the element argument is not modified. Do not modify the node before being sure that there really is a manual name if there is an opening brace. Update callers. 2023-02-27 Gavin Smith * doc/texinfo.texi (Other Customization Variables), * NEWS: Document ASCII_DASHES_AND_QUOTES and ASCII_GLYPH. 2023-02-27 Gavin Smith Nuke obsolete XS overrides * tp/Texinfo/XS/MiscXS.xs, tp/Texinfo/XS/misc.c (xs_abort_empty_line, xs_merge_text): Remove. * tp/Texinfo/ParserNonXS.pm: Remove commented-out code using these. These would only be used in unusual cases when the XS parser couldn't be used but the other XS overrides could still be loaded. It means that there are now only two implementations of these functions rather than three. The removed implementations had not been changed to match changes in the other two, and it would be laborious to keep these up to date. 2023-02-27 Gavin Smith * tp/Texinfo/Convert/Plaintext.pm (%defaults, converter_initialize): Rename 'ASCII_PUNCTUATION' as 'ASCII_DASHES_AND_QUOTES' and 'NO_GRATUITOUS_UTF8' as 'ASCII_PUNCTUATION'. 2023-02-27 Patrice Dumas * tp/Texinfo/Convert/Texinfo.pm (link_element_to_texi), tp/Texinfo/ParserNonXS.pm (_check_node_label), tp/Texinfo/Structuring.pm: new function that replaces functionally node_extra_to_texi and is applied to an element. Update callers. * tp/Texinfo/Structuring.pm associate_internal_references): more common code to handle both types of internal references commands. * tp/Texinfo/Convert/Texinfo.pm (target_element_to_texi_label): remove call to node_extra_to_texi, it cannot happen. * tp/Texinfo/ParserNonXS.pm (_check_node_label, _check_empty_node), tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/end_line.c (check_empty_node) (check_node_label), tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): determine directly if an @anchor is empty, and call check_internal_node if it is not the case. Remove check_node_label and check_empty_node. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): rename arg as arg_label in the code determining @*ref link label information. * tp/Texinfo/Structuring.pm (nodes_tree): rename $arg as $direction_element. 2023-02-27 Patrice Dumas * Pod-Simple-Texinfo/pod2texi.pl (_parsed_manual_tree): update node element creation to match with the current tree. * Pod-Simple-Texinfo/manual_tests, Pod-Simple-Texinfo/Makefile.am (EXTRA_DIST): add a directory with a script to ease manual testing of the code in pod2texi.pl _parsed_manual_tree with gaps in sectioning and manual name prepended. 2023-02-27 Patrice Dumas * tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/Structuring.pm (associate_internal_references): remove the 'label' extra key, instead dynamically determine the link target as already done in other output formats than Plaintext. * tp/Texinfo/Structuring.pm (associate_internal_references): remove a missed occurence of node_argument. * tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block) (end_line_misc_line), tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): free all the elements of returned by parse_node_manual for elements that are targets of links and use parse_node_manual only to check that their syntax is not the one of an external reference. 2023-02-27 Patrice Dumas * tp/Texinfo/Convert/DocBook.pm (_convert), tp/Texinfo/Convert/HTML.pm (_convert_xref_commands), tp/Texinfo/Convert/LaTeX.pm (_convert), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/Structuring.pm (check_nodes_are_referenced) (associate_internal_references), tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace), tp/Texinfo/XS/parsetexi/tree.c (destroy_associated_info), tp/Texinfo/XS/parsetexi/api.c (build_node_spec, store_additional_info), tp/Texinfo/XS/parsetexi/extra.c (add_extra_node_spec): put node_content and node_manual information for @xref commands in the first argument instead of with the command in node_argument. Remove node_argument. Remove completly extra_node_spec and associated functions, build_node_spec and add_extra_node_spec from the XS parser. 2023-02-27 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_register_extra_menu_entry_information) (_enter_menu_entry_node), tp/Texinfo/Structuring.pm (associate_internal_references), tp/Texinfo/XS/parsetexi/menus.c (register_extra_menu_entry_information, enter_menu_entry_node): put menu_entry_node in internal_references instead of menu_entry. 2023-02-27 Patrice Dumas * tp/Texinfo/Common.pm (_copy_tree, _substitute_references), tp/Texinfo/Convert/HTML.pm (_convert_menu_entry_type), tp/Texinfo/ParserNonXS.pm (_register_extra_menu_entry_information), tp/Texinfo/Structuring.pm (_check_menu_entry) (set_menus_node_directions, associate_internal_references) (new_node_menu_entry), tp/Texinfo/Transformations.pm (_normalized_entry_associated_internal_node), tp/Texinfo/XS/parsetexi/menus.c (register_extra_menu_entry_information): put node_content and node_manual information directly in the menu_entry_node element, not in the menu_entry, remove menu_entry_node_label. 2023-02-26 Gavin Smith Add NO_GRATUITOUS_UTF8 (name could change) * tp/Texinfo/Common.pm (@variable_string_settables): Add NO_GRATUITOUS_UTF8. * tp/Texinfo/Convert/Plaintext.pm (converter_initialize): Set several other variables if NO_GRATUITOUS_UTF8 is set. Move call to Texinfo::Convert::Text::copy_options_for_convert_text to end of function as it is not immediately obvious which options are relevant for this call. 2023-02-26 Patrice Dumas * tp/Texinfo/Convert/NodeNameNormalization.pm (set_nodes_list_labels), tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/ParserNonXS.pm (_end_line_misc_line), tp/Texinfo/Structuring.pm (nodes_tree) and other functions, tp/Texinfo/Transformations.pm (_get_non_automatic_nodes_with_sections), tp/Texinfo/XS/parsetexi/api.c (store_additional_info), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line), tp/Texinfo/XS/parsetexi/extra.c (add_extra_node_spec_array), tp/Texinfo/XS/parsetexi/tree.c (destroy_associated_info): remove the nodes_manuals extra key array, instead set extra node_content, manual_content and normalized directly in the @node directions arguments, and use the number of arguments of @node to determine if there are automatic directions. Remove completly add_extra_node_spec_array and extra type extra_node_spec_array. * tp/Texinfo/ParserNonXS.pm: avoid autovivification. * tp/Texinfo/Structuring.pm (_label_target_unit_element): rename _label_target_element as _label_target_unit_element. * tp/Texinfo/XS/parsetexi/api.c (store_additional_info): to determine if an extra key is needed, count the number of additional info set. 2023-02-26 Patrice Dumas * tp/Texinfo/XS/parsetexi/debug.c (print_element_debug) (debug_print_element): add print_element_debug that sets up the element debugging string based on debug_print_element code. Use in debug_print_element. 2023-02-26 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_convert_xref_commands) (_convert_menu_entry_type): rename $node_entry as $label_info. Reindent. 2023-02-26 Patrice Dumas * tp/Texinfo/Convert/NodeNameNormalization.pm (set_nodes_list_labels): remove code related to structures not present for target elements anymore. Reindent. 2023-02-26 Arsen Arsenović install-info: Invert umask in mode computation * install-info/install-info.c (output_dirfile): Invert umask applied to tempfile (as is specified in the definition for umasks). 2023-02-26 Arsen Arsenović install-info: Relax tempfile mode earlier * install-info/install-info.c (output_dirfile): Reorder the tempfile mode relaxation block directly under mkstemp, in order to not accidentally operate on a closed file descriptor. 2023-02-26 Patrice Dumas * tp/Texinfo/Convert/NodeNameNormalization.pm (set_nodes_list_labels), tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/ParserNonXS.pm (_end_line_misc_line), tp/Texinfo/Structuring.pm, tp/Texinfo/Transformations.pm (_new_node) (_get_non_automatic_nodes_with_sections), tp/Texinfo/XS/parsetexi/api.c (store_additional_info), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): do not put the node name itself in extra nodes_manuals, only the node directions. * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): remove check on existing manual_content for automatic directions, as it should never be possible. * tp/Texinfo/Convert/Texinfo.pm: use Texinfo::Common; 2023-02-26 Patrice Dumas * tp/Texinfo/Common.pm (register_label, get_label_element), tp/Texinfo/Convert/Converter.pm (node_information_filename) (_set_tree_units_files, sort_element_counts), tp/Texinfo/Convert/HTML.pm (command_text, _normalized_label_id_file) (_set_root_commands_targets_node_files, _external_node_href, output), tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/Info.pm (output) (format_node), tp/Texinfo/Convert/LaTeX.pm (_convert), tp/Texinfo/Convert/NodeNameNormalization.pm (set_nodes_list_labels), tp/Texinfo/Convert/Plaintext.pm (process_footnotes, node_line) (_convert), tp/Texinfo/Convert/Texinfo.pm (target_element_to_texi_label), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/ParserNonXS.pm (_end_line_misc_line) (_end_line_starting_block, _process_remaining_on_line), tp/Texinfo/Structuring.pm (_check_node_same_texinfo_code) (_check_menu_entry, check_nodes_are_referenced) (complete_node_tree_with_menus, nodes_tree) (associate_internal_references, number_floats, new_node_menu_entry), tp/Texinfo/Transformations.pm (_new_node), tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block) (end_line_misc_line), tp/Texinfo/XS/parsetexi/labels.c (register_label), tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace), tp/init/documentation_examples.pm: do not register the label element in register_label, instead use directly arguments, first argument of node or anchor, second argument of float, possibly using get_label_element when the element command name is not known. Use {'extra'}->{'normalized'} instead of {'extra'}->{'node_content'} to determine if th enode is present multiple times, or empty. Pass normalized label string and label contents separately to node_information_filename, to _normalized_label_id_file and to user defined reference label_target_name. Add file_info_label_contents with label contents to files_source_info for a redirection file. Add 'normalized' extra key in Plaintext/Info for nodes or anchors created for footnotes. Add target_element_to_texi_label to format target element label to Texinfo. * tp/Texinfo/Convert/DocBook.pm (_convert), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): use directly the normalized extra key instead of redoing the normalization. 2023-02-26 Gavin Smith ASCII_GLYPH in tests * tp/t/plaintext.t (punctuation_sc_accents_ascii_punct) (punctuation_sc_accents_ascii_glyph) (punctuation_sc_accents_ascii_punct_latin1) (punctuation_sc_accents_ascii_glyph_latin1) (punctuation_sc_accents_ascii_punct_usascii) (punctuation_sc_accents_ascii_glyph_usascii) (punctuation_sc_accents_to_utf8_ascii_punct_latin1) (punctuation_sc_accents_to_utf8_ascii_glyph_latin1) (punctuation_sc_accents_to_utf8_ascii_punct_usascii): (punctuation_sc_accents_to_utf8_ascii_glyph_usascii): Rename from *_ascii_punct_* to *_ascii_glyph_*. 2023-02-26 Gavin Smith ASCII_GLYPH in tests * tp/t/plaintext.t (punctuation_sc_accents_ascii_punct) (punctuation_sc_accents_ascii_punct_latin1) (punctuation_sc_accents_ascii_punct_usascii) (punctuation_sc_accents_to_utf8_ascii_punct_latin1) (punctuation_sc_accents_to_utf8_ascii_punct_usascii): Set ASCII_GLYPH rather than ASCII_PUNCTUATION. 2023-02-25 Patrice Dumas * tp/Texinfo/Convert/NodeNameNormalization.pm (set_nodes_list_labels): use -> systematically with references. 2023-02-25 Patrice Dumas * tp/Texinfo/XS/parsetexi/api.c (build_target_elements_list): rename build_label_list as build_target_elements_list. * tp/Texinfo/XS/parsetexi/labels.c (register_label), tp/Texinfo/XS/parsetexi/labels.h, tp/Texinfo/XS/parsetexi/api.c (build_target_elements_list): rename labels_list as target_elements_list and make it a list of element. Remove the LABEL type. More explicit comments and variable names. * tp/Texinfo/XS/parsetexi/labels.h: remove external definition of internal_xref_space. * tp/Texinfo/ParserNonXS.pm: remove _register_label, call directly Texinfo::Common::register_label. * tp/Texinfo/Common.pm (register_label): more explicit comments and variable names. 2023-02-24 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_starting_block), tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block): check only that there is a command_as_argument, not the parent command to error on accent command being used as command_as_argument. * tp/Texinfo/ParserNonXS.pm (_end_line_starting_block): remove a useless check of contents content. * tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block): use a else if to be more similar to pure parser code. 2023-02-24 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_close_current) (_process_remaining_on_line, _parse_texi): use same messages as XS parser. Remove redundant checks on contents, now if contetns exists, there is some contents. * tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace): remove useless code for an impossible situation. 2023-02-24 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_parse_special_misc_command): match @comment before @c. Allow @clickstyle argument to be be right after @clickstyle without space in-between. * tp/Texinfo/XS/parsetexi/end_line.c (parse_special_misc_command): check that there is only comments or spaces after argument for unmacro and clickstyle. For clickstyle, verify that the string is not finished before doing memcmp. * tp/Texinfo/ParserNonXS.pm (_parse_special_misc_command), tp/Texinfo/XS/parsetexi/end_line.c (parse_special_misc_command): check remaining on line only for @clickstyle. * tp/Makefile.tres, tp/t/08misc_commands.t: add clickstyle_no_end_of_line and clickstyle_and_comments tests. Add a case without spaces between @clickstyle and argument in the clickstyle test. For set_on_item_line and set_in_item_missing_line tests, use different item names with and without comments following to be able to check more easily the results. 2023-02-24 Arsen Arsenović install-info: Fix dir file mode being restricted The recent switch to mkstemp and atomic updating of the directory file unintentionally lead to overly restrictive permissions being set on directory file. This error was originally introduced in 93162b78d84f731710025b300bc0cd7ca8b14347 (2022-12-03 Gavin Smith ). * install-info/install-info.c (output_dirfile): Change mode of installed dir file back to its usual value, rather than the mkstemp default of 0600. 2023-02-23 Patrice Dumas * tp/Texinfo/XS/parsetexi/end_line.c (skip_to_comment_if_comment_or_spaces, parse_special_misc_command): add skip_to_comment_if_comment_or_spaces based on set argument handling, to return end of argument before comment and whitespace if the line is followed either by whitespaces or a comment. Use in @clear argument parsing to allow for comments but error out if there is anything else than a comment or whitespaces following the flag argument. * * tp/Texinfo/XS/parsetexi/end_line.c (parse_special_misc_command): handle the case of Texinfo framgment with @set ending right after the argument, without a new line. * tp/Texinfo/XS/parsetexi/end_line.c (skip_to_comment): rename skip_comment as skip_to_comment. * tp/Makefile.tres, tp/t/50value.t: add begin_like_comment_on_set_line, comment_on_clear_line, set_no_end_of_line and clear_no_end_of_line tests. remove or replace some FIXME. 2023-02-22 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/menus.c (handle_menu): remove empty menu entry node description by using close_container to close. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line): clarify the comments explaining the situation after closing when encountering a root command or @bye. Restate a FIXME as a TODO and be more explicit. 2023-02-22 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): explain why the next input is directly drawn after macro handling. 2023-02-22 Gavin Smith Split ASCII_GLYPH and ASCII_PUNCTUATION * tp/Texinfo/Common.pm (@variable_string_settables): Add ASCII_GLYPH. * tp/Texinfo/Convert/Plaintext.pm (converter_initialize): Ignore ASCII_PUNCTUATION for the output of @quoted_commands. (_process_text): Reorder conditional. (%defaults): Set ASCII_PUNCTUATION to 1 and ASCII_GLYPH to 0. * tp/Texinfo/Convert/Text.pm (copy_options_for_convert_text): Propagate ASCII_GLYPH. (brace_no_arg_command): Check ASCII_GLYPH setting rather than that of ASCII_PUNCTUATION. 2023-02-22 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_handle_macro) (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/macro.c (handle_macro), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): return an error status from handle_macro for macro expansion error. Do not get next text and instead return the remaining of the line if there was a macro expansion error. * tp/Texinfo/ParserNonXS.pm (_handle_macro), tp/Texinfo/XS/parsetexi/macro.c (handle_macro): rename current element for line_args line arguments parsing as arg_elt. * tp/Texinfo/ParserNonXS.pm (_handle_macro), tp/Texinfo/XS/parsetexi/macro.c (handle_macro): expand macro body only if there is no expansion error. 2023-02-22 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): rename region extra anchor key to element_region. 2023-02-22 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): remove code removing empty contents and trensferring source marks of accent command now that it is collected by gather_spaces_after_cmd_before_arg. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line): similar organization of code with XS parser. 2023-02-22 Patrice Dumas * tp/Texinfo/Convert/Texinfo.pm (_expand_cmd_args_to_texi), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/ParserNonXS.pm (_gather_spaces_after_cmd_before_arg) (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/convert.c (expand_cmd_args_to_texi), tp/Texinfo/XS/parsetexi/parser.c (gather_spaces_after_cmd_before_arg, process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace): store spaces_after_cmd_before_arg as an element, firstly put in the brace command contents (with an internal type used solely for debugging) to gather source marks, then removed from the tree and put in the spaces_after_cmd_before_arg info key, with gather_spaces_after_cmd_before_arg(). * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line): avoid autovivification. 2023-02-22 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_next_text, _parse_texi) (_process_remaining_on_line): adapt to input stack not being empty even after last input has been fetched. Remove completly the empty input from the input stack at the end of _parse_texi. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): in case of an unclosed raw output ignored block, exit to get to end line processing in parse_texi instead of setting the line to an empty string. 2023-02-22 Patrice Dumas * tp/Texinfo/XS/Makefile.am (Parsetexi_la_SOURCES), tp/Texinfo/XS/parsetexi/debug.h, tp/Texinfo/XS/parsetexi/api.c, tp/Texinfo/XS/parsetexi/close.c, tp/Texinfo/XS/parsetexi/context_stack.c, tp/Texinfo/XS/parsetexi/debug.c, tp/Texinfo/XS/parsetexi/end_line.c, tp/Texinfo/XS/parsetexi/handle_commands.c, tp/Texinfo/XS/parsetexi/macro.c, tp/Texinfo/XS/parsetexi/menus.c, tp/Texinfo/XS/parsetexi/parser.c, tp/Texinfo/XS/parsetexi/parser.h, tp/Texinfo/XS/parsetexi/separator.c, tp/Texinfo/XS/parsetexi/source_marks.c, tp/Texinfo/XS/parsetexi/end_line.c, tp/Texinfo/XS/parsetexi/input.c: add a separate include fle for debug.c. More include of header files when the code declared in these header files is directly used. * tp/Texinfo/XS/parsetexi/input.c (next_text): add a debug statement if a source mark was missed, more similar code as in the perl parser. 2023-02-21 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): do not call end_line nor ask for a new line when there is no more input after an empty line, since this is done in parse_texi. * tp/Texinfo/ParserNonXS.pm (_parse_texi), tp/Texinfo/XS/parsetexi/parser.c (parse_texi): gather text after @bye only if there is still some input and status was FINISHED_TOTALLY. Collect source marks after @bye. * tp/Texinfo/XS/parsetexi/parser.c (parse_texi): check that the context_stack is empty at the end. * tp/Texinfo/XS/parsetexi/parser.c (parse_texi): do not call input_reset_input_stack at the end, as now the text after @bye is collected, so the input stack, as well as macro expansion and value expansions should all be closed. Add bug messages if it is not the case. * tp/t/60macro.t, tp/Makefile.tres: add bye_in_macro test. 2023-02-21 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_input_push_file, _end_line_misc_line), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line), tp/Texinfo/XS/parsetexi/input.c (next_text, input_push_file): keep the information on the full include file path with input info. Use the full input path in include file opening and closing errors. * tp/Texinfo/ParserNonXS.pm (_input_push_file): return the error message. Update callers. * tp/Texinfo/ParserNonXS.pm (_new_text_input): die if opening the internal text handler fails. (_next_text): show the close error message. 2023-02-21 Patrice Dumas * tp/Texinfo/XS/xspara.c (xspara__add_next): check output of mbrtowc, in particular if 0, advance to avoid an infinite loop. 2023-02-20 Patrice Dumas * po/POTFILES.in: update highlight_syntax.pm path. 2023-02-20 Patrice Dumas * tp/Texinfo/Convert/Converter.pm (float_type_number), tp/Texinfo/Convert/HTML.pm (_convert_listoffloats_command), tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/LaTeX.pm (_convert), tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): @float and @listoffloats always have {'extra'}->{'float_type'} set, assume that in the code. 2023-02-20 Patrice Dumas * tp/Texinfo/Convert/NodeNameNormalization.pm (set_float_types): avoid autovivification. 2023-02-20 Patrice Dumas * tp/Texinfo/Convert/NodeNameNormalization.pm (_parse_float_type), tp/Texinfo/XS/parsetexi/end_line.c (parse_float_type): check only that there is one argument, not that there is content in the argument. 2023-02-20 Patrice Dumas * tp/Texinfo/Common.pm (_substitute_references), tp/Texinfo/Convert/Converter.pm (float_type_number) (float_name_caption), tp/Texinfo/Convert/HTML.pm (_convert_listoffloats_command), tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/LaTeX.pm (_convert), tp/Texinfo/Convert/NodeNameNormalization.pm (_parse_float_type), tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/Convert/TexinfoMarkup.p (_convert), tp/Texinfo/XS/parsetexi/api.c (store_additional_info): put float_type directly in extra as string. 2023-02-20 Patrice Dumas * tp/Texinfo/Convert/NodeNameNormalization.pm (_parse_float_type), tp/Texinfo/XS/parsetexi/api.c (store_additional_info), tp/Texinfo/XS/parsetexi/end_line.c (parse_float_type), tp/Texinfo/XS/parsetexi/extra.c (add_extra_float_type), tp/Texinfo/XS/parsetexi/tree.c (destroy_associated_info): do not store 'content' in extra float_type, it is not used anymore. Do corresponding changes in the XS parser, removing the add_extra_float_type function, the extra_float_type extra type and the EXTRA_FLOAT_TYPE type (this code is not really used in the XS parser, but could be). 2023-02-20 Patrice Dumas * tp/Texinfo/Convert/Converter.pm (float_type_number) (float_name_caption), tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/LaTeX.pm (_latex_header, _convert): use directly float or listoffloats {'args'}->[0] instead of {'extra'}->{'float_type'}->{'content'}. 2023-02-20 Patrice Dumas * tp/Texinfo/Convert/NodeNameNormalization.pm (_parse_float_type), tp/Texinfo/XS/parsetexi/end_line.c (parse_float_type): return the float type. (Note that parse_float_type in end_line.c is not currently used). 2023-02-20 Patrice Dumas * tp/Texinfo/Common.pm (_substitute_references), tp/Texinfo/Convert/Converter.pm (float_type_number) (float_name_caption), tp/Texinfo/Convert/HTML.pm (_convert_listoffloats_command), tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/LaTeX.pm (_latex_header, _convert), tp/Texinfo/Convert/NodeNameNormalization.pm (_parse_float_type) (set_float_types), tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/XS/parsetexi/api.c (store_additional_info), tp/Texinfo/XS/parsetexi/end_line.c (parse_float_type): rename extra key type for float and listoffloats as float_type. 2023-02-19 Patrice Dumas * tp/Texinfo/Common.pm (debug_print_element): rename debug_print_element_short as debug_print_element as both functions are almost the same, and remove the former debug_print_element function. Update callers. * tp/Texinfo/XS/parsetexi/debug.c (debug_print_element): rename debug_print_element_short as debug_print_element. Update callers. * tp/Texinfo/ParserNonXS.pm (_print_current): inline and remove. 2023-02-19 Patrice Dumas * doc/texinfo.texi (Other Customization Variables), tp/Texinfo/Common.pm (@variable_string_settables), tp/Texinfo/Convert/Plaintext.pm (converter_initialize): add OPEN_DOUBLE_QUOTE_SYMBOL and CLOSE_DOUBLE_QUOTE_SYMBOL to be able to customize double quotes used for @dfn in Info and Plaintext. 2023-02-19 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (@set_flag_index_char_ignore): use only one data structure for txiindex*ignore sets order and association with symbols. 2023-02-19 Patrice Dumas * tp/tests/Makefile.onetst, tp/tests/other/list-of-tests: add a test of HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE. 2023-02-19 Patrice Dumas * tp/ext/highlight_syntax.pm (highlight_setup, highlight_process): handle HIGHLIGHT_SYNTAX customization option being not defined. Can happen if highlight_syntax.pm is loaded as an init file and not as an extension. * tp/tests/Makefile.onetst, tp/tests/other/list-of-tests: add syntax highlighting tests with HIGHLIGHT_SYNTAX highlight and pygments. 2023-02-19 Patrice Dumas Add other commands for syntax highlighting * doc/texinfo.texi (Other Customization Variables) (Syntax Highlighting), tp/ext/highlight_syntax.pm (%highlight_type_languages_name_mappings, highlight_setup) (_convert_element, highlight_process): add the possibility to use the highlight command and the pygmentize command. * tp/ext/highlight_syntax.pm (_get_language, highlight_process): return the language to be converted to warn if verbose and the language is not found. 2023-02-19 Gavin Smith * doc/texinfo-tex-test.texi (Index and paragraphs): New section. 2023-02-19 Gavin Smith Reorganise test file * doc/texinfo-tex-test.texi (Headings and Footings): Change some @chapter's to @section's to simplify table of contents. (Test of @displaymath): Move earlier in file. (Index display): Move to end. 2023-02-19 Gavin Smith Index commands end paragraphs * doc/texinfo.tex (\indexpar): New macro to end open paragraphs. (\doindex, \docodeindex): Use \indexpar. (\itemzzz, \itemizeitem): Add penalty that will be recognized in \indexpar to make an exception immediately after @item. (\safewhatsit): Propagate \lastpenalty in horizontal mode. (\newindex): Remove obsolete comment about vms filenames. 2023-02-19 Patrice Dumas * tp/ext/highlight_syntax.pm (highlight_setup, highlight_process): determine list of languages highlighted in an handler, highlight_setup in order to be able to use the customization variables while doing this initialization. * tp/ext/highlight_syntax.pm (highlight_setup): silence the redundant warning message associated to a failure to run the command through open. * tp/ext/highlight_syntax.pm (_get_language): handle not defined language. * tp/tests/other/highlight_example.texi: add more @example blocks, including without language set. 2023-02-19 Patrice Dumas * tp/Texinfo/Common.pm (@variable_string_settables), tp/ext/highlight_syntax.pm (_get_language), tp/texi2any.pl, tp/Makefile.am (dist_extensions_DATA): load highlight_syntax.pm in main program if HIGHLIGHT_SYNTAX is set. Rename HIGHLIGHT_SYNTAX_DEFAULT as HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE. Setup highlight_syntax.pm as an internal extension. * doc/texinfo.texi (Other Customization Variables, Generating HTML) (Syntax Highlighting): document syntax highlighting support in texi2any for @example for HTML. * tp/tests/other/list-of-tests: use HIGHLIGHT_SYNTAX to load syntax highlighting for one test case. 2023-02-18 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (parser): remove a check and handling of user-provided state in parser. Both codes were not active. 2023-02-18 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (%default_no_paragraph_commands, parser): (_parse_line_command_args), tp/Texinfo/XS/parsetexi/command_data.awk, tp/Texinfo/XS/parsetexi/indices.c (add_index_command), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line), tp/Texinfo/command_data.txt, tp/maintain/regenerate_commands_perl_info.pl: add no_paragraph flag. Put the flag explicitly for brace and nobrace commands in command_data.txt and add automatically for line and block commands. Add default index commands and add dynamically new index commands. 2023-02-18 Patrice Dumas * tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): remove index entry commands from the list of commands that do not start paragraphs in the check before calling begin_paragraph. 2023-02-18 Gavin Smith * tp/Texinfo/ParserNonXS.pm (_end_line_def_line): Reorder conditional to match XS code. No functional changes. 2023-02-18 Patrice Dumas Index commands close paragraphs * tp/Texinfo/ParserNonXS.pm (%default_close_paragraph_commands), (parser, _parse_line_command_args), tp/Texinfo/XS/parsetexi/commands.c (close_preformatted_command), tp/Texinfo/XS/parsetexi/indices.c (add_index_command): set index commands as close_paragraph commands, but do not set them to close preformatted containers. * tp/Texinfo/ParserNonXS.pm (_end_paragraph), tp/Texinfo/XS/parsetexi/parser.c (end_paragraph): remove empty paragraphs. 2023-02-18 Patrice Dumas * tp/Texinfo/XS/parsetexi/indices.c (enter_index_entry): remove the number field from the index entry structure as it is not used, the position in the index array is directly used in api.c. * tp/Texinfo/ParserNonXS.pm: update POD documentation of index entries, add index related extra keys documentation. 2023-02-18 Gavin Smith * Texinfo/Convert/HTML.pm (_convert_def_line_type) : Reorder conditional and remove one level of indentation. No functional changes. 2023-02-18 Gavin Smith * Texinfo/Convert/TexinfoMarkup.pm (%defcommand_name_type): Specfify 'defline' as documenting 'symbol' objects. * util/texinfo.dtd: Add . 2023-02-18 Gavin Smith * tp/Texinfo/Convert/DocBook.pm (%defcommand_name_type): For @defline, wrap main symbol in , which is the best DocBook tag I could find for this. 2023-02-18 Gavin Smith * tp/Texinfo/Convert/LaTeX.pm (_convert): Do not treat @defline as "unhandled". 2023-02-18 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_convert_printindex_command) (_prepare_index_entries), tp/Texinfo/Convert/IXIN.pm (output_ixin), tp/Texinfo/Convert/Plaintext.pm (process_printindex), tp/Texinfo/ParserNonXS.pm (_enter_index_entry), tp/Texinfo/Transformations.pm (_reassociate_to_node), tp/Texinfo/XS/parsetexi/indices.c (enter_index_entry), tp/t/automatic_nodes.t: rename 'entry_node' as 'element_node' and 'entry_region' as 'element_region'. 2023-02-18 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_convert_printindex_command) (_prepare_index_entries), tp/Texinfo/Convert/IXIN.pm (output_ixin), tp/Texinfo/Convert/Plaintext.pm (process_printindex), tp/Texinfo/ParserNonXS.pm (_enter_index_entry), tp/Texinfo/Structuring.pm (index_entry_sort_string), tp/Texinfo/Transformations.pm (_reassociate_to_node), tp/Texinfo/XS/parsetexi/api.c (build_single_index_data), tp/Texinfo/XS/parsetexi/indices.c (wipe_index, enter_index_entry), tp/t/automatic_nodes.t: associate 'entry_node', 'entry_region' and 'index_ignore_chars' to the element associated to an index entry rather than to the index entry. 2023-02-18 Patrice Dumas * tp/Texinfo/XS/parsetexi/api.c (build_single_index_data), tp/Texinfo/XS/parsetexi/indices.c (wipe_index, enter_index_entry): store index_ignore_chars as a string already in enter_index_entry. 2023-02-18 Patrice Dumas Store index_ignore_chars as a string * tp/Texinfo/Common.pm (_substitute_references), tp/Texinfo/ParserNonXS.pm (@set_flag_index_char_ignore_order) (_enter_index_entry), tp/Texinfo/Structuring.pm (index_entry_sort_string), tp/Texinfo/XS/parsetexi/api.c (build_single_index_data): store index_ignore_chars as a string, by concatenating txiindex*ignore characters in a predetermined order. 2023-02-18 Patrice Dumas * tp/Makefile.tres, tp/t/09indices.t: add index_entries_before_nodes test, with NODE_NAME_IN_INDEX set to get the HTML warning, as when the converter is called with convert, as is sthe case for html_text, NODE_NAME_IN_INDEX is not set based on USE_NODES. 2023-02-18 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_convert_printindex_command): add targetted warnings for index entries not associated to node or section that are formatted in printindex with warnings only if the index entry is expected to be associated with a node (NODE_NAME_IN_INDEX set) or a section (NODE_NAME_IN_INDEX set to 0), and if the index entry is not in a special region (titlepage or copying). * tp/t/input_files/index_special_region.texi: add a comment. 2023-02-18 Gavin Smith * tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line): Match pure Perl code better by looking up "def_command" extra value. 2023-02-18 Gavin Smith @defblock, @defline in XS parser * tp/Texinfo/XS/parsetexi/close.c (close_command_cleanup): Call gather_def_item for @defblock. * tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command): Handle @defline. Allow @defline and @deflinex in @defblock. * tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line): No index entry for @defline. 2023-02-18 Gavin Smith * tp/Texinfo/Common.pm (%def_map): Add defline. 2023-02-17 Patrice Dumas * tp/Texinfo/Common.pm (index_content_element), tp/Texinfo/Convert/DocBook.pm (_index_entry), tp/Texinfo/Convert/HTML.pm (_convert_printindex_command) (_prepare_index_entries, output_internal_links), tp/Texinfo/Convert/IXIN.pm (output_ixin), tp/Texinfo/Convert/LaTeX.pm (_index_entry), tp/Texinfo/Convert/Plaintext.pm (process_printindex), tp/Texinfo/Convert/TexinfoMarkup.pm (_index_entry), tp/Texinfo/ParserNonXS.pm (_enter_index_entry), tp/Texinfo/Structuring.pm (sort_indices), tp/Texinfo/Transformations.pm (_reassociate_to_node), tp/Texinfo/Translations.pm (complete_indices), tp/Texinfo/XS/parsetexi/api.c (build_single_index_data), tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line), tp/Texinfo/XS/parsetexi/indices.c (wipe_index, enter_index_entry), tp/init/chm.pm (chm_init): remove 'content_normalized' and 'entry_content' from index entry. Instead, add 'def_index_element' and 'def_index_ref_element' to extra of definition lines, and use Texinfo::Common::index_content_element to find, in the tree, the element corresponding to the content of the index entry associated to the 'entry_element' entry element. * tp/Texinfo/Common.pm (_relate_index_entries_to_table_items_in), tp/Texinfo/Convert/HTML.pm (_convert_printindex_command) (_prepare_index_entries): use 'entry_associated_element' to re-associate index entry command to table entry, and not 'entry_element' as it holds informations important for the index entry. It is not ideal, as it adds an undocumented key to the index entry. * tp/Texinfo/Convert/DocBook.pm (_convert): restrict elements trigerring pending_prepend text addition more than with Texinfo::Common::element_is_inline, allow only paragraph and preformatted, as containers like line_args are inline, but we do not want to have text prepended there. 2023-02-17 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_enter_index_entry), tp/Texinfo/Structuring.pm (sort_indices), tp/Texinfo/XS/parsetexi/api.c (build_single_index_data), tp/Texinfo/XS/parsetexi/indices.c (enter_index_entry): do not duplicate sortas information in index entry. Change 'current' variable name. * tp/Texinfo/Convert/HTML.pm (_convert_printindex_command), tp/Texinfo/Structuring.pm (sort_indices): use a variable for the element associated to the index entry. * tp/Texinfo/Structuring.pm: avoid autovivification. 2023-02-16 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_enter_index_entry), tp/Texinfo/XS/parsetexi/api.c (build_single_index_data), tp/Texinfo/XS/parsetexi/indices.c (enter_index_entry): remove index_at_command and index_type_command entries from index entries. Remove index_at_command argument of enter_index_entry, update callers. * tp/Texinfo/Convert/Plaintext.pm (): determine @-command name associated to index entry based on the tree element. 2023-02-16 Patrice Dumas * tp/Texinfo/Structuring.pm (sort_indices): determine @-command name associated to index entry based on the tree element. 2023-02-16 Patrice Dumas * tp/Texinfo/Structuring.pm (_sort_index_entries) (_collator_sort_index_entries): use index_name as the last way to disambiguate index entries when sorting. 2023-02-16 Gavin Smith Initial @defblock, @defline in texi2any * tp/Texinfo/command_data.txt (defblock, defline, deflinex): Add. * tp/Texinfo/ParserNonXS.pm (_close_command_cleanup): Call _gather_def_item for @defblock. (_process_remaining_on_line): Allow any def line command in @defblock, including @defline. (_end_line_def_line): No index entry for @defline. * tp/Texinfo/Convert/Plaintext.pm (%indented_commands): Add @defblock. (_convert): Do not treat "defline" as an unhandled command. Treat defline similarly to deffn. * tp/Texinfo/Convert/HTML.pm (%default_commands_conversion): Use _convert_def_command for @defblock. * doc/texinfo.tex (@defline, @deftypeline): Define as synonymns for @deflinex, @deftypelinex. 2023-02-16 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_close_container, _remove_empty_content) (_expand_macro_arguments), tp/Texinfo/XS/parsetexi/close.c (remove_empty_content, close_container), tp/Texinfo/XS/parsetexi/macro.c (expand_macro_arguments): separate the code to remove empty content, put in remove_empty_content from the remaining of close_container. Do not remove completly macro arguments that are empty, only remove the contents, keep a brace_command_arg to mark that there was an empty string argument in the Texinfo code. 2023-02-16 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): keep information on empty ignored inline conditional arguments. * tp/Makefile.tres, tp/t/xml_tests.t: new test inlineifset_empty_second_arg. 2023-02-16 Patrice Dumas * util/txixml2texi.pl (BEGIN): update by adapting texi2any.pl BEGIN block. 2023-02-16 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c (handle_comma): do not open a brace command container if the second argument of inlinefmtifelse does not exist. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line): comments, more similar code to XS parser. 2023-02-15 Patrice Dumas * tp/t/input_files/delcomment_followed_by_cpp_line.texi: remove (wrong) @setfilename. * tp/t/test_utils.pl (output_texi_file): do not add a chapter if there is a node with name starting by chap. 2023-02-15 Patrice Dumas * tp/Makefile.tres, tp/t/converters_tests.t: add setfilename_no_extension test. * tp/t/30sectioning.t, tp/t/input_files/*.texi, tp/tests/formatting/*.texi: remove some @setfilename, when it is not useful for the test, for file that are used in more than one test. 2023-02-15 Patrice Dumas * tp/t/converters_tests.t: change node names to avoid warnings. 2023-02-15 Gavin Smith * tp/Texinfo/XS/parsetexi/handle_commands.c (parse_line_command_args): Reference regions stack correctly. Report from Patrice. 2023-02-15 Patrice Dumas * tp/Makefile.tres, tp/t/xml_tests.t: rename node_no_section as top_node_no_section and node_and_bye as top_node_and_bye. * tp/tests/formatting/index_entries_relate_to_item.texi, tp/t/input_files/all_spaces.texi, tp/t/input_files/chinese_mixed_with_en.texi: add chapter/node after Top node. 2023-02-15 Patrice Dumas * tp/Makefile.tres, tp/t/languages.t: rename simple as simple_documentlanguage and multiple as multiple_documentlanguage. Add some chapter and node after Top to be more useful for output formats that do not output the Top node, and also to test for translation in @node. 2023-02-15 Patrice Dumas * tp/t/init_files_tests.t, tp/t/init/undef_node_file_name.init: change tests to be more useful for LaTeX, and more like actual manuals by renaming a node and adding a chapter. 2023-02-15 Patrice Dumas * tp/t/formats_encodings.t: change tests to be more useful for LaTeX by renaming a node. * tp/t/html_tests.t: add some chapters for tests to look more like actual manuals. 2023-02-15 Gavin Smith * tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): Call add_extra_string_dup instead of add_extra_string. 2023-02-15 Gavin Smith Put regions stack in nesting context * tp/Texinfo/XS/parsetexi/context_stack.h (NESTING_CONTEXT): Add regions_stack field. * tp/Texinfo/XS/parsetexi/api.c (reset_parser_except_conf): Reset it. * tp/Texinfo/XS/parsetexi/context_stack.c (push_region, pop_region, current_region, current_region_cmd) (reset_region_stack): Remove. * tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command), * tp/Texinfo/XS/parsetexi/close.c (pop_block_command_contexts): Push and pop from new regions stack. * tp/Texinfo/XS/parsetexi/tree_types.h (INDEX_ENTRY): Type of 'region' field is now enum command_id, not ELEMENT *. * tp/Texinfo/XS/parsetexi/indices.c (enter_index_entry): Assign 'region' from region_stack. * tp/Texinfo/XS/parsetexi/api.c (build_single_index_data): Create Perl string for 'entry_region'. * tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace) <@anchor>: Save 'region' as string rather than element reference. * tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting_context): Check that region command does not occur inside region command. * tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command): Do not check for nested region here. 2023-02-15 Gavin Smith Put regions stack in nesting context * tp/Texinfo/ParserNonXS.pm (parser): Initialise 'regions_stack' on 'nesting_context'. (%parser_state_initialization): Remove 'regions_stack'. (_pop_block_command_contexts, _enter_index_entry) (_process_remaining_on_line, _parse_line_command_args): Refer to new array throughout. (_enter_index_entry), (_process_remaining_on_line) <@anchor>: Set 'entry_region' and 'region' to string rather than element reference. (%not_in_region_commands): New hash, initialised with region commands. (_check_valid_nesting_context): Check commands within region commands. (_process_remaining_on_line): Do not check for nested regions here. 2023-02-15 Patrice Dumas * tp/t/60macro.t, tp/t/80include.t: change tests to be more useful for LaTeX by adding nodes after Top node. 2023-02-15 Patrice Dumas * tp/t/57invalid_nestings.t: change ref_in_anchor test name to ref_to_top_in_anchor. Change tests to be more useful for LaTeX by adding nodes and renaming nodes. 2023-02-15 Patrice Dumas * tp/t/50value.t, tp/t/55conditionals.t: change tests to be more useful for LaTeX by adding nodes after Top node. 2023-02-15 Patrice Dumas * tp/t/40moresectioning.t: add latex output for placed_things_before_node. Change tests to be more useful for LaTeX and avoid warnings by changing node names. 2023-02-15 Patrice Dumas * tp/Makefile.tres, tp/t/30sectioning.t: rename node test as node_simple. Change tests to be more useful for LaTeX by adding a node after the Top node, change node names, adding an @unnumbered. 2023-02-15 Patrice Dumas * tp/t/27float.t, tp/t/28heading.t: change tests to be more useful for LaTeX by adding a node after the Top node. Add latex output for all the float tests. 2023-02-15 Patrice Dumas * tp/t/22xtable.t, tp/t/25regions.t: change tests to be more useful for LaTeX by adding a node or chapter after the Top node or renaming the Top or other nodes. 2023-02-15 Patrice Dumas * tp/t/19def.t: change tests to be more useful for LaTeX by adding a node after the Top node or renaming the Top or other nodes. 2023-02-15 Patrice Dumas * tp/t/10menu.t: rename Top node as first when it is not important for the first node to be the Top node, for the formats in which Top node is not output. 2023-02-15 Patrice Dumas * tp/t/test_utils.pl (output_texi_file): better formatting of output file. Warn if it is not possible to get an output relevant output formats that do not output @node Top. Node name beginning by 'chap' are considered to stop the Top node and allows to have a useful test in formats that do not output @node Top content. * tp/t/03coverage_braces.t, tp/t/08misc_commands.t: change tests to be more useful for LaTeX by adding a node after the Top node or replacing by an anchor. * tp/t/09indices.t, tp/t/input_files/*.texi: change tests to be more useful for LaTeX by adding a node after the Top node or renaming such a node to be prefixed by chap and avoid the warning in test_utils.pl.. 2023-02-15 Patrice Dumas @thisfile in LaTeX output * doc/texinfo.texi (Custom Headings), tp/Texinfo/Convert/LaTeX.pm (%LaTeX_in_heading_commands_formatting, _latex_header) (_push_new_context, _set_custom_headings, _include_file_name) (_convert): add a context for custom heading commands. If thisfile is in a custom heading, determine current include file based on source marks in collected_includes state stack, and reset a LaTeX macro when the current include file changes. Always prepend to $result in _convert. * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/latex_tests.t: add custom_heading_with_include and custom_heading_with_include_in_command tests. 2023-02-14 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): check the whole command name when checking for nested ignored @if* conditional block commands. * tp/Makefile.tres, tp/t/55conditionals.t: add nested_ifset_prepended_to_command_name test. 2023-02-14 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): keep content in ignored rawpreformatted output block commands in elided_rawpreformatted container as raw text. * tp/Texinfo/Convert/TextContent.pm (%ignored_block_commands): ignore @latex. 2023-02-14 Patrice Dumas * tp/Makefile.tres, tp/t/60macro.t: add macro_expansion_end_in_conditional_line and macro_expansion_end_in_conditional_end tests. 2023-02-14 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_misc_line) (_end_line_starting_block, _parse_texi), tp/Texinfo/XS/parsetexi/api.c (store_source_mark_list), tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block, end_line_misc_line), tp/Texinfo/XS/parsetexi/parser.c (push_conditional_stack) (pop_conditional_stack, top_conditional_stack), tp/Texinfo/XS/parsetexi/parser.h (CONDITIONAL_STACK_ITEM), tp/Texinfo/XS/parsetexi/source_marks.c (register_source_mark) (source_marks_reset_counters): add source marks for expanded @if* block conditionals, associated to the @if opening line and the @end line. Add the start source mark to the conditional stack. 2023-02-14 Patrice Dumas * tp/Makefile.tres, tp/t/60macro.t, tp/t/converters_tests.t: add macro_expansion_end_in_ignored_ifset_content, macro_expansion_end_in_ignored_nested_conditional, macro_expansion_end_in_ignored_nested_different_conditional tests in *macro.t and inlinefmtifelse_with_commands in converters_tests.t. 2023-02-14 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_close_commands, _end_line_misc_line) (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/close.c (close_commands), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line), tp/Texinfo/XS/parsetexi/parser.c (top_conditional_stack, process_remaining_on_line): process end of ignored conditional block in a similar way to other block commands. Do not change how it is detected. 2023-02-14 Patrice Dumas * tp/ext/latex2html.pm (l2h_process), tp/ext/tex4ht.pm (tex4ht_prepare): update for the changes in elided* types names. 2023-02-14 Patrice Dumas * tp/tests/coverage/formatting.texi, tp/tests/coverage/res_parser/formatting_macro_expand/formatting.texi: fix conditional processing meant to avoid Texinfo invalid for TeX, with special cases in @example. Use a conditional definition instead of ifset and ifclear nesting, as now ifclear nests in ifset. 2023-02-13 Patrice Dumas * tp/Texinfo/XS/parsetexi/source_marks.c (relocate_source_marks): replace the for loop by a while to be sure that the index is incremented before the loop exit. Remove one from the loop variable to start the check on source marks to remove. 2023-02-13 Patrice Dumas * tp/Texinfo/XS/parsetexi/source_marks.c (relocate_source_marks): return immediately if there are no source marks. Gavin report. * tp/Makefile.tres, tp/t/19def.t: add empty_main_def_arguments. 2023-02-13 Patrice Dumas * tp/Texinfo/XS/parsetexi/macro.c (expand_macro_body): content in argument may be missing for the last argument which removal is attempted in expand_macro_arguments. Gavin report. * tp/Makefile.tres, tp/t/60macro.t: add macro_call_empty_two_arg with diverse possibilities of spaces and empty args for a two arguments macro call. 2023-02-13 Patrice Dumas Use pre-set keys for index sorting * tp/Texinfo/Structuring.pm (_sort_string, _sort_index_entries), (_collator_sort_index_entries, index_entry_sort_string, sort_indices), tp/Texinfo/Convert/LaTeX.pm (_index_entry): add the possibility to preset the sort keys using getSortKey. Distinguish sort string, which can be the preset binary string, from entry string which is a text representation of the sorted string. Idea from Gavin. 2023-02-12 Gavin Smith Non-XS optimizations * tp/Texinfo/Convert/ParagraphNonXS.pm (_add_next, add_text): Add /o flag to regexes using string interpolation, in order to only compile each regex once. * tp/Texinfo/Convert/Unicode.pm (string_width): Sometimes call 'length' on the string. This makes a difference because string_width is now called from ParagraphNonXS.pm. 2023-02-12 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_close_ignored_block_conditional) (_close_current, _process_remaining_on_line), tp/Texinfo/XS/parsetexi/close.c (close_ignored_block_conditional), (close_current), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): add close_ignored_block_conditional to associated a source mark to a closed ignored conditional block, to do it in close_current in addition to process_remaining_on_line. 2023-02-12 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_misc_line): avoid autovivification. 2023-02-12 Patrice Dumas Add source marks for ignored @if* conditional block commands * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/api.c (store_source_mark_list), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line), tp/Texinfo/XS/parsetexi/source_marks.c (register_source_mark), (source_marks_reset_counters): add ignored_conditional_block source mark for ignored @if* conditional block commands. Avoid setting empty contents for block commands. * tp/Texinfo/XS/parsetexi/end_line.c, tp/Texinfo/XS/parsetexi/input.c, tp/Texinfo/XS/parsetexi/macro.c: change in spacing for mark source related function calls. 2023-02-12 Gavin Smith * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line): Avoid use of goto statements to reduce program run time. 2023-02-12 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_starting_block) (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command), tp/Texinfo/command_data.txt: do not handle especially conditional block commands opening in _process_remaining_on_line or handle_block_command, let non-specific code handle block command line parsing, and take care of their arguments in end_line_starting_block. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): put ignored conditional block content in the block element. 2023-02-12 Patrice Dumas * tp/t/test_utils.pl (test): use the same expanded formats in the conversion to text as for the parser. 2023-02-12 Patrice Dumas * tp/Makefile.tres, tp/t/60macro.t: add unpaired_backslash_in_macro_body test. Remove backslash in macro_end_call_in_ignored_inlineraw. 2023-02-12 Patrice Dumas * tp/Texinfo/Convert/Text.pm: rename _code_options as _code_state and raw as _raw_state. * tp/Texinfo/Convert/Text.pm (_convert): decrease _raw_state when coming out of raw state. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line): in ignored @inline* arguments, do not postpend to the line when there is no match with a delimiter, instead consume the line. As in the XS parser. * tp/Texinfo/XS/parsetexi/macro.c (expand_macro_body): keep text after a non paired \ in the macro body, like the perl parser. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c (handle_comma): put elided content of @inline* in the tree. * tp/Texinfo/ParserNonXS.pm (_expand_macro_body): change code to be clearer and more in line with XS parser code. 2023-02-11 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/element_types.txt, tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c (handle_comma): remove elided as elided_brace_command_arg and elided_block as elided_rawpreformatted to convey the similarity with the corresponding containers without leading elided_. 2023-02-11 Gavin Smith * tp/Texinfo/ParserNonXS.pm (%contain_full_line_commands): Remove, merged into %contain_full_text_commands. * tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting): Update comments. 2023-02-11 Gavin Smith * tp/Texinfo/ParserNonXS.pm (_end_line_def_line), * tp/Texinfo/XS/parsetexi/end_line.c (_end_line_def_line): Assign $current to parent element earlier in function. 2023-02-11 Gavin Smith * tp/Texinfo/ParserNonXS.pm (_end_line_def_line): Do not call _isolate_last_space. (_end_line_misc_line, _end_line_starting_block): Move call to _isolate_last_space before call to _end_line_def_line. * tp/Texinfo/XS/parsetexi/end_line.c (_end_line_def_line, _end_line_misc_line, _end_line_starting_block): Make the same change. 2023-02-11 Gavin Smith Initial @newdef implementation * doc/texinfo.tex (@newdef): Implement @newdef. Syntax is subject to change. 2023-02-11 Patrice Dumas * tp/Makefile.tres, tp/t/60macro.t: add macro_inlineifcond_end_in_empty_ignored and macro_inlineifcond_end_in_empty_set tests. 2023-02-11 Gavin Smith * doc/texinfo.texi (Typed Functions): Place R language example in @ignore block as @var uppercases named arguments in Info output. 2023-02-11 Gavin Smith * doc/texinfo.tex (@defblock, @deflinex, @deftypelinex): Add commands for definitions that do not create index entries. 2023-02-11 Gavin Smith Revert @useindex implementation * doc/texinfo.tex (\useindex, \defind): Remove. This reverts change on 2022-12-15. 2023-02-11 Patrice Dumas * tp/Makefile.tres, tp/t/60macro.t: add macro_end_call_in_ignored_inlinefmt, macro_end_call_in_ignored_inlineraw, macro_call_in_ignored_inlinefmtifelse, macro_end_call_in_ignored_inlinefmtifelse and macro_call_in_inlinefmtifelse_format with end/start of macro call in @inline*fmt and @inlineraw. 2023-02-11 Patrice Dumas * tp/Makefile.tres, tp/t/60macro.t: add macro_end_call_in_ignored_raw test with a macro call end within an ignored raw format block. 2023-02-10 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_expand_macro_arguments), tp/Texinfo/XS/parsetexi/macro.c (expand_macro_arguments): only remove last empty argument in macro call arguments, an empty argument in the middle is significant. * tp/Makefile.tres, tp/t/60macro.t: new test macro_call_empty_middle_arg with an empty middle argument in a macro call. 2023-02-10 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_remove_empty_arg) (_expand_macro_arguments, _expand_macro_body, _handle_macro), tp/Texinfo/XS/parsetexi/macro.c (remove_empty_arg) (expand_macro_arguments, expand_macro_body, handle_macro): parse macro arguments in structures similar to the main elements tree, for consistency with the remaining of the code, and to hold source marks in macro arguments. * tp/Texinfo/ParserNonXS.pm (_merge_text): transfer source marks only if transfer_marks_element is defined. * tp/Texinfo/ParserNonXS.pm: avoid autovivification. 2023-02-10 Gavin Smith * tp/Texinfo/command_data.txt: Remove @useindex as this will no longer be implemented. 2023-02-09 Gavin Smith * tp/TODO: remove erroneous constructs that now give warnings 2023-02-09 Gavin Smith Better worded error messages for line context * tp/Texinfo/ParserNonXS.pm (_check_valid_nesting_context), * tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting_context): For line and block commands, refer to invalid command "on line" to avoid confusion with block contents. 2023-02-09 Gavin Smith * tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block): Use variable for current command throughout instead of struct access. 2023-02-09 Gavin Smith Use nesting stacks for sectioning and def commands * tp/Texinfo/command_data.txt: Add contain_basic_inline flag for all def and sectioning_heading commands. * tp/Texinfo/ParserNonXS.pm (%in_basic_inline_with_refs_commands): Remove. (%default_valid_nestings): Do not set using %in_basic_inline_with_refs_commands. (%ok_in_basic_inline_with_refs_commands): New hash, with exceptions. (_check_valid_nesting): Eliminate special handling of ct_def context. (_check_valid_nesting_context): Use %ok_in_basic_inline_with_refs_commands as list of inclusions for sectioning and def commands. * tp/Texinfo/ParserNonXS.pm (_end_line_misc_line, _end_line_starting_block): Pop nesting contexts before calling _end_line_def_line. * tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting): Do not handle "basic inline with refs" commands. * tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting_context): Include CF_ref commands as allowed for sectioning and def commands. * tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line, end_line_starting_block): Pop nesting contexts before calling end_line_def_line. 2023-02-09 Patrice Dumas * tp/Texinfo/XS/parsetexi/source_marks.c (relocate_source_marks): only check removal of source marks that were looked at. 2023-02-09 Patrice Dumas * tp/Texinfo/XS/parsetexi/source_marks.c (relocate_source_marks): fix incorrect initialization with incorrect memset size argument. Gavin report. 2023-02-09 Gavin Smith Call def line ending code at lower level * tp/Texinfo/ParserNonXS.pm (_end_line_starting_block, _end_line_misc_line): Redirect to _end_line_def_line if called on a def line. (_end_line, _close_current): Remove separate cases for calling _end_line_def_line. * tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block, end_line_misc_line): Redirect to end_line_def_line if called on a def line. * tp/Texinfo/XS/parsetexi/end_line.c (end_line), * tp/Texinfo/XS/parsetexi/close.c (close_current): Do not call end_line_def_line. 2023-02-08 Gavin Smith Stop text disappearing in Info nodes with encoding conversion * info/util.c (text_buffer_iconv): Update text buffer length after error so that we do not write over the same output again. 2023-02-08 Gavin Smith Unify @multitable block line arg ending * tp/Texinfo/ParserNonXS.pm (_end_line_misc_line) <@columnfractions>: Do not close the @multitable block line element, so that _end_line_starting_block will be called afterwards. Only record the @columnfractions command in the 'extra' hash. (_end_line_starting_block): Check if columnfractions has been set so to avoid reading line as prototype list. * tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line) <@columnfractions>: Do not close multitable block line element: only set 'columnfractions'. (end_line_starting_block): Check if 'columnfractions' has been set. 2023-02-08 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): add $current to new_line call to register source mark after @end of ignored cnditional. 2023-02-08 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_relocate_source_marks), tp/Texinfo/XS/parsetexi/source_marks.c (relocate_source_marks): relocate source marks within a range, with the first source mark not necessarily in range. Move relocate_source_marks from def.c to source_marks.c. * tp/Texinfo/ParserNonXS.pm (_isolate_last_space), tp/Texinfo/XS/parsetexi/parser.c (isolate_last_space_internal): relocate source marks corresponding to the new spaces element. * tp/Texinfo/XS/parsetexi/source_marks.c (remove_from_source_mark_list): move remove_from_source_mark_list from tree.c to source_marks.c. 2023-02-07 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_new_line, _process_remaining_on_line), tp/Texinfo/XS/parsetexi/input.c (new_line), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command): pass current in new_line to get end of macro/value source marks in line commands where there is no macro/value expansion. Explain in a comment that the location of the source mark cannot be accurate, as the text is not parsed as usual in the tree. * tp/Texinfo/ParserNonXS.pm (_next_text, _debug_show_source_mark): show mark source information for debugging with _debug_show_source_mark, add code to show ignored source marks in _next_text. 2023-02-07 Patrice Dumas * tp/Texinfo/XS/parsetexi/input.c (next_text): after calling input_push_text for delcomment, set the input pointer again as the input stack may have been reallocated. 2023-02-07 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_next_text), tp/Texinfo/XS/parsetexi/input.c (next_text): reuse input source mark for delcomment. Do not pass line from input source mark to the other source marks. 2023-02-07 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (%default_commands_args) (_convert_value_command), tp/Texinfo/Convert/LaTeX.pm (_convert), tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/Convert/Texinfo.pm (_expand_cmd_args_to_texi), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/ParserNonXS.pm (_new_value_element) (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (new_value_element, process_remaining_on_line): use the same structure for txiinternalvalue, a value not expanded in tree and value expansion source mark element, setup by calling new_value_element(). Update formatting in converters. 2023-02-07 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_transfer_source_marks, _close_container) (_close_command_cleanup, _merge_text, _end_line): test only existence of source_marks key, if it exists it is necessarily non-empty. * tp/Texinfo/ParserNonXS.pm (_merge_text, _abort_empty_line) (_split_delimiters, _split_def_args): delete source_marks from the source element after they have been transferred. * tp/Texinfo/ParserNonXS.pm (_split_delimiters, _split_def_args) (_parse_def): check that source marks have all been transferred. 2023-02-06 Patrice Dumas * tp/Makefile.tres, tp/t/html_tests.t: add the file_name_case_insensitive_conflict_node and file_name_case_insensitive_conflict_node_no_redirections test to test conflicts with node names differing in case only without and with NODE_FILES. 2023-02-06 Patrice Dumas * tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): fix beginning of line condition nesting. 2023-02-06 Patrice Dumas * tp/tests/many_input_files/*.sh: add $prepended_command to the commands run. 2023-02-06 Patrice Dumas * tp/tests/many_input_files/*.sh: use a variable for the command run to avoid redundant code. 2023-02-06 Patrice Dumas * tp/tests/run_parser_all.sh: reindent a function. 2023-02-06 Patrice Dumas * tp/Texinfo/XS/parsetexi/end_line.c (skip_comment), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command), tp/Texinfo/XS/parsetexi/parser.c (read_comment): add an argument to read_comment, set to 1 if there is a comment. Remove the comment_command argument of read_comment, the comment command is at the line argument location, so if there is a comment the caller can easily find the comment argument beginning. Return a pointer past @c/@comment, whether there is indeed a comment or not. Update call in handle_block_command. Use read_comment in skip_comment (removes a valgrind error). 2023-02-06 Gavin Smith Reduce list of line commands that may occur other than at line start * tp/Texinfo/ParserNonXS.pm (%begin_line_commands): Include @sp, @verbatiminclude, @set, @clear, @vskip. * tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): Likewise. * NEWS: Mention change for @set and @value, and better validity checking in general. * doc/texinfo.texi (@set @value): Do not say that @set can occur at the beginning of a line. 2023-02-05 Patrice Dumas * tp/Texinfo/XS/parsetexi/macro.c (expand_macro_arguments): fix arg_space, which is not the number of allocated elements in arg_list, but comparable to arg_number, with 1 added to obtain the allocated number of elements to add the null delimiter. Change name of new_arg_space to new_alloc_space to make clearer that it is the allocated number of elements, not a space comparable to arg_number. 2023-02-05 Patrice Dumas * tp/Texinfo/XS/parsetexi/macro.c (expand_macro_arguments): always allocate 2 arg_list elements, for an argument, which can be an empty string, and the null delimiter. Initialize arg_space to 2 accordingly (found through valgrind output). 2023-02-05 Patrice Dumas * tp/t/test_utils.pl (run_all), tp/t/README: process all the tests given in argument. 2023-02-05 Patrice Dumas * tp/Texinfo/XS/parsetexi/parser.c (read_comment): check string length to avoid reading past the string end (found through valgrind output). 2023-02-05 Patrice Dumas Source mark for value expansion * tp/Texinfo/ParserNonXS.pm (_next_text, _process_remaining_on_line), tp/Texinfo/XS/parsetexi/input.c (next_text), tp/Texinfo/XS/parsetexi/api.c (store_source_mark_list), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line), tp/Texinfo/XS/parsetexi/source_marks.c (register_source_mark) (source_marks_reset_counters): register value expansion source marks. * tp/Texinfo/XS/parsetexi/input.c (next_text): strdup line when duplicating start source mark line for end source mark. 2023-02-05 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_relocate_source_marks) (_split_delimiters, _split_def_args), tp/Texinfo/XS/parsetexi/def.c (relocate_source_marks, split_delimiters, split_def_args): add relocate_source_marks to help relocating source marks, taken from from split_def_args. Relocate source marks in split_delimiters using that function. * tp/Texinfo/XS/parsetexi/def.c (relocate_source_marks), tp/Texinfo/XS/parsetexi/tree.c (remove_from_source_mark_list): correct the source mark relcation code by starting from the first source mark, and add remove_from_source_mark_list to be able to remove a source mark from any position in the list. * tp/Makefile.tres, tp/t/60macro.t: add macro_in_def_delimiters with macro expansion in delimiters and text that tests relocation of source marks in split_delimiters. 2023-02-05 Patrice Dumas * tp/Makefile.tres, tp/t/60macro.t: add macro_before_specific_line_command_args test. 2023-02-05 Patrice Dumas * tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): remove the popping of contents at the end of a root command, there is nothing to pop, and if there was, it should be fixed directly. 2023-02-05 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_transfer_source_marks), tp/Texinfo/XS/parsetexi/source_marks.c (transfer_source_marks): modify add_source_marks to transfer source marks between two elements. For the perl parser, test for source marks in transfer_source_marks. Empty the source element source marks in transfer_source_marks. 2023-02-05 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_pop_element_from_contents) (_abort_empty_line), tp/Texinfo/XS/parsetexi/parser.c (abort_empty_line), tp/Texinfo/XS/parsetexi/tree.c (pop_element_from_contents): do reparenting of source marks in abort_empty_line and not in pop_element_from_contents. * tp/Makefile.tres, tp/t/60macro.t: add an explicit test of empty string with a macro call source mark first in an element. 2023-02-05 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line), tp/Texinfo/XS/parsetexi/end_line.c (end_line): use merge_text argument to transfer source marks when reconstructing text from an aborted menu entry line. * tp/Makefile.tres, tp/t/60macro.t: add macro_in_menu_comment_like_entry with source marks in text finally not considered as a menu entry. 2023-02-05 Gavin Smith No more check for basic inline content in check_valid_nesting. * tp/Texinfo/ParserNonXS.pm (%default_valid_nestings): Do not add to from the %contain_basic_inline_commands hash. * tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting): Do not check or use CF_contain_basic_inline flag. 2023-02-05 Gavin Smith Basic inline stack for block line args * tp/Texinfo/ParserNonXS.pm (parser): Initialise 'basic_inline_stack_block' stack. (_process_remaining_on_line) : Push the new stack. (_end_line_starting_block) (_end_line_misc_line) <@columnfractions>: Pop the new stack. (_check_valid_nesting_context): Use 'basic_inline_stack_on_line'. * tp/Texinfo/XS/parsetexi/context_stack.h (NESTING_CONTEXT): Add basic_inline_stack_block field. * tp/Texinfo/XS/parsetexi/api.c (reset_parser_except_conf): Reset it. * tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting_context): Use new stack. * tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command): Push. * tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block), (end_line_misc_line) <@columnfractions>: Pop. 2023-02-05 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_merge_text, _process_remaining_on_line), tp/Texinfo/XS/parsetexi/menus.c (handle_menu), tp/Texinfo/XS/parsetexi/parser.c (merge_text): add a new argument to merge_text, to provide with an element to transfer source marks from. Update callers. * tp/t/60macro.t, tp/Makefile.tres: test marco expansion for dot not considered as a separator (not followed by a space) in menu entry name. 2023-02-05 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command): use close_container to close menu_comment or menu description interrupted by a menu command, to handle correctly source marks in closed containers. * tp/t/60macro.t, tp/Makefile.tres: add macro_in_menu_comment_closed_by_detailmenu test. 2023-02-05 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/menus.c (handle_menu): use close_container to close preformatted and menu_comment when starting a menu entry. 2023-02-05 Gavin Smith * tp/Texinfo/ParserNonXS.pm (_end_line_starting_block): Place command name in a variable to avoid accessing hash every time. 2023-02-04 Patrice Dumas * tp/Makefile.tres, tp/t/60macro.t: add test of macro expansion in empty line after paragraph that is reassociated to the paragraph container. 2023-02-04 Gavin Smith Basic inline stack for index commands * tp/Texinfo/ParserNonXS.pm (%default_basic_inline_commands): Initialise from %contain_basic_inline_commands and add index commands. (parser): Initialise $parser->{'basic_inline_commands'} therefrom. This hash is already mentioned in comment at top of file. (_close_brace_command, _end_line_misc_line) (_process_remaining_on_line): Use 'basic_inline_commands' hash. (_parse_line_command_args) : Add to hash. * tp/Texinfo/XS/parsetexi/indices.c (add_index_command): Set CF_contain_basic_inline flag. * tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting): Eliminate check for CF_index_entry_command. (check_valid_nesting_context): Reorder a couple of conditionals. 2023-02-04 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line), tp/Texinfo/XS/parsetexi/end_line.c (end_line): transfer source marks from the empty line after menu description. * tp/Makefile.tres, tp/t/60macro.t: add focused test of empty string macro expansion in empty line after menu description. 2023-02-04 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (import): never load the abort_empty_line XS override as the function is not up to date with the changes needed for source marks. Do not load the merge_text override either, as it uses the abort_empty_line XS override. 2023-02-04 Gavin Smith Eliminate duplicate warning messages * tp/Texinfo/ParserNonXS.pm (%default_valid_nestings): Do not add line commands with basic inline content. Do not add 'in_heading_spec' commands to the hashes for 'heading_spec' commands because these are currently included as basic inline content. * tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting): Do not check any line commands for basic inline content. 2023-02-04 Patrice Dumas * tp/Texinfo/Convert/Texinfo.pm (convert_to_texinfo): remove menu_entry and menu_comment from types with args. * tp/Texinfo/Convert/Texinfo.pm (_expand_cmd_args_to_texi): use common code for the different types of commands. 2023-02-04 Patrice Dumas * tp/Texinfo/Convert/Text.pm (_convert): do not handle menu entry differently from other contents. 2023-02-04 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): do not handle menu entry differently from other contents. 2023-02-04 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_close_container), tp/Texinfo/XS/parsetexi/close.c (close_container): keep before_item type even if it contains only source marks, as a before_item signals in gather_previous_item that there is no need to add an empty table definition. * tp/Texinfo/ParserNonXS.pm (_close_command_cleanup), tp/Texinfo/XS/parsetexi/close.c (close_command_cleanup): keep a before_item even if it is empty if it contains a source mark. * tp/Texinfo/ParserNonXS.pm (_gather_previous_item): check the length of added contents for table definition and for table term and add contents only if there is some. * tp/Texinfo/ParserNonXS.pm (_close_command_cleanup): do not autovivify an empty contents for before_item. * tp/t/22xtable.t, tp/Makefile.tres: add empty_table for a regular empty @table. * tp/t/60macro.t, tp/Makefile.tres: add tests with macro expansion in empty before_item, for @table and @multitable, and with empty table/multitable and not empty. 2023-02-04 Gavin Smith Basic inline context for line args * tp/Texinfo/ParserNonXS.pm (%default_valid_nestings) : Duplicate hashes to avoid modifying shared structure. (%in_full_text_commands): Add all %in_heading_spec_commands. (parser): Initialise 'basic_inline_stack_on_line' in addition to 'basic_inline_stack'. Using a separate stack for line arguments from that for braced arguments means we can push and pop in exactly one place in the code from each stack, which will be more reliable and easy to debug. (_process_remaining_on_line) : Push the new stack. (_end_line_misc_line) : Pop the new stack. (_check_valid_nesting_context): Use 'basic_inline_stack_on_line'. * tp/Texinfo/XS/parsetexi/context_stack.h (NESTING_CONTEXT): Add basic_inline_stack_on_line field. * tp/Texinfo/XS/parsetexi/api.c (reset_parser_except_conf): Reset it. * tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): Pop. * tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command): Push. * tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting_context): Use new stack. Update conditional for what counts as basic inline content. 2023-02-04 Gavin Smith * README-hacking: refer to some other text files in sources * tp/t/README: advise to rebuild after git pull * tp/tests/README: update test results with "make -k check copy-tests". 2023-02-04 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_is_container_empty, _close_container) (_end_preformatted, _close_current), tp/Texinfo/XS/parsetexi/close.c (is_container_empty, close_container, close_current), tp/Texinfo/XS/parsetexi/parser.c (end_preformatted): pass the source marks of an element without any information except for source marks to the parent. Add is_container_empty that returns if a container contains information. Put closing empty type code in close_container and use it in end_preformatted too. * tp/Texinfo/ParserNonXS.pm (_pop_element_from_contents), tp/Texinfo/XS/parsetexi/tree.c (pop_element_from_contents): replace reparented source marks from popped element to the preceding element by using place_source_mark on the parent instead of add_source_marks. Remove the popped element earlier, in XS parser such that the replaced source marks are placed on preceding elements. * tp/Texinfo/ParserNonXS.pm (_gather_def_item) (_close_command_cleanup, _end_line_misc_line) (_end_line_starting_block, _process_remaining_on_line): use _pop_element_from_contents. Avoid empty contents. 2023-02-04 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_close_current), tp/Texinfo/XS/parsetexi/close.c (close_current): more precise comment on why it is needed to check that the potentially removed empty type needs to be cheked to be contents, to avoid args. Improve debug message. * tp/Texinfo/XS/parsetexi/end_line.c (end_line): improve debug message. 2023-02-03 Gavin Smith Eliminate duplicate nesting warning messages * tp/Texinfo/ParserNonXS.pm (%default_valid_nestings) , * tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting): Use the same nesting for contain_basic_inline_commands as for other brace commands. 2023-02-03 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_close_current), tp/Texinfo/XS/parsetexi/close.c (close_current): do not treat especially types in menu_entry now that there are not in extra anymore. 2023-02-03 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_register_extra_menu_entry_information) tp/Texinfo/Structuring.pm (new_node_menu_entry), tp/Texinfo/XS/parsetexi/menus.c (register_extra_menu_entry_information): do not register 'menu_entry_description' and 'menu_entry_name' in menu_entry 'extra', they are easy to get from menu_entry contents. 2023-02-03 Patrice Dumas * tp/Texinfo/Common.pm (_substitute_references), tp/Texinfo/Convert/HTML.pm (_convert_menu_entry_type), tp/Texinfo/ParserNonXS.pm (_register_extra_menu_entry_information), tp/Texinfo/Structuring.pm (_check_menu_entry) (set_menus_node_directions, associate_internal_references) (new_node_menu_entry), tp/Texinfo/Transformations.pm (_normalized_entry_associated_internal_node), tp/Texinfo/XS/parsetexi/menus.c (register_extra_menu_entry_information): rename menu entry 'extra' 'menu_entry_node' as 'menu_entry_node_label'. * tp/Texinfo/Convert/HTML.pm (_convert_menu_entry_type): determine menu entry components in case of preformatted and non-preformatted menu entry using the same code, avoiding to use 'extra' information if not useful. 2023-02-03 Gavin Smith Use nesting context basic inline stack more generally * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line) : Push command on stack. (_close_brace_command) : Pop command from stack. (_process_remaining_on_line) : No longer push and pop basic_inline_stack. * tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace) : Push nesting_context.basic_inline_stack. * tp/Texinfo/XS/parsetexi/close.c (close_brace_command) : Pop nesting_context.basic_inline_stack. * tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace, handle_close_brace) : No longer call push_command or pop_command on stack. 2023-02-03 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line): use _pop_element_from_contents for menu separator. 2023-02-03 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_convert_menu_entry_type), tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/Convert/Text.pm (_convert), tp/Texinfo/ParserNonXS.pm (_close_current, _end_line, _register_extra_menu_entry_information) (_enter_menu_entry_node, _process_remaining_on_line), tp/Texinfo/Structuring.pm (new_node_menu_entry), tp/Texinfo/Transformations.pm (menu_to_simple_menu), tp/Texinfo/XS/parsetexi/close.c (close_current), tp/Texinfo/XS/parsetexi/end_line.c (end_line), tp/Texinfo/XS/parsetexi/menus.c (register_extra_menu_entry_information, enter_menu_entry_node) (handle_menu), tp/Texinfo/XS/parsetexi/separator.c (handle_separator): use 'contents' for menu_entry contents, and not 'args'. * tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Texinfo.pm, tp/Texinfo/Convert/TexinfoMarkup.pm, tp/Texinfo/ParserNonXS.pm, tp/Texinfo/Structuring.pm, tp/Texinfo/Transformations.pm: avoid autovivification in any case. 2023-02-01 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_place_source_mark), tp/Texinfo/XS/parsetexi/source_marks.c (place_source_mark): initialize text for an element added for source marks, such that merge_text can merge it with text following. 2023-02-01 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_close_current, _end_line_misc_line), tp/Texinfo/XS/parsetexi/close.c (close_current), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): close all the type elements without content nor information associated in one place only, in close_current. 2023-02-01 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/menus.c (handle_menu): transfer source marks from popped menu star element to menu leading text. 2023-02-01 Patrice Dumas * tp/DebugTexinfo/DebugTree.pm (_print_tree), tp/Texinfo/Convert/Converter.pm (format_comment_or_return_end_line), tp/Texinfo/Convert/Texinfo.pm (convert_to_texinfo) (_expand_cmd_args_to_texi), tp/Texinfo/Convert/TexinfoMarkup.pm (_leading_spaces_arg, _end_line_spaces, _trailing_spaces_arg) (_convert), tp/Texinfo/Convert/TextContent.pm (_convert), tp/Texinfo/ParserNonXS.pm (_abort_empty_line, _isolate_last_space) (_process_remaining_on_line), tp/Texinfo/Structuring.pm (new_block_command), tp/Texinfo/Transformations.pm (fill_gaps_in_sectioning, _new_node), tp/Texinfo/XS/parsetexi/convert.c (expand_cmd_args_to_texi) (convert_to_texinfo_internal), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command), tp/Texinfo/XS/parsetexi/parser.c (abort_empty_line) (isolate_last_space_internal): add "spaces_before_argument" and "spaces_after_argument" as elements with text such that they can hold source marks too. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): reassociate source marks in accent with following arg to the following_arg type. * tp/Texinfo/ParserNonXS.pm (_place_source_mark), tp/Texinfo/XS/parsetexi/source_marks.c (place_source_mark): separate placing a source mark and registering a source mark. * tp/Texinfo/ParserNonXS.pm (_pop_element_from_contents): add $self as argument. Update callers. 2023-01-31 Gavin Smith * tp/Texinfo/ParserNonXS.pm (%plain_text_commands, %contain_plain_text_commands) (%basic_inline_commands, %contain_basic_inline_commands) (%full_line_commands, %contain_full_line_commands) (%full_text_commands, %contain_full_text_commands): Rename to make it clear that these are lists of containing commands, not of contained commands. 2023-01-31 Gavin Smith Nesting context basic inline stack * tp/Texinfo/XS/parsetexi/context_stack.h (COMMAND_STACK): New type. * tp/Texinfo/XS/parsetexi/context_stack.c (reset_command_stack, push_command, pop_command): New functions to operate on COMMAND_STACK. (reset_context_stack, push_context, pop_context) (current_context_command): Use COMMAND_STACK for the command part of the context stack. * tp/Texinfo/XS/parsetexi/context_stack.h (NESTING_CONTEXT): Replace xref counter with basic_inline_stack, which can be used more generally for any command that should only contain basic inline content. * tp/Texinfo/XS/parsetexi/api.c (reset_parser_except_conf): Call reset_command_stack on nesting_context.basic_inline_stack. * tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace, handle_close_brace) : Call push_command and pop_command respectively on nesting_context.basic_inline_stack * tp/Texinfo/ParserNonXS.pm: Corresponding changes. (parser): Initialise basic_inline_stack. (_process_remaining_on_line) : Push and pop basic_inline_stack. (_check_valid_nesting_context): Check basic_inline_stack. 2023-01-31 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_register_source_mark), tp/Texinfo/XS/parsetexi/api.c (store_source_mark_list), tp/Texinfo/XS/parsetexi/source_marks. (register_source_mark): remove the source mark location information, it is not useful. Do not set the position if the element text is the empty string. 2023-01-31 Patrice Dumas * tp/Texinfo/XS/parsetexi/api.c (store_source_mark_list): use the STORE macro everywhere. 2023-01-30 Patrice Dumas * tp/Texinfo/XS/parsetexi/def.c (split_def_args): count UTF-8 encoded Unicode characters for source marks locations. * tp/t/19def.t: do not skip end_of_lines_protected_non_ascii test. * tp/Texinfo/XS/parsetexi/source_marks.c, tp/Texinfo/XS/parsetexi/parser.c (count_convert_u8): move count_convert_u8 to parser.c. 2023-01-30 Patrice Dumas * tp/Texinfo/XS/parsetexi/source_marks.c (count_convert_u8) (register_source_mark): set the mark source position in text as an index in characters, not bytes. 2023-01-30 Patrice Dumas in tp/Texinfo/XS gnulib-tool --add-import uniconv/u8-strconv-from-enc unistr/u8-mbsnlen. 2023-01-29 Patrice Dumas * tp/Texinfo/XS/parsetexi/macro.c (expand_macro_arguments): do not allocate more space than the number of macro arguments. 2023-01-29 Patrice Dumas Source mark for macro expansion * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line) (_handle_macro): use a separate function to handle a macro call, as in the XS parser. Get a new line right after handling the macro. Note that it leads to somewhat better output than simply waiting for the next text to come in parse_texi. * tp/Texinfo/ParserNonXS.pm (_handle_macro, _next_text), tp/Texinfo/XS/parsetexi/input.c (next_text), tp/Texinfo/XS/parsetexi/macro.c (handle_macro), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line), tp/Texinfo/XS/parsetexi/source_marks.c (register_source_mark) (source_marks_reset_counters): handle macro expansion source marks. * tp/Texinfo/ParserNonXS.pm (_next_text), tp/Texinfo/XS/parsetexi/input.c (next_text): do not register a source mark if the current element is not defined. * tp/Texinfo/XS/parsetexi/macro.c (expand_macro_arguments): if macro call is missing a close brace, register the unterminated argument, as the perl parser does. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): remove contents of accent commands when the next character is used as argument in the perl parser. It matters to have the contents removed here when there are source marks, though it is not completly clear why and what would be the best to do. Add comments for the XS parser. * tp/Texinfo/ParserNonXS.pm (_parse_texi): handle undefined lines getting out of _process_remaining_on_line. Can now happen with next_text after macro expansion handling in case the macro expansion happens right before the end of a text fragment. * tp/Texinfo/XS/parsetexi/debug.c (debug_print_element_short), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line), tp/Texinfo/XS/parsetexi/source_marks.c (register_source_mark): add a debugging function that prints the element information in a similar way as Texinfo::Common::debug_print_element_short. 2023-01-29 Gavin Smith Rename "simple text" commands as "basic inline" commands * tp/Texinfo/commmand_data.txt: Replace contain_simple_text flag with contain_basic_inline. * tp/Texinfo/XS/parsetexi/commands.h: Replace CF_contain_simple_text flag with CF_contain_basic_inline. * tp/Texinfo/ParserNonXS.pm (%contain_simple_text_commands, %contain_basic_inline_commands) (%in_simple_text_with_refs_commands) (%in_basic_inline_with_refs_commands) (%in_simple_text_commands, %in_basic_inline_commands) (%simple_text_commands, %basic_inline_commands) (%simple_text_with_refs_commands, %basic_inline_with_refs_commands): Rename. 2023-01-29 Gavin Smith Fix 'info (manual)slash/in/node' * info/info.c (main, get_initial_file): Move code checking for slash in argument to get_initial_file, and don't check for argument as a file if it begins with '('. (main): Move code adding user provided directory to INFOPATH after call to get_initial_code. (get_initial_file): Decrement argc as intended. Arash Esbati reported that "info '(latex2e)\indent & \noindent'" didn't work on Msys2. 2023-01-27 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_next_text), tp/Texinfo/XS/parsetexi/input.c (next_text): move code related to end of text input to the same place as end of file input. * tp/Texinfo/ParserNonXS.pm (_next_text), tp/Texinfo/XS/parsetexi/input.c (next_text): rename $previous_input as $input, and i as input, and use input consistently in the XS parser. 2023-01-27 Patrice Dumas * tp/Texinfo/Common.pm (@variable_string_settables): remove TEXINFO_DTD_VERSION' which is also in %default_converter_customization. Change in comments in various files. 2023-01-26 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_convert_item_command) (_get_copiable_anchor): use double quote for HTML attributes instead of single quote for consistency. 2023-01-26 Patrice Dumas * doc/texi2any_api.texi (Basic Formatting Customization): separate information about API and result in the default case for format_heading_text. 2023-01-26 Patrice Dumas * tp/t/test_utils.pl (test): if generating reference results, do not process skipped tests at all, to avoid increasing the number of tests, as the number of tests is 1. 2023-01-26 Patrice Dumas * tp/Makefile.tres, tp/Makefile.am (test_files), t/19def.t: add the end_of_lines_protected_non_ascii test with non-ASCII character counted in source marks. Skipped for now as the XS parser counts bytes and not characters. 2023-01-26 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_register_source_mark), tp/Texinfo/XS/parsetexi/api.c (store_source_mark_list), tp/Texinfo/XS/parsetexi/source_marks.c (new_source_mark) (register_source_mark): always associate source mark to the previous element, and create an empty element if there is none. The index in contents is unreliable as the tree may be modified, for example when adding a preamble. 2023-01-26 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_split_def_args), tp/Texinfo/XS/parsetexi/def.c (split_def_args): keep track of source marks when splitting @def* arguments. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/api.c (store_source_mark_list), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line), tp/Texinfo/XS/parsetexi/source_marks.c (register_source_mark) (source_marks_reset_counters): add source mark for definition line continuation. 2023-01-24 Gavin Smith Simplify context brace command closing * tp/Texinfo/XS/parsetexi/close.c (close_brace_command): Add argument to control printing of error messages and make non-static function. Pop context stack for BRACE_context commands and decrement nesting context counters. (close_all_style_commands): Remove FIXME about nesting context. (close_current): Do not update context stack or context counters as it is now done in close_brace_command. * tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): Always call close_brace_command, so it is no longer just called for erroneous input. * tp/Texinfo/ParserNonXS.pm (_close_brace_command): Add argument to control printing of error messages. Pop context stack for context brace commands and decrement nesting context counters. (_close_all_style_commands): Remove FIXME about nesting context. (_close_current): Do not update context stack or context counters as it is now done in close_brace_command. (_process_remaining_on_line) : Always call _close_brace_command, so it is no longer just called for erroneous input. 2023-01-26 Arsen Arsenović HTML: Enable generating copiable anchors on heading commands * doc/texi2any_api.texi (Basic Formatting Customization): Document the new $target argument of format_heading_text. * tp/Texinfo/Convert/HTML.pm (_default_format_heading_text): Add optional target argument, for generating a copiable pilcrow. (_convert_heading_command): Pass the element_id of the current heading, so that a pilcrow is generated. * tp/tests/customization/list-of-tests: Add sectioning_without_anchors test, to check getting existing codegen with COPIABLE_LINKS=0. 2023-01-25 Arsen Arsenović ParserNonXS: Fix minor Perl error * tp/Texinfo/ParserNonXS.pm (_check_valid_nesting_context): Escape invalid uses of @. 2023-01-23 Gavin Smith * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line) , tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace): If inside brace_command_context element, call end_paragraph before checking what brace command we are closing. This allows the elimination of a duplicate block of code for closing a context brace command. 2023-01-23 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_next_text), tp/Texinfo/XS/parsetexi/input.c (next_text): use a common code for input file and input text source marks. 2023-01-23 Patrice Dumas Source mark for DEL comments * tp/Texinfo/ParserNonXS.pm (_next_text, tp/Texinfo/XS/parsetexi/api.c (store_source_mark_list), tp/Texinfo/XS/parsetexi/input.c (INPUT) (next_text), tp/Texinfo/XS/parsetexi/source_marks.c (register_source_mark): add a source mark for DEL comment. Push an empty text line with a source mark to process it at the end of the line. Rename file_source_mark as input_source_mark and use it both for files and text input. Update functions using file_source_mark. Store the comment line in a 'line' in the source mark. * tp/Texinfo/XS/parsetexi/source_marks.c (register_source_mark): use element text.space > 0 and not text.end to associate source mark to a string that is set but empty. * tp/Texinfo/ParserNonXS.pm (_close_current), tp/Texinfo/XS/parsetexi/close.c (close_current): move nesting code with context commands code. 2023-01-22 Patrice Dumas Nesting context, @*ref, @footnote, @*caption checking perl parser * tp/Texinfo/ParserNonXS.pm (_check_valid_nesting_context) (_process_remaining_on_line): new function to check nesting_context. Call it together with _check_valid_nesting. * tp/Texinfo/ParserNonXS.pm (parser, simple_parser): initialize nesting context. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line) (_close_current): increment/decrement nesting context. 2023-01-21 Patrice Dumas Keep removed elements with source marks and transfer source marks * tp/Texinfo/ParserNonXS.pm (_add_source_marks) (_pop_element_from_contents), tp/Texinfo/XS/parsetexi/source_marks.c (add_source_mark, add_source_marks, register_source_mark), tp/Texinfo/XS/parsetexi/tree.c (pop_element_from_contents): transfer source marks from a popped element to the parent element in pop_element_from_contents(), using a second argument to signal if source marks should be transferred. Update pop_element_from_contents callers. Use more _pop_element_from_contents in pure perl parser, and check better contents key hash not being defined. * tp/Texinfo/ParserNonXS.pm (_register_source_mark, _next_text), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line), tp/Texinfo/XS/parsetexi/input.c (INPUT, set_input_source_mark) (next_text), tp/Texinfo/XS/parsetexi/source_marks.c (register_source_mark): do not increment counter for the end of @include. add a second argument to next_text to pass an element that can be used to register the end of an @include. Associate @include start source mark to the input stack corresponding to the @include file. Update callers. * tp/Texinfo/ParserNonXS.pm (_end_line_misc_line), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line), tp/Texinfo/XS/parsetexi/api.c (store_source_mark_list), tp/Texinfo/XS/parsetexi/source_marks.c (source_marks_reset_counters), tp/Texinfo/XS/parsetexi/tree.c (destroy_source_mark): add a source mark for ignored @setfilename. Associate removed element, @include or @setfilename, to source mark, to keep source marks that are in those elements and also for the XS parser to keep source marks associated to their elements to simplify management of memory. * tp/Texinfo/XS/parsetexi/api.c (store_source_mark_list): fix setting up the array of source marks that was mixed up with type setting. * tp/Texinfo/Common.pm (modify_tree): recurse in source marks. 2023-01-22 Gavin Smith * NEWS: Add 7.0.2 news. * README-hacking: minor updates for release instructions 2023-01-22 Gavin Smith @ref, @xref, @pxref nesting checking. * tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting_context): Check if one cross-reference command is used inside another. * tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace) Increment nesting_context.xref for cross-reference command. * tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace), Decrement nesting_context.xref for cross-reference command. * tp/Texinfo/XS/parsetexi/close.c (close_all_style_commands): Add a FIXME comment saying that nesting_context is not touched. 2023-01-22 Gavin Smith @caption, @shortcaption nesting checking * tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting_context): Check if @caption or @shortcaption is called in caption context. * tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace) Increment nesting_context.caption for @caption, @shortcaption. * tp/Texinfo/XS/parsetexi/close.c (close_current), * tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace), Decrement nesting_context.caption for @caption, @shortcaption. 2023-01-21 Gavin Smith Indent goto labels * tp/Texinfo/XS/parsetexi/close.c, * tp/Texinfo/XS/parsetexi/def.c, * tp/Texinfo/XS/parsetexi/end_line.c, * tp/Texinfo/XS/parsetexi/parser.c, * tp/Texinfo/XS/parsetexi/separator.c: Indent goto labels so that they do not appear as the function in git diff. 2023-01-21 Gavin Smith Nesting context for XS parser * tp/Texinfo/XS/parsetexi/context_stack.h (NESTING_CONTEXT): Define new structure. * tp/Texinfo/XS/parsetexi/context_stack.c (nesting_context): Define. * tp/Texinfo/XS/parsetexi/api.c (reset_parser_except_conf): Wipe nesting_context. * tp/Texinfo/XS/parsetexi/parser.c (check_valid_nesting_context): New function to check nesting_context. (process_remaining_on_line) <@-command>: Call it together with check_valid_nesting. * tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace) Increment nesting_context.footnote for @footnote. * tp/Texinfo/XS/parsetexi/close.c (close_current), * tp/Texinfo/XS/parsetexi/separator.c (handle_close_brace), Decrement nesting_context.footnote for @footnote. 2023-01-19 Gavin Smith * tp/Texinfo/XS/parsetexi/commands.h: Remove unused flags CF_item_container, CF_item_line and CF_inline. 2023-01-17 Patrice Dumas Source marks for @include included file start * tp/Texinfo/ParserNonXS.pm (_register_source_mark) (_end_line_misc_line), tp/Texinfo/XS/Makefile.am (Parsetexi_la_SOURCES), tp/Texinfo/XS/parsetexi/api.c (reset_parser_except_conf, store_source_mark_list) (element_to_perl_hash), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line), tp/Texinfo/XS/parsetexi/source_marks.c (new_source_mark, register_source_mark, source_marks_reset_counters), tp/Texinfo/XS/parsetexi/tree.c (destroy_source_mark_list) (destroy_element), tp/Texinfo/XS/parsetexi/tree_types.h: add source mark to locate the place where an @include file is expanded. * tp/Texinfo/ParserNonXS.pm (_input_push_file): pass include file source mark. 2023-01-17 Gavin Smith * doc/texinfo.tex (@useindex): Use \global in assignment to escape the group in \defunargs added 2022-12-29. 2023-01-17 Gavin Smith * tp/Texinfo/command_data.txt: Add @useindex. Don't do anything with it yet. 2023-01-15 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_misc_line), tp/Texinfo/XS/parsetexi/end_line.c (end_line_misc_line): remove setfilename or include from tree before starting a new preformatted, in preformatted context. * tp/t/80include.t, tp/Makefile.tres: add test include_with_setfilename_in_preformatted that tests @include in @example, with a @setfilename in the included file. 2023-01-15 Gavin Smith * system.h (DEFAULT_TMPDIR): Remove all uses, eliminating check for VMS. (xexit): Remove declaration; the function itself apparently was removed 2012-06-11. 2023-01-15 Gavin Smith * system.h (MIN, MAX): Remove. * info/pcterm.h (MIN): Move MIN to here, the only use site. 2023-01-14 Patrice Dumas * tp/Texinfo/Convert/DocBook.pm (_new_document_context): Add the _new_document_context function to push a new documeent context. * tp/Texinfo/Convert/DocBook.pm (_convert): add 'no_break' in document context for @w, and protect text with non-breakable spaces in that context. Report from Gavin. 2023-01-14 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_convert_text): in space_protected, protect spaces in 'line_break_element' before prepending and replacing spaces with 'non_breaking_space'. The unprotection is already implemented. * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/html_tests.t: add the spaces_in_line_break_in_verb_w test testing space in line_break_element. There is no API to modify line_break_element, so $self->{'line_break_element'} is directly set in an init file. 2023-01-13 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_parse_texi), tp/Texinfo/XS/parsetexi/parser.c (parse_texi): revert change from 2023-01-08, do not ignore empty line early such that line after a DEL character is joined with the next line. 2023-01-13 Patrice Dumas * doc/texinfo.texi (Comments): add that the line after the DEL comment is merged. 2023-01-13 Gavin Smith * doc/texinfo.tex (\setupverb): Set \parindent to 0pt to avoid paragraph indent on newline inside @verb. 2023-01-11 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (output): normalize node redirection name before comparing with existing file names, in case case of file name needs to be normalized. Report from Torbjörn Svensson. * tp/t/html_tests.t, tp/Makefile.tres: add file_name_case_insensitive_conflict_redirections, from Torbjörn Svensson. 2023-01-11 Gavin Smith Hypenation in @code * doc/texinfo.tex (\code, \codedash): Set internal \codedashprev macro differently when \code starts to avoid hyphenation being always turned off for the first hyphen in code. \codedashprev does not actually refer to the previous character, as it is only set when a dash is seen, not at every single character within @code, so rename it to \codedashnobreak to be less confusing. Report from Werner. 2023-01-11 Gavin Smith * doc/info-stnd.texi (Invoking Info): Say what happens if Info's standard output is not a terminal. 2023-01-11 Patrice Dumas * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/html_tests.t: add filenameconflictwithspecialelement demonstrating conflict of redirection file with special element, which needs customizing the special element file_string. 2023-01-11 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (output): add context for node and section names for redirection files conflicts for translation. * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/html_tests.t: add tests for different possibilities for file conflict with redirection files, file_name_conflict_with_section, filenameconflictwithnonsplit (which actually shows that there cannot be a conflict), file_name_conflict_with_user_defined. 2023-01-11 Patrice Dumas * tp/Texinfo/Convert/HTML.pm: reindent, cut at 80 columns, remove unused code. 2023-01-10 Gavin Smith * doc/info-stnd.texi (Node Commands): Some edits for style and brevity. 2023-01-10 Gavin Smith * doc/info-stnd.texi (Node Commands): Move immediately after introductory chapter so that we can immediately introduce the important commands 'n', 'p' and 'u'. 2023-01-10 Gavin Smith * doc/info-stnd.texi (MS-DOS/Windows keybindings): Collect MS-DOS/Windows alternative keybindings in this node to avoid obscuring the documentation in the rest of the manual. 2023-01-10 Gavin Smith * doc/info-stnd.texi (Scrolling Commands, Miscellaneous Commands): Move documentation of redraw-display and toggle-wrap to Miscellaneous Commands as these aren't scrolling commands. Do not describe show-footnotes command as "convenient". 2023-01-10 Gavin Smith * doc/info-stnd.texi (Invoking Info): Move later in the manual so that a user reading through the manual from start to finish gets information on interactive use first. 2023-01-10 Gavin Smith * doc/info-stnd.texi (Invoking Info): Relegate list of supported compression programs to a footnote. 2023-01-10 Gavin Smith * doc/info-stnd.texi (Invoking Info), NEWS: Remove "/index" as possible info file extension, as the purpose of this is obscure, it is not a proper file extension and looks like a mistake, even though it isn't one. Originally added 1997-08-06 by Matthew Wilcox to put split info files in subdirectories in infodir. * doc/filesys.c (info_suffixes): Remove "/index". 2023-01-10 Patrice Dumas * tp/Texinfo/Convert/Converter.pm (register_normalize_case_filename), tp/Texinfo/Convert/HTML.pm (_html_set_pages_files, output): associate file names to the source of the name, an element, a special file or a stand in file (in case nothing good was found as file name). Keep the information on redirection pages created. Warn using both the redirected node information and the information on file source. Rename _normalize_filename_case as register_normalize_case_filename in Texinfo::Convert::Converter such that it can be used directly. * tp/Texinfo/Report.pm (line_warn, line_error, document_warn) (document_error): add a continuation optional argument to convey that the line is a continuation line for a warning or error message. * tp/Texinfo/Convert/Converter.pm (registered_filename): new function to return the normalized file names for file that were registered. A file registered may nt be created. Not used for now. 2023-01-10 Patrice Dumas * Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm (_normalize_texinfo_name, _prepare_anchor): update Texinfo::Convert::Texinfo::convert_to_texinfo call which has no second argument anymore. 2023-01-09 Gavin Smith * install-info/install-info.c (split_entry): Rewrite in slightly more inefficient way to silence obnoxious gcc warning about use of strncat. 2023-01-09 Patrice Dumas * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/html_tests.t: add a test with the same transliterated file names for a node, an anchor and a float label. 2023-01-09 Patrice Dumas * tp/t/input_files/delcomment_followed_by_cpp_line.texi: add more cases of del comment followed by cpp directives. 2023-01-09 Patrice Dumas * tp/Texinfo/Convert/Converter.pm (initialize_tree_units_files) (_normalize_filename_case): set $self->{'filenames'} independently of CASE_INSENSITIVE_FILENAMES being set. 2023-01-08 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_parse_texi), tp/Texinfo/XS/parsetexi/parser.c (parse_texi): ignore empty line early such that it does not go through process_remaining_on_line where an empty line leads to next_text being called. Indeed, we want the next line to come from the parse_texi next_text. 2023-01-08 Gavin Smith * tp/Texinfo/Convert/LaTeX.pm (_convert) <@verb>: Output line break for newline in @verb argument. 2023-01-08 Gavin Smith @set txicodequoteundirected and @set txicodequotebacktick by default * doc/texinfo.tex: Turn on "@set txicodequoteundirected" and "@set txicodequotebacktick" by default. (\codequoteleft, \codequoteright): Access glyphs by hexadecimal index rather than octal so to match comment. * doc/texinfo.tex (Inserting Quote Characters): Update. Make text appropriate for all output formats by limiting sample output. * NEWS: Mention. 2023-01-08 Gavin Smith * doc/texinfo.tex (\indexnofonts): Remove obsolete comment claiming that makeinfo doesn't expand macros in the argument to @deffn. 2023-01-08 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line): do not treat especially macro expansion to the empty string. * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c (handle_comma): decrease remaining args counter when correct and only in that case. * tp/t/60macro.t, tp/t/02coverage.t, tp/Makefile.am, tp/Makefile.tres: add tests showing that cpp line directives are ignored in some setups (in macro definition, after a del comment at the beginning of the line, after an empty macro expansion). 2023-01-08 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_input_push_file, parse_texi_file) (_end_line_misc_line): use _input_push_file to both open and put input file information in $self->{'input'} (as in the XS Parser), reusing _open_in code. Remove _open_in. 2023-01-08 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_misc_line), tp/Texinfo/Convert/Texinfo.pm (convert_to_texinfo) (_expand_cmd_args_to_texi), tp/Texinfo/Convert/TexinfoMarkup.pm (%ignored_types, %ignored_types): do not set replaced type on included files element, use a variable set it a file was included. Remove completely the replaced type. * tp/Texinfo/ParserNonXS.pm (_input_push_text), tp/Texinfo/XS/parsetexi/input.c (input_push_text): rename input_push as input_push_text. Update the callers. 2023-01-07 Patrice Dumas * tp/Texinfo/XS/parsetexi/input.c (input_push), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): pass expanded value and put in value_flag in input structure. Update callers. * tp/Texinfo/XS/parsetexi/input.c (macro_expansion_nr) (value_expansion_nr, next_text), tp/Texinfo/XS/parsetexi/macro.c (handle_macro), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): use separate counters for values and macros expansions. * tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): error out on value expansion number higher than MAX_MACRO_CALL_NESTING. * tp/Texinfo/ParserNonXS.pm (_input_push, _process_remaining_on_line): put expanded value in iput. Use 'value_flag' for value flag key name in input. * tp/Texinfo/ParserNonXS.pm (_input_push, _next_text): fix conditions on macro being set. * tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): free value flag even if there was no value expansion. * tp/t/50value.t: add recursive_expansion_in_set for a test of infinite recursion with @value. 2023-01-07 Gavin Smith Treat spaces in @verb and @w differently in HTML * tp/Texinfo/Convert/HTML.pm (_convert): Only use 'space_protected' stack for @verb. Use new 'no_break' stack for @w. (_convert_text): Handle 'space_protected' and 'no_break' differently. For 'space_protected', convert newlines to
or
and keep multiple spaces. For 'no_break', treat newline as space and condense multiple spaces to one non-breaking space. (in_non_breakable_space): Check 'no_break' stack instead of 'space_protected' stack. (in_space_protected): New function to check 'space_protected' stack. * doc/texi2any_api.texi (Text Formatting Context): Add documentation of in_space_protected. * tp/init/html32.pm (html32_convert_text): Call in_space_protected as well as in_non_breakable_space API functions. 2023-01-07 Gavin Smith @backslashchar{} as \ in PDF bookmarks * doc/texinfo.tex (\definedummies): Give @backslashchar an \indexnofonts definition of \realbackslash so that a backslash will be displayed in PDF bookmarks if used in a section title. 2023-01-07 Gavin Smith @headings does not reset page number * doc/texinfo.tex (\HEADINGSsingle, \HEADINGSdouble: (\HEADINGSsinglechapoff): Do not call \pageone. This appears to be unnecessary, and does not interact well with PDF page labels generation when a @headings or @setchapternewpage command is issued later in a document, as in doc/texinfo-tex-test.texi. 2023-01-07 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_input_push), tp/Texinfo/XS/parsetexi/api.c, tp/Texinfo/XS/parsetexi/handle_commands.c, tp/Texinfo/XS/parsetexi/input.c (input_push), tp/Texinfo/XS/parsetexi/parser.c: change the order of input_push arguments. Get the filename from the input stack in input_push. Remove input_push_text and input_push_text_with_line_nos, call directly input_push. Update callers. * tp/Texinfo/XS/parsetexi/Parsetexi.pm: simplify arguments passing to parse_texi_*. Change variable name, remove comments. 2023-01-07 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_next_text, _new_line): do not get a source_info as _next_text argument. Keep the first input level to have a source for source_info even after the file is closed and the filehandle deleted from the input. Update callers. 2023-01-07 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_new_text_input, _input_push) (_input_push_text_with_line_nos, _input_pushback_text) (_input_push_text, parse_texi_piece, parse_texi_line, parse_texi_text) (parse_texi_file, _parse_texi_document, _register_global_command) (_save_line_directive, _next_text, _in_include, _end_line_misc_line) (_process_remaining_on_line): instead of preprocessing text and splitting in an array, push a whole text on input and get line by line in _next_text. Do not associate a file with pending text, instead put pending text on its own on self->{'input'}. remove _text_to_lines and _complete_line_nr. More similar code to XS parser. 2023-01-06 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_next_text, _process_remaining_on_line): simplify the information passed to determine the end of macro or value expansion. 2023-01-06 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_prepare_input_from_text) (parse_texi_piece, parse_texi_line, parse_texi_text): remove arguments not consistent with XS parser. The input should only be a simple string. 2023-01-05 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (%parser_state_initialization, _next_text) (_process_remaining_on_line): add a value_stack to put expanded @value. Use a sourcemark structure put in source_info to mark the end of @value expansion. Also use such a structure for @macro, replacing 'end_macro'. Check number of values expansion number and error out if there is more than MAX_MACRO_CALL_NESTING. correct MAX_MACRO_CALL_NESTING name in warning message. * tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser), tp/Texinfo/XS/parsetexi/Parsetexi.xs (conf_set_MAX_MACRO_CALL_NESTING), tp/Texinfo/XS/parsetexi/conf.c (conf_set_MAX_MACRO_CALL_NESTING, reset_conf), tp/Texinfo/XS/parsetexi/macro.c (handle_macro): pass MAX_MACRO_CALL_NESTING to the XS parser. Use that value for the number of macro call nesting allowed. correct MAX_MACRO_CALL_NESTING name in warning message. * tp/t/60macro.t: add recursive_call_in_rmacro to test for an infinite recursion. 2023-01-04 Patrice Dumas * .gitignore: replace tp/tests/included_lat*n1.texi by tp/tests/built_input. 2023-01-04 Gavin Smith * tp/tests/Makefile.am: Call maintain/copy_change_file_name_encoding.pl to create files in built_input subdirectory. This stops make program on OpenIndiana 11 gagging immediately in a UTF-8 locale. * tp/tests/run_parser_all.sh: Pass -I built_input to texi2any. 2023-01-04 Gavin Smith * doc/texinfo.texi (Multitable Column Widths): State that prototype rows have no effect in HTML output. Report from Raymond Toy. 2023-01-04 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_default_format_special_body_about): show the button desciption if the button specification is an array reference of length 2. Do not show a button, only the description and explanation, as we do not know what the button text could look like. 2023-01-04 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (%defaults): add About to the default header buttons. 2023-01-04 Patrice Dumas * tp/ext/epub3.pm (epub_convert_special_element_type, epub_setup) (epub_finish): collect special elements and add them after the normal tree unit elements. 2023-01-04 Patrice Dumas * tp/tests/layout/list-of-tests: set separate footnotestyle for formatting_epub_nodes test. 2023-01-04 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_prepare_conversion_tree_units, output): set special elements net and prev in _prepare_conversion_tree_units and not in output, in order to do it if called through convert(). 2023-01-04 Patrice Dumas * tp/tests/layout/Makefile.am (EXTRA_DIST): remove Texinfo files not used anymore in tests/ (they are in tp/t/input_files/). 2023-01-04 Patrice Dumas * tp/tests/tex_html/list-of-tests: update path of formatting.texi for formatting_singular test. 2023-01-04 Patrice Dumas * tp/tests/coverage/list-of-tests: add Info and Plaintext. Rename formatting_html_no_texi2html as formatting_html_no_split. * tp/tests/layout/list-of-tests: remove useless FORMAT_MENU=nomenu for a plaintext format test. 2023-01-04 Patrice Dumas * tp/tests/layout/list-of-tests: rename formatting_html to formatting_texi2html and formatting_html_nodes to formatting_texi2html_nodes and add --internal-links options. Rename other tests that look like the defaults for an output format and are not. Remove formatting_nodes and formatting tests that are redundant with other tests. 2023-01-04 Patrice Dumas * tp/tests/*/list-of-tests, tp/tests/*/Makefile.am, autogen.sh, configure.ac, tp/tests/Makefile.am (base_tests_dirs): move init file customization related tests from 'contents' and 'formatting' to a new 'customization' tests directory. Move remaining 'contents' and 'indices' tests to 'formatting'. Move encodings related 'formatting' tests to a new tests directory named 'encoded'. Split 'coverage' tests directory with each output format coverage test out of 'layout'. 2023-01-04 Patrice Dumas * tp/tests/other/list-of-tests: use the default format and not html. 2023-01-04 Patrice Dumas * tp/tests/*/list-of-tests: remove '-c TEXI2HTML=undef' which is not needed anymore. 2023-01-04 Patrice Dumas * tp/ext/epub3.pm: set USE_NODES to 0 in order to have section names used in printindex output. * tp/tests/README, tp/tests/run_parser_all.sh: do not set texi2html style for the default empty format. * tp/tests/tex_html/math_not_closed.texi: remove @setfilename. 2023-01-04 Patrice Dumas * tp/tests/tex_html/list-of-tests: add explicit options when texi2html style is not necessary, and explicitly set TEXI2HTML when needed. 2023-01-04 Patrice Dumas * tp/Makefile.tres, tp/t/30sectioning.t, tp/t/html_tests.t, tp/tests/contents/Makefile.am (EXTRA_DIST), tp/tests/contents/list-of-tests: move contents_and_parts out of tp/tests/contents/list-of-tests to tp/t/30sectioning.t and inline, remove the Texinfo file. Add no_content tests in tp/tests/contents/list-of-tests to test also the default case for contents location and unset the texi2html style. Duplicate the no_content tests in tp/t/html_tests.t. 2023-01-04 Patrice Dumas * tp/t/test_utils.pl (convert_to_plaintext): set OUTFILE to undef if SPLIT and SUBDIR is set, such that SUBDIR is used to determine the destination directory. 2023-01-04 Patrice Dumas * tp/maintain/regenerate_file_lists.pl, tp/Makefile.tres: list res_* directories only and not the files within to avoid an "Argument list too long" error for the shell in make dist. 2023-01-03 Patrice Dumas * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/html_tests.t, tp/tests/contents/Makefile.am (EXTRA_DIST), tp/tests/contents/list-of-tests: remove contents_in_middle_section*, contents_in_middle_chapter*, contents_at_end* and most of tests involving double_contents.texi from tp/tests/contents/list-of-tests, put similar tests in tp/t/html_tests.t and move the Texinfo file accordingly. Tests using the book.init init file need to stay in tp/tests/contents/list-of-tests, for those tests, do not use the texi2html style anymore. 2023-01-03 Patrice Dumas * tp/tests/indices/Makefile.am: remove reference to res_parser_info. * tp/tests/nested_formats/Makefile.am: replace *_parser_info by *_parser_html. 2023-01-03 Patrice Dumas * tp/tests/contents/list-of-tests: remove no_content_setcatpage* tests that are redundant with no_content tests. 2023-01-03 Patrice Dumas * tp/tests/contents/*.texi: remove @setfilename. 2023-01-03 Patrice Dumas * tp/Makefile.am (test_files), tp/t/40moresectioning.t: inline the contents_at_end_document_after_node, contents_at_end_document and contents_in_document tests. Remove the Texinfo files. 2023-01-03 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (output, _html_set_pages_files): set element units next and prev in output and not in _html_set_pages_files, in order to do it even if the file is not set. * tp/t/40moresectioning.t, tp/Makefile.tres, tp/t/converters_tests.t, tp/tests/contents/list-of-tests: inline contents_at_document_begin.texi test in tp/t/40moresectioning.t. Replace contents_at_document_begin.texi contents with the tests/contents/contents_at_begin.texi file contents, without @setfilename. Add contents_at_document_begin, contents_at_document_begin_inline and contents_at_document_begin_separate_element tests in tp/t/converters_tests.t and remove the contents_at_begin, contents_at_begin_inline and contents_at_begin_info tests from tp/tests/contents/list-of-tests, since the tests in tp/t/converters_tests.t now test for much more. 2023-01-03 Gavin Smith * Makefile.am (EXTRA_DIST): Distribute more recent ChangeLog.65 and ChangeLog.70 as well as ChangeLog.46. 2023-01-03 Patrice Dumas * tp/Makefile.tres, tp/t/40moresectioning.t: remove contents_no_section from 40moresectioning.t and the associated Texinfo file, as the test is redundant with contents_with_only_top_node in tp/t/30sectioning.t. 2023-01-03 Patrice Dumas * tp/Makefile.tres, tp/t/30sectioning.t, tp/t/40moresectioning.t: move some tests from tp/t/30sectioning.t to tp/t/40moresectioning.t. 2023-01-03 Patrice Dumas * tp/Makefile.tres, tp/t/30sectioning.t, tp/t/40moresectioning.t: move some tests from tp/t/30sectioning.t to tp/t/40moresectioning.t as part of an effort to reduce the size of 30sectioning.t. 2023-01-03 Patrice Dumas * tp/Makefile.am (test_files), tp/t/30sectioning.t: use files for the longuest codes and code needing escaping of ' or \, leading to three files, character_and_spaces_in_refs_text.texi, complex_sectioning_case.texi and section_in_unnumbered_text.texi. 2023-01-03 Patrice Dumas * tp/tests/layout/list-of-tests: explicitly set TEXI2HTML style when needed, otherwise unset TEXI2HTML and set relevant customization variables explicitly. * tp/tests/layout/formatting_regions.texi: remove @setfilename 2023-01-03 Patrice Dumas * tp/tests/nested_formats/list-of-tests: use the default format and the html format, and unset TEXI2HTML such that the default format produces Info. The html format des not use the texi2html style either. 2023-01-03 Patrice Dumas * tp/tests/formatting/list-of-tests, tp/tests/nested_formats/list-of-tests, tp/tests/sectioning/list-of-tests: more explicit imprtant customization variables or options for the test. Unset texi2html style for some tests. 2023-01-03 Patrice Dumas * tp/t/htmlxref.t: rename tp/t/94htmlxref.t as tp/t/htmlxref.t. 2023-01-03 Patrice Dumas * tp/t/94htmlxref.t: set 'FORMAT_MENU' once for all the tests, do not set explicitly 'NODE_FILES'. 2023-01-03 Patrice Dumas * tp/Makefile.tres, tp/t/94htmlxref.t: do not use texi2html style, set explicitly the relevant customization variables. 2023-01-03 Patrice Dumas * doc/texi2any_api.texi (Customizing Output File Names): tree_unit_file_name is only used for normal element units. * doc/texi2any_api.texi: other minor edits. 2023-01-03 Patrice Dumas * doc/texi2any_api.texi (Customizing Special Elements Output Names): add a separate section for Special Elements Output Names. * doc/texi2any_api.texi (Customizing Special Elements Output Names) (Customizing Footnotes@comma{} Tables of Contents and About): document that the special elements element variety is available as 'extra' 'special_element_variety' key. 2023-01-03 Patrice Dumas * tp/t/layout.t: rename tp/t/93layout.t as tp/t/layout.t. 2023-01-03 Patrice Dumas * tp/Makefile.tres, tp/t/93layout.t, tp/tests/layout/list-of-tests: move navigation_test_misc_file_collision test to tp/t/93layout.t. Remove no_monolithic_only_toc_out test from tp/tests/layout/list-of-tests, it is in tp/t/93layout.t. 2023-01-03 Patrice Dumas * tp/t/init/only_toc_out.init: use the correct special element variety name. * tp/Makefile.tres, tp/t/93layout.t: add no_monolithic_only_toc_out test. 2023-01-03 Patrice Dumas * tp/t/30sectioning.t, tp/Makefile.tres, tp/t/92formatting.t: move split_for_format_not_split to 30sectioning.t. Remove now empty tp/t/92formatting.t. 2023-01-03 Patrice Dumas * tp/t/92formatting.t, tp/Makefile.tres, tp/t/55conditionals.t: move cnd.texi related tests to 55conditionals.t. 2023-01-03 Patrice Dumas * tp/t/92formatting.t: explicit output format for all cond.texi tests. * tp/t/92formatting.t, tp/Makefile.tres, tp/t/converters_tests.t, tp/t/html_tests.t: move simplest_test_prefix* to converters_tests.t and move simplest_test_date_in_header and float_copying to html_tests.t * tp/Makefile.am (test_file), tp/t/02coverage.t: rename t/input_files/one_line_no_content.texi as t/input_files/minimal_only_input_line.texi. 2023-01-03 Patrice Dumas * tp/t/92formatting.t: remove texi2html style, and set corresponding customization instead. 2023-01-03 Patrice Dumas * tp/t/92formatting.t: remove texi2html style for cond.texi related tests, and remove some custmization variables set. * tp/t/input_files/cond.texi: add @top, move @node Top lower to have a preamble to test. 2023-01-02 Patrice Dumas * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/92formatting.t, tp/t/info_tests.t: move direntry_dircategory, split_nocopying and split_nocopying_split to info_tests.t. Use only tests/formatting/split_nocopying.texi and remove t/input_files/split_nocopying.texi. 2023-01-02 Patrice Dumas * tp/Makefile.tres, tp/t/02coverage.t, tp/t/92formatting.t: move one_line_no_content and one_line tests from 92formatting.t to 02coverage.t. 2023-01-02 Patrice Dumas * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/80include.t: add test_two_include test in 80include.t which is an inlining of the t/input_files/test_two_include.texi file. Remove t/input_files/test_two_include.texi. Move version.texi from t/input_files/ to t/include/. Remove the t/input_files/unknown_nodes_renamed.texi and t/input_files/unknown_nodes_renamed-noderename.cnf unused files. 2023-01-02 Patrice Dumas * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/92formatting.t: remove the documentlanguage_set_* tests and the documentlanguage_set.texi file. * tp/t/languages.t, tp/Makefile.tres: add tests of setting documentlanguage similar with tests removed from tp/t/92formatting.t but using ../../tests/formatting/documentlanguage.texi, which is more relevant. 2023-01-02 Gavin Smith * doc/texinfo.tex (@shorttitlepage): Call \headingsoff within a group and reset page number with \pageone, as is done in @titlepage. This stops page numbers appearing on the bastard titlepage or the verso. Report from Arnold Robbins. 2023-01-02 Gavin Smith * info/man.c (check_manpage_node): Revert to using "man -w" instead of "man --where" to work on FreeBSD and macOS. Disable this code if __sun is defined. From Bruno Haible. 2023-01-02 Patrice Dumas * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/55conditionals.t, tp/t/92formatting.t, tp/tests/formatting/Makefile.am (EXTRA_DIST), tp/tests/formatting/list-of-tests: move defcondx_Dbar and defcondx_Ubar tests to tp/t/55conditionals.t. Add also similar tests in tp/tests/formatting/list-of-tests to test the command line. Move defxcond.texi to tp/tests/formatting/. * tp/Makefile.tres, tp/t/60macro.t, tp/t/92formatting.t: move glossary and texi_bib_example tests to 60macro.t, renaming texi_bib_example as bib_example. 2023-01-02 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (raw_block_stack_top) (process_remaining_on_line): use the stack of raw block commands to determine the matching end of nested raw block command. * tp/Makefile.tres, tp/t/60macro.t: add simple_imbricated_macro_rmacro test. * tp/t/input_files/glossary.texi: use empty braces for calls of macros without arguments. 2023-01-02 Patrice Dumas * tp/Makefile.am (test_files), tp/Makefile.tres, tp/tests/layout/list-of-tests, tp/t/91morecoverage.t: move formatting_fr tests from tp/t/91morecoverage.t to tp/tests/layout/list-of-tests. Remove the associated file, remove tp/t/91morecoverage.t. 2023-01-02 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (from_element_direction): use TOP_NODE_UP_URL in priority, even if the Up/NodeUp direction is set. * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/html_tests.t, t/96moresectioning.t: inline top_node_up_implicit and top_node_up_explicit tests from 96moresectioning.t in t/html_tests.t, adding variants with USE_NODES set to 0. Remove the corresponding files. Remove the now empty 96moresectioning.t file. 2023-01-02 Patrice Dumas * tp/Makefile.tres, tp/t/96moresectioning.t, tp/t/html_tests.t: move node_footnote_use_node* tests and sectioning_frames from 96moresectioning.t to html_tests.t. 2023-01-02 Patrice Dumas * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/96moresectioning.t: remove two_footnotes_in_nodes and two_footnotes_in_nodes_separated that are redundant with tests in 03coverage_braces.t, and remove the associated Texinfo file. * tp/t/03coverage_braces.t: only do html_text output format test if not already doing html output format test. 2023-01-02 Patrice Dumas * tp/Texinfo/Common.pm, tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/Utils.pm, tp/Texinfo/Structuring.pm, tp/Texinfo/Transformations.pm: avoid autovivification of extra key. * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/30sectioning.t, tp/t/96moresectioning.t: remove more_sections_than_nodes and placed_things_before_element from 96moresectioning.t as these tests are redundant with tests in 30sectioning.t. Remove associated Texinfo files. In 30sectioning.t, set FORMAT_MENU to menu for placed_things_before_element, move more_sections_than_nodes to @info_tests and test texi2html style. 2023-01-02 Patrice Dumas * tp/t/test_utils.pl (unsplit, test): unsplit() returns if unsplitting was needed. Rename $split as $test_split. Add comments on re-splitting in tests. Add comments in other files. 2023-01-01 Patrice Dumas * tp/tests/indices/Makefile.am (EXTRA_DIST, distclean-local): remove references to *_parser_info. 2023-01-01 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (converter_defaults) (_set_variables_texi2html): copy %defaults and modify the copy in _set_variables_texi2html() instead of changing the file global variable. * tp/Texinfo/Convert/HTML.pm (_convert_menu_entry_type): menu entry node 'normalized' may be undefined if it consists in spaces only. * tp/Makefile.tres, tp/t/30sectioning.t: new tests in_menu_only_special_ascii_spaces_node_menu and in_menu_only_special_spaces_node_menu with 'FORMAT_MENU' => 'menu' based on tests with menu entry nodes consisting only in spaces. * tp/Makefile.tres, tp/t/96moresectioning.t, tp/Makefile.am (test_files), tp/t/30sectioning.t: move nodes_after_top_before_chapter* and nodes_after_top_before_section* tests from t/96moresectioning.t to t/30sectioning.t, use the inline texts and remove the Texinfo files, and rename the tests with _texi2html added. * tp/Makefile.am (test_files), tp/t/96moresectioning.t: remove t/input_files/sectioning.texi, use only tests/sectioning/sectioning.texi. 2023-01-01 Patrice Dumas * tp/Makefile.tres, tp/t/96moresectioning.t: do not use the texi2html style for node_footnote.texi related tests, instead set only the relevant customization variables. Add a test with node_footnote.texi, split at node with separate footnotestyle. 2023-01-01 Patrice Dumas * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/30sectioning.t, tp/t/96moresectioning.t: inline equivalent_nodes.texi in tp/t/30sectioning.t, renaming the corresponding test as equivalent_nodes_defined_linked. Remove equivalent_nodes.texi and the tests in tp/t/96moresectioning.t. 2023-01-01 Patrice Dumas * tp/t/input_files/equivalent_nodes.texi: do not use a node before Top for this test, but, more simply a regular node. 2023-01-01 Patrice Dumas * tp/t/96moresectioning.t: remove specific variables set for PROGRAM, PACKAGE_URL and TEST. 2023-01-01 Patrice Dumas * tp/t/09indices.t: move $encoding_index_text near the associated tests. 2023-01-01 Patrice Dumas * tp/Makefile.tres, tp/t/95moreindices.t, tp/t/09indices.t: merge tp/t/95moreindices.t with tp/t/09indices.t putting html file 95moreindices.t tests in @test_html_file. 2023-01-01 Gavin Smith * info/man.c (check_manpage_node): Use man --where instead of man -w to avoid clash with man program on Solaris, where -w means to update the whatis database. Test failure on OpenSolaris 2022.10 reported by Bruno Haible. 2023-01-01 Patrice Dumas * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/95moreindices.t: remove double_index_entry from t/95moreindices.t as there is a redundant test in tp/t/09indices.t. Rename tests such that the defaults are without suffix. 2023-01-01 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): use only one place in code to add the raw line in nested raw blocks. 2023-01-01 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (%parser_state_initialization), (_process_remaining_on_line, _end_line_misc_line, _parse_texi): rename conditionals_stack as conditional_stack to match XS parser. 2023-01-01 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (%parser_state_initialization) (_process_remaining_on_line, _parse_texi), tp/Texinfo/XS/parsetexi/parser.c (raw_block_stack) (push_raw_block_stack, pop_raw_block_stack, process_remaining_on_line) (parse_texi): use a stack, raw_block_stack for nested raw block commands instead of putting them in the tree. 2023-01-01 Patrice Dumas * tp/t/09indices.t, tp/Makefile.tres: add test with index_table with default customization, rename former index_table as index_table_chapter_no_node. Add explicit split nodes for Plaintext testing for index_nodes. Split @file_encodings_tests out of @file_tests. In @file_tests, do only testing of Info if it is expected to be different from the base case. Keep spaces at end of line in test text only. 2022-12-31 Patrice Dumas * tp/tests/indices/list-of-tests: remove _info format tests as they are redundant with tests in t/*.t. * tp/tests/indices/list-of-tests: do not use the TEXI2HTML style for index_entries_relate_to_item test. 2022-12-31 Patrice Dumas * tp/t/test_utils.pl (test): read 'FORMAT_MENU' as a structuring option. Only call Texinfo::Structuring::complete_node_tree_with_menus and Texinfo::Structuring::check_nodes_are_referenced if 'FORMAT_MENU' is set to menu. * tp/Makefile.tres, tp/t/30sectioning.t: add chapter_between_nodes_with_appendix and chapter_between_nodes_with_appendix_nomenu tests, in particular to have a case with Top next node automatic direction being determined by the menu. * tp/t/10menu.t: remove 'FORMAT_MENU' => 'nomenu' from the converter/structuring options of simple_no_menu test, as it does not change the output. 2022-12-31 Patrice Dumas * tp/Makefile.am (test_files), tp/t/09indices.t, tp/tests/indices/Makefile.am (EXTRA_DIST), tp/tests/indices/list-of-tests: move index_special_region_no_insertcopying_html tests to tp/t/09indices.t. 2022-12-31 Patrice Dumas * tp/Texinfo/Convert/Plaintext.pm (process_footnotes): handle the case of footnotes not associated with nodes. * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/09indices.t, tp/tests/indices/Makefile.am (EXTRA_DIST), tp/tests/indices/list-of-tests: move index_special_region tests to tp/t/09indices.t. 2022-12-31 Patrice Dumas * tp/tests/indices/Makefile.am (EXTRA_DIST), tp/tests/indices/list-of-tests: remove index_special_region_no_region and index_special_region_no_region_html and the Texinfo file, as these are the same as index_special_region_no_insertcopying tests. * tp/tests/indices/index_special_region_no_insertcopying.texi: remove @setfilename. 2022-12-31 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (get_element_root_command_element) (_convert_printindex_command), doc/texi2any_api.texi (Target Commands Links@comma{} Texts and Associated Commands): add get_element_root_command_element to the API to return the element and root command associated to a tree element. Use get_element_root_command_element in printindex conversion to determine the printindex root command target when there are no directions. * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/09indices.t, tp/tests/indices/Makefile.am (EXTRA_DIST), tp/tests/indices/list-of-tests: move index_no_node_no_top test to tp/t/09indices.t, add test with USE_NODES to the default value. 2022-12-30 Patrice Dumas * tp/Makefile.tres, tp/t/converters_tests.t, tp/tests/indices/list-of-tests: add tests based on indices_in_begin_tables_lists.texi to tp/t/converters_tests.t to test no tree transformation and tree transformation separately. Change HTML indices_in_begin_tables_lists.texi in tp/tests/indices/list-of-tests not to use the texi2html style. * tp/Makefile.tres, tp/t/info_tests.t, tp/tests/indices/Makefile.am (EXTRA_DIST), tp/tests/indices/list-of-tests: move index_one_node test to tp/t/info_tests.t and inline it. 2022-12-30 Patrice Dumas * tp/tests/layout/list-of-tests: add 'Need collation compatibility' for two more tests. 2022-12-30 Patrice Dumas * tp/Texinfo/Structuring.pm (sort_indices): add comments on how to test compatibility of Unicode::Collate with tests. * configure.ac, tp/defs.in (PERL_UNICODE_COLLATE_OK), tp/t/09indices.t, tp/tests/run_parser_all.sh (check_unicode_collate_ok), tp/tests/layout/list-of-tests, tp/tests/tex_html/list-of-tests: Add a configure.ac test for perl 5.18.1 which seems to be the first compatible version with the tests results for test using Unicode collation. Use that test result in run_parser_all.sh to skip tests with 'Need collation compatibility' put on their command line. Skip similarly tests in tp/t/09indices.t based on perl version too. 2022-12-30 Patrice Dumas * tp/Texinfo/Structuring.pm (sort_indices): give the 'UCA' => 22 argument to Unicode::Collate to have a stable collation. 2022-12-30 Patrice Dumas * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/09indices.t, tp/tests/indices/Makefile.am (EXTRA_DIST), tp/tests/indices/list-of-tests: move index_table test to tp/t/09indices.t, move the texinfo file too. 2022-12-30 Patrice Dumas * tp/Makefile.tres, tp/t/09indices.t, tp/tests/indices/Makefile.am (EXTRA_DIST), tp/tests/indices/list-of-tests: move interesting index_and_node_same_name.texi and index_entry_in_footnote.texi related tests to tp/t/09indices.t and inline them, renaming index_entry_in_footnote as index_entry_in_footnote_sections, as already the index_entry_in_footnote very similar test. 2022-12-30 Patrice Dumas * tp/Makefile.tres, tp/t/09indices.t, tp/tests/indices/Makefile.am (EXTRA_DIST), tp/tests/indices/list-of-tests: move printindex_between_node_section and printindex_between_part_chapter tests out of tp/tests/indices/list-of-tests to tp/t/09indices.t and inline them instead of using Texinfo files. 2022-12-30 Patrice Dumas * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/09indices.t, tp/tests/indices/Makefile.am (EXTRA_DIST), tp/tests/indices/list-of-tests: move index_nodes.texi and related tests from tests/indices/list-of-tests to tp/t/09indices.t. 2022-12-30 Patrice Dumas * tp/tests/indices/Makefile.am (EXTRA_DIST): remove the index_split.texi file in tp/tests/indices/, which is unused, and redundant with the one in tp/t/input_files/. Also remove same_doc_nr_split_index_and_element.texi which does not seems to be used anywhere. 2022-12-30 Patrice Dumas * tp/tests/indices/Makefile.am (EXTRA_DIST): remove the nodes_before_top_and_sections.texi file in tp/tests/indices/, which is now unused, and redundant with the one in tp/t/input_files/. 2022-12-30 Patrice Dumas * tp/Makefile.tres, tp/t/95moreindices.t, tp/tests/indices/list-of-tests: add nodes_before_top_and_sections_chapter and nodes_before_top_and_sections_chapter_no_node tests to 95moreindices.t, and remove the equivalent tests (which also used the texi2html style) from indices/list-of-tests. 2022-12-30 Gavin Smith * README-hacking: mention help2man as a program the version of which is important for making a release. 2022-12-30 Gavin Smith * doc/texinfo.texi, doc/info-stnd.texi, doc/texi2any_api.texi: Adjust copyright notice slightly to match recommended wording. From Hilmar Preuße. 2022-12-30 Patrice Dumas * doc/texinfo.texi (HTML Customization Variables), tp/Texinfo/Convert/HTML.pm (%default, output) (_set_variables_texi2html), tp/t/95moreindices.t: set NODE_NAME_IN_INDEX based on USE_NODES is undef. Move NODE_NAME_IN_INDEX documentation to HTML Customization Variables. 2022-12-30 Patrice Dumas * tp/t/95moreindices.t: do not set TEXI2HTML, instead set specific customization variable relevant for the test. * tp/tests/indices/nodes_before_top_and_sections.texi: correct @setfilename. 2022-12-29 Patrice Dumas * tp/t/test_utils.pl (test): update tree transformation names for relate_index_entries_to_items. * tp/t/transformations.t, tp/Makefile.tres: add tests using tests/indices/index_entries_relate_to_item.texi without and with the relate_index_entries_to_items transformation. 2022-12-29 Patrice Dumas * tp/tests/indices/index_entries_relate_to_item.texi: add a @printindex. * tp/tests/indices/list-of-tests: remove --html from index_entries_relate_to_item such that there are both HTML and Info generated (even though we are mainly interested in HTML output). 2022-12-29 Patrice Dumas * tp/tests/indices/index_entries_relate_to_item.texi: remove @setfilename, and @node Top and @top. 2022-12-29 Patrice Dumas * tp/tests/indices/index_entries_relate_to_item.texi: add file on behalf of Arsen Arsenović, corresponding to the 2022-12-27 Arsen Arsenović entry. 2022-12-29 Patrice Dumas * doc/Makefile.am (TEXI2DVI_ENVIRONMENT): use braces instead of parentheses for variable names to ease cut and pasting to shell. 2022-12-29 Patrice Dumas * doc/texi2oldapi.texi: add information in comments on how to process in source. Fix to be processable. More prominently state that the API description is obsolete and dates from 2010/2012. 2022-12-29 Patrice Dumas * doc/texinfo.texi (@command{texi2html}): remove reference to util/texi2html, as it has been removed. 2022-12-29 Gavin Smith * doc/texinfo.texi (\defunargs): Wrap in a group to limit @var redefinition. 2022-12-29 Gavin Smith * tp/Makefile.am (dist-hook): Do not distribute architecture- dependent gettext_xs.o file. Report from Hilmar Preuße. 2022-12-29 Patrice Dumas * tp/Texinfo/Convert/LaTeX.pm (_informative_command_output) (_latex_begin_output, _convert): add _informative_command_output that returns LaTeX output code for informative @-commands based on code in _convert, use it in _convert. In _latex_begin_output also call _informative_command_output for informative commands that have a different customization option value from the LaTeX default. * tp/t/latex_tests.t, Makefile.tres: add customize_informative_commands test to test customization options for informative @-commands. 2022-12-29 Patrice Dumas * tp/Texinfo/Common.pm (%document_settable_multiple_at_commands): change some defaults, set utf-8 for documentencoding and set documentlanguage and micrtype undef. 2022-12-29 Patrice Dumas * tp/Texinfo/Common.pm (_informative_command_value): get information for line commands of type line, using the first args contents if it is text. * tp/Texinfo/Common.pm (set_informative_command_value), tp/Texinfo/Convert/LaTeX.pm (_convert): add a return status from set_informative_command_value(), true if the customization variable was set. Output code related to a command associated to a customization variable in LaTeX only if the customization variable was set. * tp/Texinfo/Config.pm (set_conf), tp/Texinfo/Convert/Text.pm (set_conf): add a return status for consistency with Texinfo::Convert:Converter set_conf. * tp/t/latex_tests.t: add setchapternewpage_on_odd_titlepage_set_headings test, with headings customization variable set. 2022-12-29 Gavin Smith * doc/texinfo.texi (@cartouche): Do not use @emph inside @cartouche argument as font styles do not accumulate in TeX output. 2022-12-28 Patrice Dumas * tp/Texinfo/Convert/LaTeX.pm (_begin_document): do not set $self->{'titlepage_done'}, it is not used anymore. 2022-12-28 Patrice Dumas * tp/Texinfo/Convert/LaTeX.pm (_latex_begin_output, _begin_document) (_set_chapter_new_page): initialize based on setchapternewpage and headings customization variables values. Set headings off just before the titlepage, and reset afterwards to headings customization variables values. Return headings set together with setchapternewpage to avoid setting headings again when initializing. Set headings each time after setting setchapternewpage. 2022-12-28 Patrice Dumas * doc/texinfo.texi (@code{@@headings}): Update now that @titlepage does not do "@headings on". 2022-12-28 Patrice Dumas * tp/Texinfo/Convert/LaTeX.pm (_begin_document): add a special page style for Table of Contents which only shows the page number, to avoid an ugly Chapter 0. Set mainmatter after the Table of Contents. 2022-12-28 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (output, convert, _convert): do not use element units, simply convert the tree. Sections closed by root commands do not span following nodes. 2022-12-28 Patrice Dumas * tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): check that a nested @macro is followed by space or at end of string. * tp/t/60macro.t, tp/Makefile.tres: add macro_imbricated_with_beginning_command_name test with an @-command beginning with @macro imbricated in @macro. 2022-12-28 Gavin Smith * doc/texinfo.tex, NEWS: Turn microtype off by default, for speed. 2022-12-27 Patrice Dumas update po files 2022-12-27 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line): add end of line if needed for nested @ignore with comment. * tp/Texinfo/XS/parsetexi/parser.c (read_comment): fix offset with @comment. Skip the @ in comment command name. * tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): put the correct string in @ignore comment. Advance instead of exiting when there is a @ that is not a comment. * tp/Makefile.tres, tp/t/55conditionals.t: do not skip nested_ignore_with_comments. Add comment without argument in @ignore line examples. Add nested_ignore_comment_no_eol to test a very specific case of no end of line after nested @ignore and comment. 2022-12-27 Patrice Dumas * tp/Texinfo/XSLoader.pm (init): show the DynaLoader error message if dl_load_file failed. 2022-12-27 Patrice Dumas * tp/Texinfo/XS/parsetexi/end_line.c: defined floats lists related symbols to avoid non-defined symbols linking errors, even if there is no code run that uses those symbols. * tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block): fix check of variadic flag and negation precedence. * tp/Texinfo/XS/parsetexi/parser.c (parse_texi): wipe input stack after getting the text after @bye. * tp/Texinfo/XS/parsetexi/api.c (build_global_info2), tp/Texinfo/XS/parsetexi/parser.c (register_global_command) (wipe_global_info): really register float as a global command. Use floats for global_info for float as using float breaks, most likely because it is a type. * tp/Texinfo/Convert/NodeNameNormalization.pm (set_float_types): initialize $self->{'floats'}. * tp/Texinfo/XS/parsetexi/parser.c (read_comment), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): fix a one off string length error in read_comment. Fix a typo in comments searching on nested @ignore line. Avoid an infinite loop when there is a comment. * t/55conditionals.t: add nested_ignore_with_comments, skipped for now as the results are incorrect. 2022-12-27 Gavin Smith * doc/texinfo.tex (\indexnofonts): Remove superfluous space token recently added to definition by accident. 2022-12-27 Gavin Smith No colour change for black links * doc/texinfo.tex (\setcolor) [pdfTeX]: Keep track of the current colour so that in the default case, when everything is black, there is no \mark output or pdf output, which is faster when the document contains many links. 2022-12-27 Arsen Arsenović Re-enable copyable anchors in HTML output * tp/Texinfo/Common.pm (relate_index_entries_to_table_items_in_tree) (%valid_tree_transformations): Implement relate_index_entries_to_table_items, a transform that finds all table terms and associates their indices with them, so that the HTML backend generates a copyable anchor. * tp/texi2any.pl: Invoke the new relate_index_entries_to_table_items transform. (%formats_table): Enable the relate_index_entries_to_table_items transformation on HTML. * tp/tests/indices/list-of-tests (index_entries_relate_to_item): New test case. * tp/tests/indices/index_entries_relate_to_item.texi: New test file. 2022-12-27 Gavin Smith * doc/texinfo.tex (\definedummies, \indexnofonts): Extend dummy definitions in \definedummies to include the \indexnofonts expansions. Always remove braces from arguments for dummied control words. (\atdummies, \indexnofonts): Give a suitable definition before using \macrolist to avoid user-defined @macro's repeatedly being given longer and longer definitions. 2022-12-27 Gavin Smith * doc/texinfo.tex (\definedummies): Remove dummies for internal commands to avoid need for redirection. (\atdummies): Call \turnoffactive rather than \normalturnoffactive followed by \otherbackslash, as this should do the same thing and is shorter. 2022-12-27 Gavin Smith Switch for dummies * doc/texinfo.tex (\definedummies): Give control sequences alternate expansions depending on whether they are being expanded when being written to an auxiliary file, using \ifdummies and \ifindexnofonts conditionals. Use @ as the escape character for dummy expansions. Call \definedummies at the end of the file. This may make processing files faster due to less redefinitions being made. (\commondummiesnofonts): All redefinitions moved to \definedummies and macro removed. (\atdummies): Set \dummiestrue and inline what is left of the old definition of \definedummies. (\indexnofonts): Set \indexnofontstrue. Definitions in \indexnofonts still override those from \definedummies. 2022-12-27 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_block_command), tp/Texinfo/XS/parsetexi/parser.c (read_comment) (process_remaining_on_line): handle nested @ignore. Gavin report. Add read_comment() to get a comment, taken mainly from handle_block_command. * tp/t/55conditionals.t, tp/Makefile.tres: add test ignore_spaces_and_comments with comments and spaces on @ignore lines. 2022-12-27 Patrice Dumas * tp/Texinfo/Convert/LaTeX.pm (_latex_header), doc/texinfo.texi (@LaTeX{} Customization Variables), tp/Texinfo/Common.pm (@variable_string_settables): add experimental LaTeX documentclass and packages customization, using two customization variables, CLASS_BEGIN_USEPACKAGE and END_USEPACKAGE. 2022-12-27 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): format @bye line similarly to other skipline @-commands. 2022-12-27 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (%type_elements, _convert), tp/Texinfo/ParserNonXS.pm (_parse_texi), tp/Texinfo/XS/parsetexi/element_types.txt, tp/Texinfo/XS/parsetexi/parser.c (parse_texi), tp/Texinfo/Convert/*.pm, util/texinfo.dtd: keep text appearing after @bye in the Texinfo Tree, as text_after_end in postamble_after_end container. Add postamble_after_end as ignorable type in converters. 2022-12-27 Patrice Dumas * t/html_tests.t: fix incorrect braces nesting. * t/test_utils.pl: with -c do not add @bye even if it is not at the beginning of the line and if followed by @. 2022-12-26 Patrice Dumas * tp/Texinfo/Structuring.pm (sort_indices): when splitting at letters, determine letters by removing diacritics to associate accented letters to the main letter. 2022-12-26 Patrice Dumas * tp/Texinfo/Structuring.pm (setup_index_entry_keys_formatting): set sort_string option for conversion to text only if ENABLE_ENCODING is unset or encoding is not UTF-8. 2022-12-26 Patrice Dumas * doc/texinfo.texi (Conditional Nesting): comment out text on @ignore line. 2022-12-26 Patrice Dumas Obey --disable-encoding/ENABLE_ENCODING for some conversions to text * doc/texi2any_api.texi (Command Tree Element Conversion Functions), tp/Texinfo/Convert/HTML.pm (%default_commands_args, _convert), tp/ext/epub3.pm (epub_convert_image_command): do not set copy_options_for_convert_text second argument for monospacetext, add filenametext for which the second argument of copy_options_for_convert_text is set and ENABLE_ENCODING is ignored. Update code to use filenametext if the output is a file name. * tp/Texinfo/Convert/LaTeX.pm (converter_initialize, _convert), tp/init/highlight_syntax.pm (highlight_process), tp/Texinfo/Convert/HTML.pm (_convert_def_line_type) (_external_node_href, output_internal_links, output): do not set the second argument of copy_options_for_convert_text to obey ENABLE_ENCODING for some conversions to plain text. * doc/texinfo.texi (Invoking @command{texi2any}), tp/Texinfo/Convert/Text.pm, tp/texi2any.pl: document that ENABLE_ENCODING is obeyed for some conversions to plain text and for index sorting. 2022-12-26 Patrice Dumas * tp/Makefile.tres, tp/t/latex_tests.t: add a new test, indices_disable_encoding with the same text as indices, but with ENABLE_ENCODING set to 0. * t/include/text_only_image.txt: add to git. 2022-12-26 Patrice Dumas Set --enable-encoding to be the default for all output formats * tp/Texinfo/Common.pm (%default_converter_command_line_options), tp/Texinfo/Convert/TexinfoXML.pm (%defaults): set ENABLE_ENCODING to 1 in the default case for all the formats. 2022-12-26 Patrice Dumas * tp/t/latex_tests.t: in indices test, add simple entry with accented letters. 2022-12-26 Patrice Dumas * tp/Texinfo/Convert/LaTeX.pm (_latex_header): do not use noclearpage imakeidx option, as the index may not appear in that case, if at the end of the document. 2022-12-26 Gavin Smith * doc/texinfo.tex: Move more macros to be defined while \ is still the escape character, as this is easier to read. 2022-12-25 Gavin Smith * doc/texinfo.tex: Provide \ a definition again when Texinfo is not a preloaded format. 2022-12-25 Gavin Smith * doc/texinfo.tex: Use \everyjob to redefine backslash in case of preloaded Texinfo only. (\enablebackslashhack, \newlineloadsconf): Rename. Do not provide backslash with a definition here. Capture end of line as an argument to avoid need for two-stage redefinition of newline. (\fixbackslash, \loadconf): Rename to \loadconf, as it is not used to fix backslash in the usual case where Texinfo is not preloaded. Begin with \relax rather than space token to terminate filename. 2022-12-25 Patrice Dumas Use OUTPUT_CHARACTERS instead of --enable-encoding for XML-based and LaTeX * NEWS, doc/texinfo.texi (@code{@@documentencoding}) (Other Customization Variables), tp/Texinfo/Common.pm (@variable_string_settables), tp/Texinfo/Convert/Converter.pm (xml_accents), tp/Texinfo/Convert/HTML.pm (_convert_accent_command) (_css_string_convert_accent_command, _convert_text) (converter_initialize), tp/Texinfo/Convert/LaTeX.pm (converter_initialize, copy_options_for_convert_to_latex_math) (_convert), /tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): use the OUTPUT_CHARACTERS customization variable for HTML, XML, DocBook and LaTeX to determine if encoded characters are output instead of entities or macros. * t/09indices.t, tp/t/formats_encodings.t, tp/t/html_tests.t, tp/tests/layout/list-of-tests, tp/tests/many_input_files/different_encodings.sh: set OUTPUT_CHARACTERS in addition to ENABLE_ENCODING/--enable-encoding. 2022-12-25 Patrice Dumas * tp/Texinfo/Convert/Converter.pm (convert_accents, xml_accents), tp/Texinfo/Convert/HTML.pm (_convert_accent_command) (_css_string_convert_accent_command), tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): convert accents to encoded characters in convert_accents based on the third argument, instead of checking ENABLE_ENCODING. Update callers. 2022-12-25 Patrice Dumas * tp/Texinfo/Structuring.pm (sort_indices): set variable collation elements to 'Non-Ignorable' such as to have spaces and punctuation marks sort before letters. 2022-12-25 Patrice Dumas Sort index entries using Unicode Collation in texi2any * tp/Texinfo/Structuring.pm (_collator_sort_string) (_sort_index_entries, sort_indices): use Unicode::Collate comparison for strings. 2022-12-25 Gavin Smith Attempt to fix pre-dumped Texinfo * doc/texinfo.tex: Remove blank line from end of file. (\enablebackslashhack): Comment out ends-of-line. This should stop \fixbackslash being run too early. (\fixbackslash): Start definition with a space token. This has been broken since at least 2017-04-17 when extra lines were added to \fixbackslash, so its likely that nobody is using Texinfo as a pre-dumped format. 2022-12-25 Gavin Smith * doc/texinfo.tex: Move definitions of \normaldot, \normalquest and \normalslash. Call \setregularquotes near definition. 2022-12-25 Gavin Smith * doc/texinfo.tex: At end of file, move more definitions before the change from \ to @ as the escape character. (\normalturnoffactive, \turnoffactive): Define \normalturnoffactive in terms of \turnoffactive instead of vice versa. 2022-12-25 Gavin Smith Reduce scope of catcode changes throughout texinfo.tex * doc/texinfo.tex: Surround character encoding definition macros in a group, define with \gdef and limit the catcode changes for non-ASCII characters to the group. Move the use of @documentencoding to the very end of the file. 2022-12-25 Gavin Smith * doc/texinfo.tex: Remove "emacs-page" delimiter from the one place it occurs. Remove vim shiftwidth definition from end of file. 2022-12-25 Gavin Smith * doc/texinfo.tex: Use definition of @documentencoding to fully set UTF-8 as the default encoding, including for XeTeX and LuaTeX. Report from Werner. 2022-12-24 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_in_paragraph), tp/Texinfo/XS/parsetexi/handle_commands.c (in_paragraph): go to the container of the parent command when going through parent brace commands. * tp/t/08misc_commands.t: add indent_in_command_in_paragraph test with @indent and @noindent in an @-command in a paragraph. 2022-12-24 Patrice Dumas Warn that @indent and @noindent are useless inside paragraphs * tp/Texinfo/ParserNonXS.pm (_in_paragraph) (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/handle_commands.c (in_paragraph) (handle_other_command): add in_paragraph that returns true if in a paragraph, including in a brace @-command except for a context brace command. Use that function to warn if @indent or @noindent are in a pragraph. 2022-12-24 Patrice Dumas * tp/Texinfo/ParserNonXS.pm: cut at 80 columns, reindent. 2022-12-24 Patrice Dumas Warning for block commands without argument with an argument * tp/Texinfo/ParserNonXS.pm (_end_line_starting_block), tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block): warn if a block command with 0 argument, and not a variadic command has arguments on the line. 2022-12-24 Patrice Dumas * doc/Makefile.am (TEXINFO_TEX): use in-source texinfo.tex. 2022-12-24 Patrice Dumas * NEWS: add title for @cartouche. 2022-12-23 Gavin Smith Title for cartouche * doc/texinfo.tex (\cartouche): Define with \envparseargdef so to take an argument. If argument is given, use it as a title for the box. (\envparseargdef): Define with \long. Feature request from Arnold Robbins. 2022-12-23 Patrice Dumas * .gitattributes: set tp/t/results/*/*.pl file always diff-able. 2022-12-23 Patrice Dumas * tp/Texinfo/Convert/Info.pm (format_image): fix count of lines returned when there is an image text file. 2022-12-23 Patrice Dumas * tp/Texinfo/Convert/Info.pm (format_image): avoid warnings about undefined values with @image with alt and text but no image file. * tp/Makefile.am (test_files), tp/Makefile.tres, tp/t/info_tests.t, tp/t/include/text_only_image.txt: new test image_text_file_only_and_alt with alt and text file but no image file. 2022-12-23 Patrice Dumas * tp/Texinfo/Convert/NodeNameNormalization.pm (normalize_transliterate_texinfo, transliterate_texinfo): modify transliterate_texinfo such that it only transliterates but does not protect characters, and add normalize_transliterate_texinfo for the previous behaviour. Update callers. * tp/Texinfo/Convert/LaTeX.pm (_prepare_floats): transliterate the first float element type of a float type to set up the LaTeX float name to get more different categories when float type expands to non-ASCII characters. * tp/t/27float.t: expand LaTeX output for the float_with_at_commands test. 2022-12-23 Patrice Dumas * tp/Texinfo/Convert/LaTeX.pm (_prepare_floats): fix type filtering regex. 2022-12-23 Patrice Dumas * tp/Texinfo/Convert/NodeNameNormalization.pm (_parse_float_type): convert float type using NodeNameNormalization.pm convert_to_normalized(). * tp/t/27float.t: new test special_characters_in_float_type. 2022-12-23 Patrice Dumas * tp/Texinfo/Convert/NodeNameNormalization.pm (_parse_float_type) (set_float_types), tp/Texinfo/ParserNonXS.pm (_end_line_misc_line) (_end_line_starting_block, _parse_texi), tp/Texinfo/XS/parsetexi/Parsetexi.pm (get_parser_info) (_set_errors_node_lists_labels_indices), tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block) (end_line_misc_line), tp/Texinfo/command_data.txt: make float a global commmand. Move normalization of float type out of parsers to NodeNameNormalization.pm for future normalization using functions there. 2022-12-22 Patrice Dumas * tp/Texinfo/Convert/LaTeX.pm: cut at 80 columns better. 2022-12-22 Patrice Dumas Handle @float in @cartouche in LaTeX, where it cannot float * tp/Texinfo/Convert/LaTeX.pm (%LaTeX_non_floating_environment_commands, _latex_header) (_push_new_context, _convert): add a stack of commands in which there cannot be floats, non_floating_commands, for cartouche which uses mdframed. In this context, use a no-op environment for float and \captionof of the caption package. 2022-12-22 Patrice Dumas * tp/Texinfo/Convert/LaTeX.pm (_push_new_context, _convert): carry formatted context over to float. * tp/Makefile.tres, tp/t/27float.t: add float_in_block_commands test. 2022-12-21 Patrice Dumas * tp/Texinfo/Convert/Plaintext.pm: reindent, cut at 80 columns, use scalar() explicitely. 2022-12-21 Patrice Dumas * tp/Texinfo/Convert/Plaintext.pm (_convert): do not consider the cartouche title to be a paragraph, reset paragraph count to the value before the title. Do not set the text_element_context counter, as the title is on its own line. Do not increase redundantly lines count. * tp/Makefile.tres, tp/t/02coverage.t: add cartouche_title_and_content new test with cartouche title and some content in the cartouche. 2022-12-21 Patrice Dumas * doc/texinfo.texi (@code{@@cartouche}): document the title argument of @cartouche. Describe that @cartouche can be used for to isolate a portion of the manual from the main flow, corresponding to the sidebar explanation in DocBook. 2022-12-20 Patrice Dumas Use @cartouche argument as cartouche title in texi2any * tp/Texinfo/Convert/DocBook.pm (_convert), tp/Texinfo/Convert/HTML.pm (_convert_cartouche_command, _convert), tp/Texinfo/Convert/LaTeX.pm (_set_environment_options), tp/Texinfo/Convert/Plaintext.pm (_convert), tp/Texinfo/Convert/TexinfoMarkup.pm (%commands_args_elements), tp/Texinfo/Convert/Text.pm (_convert), tp/Texinfo/command_data.txt, util/texinfo.dtd: add an argument to @cartouche. Format the @cartouche argument as the cartouche title. Based on a report from Arnold Robbins. * tp/t/02coverage.t: add @cartouche argument in cartouche and comment_on_cartouche_line tests. * tp/tests/coverage_macro.texi: add @cartouche with argument. 2022-12-19 Werner Lemberg * doc/texinfo.tex (\code, \dashnobreak): Use a \penalty to disable hyphenation for LuaTeX. 2022-12-19 Patrice Dumas * tp/Texinfo/Convert/DocBook.pm (_convert): use for @cartouche. Based on a report from Arnold Robbins. 2022-12-17 Gavin Smith * doc/texinfo.tex (\-): Provide definition of @- to allow a hyphen to be printed for optional line breaks. From Werner. 2022-12-17 Gavin Smith * doc/texinfo.tex (\code, \tclose): Comments changed. 2022-12-17 Gavin Smith * doc/texinfo.tex (\printdefunline): Call \defcharsdefault before creating the index entry in case it contains an ampersand or bracket. 2022-12-17 Gavin Smith * doc/texinfo.tex (\defindex, \defidx): Rename to \defidx to avoid clash with @defindex command. 2022-12-17 Gavin Smith Turn off hyphenation for tt fonts completely. * doc/texinfo.tex (\setfont): Set \hyphenchar to -1 for font styles tt, ttb and ttsl. (\nohyphenation): Remove. (\key, \tclose, \verb): Do not call \nohyphenation. Werner reported that the restoration of \hyphenchar in \nohyphenation was wrong as it affected the wrong font. 2022-12-15 Gavin Smith Configurable index for @def* command * doc/texinfo.tex (\defindex, \deftext): Define with \newtoks. (\defind): New macro to set \defindex and \deftext. Call it instead of \doind throughout the definitions with \makedefun. (\printdefunline): Call \doind using the values that were set in \defindex and \deftext. (\useindex): Command to overrwrite \defindex value. 2022-12-15 Gavin Smith * doc/texinfo.tex (\dodefunx): Inline into use site in definition of \deffoox in \makedefun. Do not reuse the definition of \deffoo manipulating its expansion with the \gobbledefun macro, as this was confusing and unnecessary. No functional changes intended. 2022-12-14 Gavin Smith * tp/Texinfo/XS/xspara.c (PARAGRAPH): Rename 'protect_spaces' to 'no_break'. 2022-12-14 Gavin Smith * tp/Texinfo/Convert/ParagraphNonXS.pm (set_space_protection, add_text): Rename 'space_protection' flag 'no_break' to reflect its function. 2022-12-14 Gavin Smith * tp/texi2any.pl <.info filename check>: Do not use /r flag for regex to work with older versions of Perl. 2022-12-12 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): add end of line for multitable with prototype interrupted by another @-command. 2022-12-12 Gavin Smith * info/util.c (text_buffer_iconv): Correctly update arguments for iconv in loop. Crash for "info groff" reported by Jakub Wilk via Hilmar Preuße . 2022-12-12 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): add end of line for block commands with missing args key, except for @def*, which have a special processing of their line. 2022-12-12 Patrice Dumas * tp/t/converters_tests.t: in form_feeds test, add more form feeds for @deffn command and add @deffnx command. 2022-12-12 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): use _leading_spaces_arg for def_line type. 2022-12-12 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), util/txixml2texi.pl: always add end of line for the block command lines. * t/57invalid_nestings.t (@formatted_cases): add section_on_cartouche_line. 2022-12-11 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), util/texinfo.dtd: if the @itemize or @*table command as argument was added, add a automaticcommandarg attribute set to on. * util/txixml2texi.pl: add a space after @*table and before the formatting command if there is not already one. 2022-12-11 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): do not add an entry for erroneous @itemx/@item/@tab constructs. * tp/t/57invalid_nestings.t: put itemx_in_itemize_enumerate_in_table in @formatted_cases, in particular to check XML output. 2022-12-11 Patrice Dumas * util/txixml2texi.pl: handle infoenclose. 2022-12-11 Gavin Smith * tp/Texinfo/Convert/HTML.pm (%css_element_class_styles), (_convert_text) : Do not output element as it is not clear that it is needed to prevent breaking at - or _. 2022-12-11 Gavin Smith Do not copy spaces exactly for @w * tp/Texinfo/XS/xspara.c (xspara_add_text) * tp/Texinfo/Convert/ParagraphNonXS.pm (add_text) : Change the meaning of this flag to match what @w does in texinfo.tex, which simply uses an \hbox for the content, but does not protect the spaces. Do not use exactly the same spaces that were given in the input. Accumulate spaces onto the end of the current word so that all spaces and words will be stuck together while in the mode and output together in the same line. * tp/t/paragraph.t: Manually update reference test results. The 'protect_spaces' flag is probably now misnamed. 2022-12-11 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): add multitable space after argument. 2022-12-11 Gavin Smith * tp/Texinfo/XS/xspara.c (xspara_add_text) , * tp/Texinfo/Convert/ParagraphNonXS.pm (add_text) : Remove extra call to _add_pending_word or xspara__add_pending_word. 2022-12-11 Gavin Smith * tp/Texinfo/XS/xspara.c (xspara_add_text): Make the same change so to mirror the structure of the Perl code. 2022-12-11 Gavin Smith * tp/Texinfo/Convert/ParagraphNonXS.pm (add_text) : Separate out code for 'unfilled' to make the rest of the code easier to understand. 2022-12-11 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): add a newline at the end of block command lines if there is none (case of another command interrupting the block command line). 2022-12-11 Patrice Dumas * tp/maintain/check_back_xml_forth_texi_t.sh: handle 3 digits in front of .t test file name. 2022-12-11 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): use directly the @node direction explicit args, reconstitute node and manual name only for automatic directions. * tp/t/57invalid_nestings.t: move on_node_line to @formatted_cases to output XML. 2022-12-11 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_starting_block), tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block): more generic message when @*table argument is incorrect, separating missing and bad argument, and showing the argument in case of bad argument. * tp/Texinfo/XS/parsetexi/convert.c (expand_cmd_args_to_texi): add spaces_after_cmd_before_arg expansion. 2022-12-10 Gavin Smith * tp/Texinfo/Convert/Plaintext.pm (_convert) <@tie>: Use add_next instead of add_text to add space, and do not use 'w' formatter stack or call set_space_protection. 2022-12-10 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_isolate_last_space), tp/Texinfo/XS/parsetexi/parser.c (isolate_last_space): do not set comment_at_end for brace commands. 2022-12-10 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert_argument_and_end_line) (_convert): convert comment_at_end from brace commands. * tp/t/30sectioning.t: output XML for empty_ref_arg test. 2022-12-10 Gavin Smith   for @verb * tp/Texinfo/Convert/HTML.pm (_convert): Use 'space_protected' context for @verb as well as for @w. Do not use 'verbatim' context for @verb. This means that in _convert_text, spaces in the argument to @verb will be converted to  . 2022-12-10 Gavin Smith * doc/texinfo.tex (\verb): Revert recent change, so that line breaks at spaces are not possible, for agreement with LaTeX \verb command and so that spaces in argument will always be apparent to the reader. 2022-12-10 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), util/texinfo.dtd, util/txixml2texi.pl: add trailing spaces in block commands arguments. * tp/t/converters_tests.t (@test_cases): add form feeds on @float line in form_feeds test. * tp/t/16raw.t: move spurious_arg_on_line, beginning_and_end_on_line and space_before_end from @test_invalid to @test_cases. Output XML in @test_cases. * tp/t/08misc_commands.t: add XML output for codequoteundirected_codequotebacktick and comment_space_command_on_line tests. * tp/t/57invalid_nestings.t: move ignored_text from @test_cases to @formatted_cases. * tp/t/30sectioning.t: add XML output for node_up_external_node, space_in_node and next_no_prev_to_node. 2022-12-10 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): associate end space to the last empty argument if possible. * tp/t/27float.t: add XML output format to the tests. 2022-12-10 Gavin Smith * install-info/install-info.c (error): Declare as static to avoid clash with error function from glibc, called from gnulib. Report from Sam James and suggested solution from Arsen Arsenović . 2022-12-09 Patrice Dumas * tp/t/18itemize.t (@test_cases): add more tests of accents on @itemize lines in empty_accent_argument and accent_argument. * tp/t/22xtable.t (@test_cases): add more tests of accents on @table line in accent_on_table_line. 2022-12-08 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): do not consider accent commands to be associated to @itemize or @*table. End the line if there is an accent followed by end of line on a block command or line command. 2022-12-07 Patrice Dumas * tp/t/input_files/bib-example.texi: use @w{} to avoid mark command for @itemize. * tp/t/18itemize.t: add xml output for @test_cases. 2022-12-07 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (%no_arg_commands_formatting), util/texinfo.dtd: use &symbol; for @& to avoid using the & entity already used for & in text in XML. &symbol; ultimately maps to & in DTD. * tp/tests/coverage_macro.texi: add @&. 2022-12-06 Patrice Dumas * tp/t/19def.t: move all_empty_def to @test_info and format to xml @test_info tests. 2022-12-06 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_def_line), tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line): do not call abort_empty_line when processing the @def* line, there is no empty line to abort. 2022-12-06 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_merge_text): use explicitely scalar() for clearer code. (_isolate_last_space, _end_line_def_line): better debugging output. 2022-12-06 Patrice Dumas * tp/t/01use.t: update tree. Do not use 'use vars'. 2022-12-06 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_parse_def), tp/Texinfo/XS/parsetexi/def.c (next_bracketed_or_word_agg) (split_def_args, parse_def): remove code setting spaces_at_end on @def* lines, as it cannot happen anymore. Remove use of spaces_at_end def line type. * tp/Texinfo/XS/parsetexi/def.c: remove unused next_bracketed_or_word function. 2022-12-06 Patrice Dumas * tp/Texinfo/Transformations.pm (fill_gaps_in_sectioning): tree element added for new section more in line with current tree elements. 2022-12-06 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_starting_block): allow only one letter as @enumerate argument (same as XS parser). 2022-12-06 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_end_line_def_line), tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line) tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/Convert/TextContent.pm (_convert): isolate last space on @def* command line similarly to other formats with isolate_last_space. * tp/Texinfo/ParserNonXS.pm (_isolate_last_space): check that there is content before trying to isolate last space. * tp/Texinfo/ParserNonXS.pm (_merge_text, _end_line_def_line) (_end_line_starting_block, _process_remaining_on_line): improve/add debug messages. 2022-12-06 Patrice Dumas * tp/Texinfo/Common.pm (_parent_string, debug_print_element_short) (debug_print_element): add an optional argument to debug_print_element_short to show the parent element name or type. 2022-12-05 Patrice Dumas * layout/list-of-tests: add layout formatting_info_disable_encoding test, testing Info output coverage with --disable-encoding. 2022-12-05 Patrice Dumas * doc/Makefile.am (TEXI2DVI, TEXI2DVI_ENVIRONMENT), doc/tp_api/Makefile.am (TEXI2DVI, TEXI2DVI_ENVIRONMENT): use in-source texindex and texi2dvi. * tp/Makefile.tres: update. 2022-12-04 Patrice Dumas * tp/t/57invalid_nestings.t: add tests of section command interrupting block command lines that requires gathering tree information, section_on_multitable_line, section_on_float_line, section_on_enumerate_line, section_on_xtable_line, and section_on_itemize_line. 2022-12-04 Patrice Dumas Gather tree information when closing incorrectly nested block command line * tp/Texinfo/ParserNonXS.pm (_close_current, _end_line_starting_block) (_end_line), tp/Texinfo/XS/parsetexi/close.c (close_current): when closing block_line_arg in close_current, use the same code as when closing at end of line, such as to gather all the information in the tree. 2022-12-04 Gavin Smith * tp/tests/coverage, * tp/tests/coverage/list-of-tests, * tp/tests/coverage/formatting_utf8.texi: Remove. list-of-tests only had one commented-out line. formatting_utf8.texi was an old copy of layout/formatting.texi with an added "@documentencoding utf8" line. 2022-12-04 Patrice Dumas * util/texinfo.dtd: allow mixing *caption within float contents. Fix email spaces attributes. 2022-12-04 Patrice Dumas * tp/t/converters_tests.t: add inlinefmtspaces, inlinerawspaces and inlineifsetifclearspaces, similar with other formatted tests but with soaces around arguments. * util/texinfo.dtd: fix the type of spaces attributes, @inline* arguments are optional. 2022-12-04 Gavin Smith * doc/texinfo.texi (\pdflink) : Fix definition. 2022-12-04 Gavin Smith * tp/Texinfo/Convert/LaTeX.pm (_convert) <@verb>: Check \verb delimiter character is not used in contents, and change newlines to spaces. * tp/t/latex_tests.t (verb): New test. 2022-12-04 Gavin Smith * doc/texinfo.tex (\verb): Turn off hyphenation as this can introduce spurious hyphen glyphs in the output. Allow breaking at spaces by using \obeyspaces rather than \sepspaces. Do not obey line breaks, for consistency with HTML output. Report from Werner. 2022-12-03 Gavin Smith * TODO: add @node and HTML splitting 2022-12-03 Gavin Smith Atomic dir update * install-info/install-info.c (output_dirfile): If rename to dir file failed, try deleting target file and try again. From Eli. 2022-12-03 Gavin Smith Clickable section title in @contents for PDF * doc/texinfo.tex (\pdflinkpage): Generalise definition of \pdflink to take a link contents as well as a page number. (\iflinkentrytext): New conditional. (\startcontents): Set it. (\finishentry) [pdfTeX, XeTeX]: Use \pdflinkpage if \iflinkentrytext is true to allow clicking on the section title as well as the page number. (\shortchapentry, \shortunnchapentry, \dochapentry, \dosecentry, (\dosubsecentry, \dosubsubsecentry): Do not call \dopageno or \doshortpageno, as these surround the page number with TeX commands that get in the way in \pdflinkpage and appear to be unnecessary. (\dopageno, \doshortpageno): Remove. 2022-12-03 Patrice Dumas Gather tree information when closing incorrectly nested @def* lines * tp/Texinfo/ParserNonXS.pm (_close_current, _end_line_def_line) (_end_line), tp/Texinfo/XS/parsetexi/close.c (close_current), tp/Texinfo/XS/parsetexi/end_line.c (end_line_def_line, end_line): when ending a @def*x? command line because it was interrupted or at the end of the file, use the same code as the code used at the end of line, put in the end_line_def_line() function to gather information on the line and separate arguments with roles. * tp/t/57invalid_nestings.t: move section_on_defx_line to @formatted_cases. 2022-12-03 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): ignore @def* arguments that have not been split off with a role added from the @def line args. 2022-12-03 Gavin Smith Run gnulib-tool --add-import mkstemp. 2022-12-03 Gavin Smith Atomic dir update * install-info/install-info.c (output_dirfile): Write to file created by mkstemp first, then rename this to the real output file. * TODO: Remove item. Report from Pedrum Mohageri, bug-texinfo, November 2015. 2022-12-03 Gavin Smith * doc/texinfo.texi (Directory Category), TODO: Do not refer to Free Software Directory categories. 2022-12-03 Gavin Smith * configure.ac: Do not add js/node_modules/.bin/ to program search path if the directory does not exist. 2022-12-03 Gavin Smith * tp/maintain/regenerate_file_lists.pl: Hardcode script name to be placed in Makefile.tres, so it will not change depending on where it was run from, e.g. from autogen.sh. 2022-12-03 Gavin Smith * configure.ac, util/texi2pdf, js/info.js: bump version to 7.0dev. * README-hacking: remove duplicate instruction 2022-12-03 Gavin Smith * tp/tests/run_parser_all.sh (post_process_output): Strip line with missing file error from logs for predictable results. 2022-12-03 Gavin Smith * tp/texi2any.pl: Strip directories from filename in warning for predicatable results in test suite. 2022-12-03 Gavin Smith * configure.ac (AM_INIT_AUTOMAKE): Remove dist-xz option for development as it is too slow. 2022-12-03 Gavin Smith * tp/texi2any.pl: Give a warning if input filename ends in '.info'. * NEWS, TODO: Update. * tp/tests/formatting/list-of-tests (info_extension_warning): New test. 2022-12-02 Gavin Smith * NEWS, doc/texinfo.texi (Heading Generation, @headings) (Custom Headings): Update now that @titlepage does not do "@headings on". 2022-12-02 Gavin Smith Make texi2dvi -t '@headings double' work * doc/texinfo.tex (\setchapternewpage): Call \HEADINGSon as we are not relying on it being called inside @titlepage any more. 2022-12-02 Gavin Smith Make texi2dvi -t '@headings double' work * doc/texinfo.tex: Call \HEADINGSon to set headings from very start of file. (\titlepage): Call \headingsoff to turn off headings temporarily. Do not call \HEADINGSon as this may override a texi2dvi -t '@headings double' setting. Reset page number with \pageone. 2022-12-02 Gavin Smith * info/window.h: Eliminate #define used to use the same three fields in two different structures, as the comment explaining it took more space up than it would have taken simply to write the lines twice. 2022-12-02 Gavin Smith * info/session.c (info_beginning_of_line): Avoid freezing at beginning of a file when 'nodeline' is set to 'pointers' (the default). Report from Justin Anthony LaPolla . 2022-12-02 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_format_columnfractions) (_convert): add a separate function to format columnfractions command, _format_columnfractions(). Use that function to format a bogus @columnfractions out of @multitable. 2022-12-01 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), util/txixml2texi.pl, util/texinfo.dtd: use spacesaftercmd attribute for spaces_after_cmd_before_arg for accent commands too. * util/texinfo.dtd: add two-letter based index entries index commands. Add microtype. Allow formfeed and verticaltab in menuleadingtext. Allow headingmark in style commands. Add diverse space attributes in associated elements, in particular in brace commands. 2022-12-01 Patrice Dumas Protect spaces in space attributes in XML specific code * tp/Texinfo/Convert/TexinfoMarkup.pm, tp/Texinfo/Convert/TexinfoXML.pm (_xml_attributes): protect spaces in space attributes in format specific code. 2022-11-30 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert), tp/Texinfo/Convert/TexinfoXML.pm (_xml_attributes), util/txixml2texi.pl (unprotect_spaces): add attribute for spaces_after_cmd_before_arg info, protect special spaces in it and unprotect in txixml2texi.pl. 2022-11-30 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): add end lines after the closing markup element when @end is missing. 2022-11-30 Patrice Dumas Gather tree information when closing incorrectly nested line command * tp/Texinfo/ParserNonXS.pm (_close_current, _end_line_misc_line) (_end_line), tp/Texinfo/XS/parsetexi/close.c (close_current), tp/Texinfo/XS/parsetexi/end_line.c: when closing line_arg in close_current, use the same code as when closing at end of line, such as to gather all the information in the tree, in particular rearranging @end in block command and output all the error messages. 2022-11-30 Gavin Smith * configure.ac (AM_INIT_AUTOMAKE): Remove 'readme-alpha' option, as we are using three-part version numbers that do not signify alpha releases. 2022-11-30 Gavin Smith * NEWS: Add 7.0.1 news. 2022-11-29 Per Bothner * js/info.css (cache_index_links): Fix index entry processing. Also implement subentry handling. (init_iframe - on_load): Change search and call of cache_index_links. 2022-11-29 Per Bothner * js/info.css (.tex-input): Make input element a bit wider. This works better for longer index or menu names. 2022-11-29 Patrice Dumas * tp/t/test_utils.pl (output_texi_file): always add a newline in the end of the test Texinfo code. 2022-11-29 Patrice Dumas * util/txixml2texi.pl: avoid double comment for line specific command. 2022-11-28 Patrice Dumas Protect vertical tab in XML * tp/Texinfo/Convert/TexinfoMarkup.pm (_protect_in_spaces_attribute_text), tp/Texinfo/Convert/TexinfoXML.pm (_xml_attributes, _protect_text), util/txixml2texi.pl, util/texinfo.dtd: protect vertical tab U+000B as \v in attributes and with verticaltab added entities in other contexts. 2022-11-28 Patrice Dumas XML menu leading text and menu separator in elements instead of attributes * tp/Texinfo/Convert/TexinfoMarkup.pm (%type_elements, _convert), util/texinfo.dtd: put menu_entry_leading_text and menu_entry_separator types text in element rather than in attributes. It is better to keep the structure and protect spaces more naturally. * util/texinfo.dtd: add endspace attribute for macro and rmacro. 2022-11-27 Per Bothner * js/info.js (on_link): Change query pattern for links. Use class printindex-index-section instead of printindex-index-entry to get the correct node URL. 2022-11-27 Per Bothner * js/info.js (set_current)url): Don't set parameter default. It's not needed, and it triggers an eslint complaint, because parameter default values were new in EcmaScript 6 (2015). 2022-11-27 Patrice Dumas * maintain/check_back_xml_forth_texi_t.sh: script to test conversion of tp/t/*.t Texinfo code to Texinfo XML and back to Texinfo to detect issues with Texinfo XML conversion and conversion back to Texinfo. 2022-11-27 Patrice Dumas * util/txixml2texi.pl: skip a comment after as the comment is already in the line attribute. 2022-11-27 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): do not have an empty columnprototypes when there is an empty columnfraction, but only have a columnfraction. Avoid autovivification of extra columnfraction in case of empty columnfraction. 2022-11-27 Patrice Dumas * tp/Texinfo/Convert/TexinfoMarkup.pm (_convert): correctly use _leading_spaces_arg return in case there is no space after @end command line and something else on the line. 2022-11-27 Patrice Dumas * tp/t/test_utils.pl (output_texi_file): encode to UTF-8 the resulting Texinfo file. Only when the test texinfo comes from perl code and not when reading from a file as when reading from a file there is no decoding. 2022-11-27 Patrice Dumas * tp/Texinfo/ParserNonXS.pm (_gather_previous_item), tp/Texinfo/XS/parsetexi/multitable.c (gather_previous_item): Reparent trailing comments from before_item to table_term. 2022-11-27 Gavin Smith * tp/tests/coverage_macro.texi: Readd removed content. From Patrice. 2022-11-27 Gavin Smith @itemx at beginning of table is an error * tp/Texinfo/ParserNonXS.pm (gather_previous_item), * tp/Texinfo/XS/parsetexi/multitable.c (gather_previous_item), NEWS: @itemx at beginning of table is an error, not a warning, as with recent changes this gives invalid HTML and DocBook output. Suggestion from Patrice. 2022-11-26 Patrice Dumas * tp/Texinfo/Common.pm (%default_converter_customization): update TEXINFO_DTD_VERSION to 7.1 to check more easily that tests are valid. 2022-11-26 Patrice Dumas * util/texinfo.dtd, configure.ac (TEXINFO_DTD_VERSION): add the index entries in tableterm before the @item. 2022-11-26 Patrice Dumas * tp/Texinfo/Convert/DocBook.pm (_convert): output when table_term container is seen and not for @item, to also enclose index entries in table_term before the @item (same as in html). 2022-11-26 Gavin Smith * doc/texinfo.texi: Move index commands before @item in @table throughout. 2022-11-26 Gavin Smith * tp/Texinfo/ParserNonXS.pm (gather_previous_item), * tp/Texinfo/XS/parsetexi/multitable.c (gather_previous_item): Reparent trailing index commands from before_item to table_term. 2022-11-26 Gavin Smith Remove relate_index_entries_to_table_entries_in_tree * tp/Texinfo/Common.pm (texinfo_special_joint_transformation) (relate_index_entries_to_table_entries_in_tree): Remove. * tp/texi2any.pl: Do not use relate_index_entries_to_table_entries transformation for HTML or LaTeX. 2022-11-26 Patrice Dumas * doc/tp_api/Makefile.am (MAKEINFO): add -I $(top_builddir)/tp/ to find Texinfo::ModulePath in out-of-source builds. Report from Arsen Arsenović. 2022-11-26 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_convert_table_term_type): add the
in front in _convert_table_term_type. Remove _open_table_term_type. 2022-11-26 Gavin Smith * tp/Texinfo/ParserNonXS.pm (gather_previous_item), * tp/Texinfo/XS/parsetexi/multitable.c (gather_previous_item): Leave trailing index entries if no command follows. * tp/t/22xtable.t (index_command_before_end_table): New test. 2022-11-26 Gavin Smith * tp/t/22xtable.t (inter_item_commands_in_table): Move test here of @cindex directly between @item and @itemx. * tp/tests/coverage_macro.texi: Remove cases tested in t/22xtable.t. 2022-11-26 Gavin Smith Output index anchors inside
* tp/Texinfo/ParserNonXS.pm (gather_previous_item), * tp/Texinfo/XS/parsetexi/multitable.c (gather_previous_item): Do not absorb trailing index entries into a table_definition element. * tp/Texinfo/Convert/HTML.pm (_open_table_term_type): New function simply to output
. Add it to %default_types_open for 'table_term'. (_convert_table_term_type): Dummy function to enable _open_table_term_type. (_convert) : Concatenate any result from an "open type" handler rather than overwriting it. (_convert_item_command): Do not output '
' for @item, as _open_table_term_type did this. Output any index anchor immediately after the
as an element rather than setting an 'id' attribute on the
tag. 2022-11-26 Gavin Smith * tp/Texinfo/ParserNonXS.pm (gather_previous_item): Use splice operation instead of moving items one by one when creating table_term element. No functional changes intended. 2022-11-25 Gavin Smith * tp/Texinfo/ParserNonXS.pm (gather_previous_item), * tp/Texindo/XS/parsetexi/element_types.txt: Rename 'table_item' to 'table_definition'. 2022-11-25 Gavin Smith * tp/Texinfo/ParserNonXS.pm (_gather_previous_item), * tp/Texinfo/XS/parsetexi/multitable.c (gather_previous_item). * tp/Texinfo/Common.pm (_relate_index_entry_to_table_entry): Revert last change. 2022-11-22 Gavin Smith * tp/Texinfo/ParserNonXS.pm (_gather_previous_item), * tp/Texinfo/XS/parsetexi/multitable.c (gather_previous_item): Include index entries in table_term element. * tp/Texinfo/Common.pm (_relate_index_entry_to_table_entry): Look for index command in table_term rather than table_item. 2022-11-22 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (command_text, _convert_xref_commands) (_initialize_output_state): add 'referred_command_stack' to put commands that can be referred to being expanded, to catch if an @*ref refers to that command during the expansion, leading to an infinite recursion. In that case, use the node instead of the section, as with nodes only it is not possible to construct a an infinite recursion as the node must both be a reference target and refer to a specific target at the same time, which is not possible. Report from David Bacon. 2022-11-21 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_convert_printindex_command): do not add an empty cell on the letter row. That way it is possible to add a colspan or have only one cell. 2022-11-21 Gavin Smith * tp/Texinfo/ParserNonXS.pm (_gather_previous_item): Splice end of contents array instead of unshifting items from end one at a time. No functional changes intended. This should make it simpler to work forwards and find index commands immediately following @item and/or @itemx. 2022-11-20 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_convert_printindex_command): remove span element used for index-entry-level-*, instead add the class to the td element. Remove classes for empty sectioning cells. Report from Per Bothner. 2022-11-20 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (output): create empty js files for tests. 2022-11-20 Gavin Smith * tp/tests/layout/list-of-tests (formatting_epub_nodes): Set INFO_JS_DIR in order to exercise code. From Patrice. 2022-11-20 Gavin Smith * tp/Texinfo/Convert/HTML.pm (output) : Do not copy js files for tests. 2022-11-20 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (%css_element_class_styles): increase index subentries indenting. Suggestion from Raymond Toy. 2022-11-20 Gavin Smith * js/info.js (on_load): Update version number. 2022-11-20 Gavin Smith * README-hacking: info.js needs version update 2022-11-20 Gavin Smith * tp/tests/layout/list-of-tests (formatting_epub_nodes): Do not set INFO_JS_DIR to avoid test result having to be updated every time one of the js files changes. 2022-11-20 Patrice Dumas * tp/DebugTexinfo/DebugTree.pm (_print_tree): use info element key instead of extra for information now associated to that key. 2022-11-20 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (output_internal_links): add subentries to index entries text. 2022-11-20 Gavin Smith info.js improvements * js/info.css: No underlining for sidebar links. * js/info.js: Remove "Hide sidebar" text as it takes up too much space. 2022-11-20 Gavin Smith * js/info.js (add_header): Check for h1.top after h1.settitle for text to put at top of sidebar. 2022-11-20 Gavin Smith * js/info.js (init_iframe): Change selector for index entries to match new HTML output. From Per and Patrice. 2022-11-20 Gavin Smith * README-hacking: say to test JS interface manually before a release * README: list js/ directory here. 2022-11-20 Gavin Smith * tp/Texinfo/Convert/HTML.pm (%defaults): Change INDEX_ENTRY_COLON from ':' to ''. Suggestion from Patrice. 2022-11-18 Gavin Smith * contrib/my-bib-macros.texi: Move here from web pages. 2022-11-19 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_convert_printindex_command): use padding in CSS instead of non breaking space in a column to add a space between index entry and section or node in printindex HTML formatting. Report from Per Bothner. 2022-11-19 Patrice Dumas * tp/Texinfo/Convert/Converter.pm (comma_index_subentries_tree), tp/Texinfo/Convert/HTML.pm (_prepare_index_entries): use subentries to determine the identifier of an index entry. Add an optional separator argument to comma_index_subentries_tree() to be able to use something else than a comma. Use a space separator to determine the identifier to keep it shorter. 2022-11-19 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (%css_element_class_styles): use padding-left instead of margin-left for index-entry-level-*, it is more appropriate. Report from Per Bothner. 2022-11-19 Patrice Dumas * po_document/Makevars (XGETTEXT_OPTIONS): add --from-code=UTF-8 for an non-ASCII encoded character in a comment in tp/ext/epub3.pm. Update po files. 2022-11-19 Patrice Dumas Add Pod/Simple/Texinfo.pm HTML output to wwwdoc * doc/Makefile.am (wwwdoc-build, wwwdoc-install): add Pod/Simple/Texinfo.pm HTML output, link Pod/Simple/Texinfo.pm and call pod2html such that a relative link to Pod/Simple/Texinfo.html is actually output. 2022-11-19 Patrice Dumas * doc/Makefile.am (po-check, po_document-check), README-hacking, po_document/POTFILES.in, tp/Texinfo/ParserNonXS.pm: add __p to po-check regexp, remove gdt. Add po_document-check target similar to po-check for po_document/POTFILES.in. Update po_document/POTFILES.in with the files found. In ParserNonXS.pm, add a useless $self argument to gdt( in comment to avoid getting caught in po_document-check. 2022-11-18 Gavin Smith * doc/Makefile.am (wwwdoc-build): Pass --quiet flag to pod2html. 2022-11-18 Patrice Dumas * tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/Texinfo.pm, tp/Texinfo/Convert/TexinfoMarkup.pm, tp/Texinfo/ParserNonXS.pm (_isolate_last_space), tp/Texinfo/Transformations.pm, tp/Texinfo/XS/parsetexi/extra.c (add_info_element_oot), tp/Texinfo/XS/parsetexi/parser.c (isolate_last_space): move comment_at_end from extra to info in element. 2022-11-17 Patrice Dumas * tp/Texinfo/Convert/Texinfo.pm, tp/Texinfo/Convert/TexinfoMarkup.pm, tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/element_types.txt, tp/Texinfo/XS/parsetexi/extra.c (add_info_string), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line): rename spaces type used for spaces after command before argument or opening brace as spaces_after_cmd_before_arg and move it to info in element. 2022-11-17 Patrice Dumas * tp/Texinfo/Convert/Texinfo.pm (_expand_cmd_args_to_texi): remove redundant conditions. 2022-11-17 Patrice Dumas * tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Texinfo.pm, tp/Texinfo/Convert/TexinfoMarkup.pm, tp/Texinfo/ParserNonXS.pm (_parse_macro_command_line, _close_brace_command) (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/close.c (close_brace_command), tp/Texinfo/XS/parsetexi/convert.c (expand_cmd_args_to_texi), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command), tp/Texinfo/XS/parsetexi/macro.c (parse_macro_command_line), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line), tp/Texinfo/XS/parsetexi/separator.c (handle_open_brace): move arg_line and @verb delimiter from extra to info in element. 2022-11-17 Gavin Smith * info/t/recode-C-locale.sh: New test. 2022-11-17 Gavin Smith * info/util.c (text_buffer_iconv): Avoid infinite loop by updating space left argument passed to iconv, and by continually expanding the allocated space in the output buffer if iconv continues to return E2BIG. Hang on UTF-8 encoded file with LC_ALL=C reported by Hilmar Preuße . 2022-11-16 Patrice Dumas * tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/Texinfo.pm, tp/Texinfo/Convert/TexinfoMarkup.pm, tp/Texinfo/Convert/TextContent.pm, tp/Texinfo/ParserNonXS.pm, tp/Texinfo/Structuring.pm, tp/Texinfo/XS/misc.c (xs_abort_empty_line), tp/Texinfo/XS/parsetexi/convert.c (expand_cmd_args_to_texi) (convert_to_texinfo_internal), tp/Texinfo/XS/parsetexi/handle_commands.c (handle_line_command), tp/Texinfo/XS/parsetexi/parser.c (abort_empty_line) (isolate_last_space_internal): move spaces_before_argument and spaces_after_argument from extra to info key element hash. * tp/Texinfo/XS/parsetexi/extra.c (lookup_associated_info) (lookup_extra, lookup_info): add lookup_associated_info to lookup in an associated information structure. Add wrappers for the info and extra structures. * tp/Texinfo/Convert/DocBook.pm (_convert): check 'args' and not 'extra' to determine if there is a @quotation argument. * tp/Texinfo/ParserNonXS.pm (_end_line): remove extra element key if empty after removing incorrect command_as_argument. Avoid autovivification. 2022-11-15 Patrice Dumas * tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/ParserNonXS.pm (_process_remaining_on_line), tp/Texinfo/XS/parsetexi/api.c (element_to_perl_hash), tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block), tp/Texinfo/XS/parsetexi/extra.c (add_info_string_dup), tp/Texinfo/XS/parsetexi/parser.c (process_remaining_on_line), tp/Texinfo/XS/parsetexi/tree.c (new_element, destroy_element): add an info hash to the tree elements, for information that can not be retrieved from the tree. As a first information moved from extra to info, put the @value flag name for @value with unset flag. 2022-11-15 Patrice Dumas * tp/Texinfo/XS/parsetexi/api.c (store_additional_info) (element_to_perl_hash), tp/Texinfo/XS/parsetexi/end_line.c (end_line_starting_block), tp/Texinfo/XS/parsetexi/extra.c (add_associated_info_key, lookup_extra), tp/Texinfo/XS/parsetexi/tree.c (new_associated_info, new_element) (destroy_associated_info, destroy_element), tp/Texinfo/XS/parsetexi/tree_types.h (ASSOCIATED_INFO): instead of putting the extra array, the number and space directly in the element, use a specific structure, ASSOCIATED_INFO to hold those three fields. Replace add_extra_key by add_associated_info_key to associate information. Add initialization, destruction, lookup based on the previous code associated to extra. 2022-11-15 Gavin Smith * configure.ac: Use absolute path for checking for npm commands so that rules in js/Makefile.am work. 2022-11-15 Gavin Smith * js/yarn.lock, js/server.js: Remove files. 2022-11-14 Patrice Dumas * tp/Texinfo/Convert/Texinfo.pm (root_heading_command_to_texinfo): show node name as it appeared in the document. 2022-11-14 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (special_element_info) (_set_root_commands_targets_node_files) (_prepare_conversion_tree_units), tp/Texinfo/Translations.pm (complete_indices): sort for reproducible function returns and messages. * tp/Texinfo/Convert/Converter.pm, tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Structuring.pm: avoid perl objects in debug messages, keeping the perl object name output messages in comments. * tp/Texinfo/Convert/HTML.pm (converter_initialize): avoid autovivification. 2022-11-14 Patrice Dumas * tp/Texinfo/XS/parsetexi/command_data.awk: remove code for compatibility with old format. 2022-11-14 Patrice Dumas * tp/Texinfo/Commands.pod, tp/Texinfo/Common.pm (_add_preamble_before_content), tp/Texinfo/XS/parsetexi/command_data.awk, tp/Texinfo/command_data.txt: add preamble flag in command_data.txt instead of determining the hash in Texinfo::Common. 2022-11-14 Patrice Dumas * Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm (_texinfo_handle_element_start, _texinfo_handle_element_end): use Texinfo::Commands::brace_code_commands. 2022-11-14 Patrice Dumas * tp/Texinfo/ParserNonXS.pm: do not reset simple_text_commands and plain_text_commands to full_text_commands. Add a check (not enabled) that all the commands that should have nesting checks do. 2022-11-14 Patrice Dumas * tp/Texinfo/Commands.pod, tp/Texinfo/Common.pm, tp/Texinfo/XS/parsetexi/command_data.awk, tp/Texinfo/command_data.txt: move command classification out of Texinfo::Common to command_data.txt. Filter out flags not relevant for the XS parser when generating command_data.c. Update callers. 2022-11-13 Patrice Dumas * tp/Makefile.am (EXTRA_DIST), tp/Texinfo/XS/Makefile.am, tp/Texinfo/command_data.txt: move command_data.txt from tp/Texinfo/XS/ to tp/Texinfo/ since it is now used both in perl modules and in the XS parser. 2022-11-13 Patrice Dumas * tp/Makefile.am (test_files): add t/init/*.pm files. 2022-11-13 Patrice Dumas * util/texi2dvi (--expand): add --iftex and --no-ifinfo to makeinfo call. Use -c TEXINFO_OUTPUT_FORMAT=plaintexinfo instead of --macro-expand=- to avoid the conversion to Info that could lead to irrelevant messages. * doc/texinfo.texi (Format with @command{texi2dvi} or @command{texi2pdf}): no more comments set by texi2dvi. 2022-11-13 Gavin Smith * util/texi2dvi (--expand): Remove lengthy block of code using sed to comment out @tex blocks. Suggestion from Patrice. * NEWS, TODO, README-hacking: update 2022-11-12 Werner Lemberg * doc/texinfo.tex (\unicodechardefs): Add missing % after }. 2022-11-12 Werner Lemberg * doc/texinfo.tex (\textdegree): Define using \tcfont to enable copying the right character from a PDF reader. 2022-11-12 Patrice Dumas * util/htmlxref.cnf: add manuals, in particular mono manuals and fix some issues with existing manuals. Report from Tzvetelin Katchov. Rename mairix manual as mairix-el, and smalltalk* manuals as gst*. 2022-11-12 Gavin Smith * doc/texinfo.texi (\defmacro): Use \begingroup and \endgroup around code reading macro arguments, instead of \bgroup and \egroup, as the former do not form a "subformula" when used in math mode, which affects the spacing. Suggestion from Vincent Lefèvre. 2022-11-12 Gavin Smith * doc/gendocs.chapter/gendocs_template: New file. * doc/Makefile.am (wwwdoc-build): Use it for texi2any_internals manual, as default template does not handle chapter-split manuals. 2022-11-12 Patrice Dumas * doc/texinfo.texi (HTML Xref 8-bit Character Expansion): update codepoint in example of Xref with @point. 2022-11-12 Patrice Dumas Use U+22C6 for @point to get a smaller and more pointy star * NEWS, doc/texinfo.texi (HTML Xref Command Expansion), tp/Texinfo/Convert/Unicode.pm (%extra_unicode_map), tp/tests/coverage_macro.texi: use U+22C6 for @point both to get a star more in line with the star obtained with TeX also more similar to the asterisk also used, more pointy. This changes the HTML corss-references to nodes with @point. 2022-11-12 Gavin Smith * util/htmlxref.cnf (texi2any_internals): Remove node line to prefer split-by-chapter. 2022-11-12 Gavin Smith * doc/Makefile.am (wwwdoc-build): Split texi2any_internals by chapter. Report from Patrice. Suppress Info node name warnings for texi2any_api and texi2any_internals. 2022-11-12 Gavin Smith * util/htmlxref.cnf (texi2any_internals): Add split-by-chapter line. Report from Patrice. 2022-11-12 Gavin Smith * README-hacking: remove to-do item 2022-11-12 Gavin Smith * README-hacking: collect info on version update. texi2dvi and texi2pdf uploads needed after version update. 2022-11-12 Gavin Smith * README-hacking, texindex/ti.twjr: Update year reported by texindex --version. 2022-11-12 Gavin Smith * doc/texinfo.tex (\textdegree, \unicodechardefs): Supply definition that looks better in a tt font. Also work inside math. Report from Werner. 2022-11-12 Gavin Smith * NEWS: correct spelling of "@definfoenclose" in most recent release announcement 2022-11-12 Gavin Smith * doc/texinfo.texi (Macro Details): Add problem with macro expansion inside of @math. Report from Vincent Lefèvre. 2022-11-11 Gavin Smith * doc/texinfo.tex (\unicodechardefs): Use \arrow instead of \expansion for U+2192. From Patrice. 2022-11-11 Patrice Dumas * tp/tests/coverage_macro.texi: add UTF-8 encoded characters near to accented characters obtained with @-commands. 2022-11-11 Patrice Dumas * tp/Texinfo/Common.pm (%preamble_commands): fix typo on direntry command name. * tp/tests/layout/formatting.texi: add @latex \DeclareUnicodeCharacter for characters not in the default inputenc/fontenc. 2022-11-11 Patrice Dumas * tp/tests/coverage_macro.texi: add UTF-8 encoded characters near to @-commands to be able to check visually the difference in formatting. 2022-11-10 Gavin Smith * tp/Texinfo/Common.pm, tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/Utils.pm, tp/Texinfo/Translations.pm: edits translation comments for grammar. Update po files. 2022-11-10 Patrice Dumas * doc/texi2any_api.texi (Translation Contexts): edit. 2022-11-10 Patrice Dumas * doc/texi2any_api.texi (Translations Output and Customization): translated strings can also be specified for specific elements headings customization, refer to the node. 2022-11-10 Patrice Dumas * doc/texi2any_api.texi (Customizing Footnotes@comma{} Tables of Contents and About, Special Element Body Formatting Functions): merge 'Common Customization of Special Elements' in 'Customizing Footnotes@comma{} Tables of Contents and About'. 2022-11-09 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_convert_printindex_command): put hyperlink within span used for indentation of subentries. 2022-11-09 Gavin Smith * configure.ac (AM_INIT_AUTOMAKE): Increase required automake version to 1.16.2. From Patrice. 2022-11-09 Patrice Dumas * doc/texi2any_api.texi (Translation Contexts), tp/Texinfo/Convert/HTML.pm (%direction_type_translation_context) (direction_string, special_element_info): add translation contexts for direction strings and special elements headings. * tp/Texinfo/Translations.pm (pgdt): find gdt() through the first argument object. 2022-11-09 Patrice Dumas * tp/Texinfo/Convert/HTML.pm, tp/Texinfo/Convert/LaTeX.pm, tp/Texinfo/Convert/Plaintext.pm, tp/Texinfo/Convert/Utils.pm: add comments for translators. Update po files. 2022-11-09 Patrice Dumas * tp/Texinfo/Convert/Converter.pm (float_name_caption): remove useless end of lines in translated strings. Add comments for translators. Update po files. 2022-11-08 Patrice Dumas * po_document/Makevars (XGETTEXT_OPTIONS): update pgdt order. * tp/Texinfo/Translations.pm (complete_indices): use '{name} of {class}' for index entry for @defcv too. Update po files. 2022-11-08 Patrice Dumas * po_document/Makevars (XGETTEXT_OPTIONS): add -cTRANSLATORS * tp/Texinfo/Common.pm (%def_map): add either a # TRANSLATORS: comment, or use pgdt to give context. Use pgdt when the same string is used for different @-commands. Update test results as some translations are missing after getting a context. 2022-11-08 Patrice Dumas * tp/Texinfo/Report.pm (line_warn, document_warn), tp/texi2any.pl (document_warn): remove \n from translated string marked for translation with __p. 2022-11-08 Patrice Dumas * tp/Texinfo/Convert/IXIN.pm, tp/Texinfo/Convert/TexinfoMarkup.pm, tp/Texinfo/Convert/Utils.pm: convert only if contents are defined, initialize contents if needed. 2022-11-08 Patrice Dumas * tp/Texinfo/Convert/LaTeX.pm (_prepare_conversion, _title_font) (_convert): convert only if contents are defined. 2022-11-08 Patrice Dumas * tp/Texinfo/Convert/Converter.pm (sort_element_counts): use node name only if set. Add a space between sectioning command and @-command and name. * tp/texi2any.pl: fix SORT_ELEMENT_COUNT by requiring the correct module. 2022-11-08 Patrice Dumas * tp/Texinfo/Convert/DocBook.pm (_convert): avoid formatting when contents is not set. * tp/Texinfo/Convert/Converter.pm (table_item_content_tree): explicitely handle undef $contents argument. 2022-11-08 Gavin Smith * doc/texinfo.texi (Adding Output Formats): Update name of texi2any_internals manual. * util/htmlxref.cnf: Add texi2any_api, texi2any_internals. 2022-11-08 Patrice Dumas * tp/Texinfo/Convert/HTML.pm: avoid formatting when contents is not set, avoiding a crash with empty @titlefont as title. * tp/Texinfo/Convert/Plaintext.pm (_convert): do not format author if there is no contents, this cannot happen for now but is more robust. 2022-11-08 Patrice Dumas * tp/Texinfo/Convert/Info.pm (_convert): avoid crashes in case of empty arguments. 2022-11-08 Patrice Dumas * tp/Texinfo/Convert/Info.pm (format_image): avoid crash on empty @image extension. Report from Werner Lemberg. 2022-11-08 Gavin Smith * tp/texi2any.pl: Call _encode_message on messages passed to "die" to avoid "Wide character in die" warning. Report from Werner. 2022-11-05 Patrice Dumas Do not use FirstInFile in direction strings, document FirstInFile * tp/Texinfo/Convert/HTML.pm (direction_string): strip leading FirstInFile from direction when looking for the associated strings. * doc/texi2any_api.texi (Directions, Direction Strings): document directions with FirstInFile prepended. 2022-11-05 Patrice Dumas * tp/Texinfo/Structuring.pm (check_nodes_are_referenced): consider that a node is referenced if it appears in a manu that would be setup automatically. That is if a node has automatic direction, no menu, all the children determined by automatic directions are considered to be referenced. (get_node_node_childs_from_sectioning): avoid spurious auto-vivification. 2022-11-04 Patrice Dumas * tp/Texinfo/Common.pm (pgdt): add pgdt that does nothing to be able to marks translated strings with a translation context. 2022-11-04 Patrice Dumas * NEWS: update with @subentry, @seealso and @seeentry formatting in HTML. 2022-11-04 Patrice Dumas Format index entry with @seealso or @seeentry in HTML * tp/Texinfo/Convert/HTML.pm (_convert_printindex_command): format entry with @seealso or @seeentry similarly with Texinfo TeX. 2022-11-04 Patrice Dumas Format @subentry in HTML similarly as in printed output * tp/Texinfo/Convert/Converter.pm (comma_index_subentries_tree), tp/Texinfo/Convert/HTML.pm (_convert_printindex_command): pass directly the first element with a possible subentry to comma_index_subentries_tree to be able to start frmo a subentry, not only from the main entry. Format subentries in HTML by indenting and not redoing the formatting of previous lines first levels, similar with Texinfo TeX. 2022-11-03 Patrice Dumas Also use subentries for index entries sorting in texi2any * tp/Texinfo/Structuring.pm (_sort_index_entries, sort_indices): collect subentries sorting keys and use them to sort the index entries. 2022-11-03 Patrice Dumas * doc/texi2any_api.texi (Simple Customization for Commands Without Arguments), tp/Texinfo/Config.pm (texinfo_register_no_arg_command_formatting), tp/Texinfo/Convert/HTML.pm (_translate_names): allow to set a Texinfo code to be translated and converted as command without arguments output. 2022-11-02 Patrice Dumas * doc/texi2any_api.texi (Simple Navigation Panel Customization): describe ACTIVE_ICONS and PASSIVE_ICONS more explicitely. 2022-11-02 Patrice Dumas * doc/texi2any_api.texi (Simple Navigation Panel Customization): add CHAPTER_FOOTER_BUTTONS, update explanations. 2022-11-01 Patrice Dumas * tp/Texinfo/Convert/LaTeX.pm (%LaTeX_encoding_names_map) (_latex_header): associate both a fontenc and an inputenc to an encoding. Separate the 'fixed' part of the LaTeX use package part of preamble at the beginning, including inputenc and fontenc and the usepackage lines determined by the use of Texinfo commands. 2022-11-01 Patrice Dumas * doc/texinfo.texi (@command{texi2html}): update now that translated strings customization is done. * doc/texi2oldapi.texi: update to expand history to the point where the texi2html implementation was abandonned. Mark that the part on the early texi2any API has been obsoleted by texi2any_api. 2022-11-01 Patrice Dumas * doc/texi2any_api.texi (Common Customization of Special Elements) (Special Elements Information Customization) (Special Element Body Formatting Functions), tp/Texinfo/Common.pm (@variable_other_settables), tp/Texinfo/Config.pm (_GNUT_initialize_special_element_info) (texinfo_register_special_element_info, GNUT_get_special_element_info), tp/Texinfo/Convert/HTML.pm (special_element_info, _translate_names, converter_initialize): change information on special elements to be set with a function, texinfo_register_special_element_info in Texinfo::Config, retrieved in the Converter with GNUT_get_special_element_info, instead of using customization variables. Add the special_element_info function to retrieve the special elements information in the HTML Converter, translating special element headings only when needed. Allow special element headings and targets to be undef. Remove SPECIAL_ELEMENTS_HEADING, SPECIAL_ELEMENTS_CLASS, SPECIAL_ELEMENTS_DIRECTIONS, special_elements_targets, special_elements_file_string and special_elements_order customization variables. 2022-10-31 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_prepare_special_elements): for special elements order, use a hash with indices to be used to order the special elements instead of an array. More code, but much easier to customize/modify. 2022-10-31 Patrice Dumas * tp/Texinfo/Convert/HTML.pm: remove 'Top' from %defaults 'special_elements_targets', instead hardcode the empty @top target in the code. 2022-10-31 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_load_htmlxref_files): do not set htmlxref_files converter state, use a regular array. * tp/Texinfo/Convert/HTML.pm (_external_node_href): remove _htmlxref, access directly the 'htmlxref' converter state. 2022-10-31 Patrice Dumas * doc/texi2any_api.texi (Translated Strings Customization), tp/init/documentation_examples.pm (my_format_translate_string): add translation strings customization example in documentation_examples.pm and fix in manual. 2022-10-31 Patrice Dumas * tp/Texinfo/Config.pm (texinfo_register_direction_string_info): set converted string structure only if the argument is defined. 2022-10-30 Patrice Dumas * doc/texi2any_api.texi (Direction Strings Customization) (Getting Direction Strings), tp/Texinfo/Config.pm (texinfo_register_direction_string_info), tp/Texinfo/Convert/HTML.pm (direction_string, converter_initialize): add context information to direction strings customization to be able to convert in string and in normal context. Update calls of direction_string() to use the string context for strings that end up in attributes. 2022-10-30 Patrice Dumas * tp/Texinfo/Translations.pm (gdt, replace_convert_substrings): Split replace_convert_substrings out of gdt, corresponding to the substitution of replaced_substrings and conversion to Texinfo tree. * doc/texi2any_api.texi (Internationalization of Strings Function) (Translations Output and Customization) (Translated Strings Customization): add a whole chapter on strings internationalization, grouping Internationalization of Strings Function and information formerly in Basic Formatting Customization. * tp/t/test_utils.pl (test), tp/Texinfo/Config.pm (_GNUT_initialize_stage_handlers) (_GNUT_initialize_no_arg_commands_formatting_strings) (_GNUT_initialize_style_commands_formatting_info) (GNUT_reinitialize_init_files): add initialization of init files information in Texinfo::Config to isolate tests. 2022-10-29 Patrice Dumas Add customization of translated strings * doc/texi2any_api.texi (Internationalization of Strings Function) (Basic Formatting Customization), tp/Texinfo/Convert/HTML.pm (gdt): override Texinfo::Translations gdt to call format_translate_string user-defined formatting reference if the formatting reference is defined. Document more arguments of gdt, as they are also used for format_translate_string. 2022-10-29 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (direction_string, _translate_names): translate direction strings only when needed and cache them afterwards. Remove the contents of the translated direction string types in _translate_names such that they will be re-translated in the next direction_string call. 2022-10-29 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_convert_informative_command, _convert): call _translate_names() after documentlanguage conversion in converter code instead of calling in conversion function. 2022-10-29 Patrice Dumas * tp/Texinfo/Convert/HTML.pm (_translate_names): update gdt call. 2022-10-29 Patrice Dumas * doc/texi2any_api.texi (Element Direction Information Type) (Direction Strings, Getting Direction Strings), tp/Texinfo/Common.pm (@variable_other_settables), tp/Texinfo/Config.pm (texinfo_register_direction_string_info) (GNUT_get_direction_string_info), tp/Texinfo/Convert/HTML.pm (direction_string, _translate_names, converter_initialize) (_initialize_output_state): change customization of direction strings to be set with texinfo_register_direction_string_info, retrieved in the converter by GNUT_get_direction_string_info, translated when needed and retrieved in formatting code with direction_string, instead of using curtomization variables. Remove the customization variables BUTTONS_TEXT, BUTTONS_NAME, BUTTONS_GOTO, BUTTONS_REL, BUTTONS_ACCESSKEY, BUTTONS_EXAMPLE. Update functions that used the BUTTONS_* customization variables. * tp/Texinfo/Convert/HTML.pm (ACTIVE_ICONS, PASSIVE_ICONS): do not initialize ACTIVE_ICONS and PASSIVE_ICONS to empty strings, instead set to undef the customization variables as a whole. 2022-10-27 Patrice Dumas Add optional translation context for in-document string translations * doc/texi2any_api.texi (Internationalization of Strings Function), tp/Texinfo/Translations.pm (gdt, pgdt), po_document/Makevars (XGETTEXT_OPTIONS), tp/Texinfo/Convert/HTML.pm (_translate_names): add a translation context argument to gdt() and add pgdt() which has the translation context as first argument. Update po_document/Makevars to have pgdt arguments in the correct order. 2022-11-07 Gavin Smith * README-hacking: new ChangeLog file done Copyright 2022-2023 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. texindex originally had its own ChangeLog, the contents whereof are moved here: 2019-05-19 Arnold D. Robbins * ti.twjr: Prose updates. 2019-05-14 Arnold D. Robbins * ti.twjr: Typo fixes in main menu. 2019-05-12 Arnold D. Robbins * ti.twjr: Add escape function and call, fixes things when backslash is the command character. Remove @code around the names of the nodes for the helper functions. * jrweave: Merge with latest version in TexiWeb Jr. (This version use @subentry.) 2019-04-11 Arnold D. Robbins * ti.twjr: Update about testing - works on 5 different awks! 2019-04-10 Arnold D. Robbins * ti.twjr: Simplify comparison algorithm. 2019-04-09 Arnold D. Robbins * ti.twjr: Final polish. 2019-04-08 Arnold D. Robbins * ti.twjr: Lots of polish. 2019-04-07 Arnold D. Robbins * ti.twjr: Improve commentary on sorting. Index TRUE and FALSE. Make fatal() function more portable. 2019-04-05 Arnold D. Robbins * jrweave: Use @sortas for chunk index entries to avoid < and >. Use @subentry also. * ti.twjr: Print see also after page numbers. Adjust logic and sorting. 2019-04-03 Arnold D. Robbins * ti.twjr: Revise sorting to use the subkeys. Add `@set txiindexlessthanignore'. 2019-04-01 Arnold D. Robbins * ti.twjr: Finish adding indexing of program variables etc. * jrweave: Fix 'do not edit' banner. * ti.twjr: Bug fixes in page numbers, seealso mixed with multilevel entries. 2019-03-28 Arnold D. Robbins * ti.twjr: Lots of polish to code and doc. Almost done. * ti.twjr: Make sure all chunk names start with an upper case letter. 2019-03-27 Arnold D. Robbins * ti.twjr: Finish up new code. Some initial testing. * jrweave, jrtangle: Update to latest versions. 2019-03-25 Arnold D. Robbins * ti.twjr: Rearrange, start on line parsing. 2019-03-18 Arnold D. Robbins * ti.twjr: Finish up printing code. 2019-03-17 Arnold D. Robbins * ti.twjr: Reformat code. 2019-03-15 Arnold D. Robbins * ti.twjr: Outline algorithm for printing entries. 2019-03-14 Arnold D. Robbins * ti.twjr: Very initial start at printing entries. 2019-03-13 Arnold D. Robbins * ti.twjr: Pretty much finish off the requirements chapter. 2019-03-12 Arnold D. Robbins * ti.twjr: Started expansion of requirements chapter. 2019-03-08 Arnold D. Robbins * ti.twjr: Fix "the the", http --> https, remove unnecessary semicolons, add History section. Remove references to unimplemented -o option. 2019-03-06 Arnold D. Robbins * ti.twjr: Add Command_char to list of special characters. 2015-02-27 Arnold D. Robbins * jrweave, jrtangle: Updated to current version. In particular, jrtangle should work out of the box on Windows, thanks to Eli Zaretskii. 2015-01-08 Karl Berry * version.texi: remove, no easy way to automatically update it. * ti.twjr, * Makefile.am (do_subst, texindex.awk, ti.texi): use substitutions for @VERSION@ and @UPDATED@ instead. * texindex.in: also look for ../share/texinfo/texindex.awk, relative to dirname $0. * ti.twjr (Invocation_name): new global, renamed from Prgname. (usage): use it, a la coreutils. * texindex.in: pass it (value $0), with -v. * Makefile.am (EXTRA_DIST): dek_idx.png rename. 2015-01-06 Karl Berry first merge into automake: * texindex/Makefile.am: new file. * texindex/texindex.in: new file. * texindex/README: update. (see also ../ChangeLog.) 2014-12-30 Arnold D. Robbins * ti.twjr: Remove `@xrefautomaticsectiontitle on'. It's now supplied by jrweave. * jrweave: Updated. 2014-12-26 Arnold D. Robbins * ti.twjr: Restore use of `@xrefautomaticsectiontitle on'. And restore support for vim editing. 2014-12-15 Karl Berry * ti.twjr: convert to minimal Texinfo conventions instead of Arnold's published-book conventions. 2014-12-13 Arnold D. Robbins * jrtangle, jrweave: Updated with versions that include github location. 2014-08-07 Arnold D. Robbins * ti.twjr: Typo fix in an index entry. Change the update month and increase version to 0.95. 2014-05-30 Arnold D. Robbins * README: New file. * tests: New directory with some regression tests. * jrtangle, jrweave: Copied from TexiWebJr to have standalone. ***** * All: Pushed to https://github.com/arnoldrobbins/texindex. 2014-04-26 Arnold D. Robbins * ti.twjr: Remove summaries appendix. Not needed with better formatting from jrweave. Bump version to 0.94. 2014-04-16 Arnold D. Robbins * ti.twjr: Bug fix. Multiple files had junk in second and subsequent output files. Needed to clear out more data between files. Bump version to 0.93. 2014-03-21 Arnold D. Robbins * ti.twjr: General cleanup and finalizatio of the text. Bump version to 0.92. 2014-03-17 Arnold D. Robbins * ti.twjr: Fix case in chunk names. 2014-03-14 Arnold D. Robbins * ti.twjr: Add a few commands to make the PDF nicer. 2014-03-04 Arnold D. Robbins * ti.twjr: Polished up. Add an XKCD cartoon. Bump version to 0.9. * donald_knuth.jpg: New file. 2014-03-03 Arnold D. Robbins * ti.twjr: Rework where initial extraction is done. Set up to produce \{ and \}. Works when used with itself to sort the index! Woo hoo! 2014-02-27 Arnold D. Robbins * ti.twjr: Revise extraction of the initial as per Karl. Still needs more documentation but I think we've hit functionally complete. 2014-02-26 Arnold D. Robbins * ti.twjr: Sorting in and seems to work well. Still need to add more descriptive prose. Did some cleanup and added menus. 2014-02-25 Arnold D. Robbins * ti.twjr: Just about done, except for sorting. 2014-02-24 Arnold D. Robbins * ti.twjr, texinfo.tex, Makefile: Initial check-in. Copyright 2014, 2015 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.