2025-12-17 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm: rename $command variable as $cmdname when it is used for an @-command name string. Use $command for Texinfo tree elements. 2025-12-15 Patrice Dumas * doc/texi2any_api.texi (Command Tree Element Conversion Functions), tta/perl/Texinfo/Convert/Converter.pm (Accents conversion): add a separate section for the accent tree elements conversion in converter using convert_accents. Refer to the convert_accent documentation in the "Command Tree Element Conversion Functions" node. 2025-12-15 Patrice Dumas * doc/Makefile.am (html_default_commands_args.texi), doc/generate_html_doc_texi.pl, tta/perl/Makefile.am (perl_commands_source_files): only generate one item for all the accent commands in generate_html_doc_texi.pl. Have generate_html_doc_texi.pl depend on Commands.pm for the list of accent commands, add Makefile.am code to generate Commands.pm from the doc dorectory if needed. 2025-12-16 Gavin Smith * tta/perl/Texinfo/Convert/LaTeX.pm (_latex_header): Use \chaptermark and \sectionmark for @unnumbered and @unnumberedsec so that the heading is updated. Report from Dimitris Papavasilio. 2025-12-15 Gavin Smith * tta/perl/Texinfo/Convert/LaTeX.pm (_latex_header): Output use of \newtitlemark to define \Texinfoheadingchaptername in a mark. Otherwise it does not always have the correct value. Report from Dimitris Papavasilio. 2025-12-14 Patrice Dumas * tta/perl/Texinfo/Convert/LaTeX.pm (_latex_header, _convert): do not modify \chaptername when reaching the appendix, instead define a LaTeX macro \Texinfoheadingchaptername for the headings, set initially to \chaptername and reset to \appendixname after reaching the appendices. * tta/perl/Texinfo/Convert/LaTeX.pm (_convert): use \appendixname if the reference is to an appendix sectioning command. Report from Dimitris Papavasilio. * tta/perl/Makefile.tres, tta/perl/t/latex_tests.t (reference_to_from_appendix): add test of references from chapter to appendix and from appendix to chapter. 2025-12-13 Patrice Dumas * doc/texi2any_api.texi (Target Tree Element Link): add command_name and command_description documentation. 2025-12-13 Patrice Dumas Update libintl-perl to 1.35 2025-12-13 Gavin Smith * js/info.css (iframe.node): Set "display: block". This is intended to prevent a double scroll bar, one for the iframe, one for the containing div, by making both elements the same height. 2025-12-13 Gavin Smith * INSTALL.generic: update from gnulib 2025-12-13 Gavin Smith * Makefile.am (po_document-check): exclude another XS file 2025-12-13 Gavin Smith * po/POTFILES.in: add missing files 2025-12-13 Patrice Dumas * tta/perl/Texinfo/Convert/LaTeX.pm (%LaTeX_in_heading_commands_formatting, %section_map) (_latex_header): replace "\chaptername{} \thechapter{} " by a LaTeX macro, \Texinfothechapterheading{} and redefine the macro when a chapter or an appendix is encountered to "\chaptername{} \thechapter{}" and to an empty string when unnumbered is encountered. Add the Texinfochapter LaTeX macro for chapter and appendix. Report from Dimitris Papavasiliou. * tta/perl/Texinfo/Convert/LaTeX.pm (_convert): call \renewcommand{\chaptername}{\appendixname} when reaching the first appendix. Report from Dimitris Papavasiliou. * tta/perl/Texinfo/Convert/LaTeX.pm (_prepare_conversion): delete appendix_done. 2025-12-13 Patrice Dumas * tta/perl/Texinfo/Convert/LaTeX.pm (%section_map) (%texinfo_unnumbered_macros_toc_latex, _latex_header): generate a LaTeX macro definition for each of the unnumbered commands that should appear in table of contents. Report from Dimitris Papavasiliou. 2025-12-13 Patrice Dumas * tta/perl/Texinfo/Convert/LaTeX.pm (_latex_header): fix float_type setting. Report from Dimitris Papavasiliou. Reindent string. 2025-12-13 Gavin Smith * tta/C/Makefile.am (MAINTAINERCLEANFILES): Add all "multiple outputs" stamp files. This fixes parallel make after "make maintainer-clean". Report from Patrice. 2025-12-13 Gavin Smith * README-hacking: add AUTOPOINT=true to autoreconf invocation to reduce the risk of making a mess. 2025-12-13 Gavin Smith * NEWS: automake, autoconf, gettext, libtool versions. * README-hacking: more on upgrading gettext. 2025-12-12 Gavin Smith * tta: upgrade to gettext 0.26 2025-12-12 Gavin Smith * po, po_document: upgrade to gettext 0.26 2025-12-12 Gavin Smith update gnulib * (top level), tta: run gnulib-tool --add-import 2025-12-11 Gavin Smith * update-version.sh: update other configure.ac files automatically. 2025-12-11 Gavin Smith * tta/perl/CheckXS/configure.ac: increase version to 7.2.90. 2025-12-10 Gavin Smith * tta/configure.ac: also bump version here * util/pdftexi2dvi: bump version 2025-12-10 Gavin Smith * configure.ac: bump version to 7.2.90. 2025-12-10 Gavin Smith * tta/maintain/change_perl_modules_version.sh: Fix path to perl/CheckXS/configure.ac. 2025-12-10 Gavin Smith * util/texi2dvi (make_openout_test, decide_aux_files_method): Keep output from tests of \openout and print the last kept output if the test failed and we can't run TeX. This helps the user to find out why the test failed, e.g. if they are running with PDFTEX=xetex and xetex isn't installed. 2025-12-10 Gavin Smith * doc/texinfo.texi: Change several gnu.org URLs to use https instead of http. 2025-12-10 Gavin Smith * READNE-alpha: use https in link 2025-12-10 Gavin Smith * info/test-infodir: remove subdirectory. 2025-12-10 Gavin Smith * tta/perl/t/layout.t: use https: in value of PACKAGE_URL. 2025-12-10 Gavin Smith * tta/perl/t/40moresectioning.t: use https: in some values for TOP_NODE_UP. 2025-12-09 Gavin Smith * tta/C/texi2any.c (main), * tta/perl/texi2any.pl: Use https:// link in output of texi2any --version. 2025-12-09 Gavin Smith * tta/C/convert/html_prepare_converter.c (html_setup_output), * tta/perl/Texinfo/Convert/HTML.pm (_setup_output): Use https: in link for GPL license. 2025-12-07 Patrice Dumas * tta/perl/Texinfo/Convert/LaTeX.pm (_convert): use code to get a space if in inner horizontal or vertical mode for sectioning commands, not for other commands. Report from Gavin. 2025-12-07 Patrice Dumas * tta/perl/Texinfo/Convert/LaTeX.pm (_convert): use code based on \ifinner and on Texinfo TeX code for @* in LaTeX to handle all the cases in internal horizontal or vertical mode, in particular in page headings. Based on Gavin code. * tta/perl/t/converters_tests.t (line_breaks): add @* in more command areguments and contexts. 2025-12-06 Gavin Smith * doc/texinfo.texi (Custom Headings): @thispart is implemented for LaTeX output. 2025-12-06 Patrice Dumas * tta/perl/Texinfo/Convert/LaTeX.pm (%section_map, _latex_header): define a \texinfopart LaTeX comand ofr @part that uses \part* and \addcontentsline. From Gavin. * tta/perl/Texinfo/Convert/LaTeX.pm (_convert): use \texorpdfstring for @* if in a heading command. * tta/perl/t/latex_tests.t (thispart): also test @* in @part. 2025-12-06 Gavin Smith Fix @* display in header line * doc/texinfo.tex (\*): Check if in inner horizontal or vertical mode with \ifinner, and if so, output @* as a single space rather than trying to break a line. This fixes display of @* when it occurs in a section name in the page heading line. (\entryinternal): Remove special override of definition of @*. 2025-12-06 Patrice Dumas * tta/C/convert/format_html.c (default_panel_button_dynamic_direction_internal), tta/perl/Texinfo/Convert/HTML.pm (_default_panel_button_dynamic_direction): add nav-label and nav-link span class for dynamic buttons direction string and hyperlink. Report from Raymond Toy. 2025-12-06 Patrice Dumas * NEWS, tta/perl/Texinfo/Convert/LaTeX.pm (%LaTeX_in_heading_commands_formatting, converter_reset) (_prepare_conversion, _latex_header): implement @thispart in LaTeX output. * tta/perl/Makefile.tres, tta/perl/t/latex_tests.t (thispart): add this part test tesing for @thispart. 2025-12-06 Gavin Smith * NEWS, * doc/texinfo.texi (Command List, Custom Headings): add @thispart. 2025-12-06 Gavin Smith * tta/data/command_data.txt: Add @thispart. 2025-12-06 Gavin Smith @thispart * doc/texinfo.tex (@part): Set @thispart, to be used in headings and footings. Suggestion from Werner. 2025-12-06 Gavin Smith @set txilinkindextext * doc/texinfo.tex (\indexentry) [pdftex]: Only create a link from the index entry text to the referenced page if the document contained "@set txilinkindextext". 2025-12-06 Gavin Smith * doc/texinfo.texi (Custom Headings): reorder slightly. 2025-12-06 Gavin Smith * doc/texinfo.texi (Custom Headings) <@thissectionnum>: Add example of output to reduce confusion about whether the "section number" contains the chapter number. 2025-12-05 Gavin Smith * doc/texinfo.texi (Custom Headings) <@thissection>: Change example section number to contain a full stop. From Werner Lemberg. 2025-12-03 Gavin Smith Set 'nav-panel' class on

element. * tta/C/convert/format_html.c (html_default_format_navigation_panel), * tta/perl/Texinfo/Convert/HTML.pm (_default_format_navigation_panel): Remove

surrounding navigation bar and set 'nav-panel' class on

element. This is intended to make it easier to customize the style of the navigation bar with CSS. 2025-12-03 Gavin Smith * tta/data/default_css_element_class_styles.csv (span.nav-button): Remove 'white-space: nowrap' as it is up to the user if they want this for their HTML output. 2025-11-29 Patrice Dumas * tta/C/main/customization_options.c (html_new_button_specification_info) (html_new_button_specification_list): rename new_button_specification_info as html_new_button_specification_info and new_button_specification_list as html_new_button_specification_list. Update callers. 2025-11-29 Patrice Dumas * tta/C/main/customization_options.c (new_button_specification_info, new_button_specification_list), tta/C/main/create_buttons.c: move new_button_specification_info and new_button_specification_list to customization_options.c. * tta/C/Makefile.am (C_libtexinfo_sources): remove create_buttons.c and create_buttons.h. 2025-11-29 Patrice Dumas * tta/C/main/customization_options.c (html_free_button_specification_list, html_clear_direction_icons) (html_free_direction_icons), tta/C/main/utils.c: move functions freeing direction icons and buttons to customization options file. 2025-11-29 Patrice Dumas * tta/C/convert/html_converter_init_options.c (enum BUTTON_special_unit_directions, buttons_special_units_names) (new_button_specification, new_special_unit_direction_button) (new_base_navigation_buttons, new_base_links_buttons) (new_base_navigation_section_buttons) (new_base_navigation_section_footer_buttons) (new_directions_list_buttons_specifications), tta/C/main/create_buttons.c: move functions creating specifc button lists to html_converter_init_options.c, as well as associated static function and data. 2025-11-29 Patrice Dumas * tta/C/convert/html_converter_init_options.c: remove unused set_option_buttons_specification, set_html_default_buttons_specifications and set_texi2html_default_buttons_specifications. * tta/C/main/create_buttons.c (new_button_specification): declare static. 2025-11-29 Patrice Dumas * tta/C/convert/format_html.c (html_standard_label_id_file): get BASEFILENAME_LENGTH from txi_base_options since it is a default converter option and is not set as an HTML converter default option. 2025-11-29 Gavin Smith Allow running uninstalled texi2any with a symbolic link * tta/perl/texi2any.pl: If loading Texinfo::ModulePath failed and $0 is a symbolic link, dereference the symbolic link and try again. * tta/perl/Texinfo/ModulePath.pm.in: dereference $0 if the file is a symbolic link. Add "use strict" to module. 2025-11-29 Patrice Dumas Do not allow wrapping inside an HTML button * tta/data/default_css_element_class_styles.csv (span.nav-button): set navigation button white-space: nowrap, such that the button is not split on two lines on small screens. Report by Raymond Toy and idea by Per Bothner. 2025-11-29 Patrice Dumas * tta/perl/t/z_misc/no_structure_test.t (_do_format_test_file), tta/perl/t/z_misc/same_parser_multiple_files.t (_do_format_test_file): do not check the test result if $arg_generate is set and the test result is regenerated. 2025-11-29 Patrice Dumas Add a span for HTML navigation buttons not in table * tta/C/convert/format_html.c (html_default_format_navigation_panel), tta/perl/Texinfo/Convert/HTML.pm (_default_format_navigation_panel): add a span with nav-button class for each button. Report by Raymond Toy. * tta/C/convert/format_html.c (html_default_format_button): do not return an empty string but NULL if button_text is NULL. * tta/C/convert/html_prepare_converter.c (html_set_main_units_direction_names): reindent. 2025-11-27 Patrice Dumas * doc/texi2any_api.texi: update. Changes in comments and Pod. 2025-11-26 Gavin Smith * NEWS (texi2any): mention you can turn off redirection files with --transliterate-file-names by giving --no-node-files. 2025-11-26 Patrice Dumas * doc/texinfo.texi (Invoking @command{texi2any}): rewrite and addition to --transliterate-file-names option description, adding the information that it does not affect redirection files, and that it is recommended to do redirection files in that case. 2025-11-25 Patrice Dumas * doc/texinfo.texi (Invoking @command{texi2any}): explain that transliteration is also done for sectioning commands file names, and sectioning commands identifiers if --transliterate-file-names is set. Also say that the transliterated names obtained are platform and processor dependent. 2025-11-25 Patrice Dumas * tta/C/main/utils.c (encode_with_iconv, encode_string): add an argument, if set encoding errors are not reported from encode_with_iconv. Update callers. * tta/C/main/node_name_normalization.c (unicode_to_transliterate): silence transliteration errors. Transliterations should only be used for internal identifiers. Report from Gavin. 2025-11-25 Patrice Dumas Do not transliterate section command identifier by default * tta/C/main/node_name_normalization.c (convert_contents_to_node_identifier, convert_to_node_identifier) (convert_to_identifier), tta/perl/Texinfo/Convert/NodeNameNormalization.pm (convert_to_node_identifier, convert_to_identifier): rename convert_to_identifier as convert_to_node_identifier. Readd convert_to_identifier that does the same as convert_to_node_identifier except for the normaization of top in name. Update callers except for abbr or acronym first argument that uses convert_to_identifier. * tta/C/convert/converter.c (normalized_sectioning_command_filename), tta/perl/Texinfo/Convert/Converter.pm (normalized_sectioning_command_filename): transliterate sectioning command identifier only if TRANSLITERATE_FILE_NAMES is set. * tta/perl/t/30sectioning.t (in_menu_only_special_spaces_node_menu) (in_menu_only_special_spaces_node_menu_transliterate) (reference_to_only_special_spaces_node) (reference_to_only_special_spaces_node_transliterate), tta/perl/t/40moresectioning.t (only_special_spaces_node) (only_special_spaces_node_transliterate), tta/perl/t/converters_tests.t ($some_at_commands_in_ref_nodes_text) (some_at_commands_in_ref_nodes) (some_at_commands_in_ref_nodes_transliterate), tta/perl/t/formats_encodings.t (japanese_shift_jis), tta/perl/Makefile.tres: add tests with TRANSLITERATE_FILE_NAMES set. Explicitely set TRANSLITERATE_FILE_NAMES more. * tta/tests/many_input_files/different_encodings.sh: add --transliterate-file-name to the test command-line. 2025-11-25 Patrice Dumas * tta/perl/Texinfo/Convert/Utils.pm (definition_category_tree): update TRANSLATORS description again to match spacing of the other TRANSLATORS description. update po files. 2025-11-25 Patrice Dumas * tta/C/main/convert_utils.c (definition_category_tree), tta/perl/Texinfo/Convert/Utils.pm (definition_category_tree): replace name with category in TRANSLATORS description. Report by Gavin. 2025-11-25 Patrice Dumas * tta/C/convert/texinfo.c (txi_reset_converter), (txi_destroy_converter), tta/perl/Texinfo/Convert/Converter.pm (destroy_converter), tta/perl/Texinfo/Convert/Text.pm (destroy_converter), tta/perl/XSTexinfo/convert/ConvertXS.xs (destroy_converter): rename destroy in Converter.pm, Text.pm and ConvertXS.xs as destroy_converter. Rename txi_converter_reset as txi_reset_converter. Rename txi_converter_destroy as txi_destroy_converter. Update callers. * tta/C/convert/call_conversion_perl.c (call_object_reset_perl_converter), tta/C/convert/texinfo.c (txi_reset_converter), tta/perl/Texinfo/Convert/Converter.pm (%XS_overrides, reset_converter, reset_perl_converter) (destroy_converter), tta/perl/Texinfo/Convert/Text.pm (%XS_overrides), tta/perl/XSTexinfo/convert/ConvertXS.xs (reset_converter) (destroy_converter, destroy_text_converter): use reset_converter and destroy_converter functions for the XS interface and call Perl converter reset and release code from the XS interface instead of calling the C code from Perl through specific XS interface functions. Move reset_perl_converter out of reset_converter and call reset_perl_converter from C. Rename call_object_reset_converter as call_object_reset_perl_converter. Consistently, always call reset_converter in txi_reset_converter. Call call_object_reset_perl_converter from reset_converter in ConvertXS.xs and call call_object_converter_perl_release from destroy_converter in ConvertXS.xs. Remove _XS_reset_converter and _XS_destroy. Add a new XS interface for Texinfo::Convert::Text , destroy_text_converter since there is no converter_perl_release function nor call to call_object_converter_perl_release for the Text converter. * tta/perl/Texinfo/Convert/Converter.pm (converter_perl_release): call format-specific converter_destroy before generic converter code. 2025-11-25 Gavin Smith * doc/texinfo.tex (\doindexinitialentry) [pdfTeX]: Do not break if passed an empty argument. Report from Rik . 2025-11-23 Gavin Smith * README-hacking: update path to valgrind suppressions file when running tests from tta/perl. 2025-11-23 Gavin Smith * info/man.c (get_manpage_from_formatter): cast return value of get_output_from_program to void to indicate it is being ignored. 2025-11-22 Gavin Smith Fix Info memory errors after signals * info/window.c (window_make_modeline), * info/footnotes.c (info_get_or_remove_footnotes): Add check if 'node' field of WINDOW argument is null. * info/window.c (window_new_screen_size, window_make_window): Allocate modeline with xzalloc rather than xmalloc so that the memory will be initiailised. There were occasional memory errors when a signal was sent to Info in the redisplay code if these data structures were not initialised. I obtained this unreliably under valgrind monitoring with "TEXINFO_INFO_TESTS_TIMEOUT=2 t/resize-in-completions.sh". 2025-11-22 Gavin Smith fix "make distcheck" with TEXINFO_XS=required. * Pod-Simple-Texinfo/Makefile.am (AM_TESTS_ENVIRONMENT): Set t2a_srcdir and t2a_builddir as is done in tta/tests/Makefile.am. Otherwise the tests fail under TEXINFO_XS=required. 2025-11-18 Patrice Dumas * tta/C/Makefile.am (AM_CFLAGS, ctexi2any_CFLAGS) (teximakehtml_CFLAGS): set AM_CFLAGS to the value used for libraries. * tta/C/Makefile.am (teximakehtml_LDADD): add Gnulib dependencies to LDADD. * tta/perl/XSTexinfo/Makefile.am (AM_CFLAGS, AM_LDFLAGS): set and remove now unneeded per library variables. 2025-11-18 Patrice Dumas * tta/m4/txi_embedded_perl.m4: set CPPFLAGS and use same LDFLAGS as used in compilation. * tta/C/Makefile.am: simplify code now that flags are more homogeneous. 2025-11-18 Patrice Dumas * tta/m4/txi_perl_conf.m4 (perl_conf_LIB_LDFLAGS) (perl_conf_LDFLAGS), tta/C/Makefile.am (AM_LDFLAGS), tta/configure.ac (LDFLAGS): rename perl_conf_LDFLAGS as perl_conf_LIB_LDFLAGS and readd perl_conf_LDFLAGS with Perl config ldflags only. Use perl_conf_LDFLAGS in tta/configure.ac checks if enable_xs and use perl_conf_LDFLAGS for AM_LDFLAGS, which is used by executable. 2025-11-18 Gavin Smith * tta/configure.ac: add comment before call to txi_PERL_CONF listing the variables it sets to make it easier to track the origin of these variables. 2025-11-17 Patrice Dumas * tta/m4/txi_perl_conf.m4 (perl_conf_CFLAGS): rename perl_conf_EMBED_CFLAGS as perl_conf_CFLAGS. * tta/configure.ac (CFLAGS), tta/C/Makefile.am (AM_CFLAGS): use perl_conf_CFLAGS for configure tests, even when Perl headers are not compiled and set AM_CFLAGS to perl_conf_CFLAGS such that the flags are used for the libraries not compiled against Perl headers. This is because those flags are already used for executables and we need consistency between configure flags and compile flags. 2025-11-17 Patrice Dumas * tta/m4/txi_embedded_perl.m4 (CFLAGS): use perl_conf_CPPFLAGS and perl_conf_EMBED_CFLAGS instead of PERL_EXTUTILS_EMBED_ccopts. 2025-11-16 Patrice Dumas * tta/m4/txi_perl_conf.m4 (perl_conf_LIB_CFLAGS), (perl_conf_EMBED_LIB_CFLAGS), tta/C/Makefile.am (*_la_CFLAGS), tta/perl/CheckXS/Makefile.am (TestXS_la_CFLAGS), tta/perl/XSTexinfo/Makefile.am (XSLIBS_CFLAGS), tta/swig/perl/Makefile.am (Texinfo_la_CFLAGS): rename perl_conf_CFLAGS as perl_conf_LIB_CFLAGS and perl_conf_EMBED_CFLAGS as perl_conf_EMBED_LIB_CFLAGS as those two variables should be used for libraries only. * tta/m4/txi_perl_conf.m4 (perl_conf_EMBED_CFLAGS), tta/C/Makefile.am (libperlembed_libtexinfo_main_la_CPPFLAGS) (libperlembed_libtexinfo_main_la_CFLAGS, ctexi2any_CFLAGS): add perl_conf_EMBED_CFLAGS with the CFLAGS part of PERL_EXTUTILS_EMBED_ccopts, corresponding to $PERL_CONF_ccflags, and use that both for ctexi2any CFLAGS and libperlembed_libtexinfo_main_la_CFLAGS. The CPPFLAGS/perl_inc part is perl_conf_CPPFLAGS, add it to libperlembed_libtexinfo_main_la_CPPFLAGS, but not to ctexi2any CPPFLAGS. Gavin idea. 2025-11-16 Patrice Dumas * tta/C/main/tree_types.h (INDEX), tta/C/parsetexi/indices.c (add_index_internal), tta/swig/texinfo.i: remove prefix field from INDEX, it is not used nor useful. 2025-11-15 Patrice Dumas * tta/perl/Texinfo/Structuring.pm, tta/perl/Texinfo/ParserNonXS.pm: change in POD related to relations. 2025-11-15 Patrice Dumas * tta/m4/txi_embedded_perl.m4: save and restore CFLAGS and LDFLAGS instead of leaving them set at the end of the macro call. 2025-11-15 Patrice Dumas * tta/C/convert/get_converter_perl_info.c (convert_element_options_sv_to_text), tta/perl/XSTexinfo/convert/ConvertXS.xs (text_convert_tree): add convert_element_options_sv_to_text based on code removed from text_convert_tree. 2025-11-15 Gavin Smith * tta/m4/txi_libperl_link.m4: Save and restore CFLAGS, CPPFLAGS and LDFLAGS to original rather than hardcoding expressions to restore them to. 2025-11-12 Gavin Smith * info/filesys.c (filesys_error_string): Allocate result with asprintf rather than keeping an internal buffer. 2025-11-12 Gavin Smith * info/infodoc.c (function_name): declare as const. 2025-11-11 Gavin Smith const for Info * info/infodoc.c (function_documentation, replace_in_documentation): Declare return value as const char *. 2025-11-11 Patrice Dumas * info/infodoc.c (create_internal_info_help_node): fix conditional to use where_is_exec_cmd when setting exec_keys. * info/dir.c (get_dir_node): remove unused variable in functionad nunused dir_contents static variable. 2025-11-11 Gavin Smith const for Info * info/infodoc.c (pretty_keyseq, where_is, where_is_internal): Return const char *. (pretty_keyseq_ext): Wrapper to pretty_keyseq to allow safely appending a '-' character to the result. * info/session.c (display_info_keyseq): Use pretty_keyseq_ext. 2025-11-11 Gavin Smith * info/infodoc.c, info/window.c (create_internal_info_help_node): Move to window.c. Declare in window.h rather than session.h. 2025-11-11 Gavin Smith * doc/info-stnd.texi (Invoking Info): document new index lookup behaviour. 2025-11-11 Gavin Smith * NEWS: mention change to index lookup for "info TOPIC INDEX-ENTRY". 2025-11-11 Patrice Dumas * tta/perl/Texinfo/Convert/Converter.pm (comment_or_end_line): rename comment_or_end_line_nonxs as comment_or_end_line. Update callers. * tta/perl/Texinfo/Example/TreeElementConverter.pm (tree_element_comment_or_end_line): merge with tree_element_comment_or_end_line_nonxs, remove tree_element_comment_or_end_line_nonxs. 2025-11-10 Patrice Dumas * tta/C/main/tree_types.h (NAMED_STRING_ELEMENT) (NAMED_STRING_ELEMENT_LIST), tta/C/main/translations.h: move NAMED_STRING_ELEMENT and NAMED_STRING_ELEMENT_LIST to tree_types.h. 2025-11-10 Patrice Dumas * tta/C/main/get_perl_info.c, tta/C/tree_elements/get_perl_tree_elements.c (get_lang_translations_sv, get_replaced_substrings): move to get_perl_tree_elements.c. * tta/perl/Texinfo/Example/TreeElementConverter.pm (%XS_overrides) (build_element_tree), tta/perl/Texinfo/Example/TreeElementReadDocBook.pm (_convert), tta/perl/Texinfo/Translations.pm (_substitute_element_array), tta/perl/XSTexinfo/parser_document/DocumentXS.xs (build_tree), tta/perl/XSTexinfo/reader_element/TreeElementConverterXS.xs (build_element_tree): add build_element_tree based on DocumentXS.xs build_tree, corresponding to building a tree based on a tree element with a handle and remove the corresponding code from build_tree. Call build_element_tree in TreeElementReadDocBook.pm. Building a tree from a root element is still in build_tree. Modify Translations.pm _substitute_element_array to check for root element only before calling build_tree. 2025-11-10 Gavin Smith * util/htmlxref.d/Texinfo_GNU.cnf: update 'stabs', 'groff'. From Thérèse Godefroy . 2025-11-08 Gavin Smith * doc/texinfo.texi (Inserting Math, Info and Plaintext Customization Variables), * NEWS: mark INFO_MATH_IMAGES as experimental * doc/texinfo.texi (Info Format Image): document 'dpi' and 'depth'. Explain possible image scaling formula. 2025-11-08 Gavin Smith Output image baseline depth for INFO_MATH_IMAGES * tta/perl/Texinfo/Convert/LaTeX.pm (convert_math_to_images): Pass --depth option to dvipng and extract depth from command output. * tta/perl/Texinfo/Convert/Plaintext.pm (_insert_image) (_convert) [INFO_MATH_IMAGES], * tta/perl/Texinfo/Convert/Info.pm (format_image): output 'depth' value for @math. 2025-11-08 Gavin Smith Output DPI setting for INFO_MATH_IMAGES * tta/perl/Texinfo/Convert/LaTeX.pm (convert_math_to_images): Save and return DPI setting used for call to 'dvipng'. * tta/perl/Texinfo/Convert/Plaintext.pm (_insert_image) (_convert) [INFO_MATH_IMAGES], * tta/perl/Texinfo/Convert/Info.pm (format_image): Output dpi setting in Info file as 'dpi' attribute on image directive. 2025-11-04 Patrice Dumas * tta/C/swig/swig_parser_api.c (txi_ext_parser_conf_set_MAX_MACRO_CALL_NESTING): do not return anything. 2025-11-04 Patrice Dumas Separate C code related to "tree elements" interface only * tta/C/Makefile.am (libtexinfo_convertxs_la_SOURCES), tta/perl/XSTexinfo/Makefile.am (TreeElementXS_la_CPPFLAGS) (TreeElementConverterXS_la_CPPFLAGS, ReaderXS_la_CPPFLAGS), tta/C/main/build_perl_info.c (build_new_base_element, document_tree), tta/C/main/get_perl_info.c, tta/perl/Texinfo/Document.pm (%XS_structure_overrides), tta/perl/Texinfo/Example/TreeElementConverter.pm (%XS_overrides) (register_document_relations_lists_elements), tta/perl/XSTexinfo/reader_element/TreeElementConverterXS.xs (register_document_relations_lists_elements), tta/C/tree_elements/build_perl_tree_elements.c (register_sv_element_handle_in_sv, register_element_handle_in_sv) (build_element_attribute, register_document_sections_list_elements) (register_document_nodes_list_elementsr) (register_document_headings_list_elements) (register_document_relations_lists_elements) (build_tree_elements_relations_lists) (build_tree_elements_sections_list, build_tree_elements_nodes_list) (build_tree_elements_headings_list), tta/C/tree_elements/get_perl_tree_elements.c (get_sv_reader_reader) (new_element_from_sv): move code needed by the tree element interface only to the tree_elements directory. Move build_element_attribute, register_document_sections_list_elements, register_document_nodes_list_elements, register_document_headings_list_elements, register_document_relations_lists_elements, build_tree_elements_relations_lists, build_tree_elements_sections_list, build_tree_elements_nodes_list, build_tree_elements_headings_list, register_element_handle_in_sv and register_sv_element_handle_in_sv to tree_elements/build_perl_tree_elements.c. Move get_sv_reader_reader and new_element_from_sv to tree_elements/get_perl_tree_elements.c. Add build_new_base_element to build_perl_info.c to replace the little bit of code still needed in document_tree and in other codes. Move register_document_sections_list_elements to TreeElementConverterXS.xs. * tta/C/main/utils.c (get_check_element_interpreter_refcount): allow check_element_interpreter_refcount to be < 0, such as to avoid refcount error messages to be output if unset_check_element_interpreter_refcount is called. * tta/C/main/document.c (setup_texinfo_main), tta/perl/Texinfo/Document.pm (remove_document_references), tta/perl/Texinfo/ManipulateTree.pm (_element_remove_references) (tree_remove_references): if the environment variable TEXINFO_SILENT_REFCOUNT is set to 1 do not warn if Perl refcounts are not correct. This is not documented because it should only be useful for the tests, in practice, for now, to be able to test Texinfo::Example::ReadDocBook. * tta/perl/Texinfo/Example/TreeElementConverter.pm (_tree_element_xml_numeric_entities_accent): fix duplicate $self in xml_accent call. * tta/perl/XSTexinfo/reader_element/TreeElementConverterXS.xs (global_commands_information_command_list): do not retain a reference on output Perl list. * tta/perl/Texinfo/Example/ReadDocBook.pm (%ignored_block_commands) (conversion_output_begin, _format_comment) (_convert_argument_and_end_line, _convert), tta/perl/Texinfo/Example/TreeElementReadDocBook.pm (%ignored_block_commands, conversion_output_begin, _format_comment) (_convert_argument_and_end_line, _convert): update for new commands related to @documentinfo, removal of enumerate_specification attribute, change in comment Texinfo tree. 2025-11-02 Patrice Dumas * tta/Texinfo/Example/TestReader.pm, tta/Texinfo/Example/TreeElementConverter.pm, tta/Texinfo/Example/TreeElementConverterXS.pm, doc/tta_api/Makefile.am (texi2any_internals_dependencies), tta/perl/Makefile.am (dist_convertmodules_DATA), tta/README, tta/perl/XSTexinfo/reader_element/TreeElementConverterXS.xs (MODULE) (PACKAGE), tta/perl/texi2any.pl (%formats_table): move TestReader.pm, TreeElementConverter.pm and TreeElementConverterXS.pm to Texinfo/Example/. 2025-11-04 Gavin Smith * tta/perl/Texinfo/Convert/LaTeX.pm (convert_math_to_images): Use \setlength to remove space above display environment. This space is provided in the Info file by a blank line, so no extra space is needed in the image. 2025-11-04 Gavin Smith * tta/perl/Texinfo/Convert/LaTeX.pm (convert_math_to_images): Provide 'fleqn' option to \documentclass in order to align contents of @displaymath to the left. Otherwise they can be way too far to the right and even off the edge of the window. 2025-11-04 Gavin Smith * tta/perl/Texinfo/Convert/LaTeX.pm (convert_math_to_images): Reduce DPI of images from 600 to 180. 2025-11-04 Gavin Smith * NEWS: mention INFO_MATH_IMAGES * doc/texinfo.texi (Inserting Math, Info and Plaintext Customization Variables): document INFO_MATH_IMAGES. 2025-11-01 Patrice Dumas * tta/perl/t/z_misc/*.t, tta/perl/texi2any.pl: comment out Data::Dumper related code when Data::Dumper is not actually used. 2025-11-01 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm (_prepare_css): minor change to clarify code. 2025-11-01 Patrice Dumas * tta/perl/Texinfo/ParserNonXS.pm (_end_line): do not use TEST customization variable value in Parser, as it is never set. 2025-11-01 Patrice Dumas * NEWS: document that texi2any keeps input file name leading directory components in messages again. 2025-11-01 Patrice Dumas Use full input file paths in source info for error messages * tta/C/parsetexi/input.c (INPUT, next_text, input_push_file), tta/perl/Texinfo/ParserNonXS.pm (_input_push_file, parse_texi_file) (_next_text): use the full input file path as source info file name. Remove input_file_path firld from INPUT. In Perl, do not have _input_push_file return the directories and file name, instead call fileparse in parse_texi_file. Update callers. Report from Tom Tromey, some analysis by Gavin. 2025-11-01 Patrice Dumas Use simple text for conversion errors representation in tests * tta/perl/t/test_utils.pl (test): use errors_print_details to print conversion errors as simple text instead of Data::Dumper. 2025-11-01 Patrice Dumas Use simple text for parsing and structuring errors in tests * tta/C/main/errors.c (print_source_info_details), tta/C/main/manipulate_tree.c (print_element_details), tta/perl/Texinfo/ManipulateTree.pm (print_element_base), tta/perl/Texinfo/Report.pm (print_source_info_details): move code printing a source info to print_source_info_details and to errors.c or Report.pm. Inline the remaining code from print_element_source_info to print_element_details or print_element_base. Remove print_element_source_info. * tta/perl/Texinfo/Report.pm (_print_error_details) (errors_print_details): add. * tta/perl/t/test_utils.pl (test): use errors_print_details to print errors as simple text instead of Data::Dumper. 2025-10-30 Patrice Dumas * tta/perl/Makefile.tres: update. 2025-10-30 Patrice Dumas * contrib/perldoc-all/GNUmakefile: remove the dist-hook target, which should not be used anymore since the contrib directory is not distributed. 2025-10-30 Patrice Dumas * contrib/perldoc-all/GNUmakefile (clean, maintainer-clean): add. 2025-10-30 Patrice Dumas * contrib/perldoc-all/README: explain that Perl needs to be built to have autogenerated Pod file available. * contrib/perldoc-all/perldoc-all.texi: add @titlepage, remove @setfilename, remove @ifnottex, update urls and comment out obsolete information. 2025-10-30 Patrice Dumas * contrib/perldoc-all/GNUmakefile: use gendocs and gendocs_templates from gnulib directory supposed to be along the texinfo directory, as done in doc/. 2025-10-27 Patrice Dumas * tta/swig/texinfo.i (FORMATTED_ERROR_MESSAGE): do not include swig_error_messages_types.h whole, only FORMATTED_ERROR_MESSAGE and the fields already used in codes. * tta/swig/texinfo.i (valid_documentlanguage): add. * tta/swig/perl/t/20index_sort.t: rename $parser to $swig_parser for the parser generated from the SWIG interface. 2025-10-26 Patrice Dumas * tta/C/swig/swig_interface.c (txi_ext_get_error_messages_list_messages): make extern. * tta/C/swig/swig_parser_api.c (txi_ext_parser_conf_get_INCLUDE_DIRECTORIES): add. * tta/swig/texinfo.i (TXI_EXT_ELEMENT_FORMATTED_ERRORS) (expand_verbatiminclude, destroy_element_formatted_errors): add. 2025-10-26 Patrice Dumas * tta/C/main/convert_utils.c (expand_verbatiminclude) (converter_expand_verbatiminclude), tta/perl/Texinfo/Convert/Utils.pm (expand_verbatiminclude), tta/perl/XSTexinfo/reader_element/TreeElementConverterXS.xs (utils_tree_element_expand_verbatiminclude): change order of arguments, to have more importants arguments first. Update callers. 2025-10-28 Gavin Smith Fix echo area crash * info/display.c (printed_representation): Fix representation of tab when the line would be greater than 255 characters. This fixes a crash in the echo area when holding down tab, for example in "M-x menu-sequence". Report from Aidan . 2025-10-26 Gavin Smith Remove ADD_TRANSLITERATED_REDIRECTION_FILES * tta/data/options_data.txt (ADD_TRANSLITERATED_REDIRECTION_FILES): Remove. * tta/C/convert/convert_html.c (html_node_redirections), * tta/perl/Texinfo/Convert/HTML.pm (_node_redirections): Remove code handling ADD_TRANSLITERATED_REDIRECTION_FILES. * tta/perl/t/html_tests.t (set_add_transliterated_redirection_files): remove test. * NEWS, doc/texinfo.texi (HTML Output Structure Customization): update. Users can get nearly the same effect as this variable by setting TRANSLITERATE_FILE_NAMES. 2025-10-25 Gavin Smith Fix float labels containing _ * doc/texinfo.tex (\dofloat): Fix call to \setref not to expand float label. This prevents premature expansion in case the label contains an underscore. Report and investigation by Andreas Metzler and Hilmar Preuße. 2025-10-18 Patrice Dumas * util/htmlxref.d/Texinfo_GNU.cnf (aspell): remove index.html since the manual is split at section. Report from Eli Zaretskii. 2025-09-28 Patrice Dumas * tta/perl/XSTexinfo/convert/ConvertXS.xs (count_elements_in_filename_type_names), tta/C/convert/html_conversion_state.c: move count_elements_in_filename_type_names definition to ConvertXS.xs since it is only used there. 2025-09-28 Patrice Dumas * doc/texinfo.texi (Syntax Highlighting): use @table @code again and remove a wrong space. * TODO: remove done item on source highlighting. 2025-09-28 Patrice Dumas * tta/C/convert/converter.h, tta/C/convert/html_prepare_converter.c (default_special_unit_varieties): declare default_special_unit_varieties in html_prepare_converter.c now that it is only used in that file. 2025-09-28 Patrice Dumas * tta/C/convert/html_converter_api.c (html_converter_initialize), tta/C/convert/html_prepare_converter.c (html_converter_init_special_unit_varieties) (html_converter_init_special_units_info), tta/perl/XSTexinfo/convert/ConvertXS.xs (html_converter_get_customization_sv), tta/perl/XSTexinfo/convert/get_html_perl_info.c (html_converter_init_special_unit_sv): split html_converter_init_special_unit in two, with html_converter_init_special_unit_varieties that sets up the special units variety names, and html_converter_init_special_units_info that setup special units varieties information. That way, the customization information can be setup after special units variety names have been set up, in html_converter_get_customization_sv. This also avoids the need to access default_special_unit_varieties in get_html_perl_info.c. 2025-09-20 Gavin Smith * TODO: remove done items: @documentinfo, use of for index formatting. 2025-09-12 Patrice Dumas * tta/perl/ext/highlight_syntax.pm (highlight_process): concatenate with language for 'highlight' and 'pygments' instead of using the %l placeholder, for efficiency. 2025-09-18 Gavin Smith * doc/texinfo.texi (Syntax Highlighting): edit * NEWS: edit announcement for HIGHLIGHT_SYNTAX 2025-09-17 Gavin Smith Use %l placeholder in value of HIGHLIGHT_SYNTAX * tta/perl/ext/highlight_syntax.pm (_substitute_language): New function. (highlight_process): Call _substitute_language in order to substitute %l with the "language" for syntax highlighting, rather than postpending the language. 2025-09-12 Patrice Dumas * tta/perl/ext/highlight_syntax.pm (highlight_setup, _get_language): do not map language names. If a mapping is needed, the user could use wrappers and do the mapping in the wrapper. * tta/tests/other/highlight_example.texi, tta/tests/other/list-of-tests: use languages names that do not need to be mapped. 2025-09-12 Patrice Dumas * tta/perl/ext/highlight_syntax.pm (highlight_process): chomp error lines coming from the highlighting program stderr before feeding them to converter_document_error. 2025-09-12 Patrice Dumas * tta/perl/ext/highlight_syntax.pm (_get_language): remove $cmdname argument, get it from the Texinfo tree element. Update callers. * tta/perl/ext/highlight_syntax.pm (%highlighted_cmds): rename %commands and %highlighted_cmds. * tta/perl/ext/highlight_syntax.pm: add comments. 2025-09-12 Patrice Dumas * tta/perl/ext/highlight_syntax.pm (highlight_process): rename @highlighted_commands as @highlighted_commands_names. * tta/perl/ext/highlight_syntax.pm (_add_command_language) (highlight_process): separate better the 'source-highlight' case from the other cases. Indeed, the other cases do not need to collect per-language information. 2025-09-12 Patrice Dumas * tta/perl/ext/highlight_syntax.pm (highlight_process): check earlier that HIGHLIGHT_SYNTAX is set. Put tree elements only in languages 'commands' array. 2025-09-12 Patrice Dumas * tta/perl/ext/highlight_syntax.pm (highlight_process): increase input_languages_counters key value for each collected command. 2025-09-13 Gavin Smith * tta/perl/ext/highlight_syntax.pm (highlight_setup): Correct comment. 2025-09-13 Gavin Smith * tta/perl/ext/highlight_syntax.pm (highlight_setup): Add comment saying what this function does. 2025-09-12 Patrice Dumas HIGHLIGHT_SYNTAX value used as command-line * NEWS, doc/texinfo.texi (Syntax Highlighting) (HTML Customization Variables List), tta/perl/ext/highlight_syntax.pm ($highlighted_languages_list, highlight_setup, _get_language) (highlight_process): make $highlighted_languages_list a reference on a hash, and if undef, do not check the language. If the HIGHLIGHT_SYNTAX value is not a specific program, concatenate the value to the highlighted language name to generate the command-line used for highlighting. Update documentation. 2025-09-10 Patrice Dumas * tta/perl/ext/highlight_syntax.pm (_convert_element): copy and modify contents as an array first. * tta/perl/ext/highlight_syntax.pm (highlight_process): put file argument last on command line. * tta/perl/ext/highlight_syntax.pm: use exists or defined in conditions when the value is not used. Change formatting of functions call code. Change in spacing. 2025-09-07 Patrice Dumas * tta/C/parsetexi/separator.c (handle_close_brace), tta/perl/Texinfo/ParserNonXS.pm (_handle_close_brace): do not reset anchor and namedanchor source_info at closing, the source info should be set where the @-command is. 2025-09-09 Gavin Smith * tta/configure.ac, * tta/m4/txi_libperl_link.m4 (txi_LIBPERL_LINK): Split check for linking against libperl into separate file. 2025-09-09 Gavin Smith * tta/configure.ac, * tta/m4/txi_embedded_perl.m4 (txi_EMBEDDED_PERL): Split check for embedded perl into a separate .m4 file. 2025-09-09 Gavin Smith * tta/configure.ac, * tta/m4/txi_iconv_converts_euc_cn.m4 (txi_ICONV_CONVERTS_EUC_CN): Move code checking if iconv works for EUC-CN character encoding to separate .m4 file. 2025-09-09 Gavin Smith Comments for parts of tta/configure.ac * tta/configure.ac (LIBPERL_LINK): add comment above lengthy section of file explaining that this is only used for SWIG. (PERL_EMBEDDED): add another comment saying when this conditional is used. 2025-09-08 Gavin Smith * doc/texinfo.texi (Command List): fix node reference. from Bruno. 2025-09-07 Patrice Dumas * tta/C/swig/swig_element_types.h (TXI_CM_FLAGS_LIST): add no_paragraph. * tta/C/swig/swig_interface.c (txi_ext_messages_list_messages_number): return 0 if there are no messages. * tta/swig/perl/Makefile.am (SWIG_header_dependencies): add swig/swig_element_types.h. * tta/swig/texinfo.i (block_line_argument_command): add. 2025-09-07 Gavin Smith * NEWS: update now that @maketitle is fully implemented 2025-09-07 Gavin Smith * doc/texinfo.texi (Tips): Remove section about using @value in @copying as this is covered elsewhere in the manual. (@settitle, Preamble): Change link to "@titlepage" node to "Titlepage & Copyright Page". (GNU Sample Texts): Use @maketitle in example. 2025-09-07 Gavin Smith @maketitle in documentation * doc/texinfo.texi (Short Sample Texinfo File, @sp, @page) (@value Example, Overfull hboxes, HTML Output Structure Customization) (HTML Customization Variables List): Update examples to use @maketitle instead of @titlepage. * doc/info-stnd.texi: use @maketitle instead of @titlepage. 2025-09-07 Patrice Dumas * tta/swig/perl/Makefile.am (scripts_test_files, EXTRA_DIST), tta/swig/perl/tests/test_expansion_lines_block/test_expansion_lines_block.texi: new test for macro expansion with empty lines and block command. 2025-09-06 Patrice Dumas * tta/C/swig/swig_interface.c (txi_ext_messages_list_messages_number) (txi_ext_destroy_error_messages_list): handle NULL formatted error messages, as it may easily happen, if there are no error messages, and it is better not to rely on the caller to check that it is not NULL/undef or similar. 2025-09-01 Patrice Dumas * tta/C/Makefile.am (ctexi2any_CPPFLAGS): add PERL_EXTUTILS_EMBED_ccopts to match LDFLAGS. Could be needed on AlmaLinux. Not needed for libraries, probably because libtool already adds the cflags. * tta/C/Makefile.am (libperlembed_libtexinfo_main_la_CPPFLAGS) (libperlembed_libtexinfo_main_la_CFLAGS) (libperlembed_libtexinfo_main_la_LIBADD): use consistent flags with/without Perl embedding. 2025-08-31 Gavin Smith * info/Makefile.am: fix use of Automake variables to install, distribute and clean the correct files under info-hooks-default. 2025-08-31 Patrice Dumas Add a parser 'virtual' object in SWIG interface * tta/C/main/document_types.h (PARSER): add struct in this file to hide it from the SWIG interface. It only holds a parser configuration descriptor. * tta/C/main/parser_conf.c (unregister_parser_conf_descriptor): add. * tta/C/Makefile.am (C_libtexinfo_main_sources), tta/C/swig/swig_parser_api.c (txi_ext_parser, txi_ext_destroy_parser) (txi_ext_parse_*, txi_ext_parser_conf_*), tta/swig/perl/Makefile.am (SWIG_header_dependencies): add an interface for parse_* and parser_conf_* with a constructor and a desstructor and parser in argument, that allows to find associated parser conf and apply conf. * tta/swig/perl/parse_refold.pl, tta/swig/perl/t/*.t, tta/swig/python/test_Texinfo.py, tta/swig/texinfo.i (parse_*) (parser_conf_*): use interface with a parser. 2025-08-31 Patrice Dumas * tta/C/main/parser_conf.c (global_parser_conf, register_conf) (apply_conf), tta/C/parsetexi/conf.c (simple_parser_conf) (reset_parser_conf): do not copy in apply_conf, but replace. For this, make global_parser_conf a pointer. Add simple_parser_conf structure to hold memory for the configurations that do not need to be registered, which global_parser_conf did previously. Update reset_parser_conf. Update code accessing global_parser_conf. 2025-08-31 Patrice Dumas * tta/perl/t/z_misc/same_parser_multiple_files.t, tta/perl/t/z_misc/no_structure_test.t, tta/perl/XSTexinfo/Parsetexi.pm: use exists or defined in conditions when the value is not used. Change formatting of functions call code. 2025-08-31 Patrice Dumas * tta/C/main/utils.c (print_values_list): add, for debugging. 2025-08-30 Patrice Dumas * tta/C/Makefile.am (C_libtexinfo_main_sources), tta/swig/*/Makefile.am (SWIG_include_directories) (SWIG_header_dependencies, Texinfo_la_CPPFLAGS), tta/C/swig/swig_*: move files in C libraries used for the swig interface to their own directory. 2025-08-26 Patrice Dumas * tta/perl/Texinfo/Common.pm, tta/perl/Texinfo/Convert/DocBook.pm: use exists or defined in conditions when the value is not used. Change formatting of functions call code. * tta/perl/Texinfo/Convert/Utils.pm: use exists in conditions when the value is not used. * tta/perl/Texinfo/Convert/HTML.pm: change formatting of functions call code. 2025-08-26 Patrice Dumas * tta/perl/Texinfo/Convert/Info.pm, tta/perl/Texinfo/Convert/Plaintext.pm: use exists or defined in conditions when the value is not used. Change formatting of functions call code. * tta/perl/Texinfo/Convert/Plaintext.pm: always use prototypes. 2025-08-26 Patrice Dumas * tta/perl/Texinfo/Convert/Text.pm: use exists or defined in conditions when the value is not used. Change formatting of functions call code. 2025-08-26 Patrice Dumas @maketitle in LaTeX output * tta/perl/Texinfo/Convert/Utils.pm (get_titlepage_publication_info): directly reuse $document_info. * tta/perl/Texinfo/Convert/LaTeX.pm (_format_title): add based on _convert code. * tta/perl/Texinfo/Convert/LaTeX.pm (_make_title, _convert): format @maketitle. * tta/perl/Makefile.tres, tta/perl/t/latex_tests.t (maketitle_documentinfo_publication): add test. 2025-08-25 Patrice Dumas * tta/C/main/convert_utils.c (new_document_info) (destroy_document_info, get_document_documentinfo) (get_titlepage_publication_info), tta/C/main/document_types.h (DOCUMENT_INFO), tta/perl/Texinfo/Convert/Utils.pm (get_document_documentinfo, get_titlepage_publication_info): add get_document_documentinfo to get the information in @documentinfo, and get_titlepage_publication_info to additionally get @copying and @publication information. * tta/C/convert/format_html.c (format_maketitle) (html_default_format_titlepage), tta/perl/Texinfo/Convert/HTML.pm (_format_maketile, _default_format_titlepage): format maketitle title page in HTML, getting title page information with get_document_documentinfo. * tta/perl/Makefile.am (test_files), tta/perl/t/docbook_tests.t (maketitle_documentinfo_publication), tta/perl/t/html_tests.t (maketitle_documentinfo_publication), tta/perl/t/input_files/maketitle_documentinfo_publication.texi, tta/perl/Makefile.tres: add maketitle_documentinfo_publication.texi, which calls @maketitle, @publication and @documentinfo with several commands. Add tests for HTML and Docbook formatting of document info and title mage with those commands. 2025-08-24 Patrice Dumas Add @documentinfo, @publication, @maketitle in texi2any, preliminary * tta/data/command_data.txt: add maketitle, documentinfo and publication. * tta/C/parsetexi/handle_commands.c (handle_line_command), tta/perl/Texinfo/ParserNonXS.pm (_handle_line_command): allow author to be in documentinfo. * tta/perl/Texinfo/Convert/DocBook.pm (%ignored_block_commands) (conversion_output_begin), tta/C/convert/format_html.c (html_default_format_titlepage, html_convert_maketitle_command) (html_convert_unit_type), tta/C/convert/html_prepare_converter.c (commands_internal_conversion_table), tta/perl/Texinfo/Convert/HTML.pm (%ignored_block_commands, _convert_maketitle_command) (_convert_unit_type, _default_format_titlepage), tta/perl/Texinfo/Convert/Plaintext.pm (%formatted_line_commands, %advance_paragraph_count_commands) (%ignored_commands), tta/perl/Texinfo/Convert/Text.pm (%ignored_block_commands), tta/perl/ext/epub3.pm (epub_finish): basic handling of documentinfo and publication, mainly by ignoring, but also by searching for author and subtitle in documentinfo. Handle maketitle in HTML. The titlepage formatting for maketitle is not yet implemented. * tta/perl/Texinfo/Convert/LaTeX.pm (%ignored_block_commands) (_make_title, _convert, _tableofcontents_after_title) (_begin_document): add _tableofcontents_after_title with code from _begin_document related to table of contents. Do titlepage in _begin_document only if maketitle is not found. Handle maketitle. Add mainmatter and table of contents where maketitle is output. The titlepage formatting for maketitle, expected to be in the _make_title function is not yet implemented. 2025-08-24 Patrice Dumas * tta/C/main/get_perl_info.c (get_sv_option), tta/C/main/txi_config.c (set_option_value): if an integer option is not an integer, set it to 0 if it is the string value is empty, or to 1 if not empty. This mimics Perl. Not exactly the same as comparison won't fail in C, while it will fail in Perl and trigger a warning. 2025-08-24 Patrice Dumas * tta/C/texi2any.c (check_integer_option, main): add check_integer_option that aborts with an error message similar the the one in Perl if an integer option is not an integer. Call for the options that are integer and not obsolete. 2025-08-24 Patrice Dumas * tta/C/convert/format_html.c (contents_inline_element): free table_of_contents when it is the empty string. 2025-08-24 Patrice Dumas * tta/C/main/tree.c (destroy_key_pair_value, destroy_associated_info): split destroy_key_pair_value out of destroy_associated_info to destroy a single key pair value. * tta/C/main/extra.c (get_associated_info_key): if a key pair is reused, call destroy_key_pair_value on the value. 2025-08-24 Patrice Dumas * tta/perl/Texinfo/Convert/DocBook.pm (convert_tree): report a formatting context not setup, with empty lang_stack as a bug. 2025-08-24 Patrice Dumas * tta/perl/Texinfo/Convert/LaTeX.pm (_latex_header): call _push_new_context and call _convert for settitle_tree conversion, instead of calling convert_tree without context. * tta/perl/Texinfo/Convert/LaTeX.pm (convert_tree): report no formatting_context in convert_tree as a bug. 2025-08-24 Patrice Dumas * tta/perl/Texinfo/Convert/LaTeX.pm (output): call _push_new_context explicitly and call _convert. * tta/perl/Texinfo/Convert/LaTeX.pm (convert): reset formatting_context, always call _push_new_context. * tta/perl/Texinfo/Convert/LaTeX.pm (_latex_begin_output): rename $header as $result_text. 2025-08-24 Patrice Dumas * tta/perl/Texinfo/Convert/LaTeX.pm: use exists or defined in conditions when the value is not used. Change formatting of functions call code. DO not use object oriented syntax when calling local scope functions. * tta/perl/Texinfo/Convert/LaTeX.pm (converter_reset): add. * tta/perl/Texinfo/Convert/LaTeX.pm (_prepare_conversion): reset more state keys, in particular those that may not exist at all. * tta/perl/Texinfo/Convert/LaTeX.pm (output): set $self->{'formatting_context'} explicitly. * tta/perl/Texinfo/Convert/LaTeX.pm (_format_heading_command) (_set_custom_headings): rename first_custom_heading as is_first_custom_heading. * tta/perl/Texinfo/Convert/LaTeX.pm (_convert_def_line): rename deftypefnnewline as with_deftypefnnewline. 2025-08-24 Patrice Dumas * tta/perl/texi2any.pl: update comment about memory release. 2025-08-23 Patrice Dumas * doc/texinfo.texi (Global Customization Variables): add more information on setting TEST value, to described that setting TEST can trigger some additional checks and test related features enabling. 2025-08-23 Patrice Dumas * tta/C/texi2any.c (main): rename i as file_index. As in Perl, release memory if TEST > 0 or the processed file is not the last one. * tta/C/texi2any.c (main): set external_module to elt_count_external_module for sort_element_count, to notify that the a Perl module is used, and in particular that document was built to Perl. * tta/C/main/call_document_perl_functions.c (call_document_remove_document_references): check that document hv is non-NULL. It may be NULL if the Texinfo file was not found. * tta/C/main/tree.c (destroy_element): improve refcount check message. 2025-08-23 Patrice Dumas * tta/perl/texi2any.pl ($file_index, $input_files_nr): rename $file_number as $file_index. Set $input_files_nr. Call reset_converter, destroy on converter and on document if the file being processed is not the last one. 2025-08-23 Patrice Dumas * tta/C/structuring_transfo/structuring.c (print_down_menus): do not wrongly redefine the reuse_existing_menu variable when setting it. 2025-08-23 Patrice Dumas * tta/C/parsetexi/handle_commands.c (add_comment_at_end), tta/perl/Texinfo/ParserNonXS.pm (_add_comment_at_end): rename input_comment_text as input_comment_cmd_text and comment_text as comment_cmd_text. Rename q as argument_text. * tta/C/parsetexi/handle_commands.c (add_comment_at_end): free comment_cmd_text. * tta/C/main/output_unit.c (print_output_units_details): free root_command_texi. * tta/C/parsetexi/handle_commands.c (handle_line_command): destroy line_args element if the raw line element is ignored. * tta/C/parsetexi/macro.c (expand_macro_arguments) (expand_linemacro_arguments, handle_macro), tta/C/parsetexi/separator.c (handle_open_brace): add static variables to hold the new line pointer returned by next_text and free them before getting the next line. * tta/C/structuring_transfo/structuring.c (print_down_menus): add a variable set if the existing menu is reused, and use that variable value to decide if menus need to be destroyed. 2025-08-23 Patrice Dumas * tta/C/parsetexi/handle_commands.c (raw_line_command_arg_spaces): leave an fully empty text element on a raw line command as is. Can only happen if there is nothing at all after the command, not even an new line. 2025-08-23 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm: add comment explaining that the overrides without whole output or convert overriding do not work anymore. 2025-08-23 Patrice Dumas * tta/perl/XSTexinfo/convert/get_html_perl_info.c (html_get_no_arg_commands_formatting_sv) (html_get_directions_strings_sv): split html_conversion_initialization_sv in two, html_get_no_arg_commands_formatting_sv and html_get_directions_strings_sv. This code is unused. Remove all the references to html_conversion_initialization_sv from code and comments. 2025-08-23 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm (_run_stage_handlers): rename run_stage_handlers as _run_stage_handlers since it is a local function only and do not call with object oriented syntax. * tta/perl/Texinfo/Convert/HTML.pm (_prepare_converted_output_info): use $self->{'document'} in the whole function. 2025-08-23 Patrice Dumas * tta/C/convert/call_html_perl_function.c (call_stage_handler): do not use document SV found in converter if undef. 2025-08-23 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm (_default_format_element_header): only test if tree_unit_directions exists to determine that there are directions and more than one element. 2025-08-23 Patrice Dumas Remove enumerate_specification extra information from tree * tta/C/main/tree_types.h (AI_KEYS_LIST), tta/C/parsetexi/end_line.c (end_line_starting_block), tta/perl/Texinfo/ParserNonXS.pm (_end_line_starting_block): do not put enumerate_specification extra information in tree. 2025-08-23 Patrice Dumas Do not use enumerate_specification extra information in converters * tta/perl/Texinfo/ParserNonXS.pm (_end_line_starting_block): inverse condition, simplify regex. * tta/C/main/utils.c (enumerate_number_representation) (enumerate_item_representation), tta/C/main/convert_to_text.c (convert_to_text_internal), tta/C/structuring_transfo/structuring.c (sectioning_structure), tta/perl/Texinfo/Common.pm (enumerate_number_representation, enumerate_item_representation), tta/perl/Texinfo/Convert/Plaintext.pm (_convert), tta/perl/Texinfo/Convert/Text.pm (_convert): rename enumerate_item_representation as enumerate_number_representation, and handle malformed specification in enumerate_number_representation. Readd enumerate_item_representation as a function that determines an item tree element enumerate representation by calling enumerate_number_representation and without using enumerate_specification extra information. Update callers. * tta/C/convert/format_html.c (html_convert_enumerate_command), tta/perl/Texinfo/Convert/DocBook.pm (_convert), tta/perl/Texinfo/Convert/HTML.pm (_convert_enumerate_command), tta/perl/Texinfo/Convert/LaTeX.pm (_set_environment_options), tta/perl/Texinfo/Convert/TexinfoMarkup.pm (_convert): use the enumerate arguments to get the @enumerate argument instead of using the enumerate_specification extra information. 2025-08-22 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm: do not use object oriented call for file scope functions. 2025-08-22 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm: use exists in conditions when the value is not used. * tta/perl/init/book.pm: use exists or defined in conditions when the value is not used. Change formatting of functions call code. Sync common parts of book_convert_heading_command with HTML.pm. 2025-08-22 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm: use exists or defined in conditions when the value is not used. Change formatting of functions call code. * tta/perl/Texinfo/Convert/HTML.pm (_parse_htmlxref_files): minor changes in code. * tta/perl/Texinfo/Convert/HTML.pm (converter_initialize): handle undef customization data. 2025-08-22 Patrice Dumas * tta/tests/run_parser_all.sh (check_strxfrm_ok): remove a space in string in condition that can be significant. 2025-08-22 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm: use exists or defined in conditions when the value is not used. Change formatting of functions call code. * tta/perl/Texinfo/Convert/Converter.pm: use exists in conditions. 2025-08-21 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm, tta/perl/init/html32.pm, tta/perl/texi2any.pl: use exists or defined in conditions when the value is not used. Change formatting of functions call code. Use the value of TEXI2HTML customization variable in conditions, not whether it is defined. * tta/perl/texi2any.pl: add comments. 2025-08-21 Patrice Dumas * tta/tests/formatting/list-of-tests: remove setting TEXI2HTML undef, it is never needed. 2025-08-20 Patrice Dumas * tta/perl/texi2any.pl, tta/perl/load_txi_modules.pl: remove the references to the standalone module infrastructure. 2025-08-20 Patrice Dumas * tta/perl/Texinfo/XSLoader.pm ($xs_parser_loaded, XS_parser_loaded) (set_XS_parser_loaded), tta/perl/Texinfo/Parser.pm (BEGIN): add a setter and a getter for the XS Parser being actually loaded. Set in Parser.pm if XS is enabled and init did not return the non-XS package name. * tta/perl/Texinfo/ManipulateTree.pm (_element_remove_references) (tree_remove_references): distinguish tree_remove_references that removes the reference for a whole the, and _element_remove_references that remove recusrively the references for elements except for the tree root. Setup reference Refcounts in tree_remove_references, using XS_parser_loaded. 2025-08-20 Patrice Dumas * tta/perl/Texinfo/ManipulateTree.pm ($destroyed_objects_refcount_text): rename $destroyed_objects_refcount_target as $destroyed_objects_refcount_text. Update $destroyed_objects_refcount_text when $destroyed_objects_refcount changes. 2025-08-20 Patrice Dumas * tta/swig/perl/Makefile.am (perl_texinfo_wrap.c), tta/swig/python/Makefile.am (python_texinfo_wrap.c): expand $< in non-suffix rules for BSD make. 2025-08-20 Patrice Dumas * tta/configure.ac (AM_PATH_PYTHON): set value if not found, and set with_swig_python only if the python interpreter is found. 2025-08-20 Patrice Dumas * tta/C/Makefile.am (noinst_LTLIBRARIES): do not build libcallperl_libtexinfo.la if HAVE_ICONV is not set even of the library do not depend on iconv, as the library is only used as a convenience library for libtexinfo.la, which depends on iconv. 2025-08-20 Patrice Dumas * info/Makefile.am (dist_check_SCRIPTS): make t/config/texinfo/info-hooks/manual-not-found dist_ to have it distributed. 2025-08-19 Patrice Dumas * tta/README, tta/configure.ac (refcounts-checks): remove Devel::Cycle from the modules that should load for refcounts-checks, as it is not needed. Add information in tta/README on how to modify the code to test for cycles. * tta/perl/Texinfo/Convert/Converter.pm ($devel_findref_loading_error) (reset_converter), tta/perl/Texinfo/ManipulateTree.pm ($devel_findref_loading_error, tree_remove_references): remove Devel::FindRef from the modules that should load for refcounts-checks, instead add a runtime check and adapt message. * tta/perl/Texinfo/Convert/Converter.pm ($output_unit_SV_target_count) ($output_unit_object_target_count, reset_converter), tta/perl/Texinfo/ManipulateTree.pm ($destroyed_objects_refcount_target, $element_SV_target_count) (tree_remove_references): modify messages related to refcount checks. 2025-08-19 Patrice Dumas * tta/perl/Texinfo/Document.pm (new_document): remove output_units_lists, get_output_units_lists and register_output_units_lists. It is already done by converters, no point in having two possibilities. Changes in comments. 2025-08-19 Patrice Dumas * tta/perl/Texinfo/Document.pm (_remove_section_relations_relations): remove cycle going through toplevel prev directions. * tta/perl/Texinfo/Document.pm (remove_document_references): reorganize code to separate code that remove cycles and code that remove all the references to elements. 2025-08-19 Patrice Dumas * tta/perl/Texinfo/ParserNonXS.pm (release): delete instead of undefining document associated to the parser. 2025-08-19 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm (converter_destroy): do not call tree_remove_references on no arg commands translated_tree, as there is no check on those trees. * C/convert/call_conversion_perl.c (call_object_converter_perl_release), tta/C/convert/texinfo.c (txi_converter_destroy), tta/perl/Texinfo/Convert/Converter.pm (converter_destroy, converter_perl_release, _XS_destroy, destroy), tta/perl/Texinfo/Convert/HTML.pm (converter_destroy), tta/perl/XSTexinfo/convert/ConvertXS.xs (destroy): remove remove_references argument of converter destroy functions. It is not used anymore, but there should not be a need to readd it, as the converter and all the references on elements it could have had should be released when checks on refcounts are done on the Document tree. Update callers. 2025-08-19 Patrice Dumas * tta/C/convert/call_conversion_perl.c (call_object_reset_converter), tta/C/convert/texinfo.c (txi_converter_reset), tta/perl/Texinfo/Convert/Converter.pm (reset_converter), tta/perl/Texinfo/Convert/HTML.pm (converter_reset): remove the remove_references argument of reset_converter and converter_reset. Update callers. 2025-08-19 Patrice Dumas * tta/C/convert/get_converter_perl_info.c (converter_release_output_units_built), tta/C/main/get_perl_info.c (release_output_units_list_built, release_output_units_lists_built), tta/perl/Texinfo/Convert/Converter.pm (reset_converter), tta/perl/Texinfo/OutputUnits.pm (release_output_units_list), tta/perl/XSTexinfo/convert/ConvertXS.xs (reset_converter), tta/perl/t/test_utils.pl (test), tta/perl/Texinfo/Convert/HTML.pm (converter_reset): in release_output_units_list, always remove associated_unit from elements when releasing output units, it does not make sense to have elements point to released output units. Always remove all references to output units, even if it is not needed to remove cycles. 2025-08-19 Gavin Smith Fix make distcheck * info/Makefile.am: Distribute info-hooks-default/manual-not-found.in instead of info-hooks-default. Look for file in srcdir in rule. Report from Patrice. 2025-08-18 Patrice Dumas Register error messages during destruction, for refcounts warnings * tta/perl/Texinfo/Convert/Converter.pm (destroy), tta/perl/Texinfo/Document.pm (destroy_document): do not undef the reference when destroying some data and removing cycles to prepare for full removal, as the caller may still have some use for the remaining data and methods. In practice to be able to call the method to retrieve error messages messages registered during converter or document destruction after calling the method doing the destruction. * tta/perl/Texinfo/Convert/Converter.pm (reset_converter): pass a debugging warning message when the refcounts are not correct, such that this is visible in the tests. * tta/perl/Texinfo/Convert/HTML.pm (converter_destroy), tta/perl/Texinfo/Document.pm (remove_document_references), tta/perl/Texinfo/ManipulateTree.pm (tree_remove_references): pass a document as check_refcount tree_remove_references argument, and use it to pass a debugging warning message when the refcounts are not correct, such that this is visible in the tests. * tta/C/main/build_perl_info.c (pass_errors_to_hv): add an optional key argument. Update callers. Allow the error messages argument to be NULL. * tta/perl/XSTexinfo/convert/ConvertXS.xs (destroy) (get_converter_errors): if there are still error messages in the C converter data when destroy is called, pass the messages to the Perl converter. Register/reuse the Perl messages lists in get_converter_errors and pass the messages stored in Perl even if the C converter is not found. * tta/perl/XSTexinfo/parser_document/DocumentXS.xs (destroy_document) (document_errors): if there are still error messages in the C document data when destroy_document is called, pass the messages to the Perl Document. Register/reuse the Perl messages lists in document_errors and pass the messages stored in Perl even if the C document is not found. * tta/perl/t/test_utils.pl (convert_to_*, test): do not set the converter errors in convert_to_* functions, call get_converter_errors in test after conversion. * tta/perl/t/test_utils.pl (test): get converter errors after destroying the converter. This is possible thanks to the changes in ConverterXS.xs above. * tta/perl/t/test_utils.pl (test): add a variable to store whether the parsing was successful or not instead of using the tree, such that the tree can be undefined. Convert the tree back to Texinfo earlier on, after the conversions by the other converters. Destroy the document before doing the comparisons and get the errors in document after destroying the document, which is possible thanks to the changes in DocumentXS.xs above. That way, all the errors are gathered and code that does conversion and comparisons are well separated. * tta/C/main/utils.c (interpreter_refcount_error_messages) (set_check_element_interpreter_refcount) (get_check_element_interpreter_refcount), tta/C/main/output_unit.c (destroy_output_unit), tta/C/main/tree.c (destroy_element): add an error messages list to be used with *_check_element_interpreter_refcount, pass it to code setting check_element_interpreter_refcount and codes checking get_check_element_interpreter_refcount. Add warning messages in the error message lists in destroy_element and destroy_output_unit. A separate error messages list is handy because, in general, the refcounts are checked when the structure that unregister the references that could hold the error messages is being destroyed. * tta/C/convert/converter.c (reset_generic_converter), tta/C/convert/texinfo.c (txi_destroy_document), tta/perl/XSTexinfo/parser_document/DocumentXS.xs (destroy_document): handle error messages on refcounts gathered during document destruction and converter reset. Pass to the converter in converter reset, discard in txi_destroy_document, and pass to Perl Document error messages list array in XS destroy_document. 2025-08-18 Patrice Dumas Support for refcounts checks in build system * configure.ac (refcounts-checks), tta/configure.ac (refcounts-checks) (DEFAULT_TEST_LEVEL), tta/defs.in (DEFAULT_TEST_LEVEL), tta/perl/Makefile.am (Texinfo/ModulePath.pm), tta/perl/Texinfo/ModulePath.pm.in ($default_test_level): add --enable-refcounts-checks flag to configure with default detected and set DEFAULT_TEST_LEVEL. * tta/perl/t/test_utils.pl ($default_test_level): use $Texinfo::ModulePath::default_test_level for the default test level. * tta/tests/many_input_files/*.sh, tta/tests/run_parser_all.sh: set TEST customization variable value in calls based on DEFAULT_TEST_LEVEL. 2025-08-18 Patrice Dumas * tta/perl/ext/tex4ht.pm (tex4ht_finish): reset %formats to release references on tree elements. 2025-08-18 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm (converter_reset): reset document_units instead of emptying it as the Converter still needs the content on the list document_units points to. 2025-08-18 Patrice Dumas * tta/perl/Texinfo/Convert/Converter.pm (reset_converter): minor changes in code, avoid using splice to remove array content. * tta/perl/Texinfo/Convert/HTML.pm (converter_reset): empty directly global_units_directions. Empty document_units instead of removing. 2025-08-18 Patrice Dumas * tta/perl/texi2any.pl: reset and destroy converter only if TEST is set. 2025-08-18 Patrice Dumas * tta/perl/XSTexinfo/convert/ConvertXS.xs (reset_converter): elide reset_converter remove_references_sv argument. 2025-08-18 Patrice Dumas * tta/perl/Texinfo/Document.pm (remove_document_references), tta/perl/Texinfo/ManipulateTree.pm (tree_remove_references): change tree_remove_references argument to be check_refcount. 2025-08-17 Patrice Dumas * tta/perl/Texinfo/ParserNonXS.pm (_end_line_misc_line), tta/perl/Texinfo/Transformations.pm (_new_node): call tree_remove_parents on nodes that do not end up in the tree to release them, to have Perl reclaim their memory and avoid references to elements in the tree from discarded tree elements. 2025-08-17 Patrice Dumas * tta/perl/Texinfo/ManipulateTree.pm ($no_XS_objects_refcount) (tree_remove_references): allow a object refcount of the reference minus one if there is XS, but no XS for structure, as the elements added for structure may be Perl only. 2025-08-17 Patrice Dumas * tta/perl/t/test_utils.pl ($default_test_level, test): set TEST in cutomization options based on $default_test_level, or the test. Set TEST in format converter options based on $default_test_level. Set $default_test_level to 2. * tta/perl/t/test_utils.pl (test): set $remove_references based on TEST customization variable value and pass to reset_converter, destroy and destroy_document. If remove_references is set, release the output_units setup by the tests. * tta/perl/t/test_utils.pl (test): release the $tree reference before destroying the document to avoid a last reference on the tree root when checking with C code that there are no references left. 2025-08-17 Patrice Dumas * tta/swig/texinfo.i (%inline): add a txi_ext_inline_ prefix for all the functions defined inline in the SWIG interface file. All the functions defined that way should follow this rule. This is to avoid name clash with Texinfo library functions, including future names. 2025-08-17 Patrice Dumas * tta/swig/texinfo.i (element_print_details): remove implementation, it exists in the library now. 2025-08-17 Patrice Dumas * tta/C/convert/texinfo.c (txi_destroy_document), tta/C/texi2any.c (main): add external_module argument, and call call_document_remove_document_references only if set. * tta/C/main/call_document_perl_functions.c (call_document_remove_document_references): remove check on has_perl_interpreter and document->hv, having call_document_remove_document_references called only if external_module is set should ensure that. * tta/swig/texinfo.i (destroy_document) (txi_ext_inline_destroy_document): add txi_ext_inline_destroy_document to wrap the call to txi_destroy_document. Use a prefix txi_ext_inline_ to disambiguate with library function. 2025-08-17 Patrice Dumas * tta/C/convert/texinfo.c (txi_converter_output, txi_converter_reset): change the arguments order. Update callers. * tta/C/convert/texinfo.c (txi_converter_destroy): add external_module argument and call Perl function only if set. Update caller. * tta/C/convert/call_conversion_perl.c (call_object_reset_converter) (call_object_converter_perl_release): remove the check on self->sv. 2025-08-17 Patrice Dumas * tta/C/convert/build_html_perl_state.c (build_html_formatting_state): do not check if converter->sv, the function is only called in situations where it is set. * tta/C/convert/call_html_perl_function.c (call_latex_convert_to_latex_math): do not check self->sv, as the main program will fail if this function could be called and no Perl interpreter is available. 2025-08-17 Patrice Dumas * tta/C/main/build_perl_info.c (build_output_units_list), tta/perl/XSTexinfo/convert/ConvertXS.xs (get_output_units_lists), tta/perl/XSTexinfo/parser_document/StructuringTransfoXS.xs (split_by_node, split_by_section): add build_output_units_list, based on pass_output_units_list case where there is no array already. Use it where this is the case. * tta/C/main/build_perl_info.c (store_output_units_texinfo_tree): inline pass_output_units_list in store_output_units_texinfo_tree, using also build_output_units_list and remove pass_output_units_list. 2025-08-17 Patrice Dumas * tta/C/main/build_perl_info.c (store_output_units_texinfo_tree): add the converter SV as argument to store_output_units_texinfo_tree to align with other functions. Update callers. 2025-08-17 Patrice Dumas * tta/C/convert/build_html_perl_info.c (html_pass_conversion_initialization): remove condition on converter being non-NULL, which should always be true. 2025-08-17 Patrice Dumas * tta/C/convert/build_html_perl_info.c: remove build_html_global_units_directions and pass_html_global_units_directions. 2025-08-17 Patrice Dumas * tta/C/convert/build_html_perl_info.c (set_document_units_handle), tta/perl/XSTexinfo/convert/ConvertXS.xs (html_output, html_convert): add set_document_units_handle based on html_pass_conversion_output_units code to set "document_units" in a converter to a handle that holds a descriptor only, no units list Perl data. Inline html_pass_conversion_output_units in html_output and html_convert and remove the function. 2025-08-17 Patrice Dumas * tta/C/convert/build_html_perl_info.c (html_pass_conversion_output_units), tta/C/main/build_perl_info.c (store_output_units_texinfo_tree): remove references on output units list arguments. Update callers, which had already the arguments set to 0 only. 2025-08-17 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm (%XS_conversion_overrides), tta/perl/XSTexinfo/convert/ConvertXS.xs: remove XS overrides for _prepare_conversion_units, _prepare_units_directions_files and _prepare_output_units_global_targets that are not called since output and convert are overriden and use html_pass_conversion_output_units and/or store_output_units_texinfo_tree, which interface changed. Remove html_prepare_output_units_global_targets, html_prepare_conversion_units and html_prepare_units_directions_files from XS. 2025-08-17 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm (%XS_conversion_overrides), tta/perl/XSTexinfo/convert/ConvertXS.xs: remove XS overrides for _register_id, _id_is_registered and _get_target that are in functions that are themselves overriden and are not likely to stop being so. Remove html_register_id, html_id_is_registered and html_get_target in the XS interface. * tta/C/convert/build_html_perl_info.c: remove now unused build_html_target. 2025-08-17 Patrice Dumas * tta/C/convert/build_html_perl_info.c (html_pass_conversion_output_units): handle NULL output units lists pointers references in input. * tta/C/main/build_perl_info.c (pass_output_units_list): add an indicator in return value, set if a new array was created. * tta/C/convert/build_html_perl_info.c (store_output_units_texinfo_tree): always use "document_units" value for output units list if it exists, and set it early to the value pointed to by the output units pointer if it is set. Always set "document_units" if there is a converter->hv. Use the return value of pass_output_units_list to determine if the output units list reference on array returned should be stored as "document_units". * tta/perl/XSTexinfo/convert/ConvertXS.xs (html_output, html_convert): do not set output units arrays as they were never used nor released. * tta/perl/XSTexinfo/convert/ConvertXS.xs (get_output_units_lists), tta/perl/Texinfo/Convert/Converter.pm (%XS_overrides) (XS_get_output_units_lists): add an XS interface to get output units lists. * tta/perl/Texinfo/Convert/Converter.pm (converter_reset) (reset_converter): add a converter_reset function that can be redefined by converters. Call in reset_converter. * tta/perl/XSTexinfo/convert/ConvertXS.xs (reset_converter), tta/C/main/get_perl_info.c (release_output_units_list_built), tta/perl/Texinfo/OutputUnits.pm (release_output_units_list), tta/perl/Texinfo/Convert/HTML.pm (converter_reset), tta/perl/Texinfo/OutputUnits.pm (release_output_units_list): if the remove references argument of release_output_units_list_built or release_output_units_list is set, remove all the references to output units that can be found in output units. Set remove_output_units_references argument in reset_converter if TEST > 1, and remove the output units lists stored in converter. Add a converter_reset function in HTML converter, remove global units directions and document_units if TEST > 1 to remove all rteferences to output units. * tta/perl/Texinfo/Convert/Converter.pm (reset_converter): check that the refcounts are the expected ones in pure Perl in case TEST > 1. In that case the references to output units have been removed as much as possible. * tta/C/convert/converter.c (reset_generic_converter), tta/C/main/output_unit.c (destroy_output_unit): if TEST > 1, call set_check_element_interpreter_refcount and unset_check_element_interpreter_refcount in reset_generic_converter. Call get_check_element_interpreter_refcount in destroy_output_unit, and if true, check that the reference to the output unit held in C was the last one. 2025-08-16 Patrice Dumas * tta/perl/Texinfo/Document.pm (remove_document_references): do not remove associated_unit anymore, the references from the output units are now all removed. 2025-08-16 Patrice Dumas * tta/perl/Texinfo/OutputUnits.pm (release_output_units_list), tta/C/main/get_perl_info.c (release_output_units_list_built): remove references to tree elements to avoid cycles going through associated_unit before removing anything from tree elements. 2025-08-16 Patrice Dumas * tta/perl/Texinfo/OutputUnits.pm (%XS_overrides), tta/perl/XSTexinfo/parser_document/StructuringTransfoXS.xs: remove rebuild_output_units, it is unused and it would be best to think again when a similar function is needed. 2025-08-16 Patrice Dumas add commented out code and text about references to output units 2025-08-16 Patrice Dumas * tta/C/convert/converter.c (free_generic_converter), tta/C/main/output_unit.c (destroy_output_unit): add code showing the refcounts after release, for debugging, not executed. 2025-08-16 Patrice Dumas * tta/perl/Texinfo/Convert/Converter.pm (converter_perl_release): delete 'output_units_lists', to allow for checks of cycles. * tta/C/main/get_perl_info.c (release_output_units_list_built): delete directions to be more like Perl code. 2025-08-16 Patrice Dumas * tta/C/main/build_perl_info.c (store_output_units_texinfo_tree): transfer the reference on the output units list to the converter hash "document_units". 2025-08-16 Patrice Dumas * tta/C/convert/texinfo.c (txi_destroy_document), tta/perl/XSTexinfo/parser_document/DocumentXS.xs (destroy_document): use a variable to avoid accessing document after being freed. Use TEST > 1 for txi_destroy_document too. 2025-08-16 Patrice Dumas * tta/perl/XSTexinfo/parser_document/DocumentXS.xs (indices_sort_strings): setup a new reference with newSVsv when retrieving from the hash. Do not retain an additional reference on returned SV. 2025-08-16 Patrice Dumas * tta/perl/XSTexinfo/parser_document/DocumentXS.xs (document_errors): do not retain a reference on returned SV. 2025-08-16 Patrice Dumas * tta/C/main/build_perl_info.c (pass_errors_to_hv), tta/perl/XSTexinfo/parser_document/Parsetexi.xs (parse_texi_line): create AV and store if not found. Remove the corresponding code from pass_document_parser_errors_to_parser_sv. Inline pass_document_parser_errors_to_parser_sv and remove. * tta/perl/XSTexinfo/parser_document/DocumentXS.xs (document_errors): make sure that the error messages passed to pass_errors_to_hv is not NULL. Simplify code. * tta/perl/XSTexinfo/parser_document/Parsetexi.xs (errors): simplify. * tta/perl/t/z_misc/test_parse_texi_line.t (test_line): fix return values of errors(). 2025-08-16 Patrice Dumas * tta/perl/Texinfo/Document.pm (errors), tta/perl/Texinfo/Convert/Converter.pm (merge_converter_error_messages_lists_noxs): use splice to get array content and empty the array at the same time. 2025-08-16 Patrice Dumas * tta/C/main/build_perl_info.c (pass_errors, pass_errors_to_hv), tta/perl/XSTexinfo/convert/ConvertXS.xs (get_converter_errors) (text_convert_tree), tta/perl/XSTexinfo/parser_document/DocumentXS.xs (document_parser_errors): rename build_errors as pass_errors and get the AV as argument. Update callers. Use in pass_errors_to_hv. * tta/perl/Texinfo/ParserNonXS.pm (parse_texi_line, errors): use splice to empty arrays when passing errors. Check if 'error_messages' exists by calling exists. 2025-08-16 Patrice Dumas * tta/C/main/build_perl_info.c (store_extra_additional_info): rename store_additional_info as store_extra_additional_info, remove key argument, hardocde "extra". Rename info_hv as extra_hv. Update caller. * tta/C/main/build_perl_info.c (pass_source_info_hash): rename build_source_info_hash as pass_source_info_hash. * tta/C/main/build_perl_info.c (element_to_perl_hash): do not reuse intermediary sv variable. 2025-08-16 Patrice Dumas * tta/C/main/build_perl_info.c (build_element_attribute) (store_additional_info): have build_associated_info return nr_info instad of using a pointer. 2025-08-16 Patrice Dumas * tta/C/main/build_perl_info.c (store_additional_info): use more straightforward code, creating the HV without sv_2mortal but using SvREFCNT_dec if it remains empty should be released. 2025-08-16 Patrice Dumas * tta/C/main/build_perl_info.c (setup_info_hv, store_extra_flags): do not retain a superfluous reference. 2025-08-16 Patrice Dumas * tta/perl/Texinfo/Document.pm, tta/perl/Texinfo/ManipulateTree.pm (_print_tree_elements_ref): move _print_tree_elements_ref to ManipulateTree.pm and add refcounts. 2025-08-16 Patrice Dumas * tta/perl/Texinfo/ManipulateTree.pm (tree_remove_references): do not show any message for the tree root element. * tta/perl/Texinfo/Document.pm (remove_document_references): no special handling of tree root. 2025-08-16 Patrice Dumas * tta/perl/Texinfo/Convert/Converter.pm (sort_element_counts), tta/perl/texi2any.pl: register output units created in sort_element_counts. Call reset_converter on element counts converter. 2025-08-16 Patrice Dumas * tta/perl/Texinfo/Convert/TextContent.pm: use exists or defined conditions when the value is not used. Change formatting of functions call code. 2025-08-15 Gavin Smith * info/makedoc.c: Do not #include "window.h" in generated doc.c, as this appears only to be needed in order to indirectly include doc.h. Include doc.h directly. * info/window.h: Do not #include "doc.h" as it is not needed for the definitions in this file. * info/session.h: #include "doc.h". 2025-08-15 Gavin Smith * info/infodoc.c (pretty_keyseq): Declare argument as pointer to const int. 2025-08-15 Gavin Smith * info/display.c (printed_representation): Declare return value as const. Remove comment saying return value is not to be freed as this is now evident from the type of the return value. 2025-08-15 Gavin Smith * info/terminal.c (terminal_put_text, terminal_put_text_hook), (terminal_write_chars, terminal_write_chars_hook): Declare first parameter as const char *. 2025-08-15 Gavin Smith * info/dir.c (get_dir_node), * info/nodes.c (info_get_node): Remove instructions on freeing return value from comment. Simply calling 'free_node' should be enough. 2025-08-15 Patrice Dumas Add check of released refcounts to Perl object in C if TEST > 2 * tta/C/main/utils.c (set_check_element_interpreter_refcount) (unset_check_element_interpreter_refcount) (get_check_element_interpreter_refcount): add functions to set/unset/get an indicator that signals whether all the references except the one hold by C code have been released and messages should be shown. * tta/C/convert/texinfo.c (txi_destroy_document), tta/perl/XSTexinfo/parser_document/DocumentXS.xs (destroy_document): if the customization variable TEST is > 2, call set_check_element_interpreter_refcount and unset_check_element_interpreter_refcount before and after destroy_document to have messages shown. * tta/C/main/tree.c (destroy_element): call get_check_element_interpreter_refcount, and if true, show the Perl object which still have a refcount after having been released in C, and in Perl. 2025-08-15 Patrice Dumas * tta/perl/Texinfo/Convert/Converter.pm (destroy): fix the call of converter_perl_release. * tta/perl/Texinfo/Convert/Converter.pm (converter_destroy): do not check the number of references for the translated_tree elements, as they are not in the same situation as regular tree elements. 2025-08-15 Gavin Smith * info/nodes.c (free_node): remove check that either N_IsInternal or N_Replica is set. 2025-08-15 Patrice Dumas * tta/perl/Texinfo/Convert/Converter.pm (float_name_caption): revert copying the element before using it in translation, now that the part of the tree corresponding to the translation do not have parent anymore and is removed automatically. 2025-08-15 Patrice Dumas Remove parents in translation trees * tta/C/main/manipulate_tree.c (tree_remove_parents): implement in C. * tta/C/main/translations.c (gdt_tree), tta/perl/Texinfo/Translations.pm (gdt): remove parents in translated string tree, to avoid cycles such that this part of the tree is destroyed as soon as the tree root is out of scope (in Perl). 2025-08-15 Patrice Dumas * tta/perl/Texinfo/OutputUnits.pm (release_output_units_list): fix call. 2025-08-15 Patrice Dumas /exis * tta/perl/Texinfo/ParserNonXS.pm (_rearrange_tree_beginning): merge _add_preamble_before_content in _rearrange_tree_beginning and remove. * tta/perl/Texinfo/ParserNonXS.pm (_rearrange_tree_beginning), tta/C/parsetexi/parser.c (rearrange_tree_beginning): redo a different implementation that determine indices and then splice the contents. Do not take information from the global setfilename command, in case there would be more than one. In C, add parents only if there were parents to begin with as in Perl. 2025-08-15 Patrice Dumas * tta/perl/Texinfo/ParserNonXS.pm (_parse_texi): determine the tree root by going through the current element parent, as in C. * tta/C/parsetexi/parser.c (parse_texi), tta/perl/Texinfo/ParserNonXS.pm (_parse_texi): remove unused root argument. Update callers. * tta/perl/Texinfo/ParserNonXS.pm (_setup_document_root_and_before_node_section): return $before_node_section only. Update callers. * tta/perl/Texinfo/Document.pm (_print_tree_elements_ref): print more information. 2025-08-15 Patrice Dumas Check unexpected references to tree elements if TEST > 1 * configure.ac: also check 'use Devel::Peek' (module in Perl core since long). We only need Devel::Peek for debugging, so a runtime load would have been better. However, the function used does not seems to work correctly if the module is loaded with require, but works if loaded with use. * tta/perl/Texinfo/ManipulateTree.pm (tree_remove_references), tta/perl/Texinfo/Convert/HTML.pm (converter_destroy), tta/perl/Texinfo/Document.pm (remove_document_references): add a test level argument for tree_remove_references and check references only if > 2. Set this argument to the TEST customization variable value in callers. * tta/perl/Texinfo/Document.pm (remove_document_references): remove the tree variable before calling tree_remove_references, such that the reference count for the tree root element is the same as the other elements reference count. * tta/perl/Texinfo/OutputUnits.pm (release_output_units_list): undef and directions for simpler and hopefully more efficient code. Also more similar to C code. 2025-08-15 Patrice Dumas * tta/C/main/convert_utils.c (table_item_content_tree), tta/perl/Texinfo/Convert/Converter.pm (table_item_content_tree_noxs), tta/perl/Texinfo/Convert/TreeElementConverter.pm (tree_element_table_item_content_tree): do not set parents in the returned tree, such that there is no cycle and Perl can release the elements as soon as they are out of scope. 2025-08-14 Patrice Dumas * tta/perl/Texinfo/Convert/Converter.pm: use exists or defined in conditions when the value is not used. Change formatting of functions call code. 2025-08-15 Gavin Smith Review use of N_IsInternal flag. * info/nodes.c (internal_info_node_p): Remove function. It is simple enough that it may as well be inlined into calling sites. (free_node): Comment updated. * info/session-cmd.c (forward_move_node_structure, backward_move_node_structure): Also make an exception for "dir" nodes. N_IsInternal still exists but is not used for memory allocation purposes. It is used for minor user-visible behaviour such as tiling windows, and as an optimisation when searching through lists of nodes. 2025-08-15 Gavin Smith * info/session-cmd.c (info_split_window): Check N_Replica flag when deciding whether to duplicate internal data structures. 2025-08-15 Gavin Smith * info/dir.c (get_dir_node), * info/man.c (get_manpage_node): Abbreviate code by calling replicate_node. 2025-08-15 Gavin Smith * info/nodes.c (copy_node, replicate_node): Rename. Set N_Replica flag on result. Do not do anything with the N_IsInternal flag. * info/session-cmd.c (info_follow_menus): Call replicate_node on starting node. 2025-08-15 Gavin Smith N_Replica flag * info/nodes.h (N_Replica): Add flag for NODE.flags * info/dir.c (get_dir_node), * info/nodes.c (info_node_of_tag_ext), * info/man.c (get_manpage_node): Set N_Replica flag. * info/nodes.c (free_node): Check N_Replica instead of N_IsInternal when deciding whether to free internal structures. The purpose of this flag is intended to be more clear than that of N_IsInternal. Some nodes like the "dir" node are generated by Info, but do not have the "internal" flag on as there is another reference to the storage for the node. 2025-08-15 Gavin Smith free_node instead of free * info/session-cmd.c (dump_node_to_stream): Consistently call 'free_node' instead of 'free' on NODE object. It shouuld not make a difference as the node was returned by info_get_node_of_file_buffer and is a replica of an object held in the file buffer data structures, but it should be clearer that the code is correct for somebody reading it. 2025-08-15 Gavin Smith * info/nodes.c (free_history_node, free_node): rename. * info/nodes.c (copy_history_node, copy_node): rename. 2025-08-15 Gavin Smith * info/nodemenu.c (select_visited_node): Call free_history_node instead of free. This fixes a memory leak. 2025-08-14 Gavin Smith * info/scan.c, info/nodes.c (free_history_node, copy_history_node): Move to nodes.c. 2025-08-14 Patrice Dumas * tta/perl/Texinfo/Convert/DocBook.pm: use exists or defined in conditions when the value is not used. Change formatting of functions call code. 2025-08-14 Patrice Dumas * tta/C/main/output_unit.c (output_units_print_details): add, for debugging. 2025-08-14 Patrice Dumas Release output units in converter reset, not in document destroy * tta/perl/Texinfo/Document.pm, tta/perl/Texinfo/OutputUnits.pm (release_output_units_list): move _remove_output_units_directions and _remove_output_units_references to OutputUnits.pm as release_output_units_list. * tta/perl/Texinfo/Convert/Converter.pm (get_output_units_lists) (register_output_units_lists): add registering output units to Perl converter. * tta/C/convert/get_converter_perl_info.c (converter_release_output_units_built), tta/C/main/get_perl_info.c (release_output_units_list_built, release_output_units_lists_built): add C functions to be used with XS to release Perl references for the output units lists that are kept in C doing the same as release_output_units_list. * tta/perl/XSTexinfo/convert/ConvertXS.xs (reset_converter), tta/perl/texi2any.pl, tta/perl/Texinfo/Convert/Converter.pm (%XS_overrides, _XS_reset_converter, reset_converter), tta/perl/Texinfo/Convert/HTML.pm (_prepare_conversion_units), tta/perl/Texinfo/Convert/Info.pm (output), tta/perl/Texinfo/Convert/Plaintext.pm (convert, output), tta/perl/Texinfo/Document.pm (remove_document_references): add _XS_reset_converter and modify reset_converter to always have both Perl and XS run. Add remove_references argument to reset_converter. Release output units in converters reset, not in document destroy. Register output units in Perl in converter, not in document. * tta/C/convert/call_conversion_perl.c (call_object_reset_converter), tta/C/convert/texinfo.c (txi_converter_reset), tta/C/texi2any.c (main): add call_object_reset_converter and update txi_converter_reset to release output units in converters reset, not in document destroy. * tta/C/convert/texinfo.c (txi_converter_destroy): always call call_object_converter_perl_release to match with Perl. * tta/perl/Texinfo/ManipulateTree.pm ($destroyed_objects_refcount): handle automatically the difference in object refcount with XS and without (one more reference with XS). 2025-08-14 Patrice Dumas * tta/perl/XSTexinfo/convert/ConvertXS.xs (get_converter_indices_sorted_by_index) (get_converter_indices_sorted_by_letter): relinquish the reference to index_entries_by_letter_hv to the caller. Use newSVsv instead of SvREFCNT_inc. Change in spacing, remove an intermediary variable. 2025-08-14 Patrice Dumas * tta/perl/Texinfo/Convert/Info.pm (output), tta/perl/Texinfo/Convert/Plaintext.pm (conversion_initialization) (_convert): do not set elements_images key value at all if there are no elements_images. * tta/perl/Texinfo/Convert/Plaintext.pm (converter_destroy): remove elements_images. * tta/perl/Texinfo/Convert/Plaintext.pm (%command_style_map): use a different hash for commands style character than %style_map. * tta/perl/Texinfo/Convert/Plaintext.pm: use exists or defined in conditions when the value is not used. Change formatting of functions call code. 2025-08-13 Gavin Smith * info/scan.c (copy_history_node): New function. * info/session-cmd.c (info_follow_menus): Do not free first argument and declare as const. Use copy_history_node to get a NODE to start with. * info/info.c (add_initial_nodes): Update. This means we can avoid calling info_get_node three times for the same node. 2025-08-13 Gavin Smith Prefer initial node for command-line index lookup * info/indices.c (index_lookup_from_node): New function, based on 'look_in_indices'. * info/info.c (add_initial_nodes): Call index_lookup_from_node. 2025-08-13 Patrice Dumas * tta/C/main/build_perl_info.c (build_document): get ownership of the reference released when the C document is destroyed before destroying the document. 2025-08-12 Patrice Dumas * tta/perl/Texinfo/Translations.pm: change formatting of functions call code. Use exists or defined in conditions when the value is not used. 2025-08-12 Patrice Dumas * tta/perl/Texinfo/Convert/Converter.pm (float_type_number) (float_name_caption), tta/perl/Texinfo/Convert/Info.pm (format_ref), tta/perl/Texinfo/Convert/Plaintext.pm (format_ref, _convert): change formatting of functions call code. Use exists or defined in conditions when the value is not used. Check for contents in format_ref. 2025-08-12 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm: change formatting of functions call code. * tta/perl/Texinfo/Convert/HTML.pm: use exists or defined in conditions when the value is not used. 2025-08-12 Patrice Dumas * tta/perl/Texinfo/Convert/TreeElementConverter.pm (_tree_element_xml_numeric_entities_accent, tree_element_xml_accents): remove _tree_element_xml_accent now that it is the same as the Texinfo::Convert::Converter function. 2025-08-12 Patrice Dumas * tta/C/main/unicode.c (unicode_accent), tta/perl/Texinfo/Convert/Unicode.pm (unicode_accent), tta/perl/Texinfo/Convert/TreeElementConverter.pm (_tree_element_unicode_accent): add index in accent stack and accent stack as arguments. Update callers. * tta/perl/Texinfo/Convert/Unicode.pm (unicode_accent), tta/C/main/unicode.c (unicode_accent), tta/perl/Texinfo/Convert/Converter.pm (xml_accent), tta/perl/Texinfo/Convert/HTML.pm (_accent_entities_html_accent), tta/perl/Texinfo/Convert/TreeElementConverter.pm (_tree_element_unicode_accent, _tree_element_xml_accent): use position in accent stack instead of parent information to determine if dotless could be composed with the parent accent command. 2025-08-12 Patrice Dumas * tta/C/main/convert_utils.c, tta/C/main/utils.c (find_innermost_accent_contents), tta/perl/Texinfo/Common.pm (find_innermost_accent_contents), tta/perl/Texinfo/Convert/Utils.pm: move find_innermost_accent_contents to Texinfo::Common and to utils.c, now that it is used in conversion to identifiers code. 2025-08-12 Patrice Dumas * tta/perl/Texinfo/Convert/Utils.pm: change formatting of functions call code. * tta/perl/Texinfo/Convert/Utils.pm: use exists or defined in conditions when the value is not used. 2025-08-12 Patrice Dumas * tta/C/main/node_name_normalization.c (convert_to_normalized_internal), tta/perl/Texinfo/Convert/NodeNameNormalization.pm (_convert): call find_innermost_accent_contents and encoded_accents to format an accent. 2025-08-12 Patrice Dumas * tta/perl/Texinfo/Convert/NodeNameNormalization.pm: change formatting of functions call code. * tta/perl/Texinfo/Convert/NodeNameNormalization.pm: use exists or defined in conditions when the value is not used. 2025-08-12 Patrice Dumas * tta/perl/Texinfo/Convert/Converter.pm (convert_accents), tta/perl/Texinfo/Convert/TreeElementConverter.pm (_tree_element_format_unicode_accents_stack) (_tree_element_format_eight_bit_accents_stack) (tree_element_convert_accents), tta/perl/Texinfo/Convert/Unicode.pm (_format_unicode_accents_stack, _format_eight_bit_accents_stack): change the implementation to be more like C code implementation. * tta/C/convert/converter.c (convert_accents), tta/C/main/convert_to_text.c (ascii_accents_internal), tta/C/main/unicode.c (format_eight_bit_accents_stack) (format_unicode_accents_stack_internal), tta/perl/Texinfo/Convert/Converter.pm (convert_accents), tta/perl/Texinfo/Convert/TexinfoMarkup.pm (_convert), tta/perl/Texinfo/Convert/TreeElementConverter.pm (_tree_element_format_unicode_accents_stack) (_tree_element_format_eight_bit_accents_stack) (tree_element_convert_accents), tta/perl/Texinfo/Convert/Unicode.pm (_format_unicode_accents_stack, _format_eight_bit_accents_stack): pass accent stack and position in stack to accent formatting functions. Update calls and prototypes. 2025-08-12 Patrice Dumas * tta/C/convert/html_prepare_converter.c (html_format_setup), tta/perl/Texinfo/Convert/HTML.pm (%html_default_commands_args): no argument formatting for accent commands. * tta/perl/Texinfo/Convert/HTML.pm (_convert): remove a condition that is always true. 2025-08-12 Patrice Dumas * tta/C/convert/format_html.c (html_convert_preformatted_type), tta/perl/Texinfo/Convert/HTML.pm (_convert_preformatted_type): remove condition on parent being def*, it cannot happen anymore, now there is an inter_def_item container. * tta/C/main/convert_utils.c (expand_verbatiminclude), tta/perl/Texinfo/Convert/HTML.pm (_convert_quotation_command), tta/perl/Texinfo/Convert/Utils.pm (expand_verbatiminclude): do not generate a parent for element not originally in tree. * tta/perl/Texinfo/Convert/HTML.pm (_convert): use exists or defined when the value is not useful. 2025-08-12 Gavin Smith * doc/info-stnd.texi (Hooks): Clarify that argument to hook may not always be the name of a manual. 2025-08-12 Gavin Smith * doc/texinfo.texi (Installing Dir Entries): Say a bit more about why you would have multiple @direntry's. 2025-08-12 Gavin Smith * info/info-hooks-default/manual-not-found.in: Check for variables set in data file and use them for the URL locations. * info/info-hooks-default/gnu-manuals-locations.dat: Use variables to abbreviate the file. 2025-08-12 Gavin Smith * info/info-hooks-default/manual-not-found.in, info/Makefile.am: add message in generated file saying that it was generated. 2025-08-12 Gavin Smith * configure.ac: run AC_PROG_AWK explicitly to make sure that @AWK@ is set (although it seemed to be set anyway). 2025-08-12 Gavin Smith * info/info-hooks-default/manual-not-found, * info/info-hooks-default/manual-not-found.in: Rename. Generate the former from the latter by substituting the value of @AWK@ found by configure. 2025-08-12 Gavin Smith * info/run-external.c (get_output_from_program): if couldn't exec, then exit subprocess with EXIT_FAILURE rather than EXIT_SUCCESS. * info/configfiles.c (run_info_hook) : report exit status of hook. 2025-08-12 Gavin Smith * info/info-hooks-default/manual-not-found: avoid printing to stderr as Info can print its own messages. replace perl script with awk as awk will be more portable. 2025-08-11 Patrice Dumas * tta/swig/perl/Makefile.am (nodist_perllib_DATA) (archlib_LTLIBRARIES, TESTS), tta/swig/python/Makefile.am (nodist_python_PYTHON, pyexec_LTLIBRARIES): do modules only if HAVE_ICONV is set, as otherwise there is no libtexinfo. 2025-08-11 Patrice Dumas * tta/C/main/build_perl_info.c (build_minimal_document): move code. * tta/C/main/build_perl_info.c (fill_document_hv, build_document): move code related to no_store and setting descriptors in Perl data out of fill_document_hv to build_document. 2025-08-11 Patrice Dumas * tta/C/convert/build_html_perl_info.c, tta/C/convert/build_html_perl_state.c, tta/C/convert/get_converter_perl_info.c, tta/C/main/get_perl_info.c: use newSVsv instead of SvREFCNT_inc. * tta/C/convert/call_conversion_perl.c, tta/C/convert/call_html_perl_function.c: reorganize code to make clearer that the calls to SvREFCNT_inc are associated to subroutine call. Add casts. 2025-08-11 Patrice Dumas * tta/C/main/build_perl_info.c (store_document_texinfo_tree) (store_output_units_texinfo_tree) (store_document_tree_output_units, document_tree): do not return a reference to the tree. Update document_tree to find the reference to the tree in document->tree->sv. * tta/C/main/build_perl_info.c (document_tree): simplify code. 2025-08-12 Gavin Smith * doc/info-stnd.texi (Custom Key Bindings): Update to reflect the fact that pkgdatadir is now also checked. (Hooks): mention default hook 2025-08-11 Gavin Smith * info/t/config/texinfo/info-hooks/manual-not-found: Add dummy file to stop an installed hook from running. 2025-08-11 Gavin Smith * info/Makefile.am: List info-hooks-default/manual-not-found in "SCRIPTS" and not "DATA" so that it will be installed with executable permissions. 2025-08-11 Gavin Smith * info/configfiles.c (locate_init_file_internal): Also check under $pkgdatadir (i.e., usually /usr/share/texinfo). * info/Makefile.am (AM_CFLAGS): Propagate value of $pkgdatadir. 2025-08-11 Gavin Smith * info/configfiles.c (locate_init_file): Report on attempts to find init file with debug macro (at level "-x 1"). (run_info_hook): Use "-x 1" level rather than "-x 3". 2025-08-11 Gavin Smith * doc/info-stnd.texi (Invoking Info): Index all command line options multiple times if they have synonyms, with each synonym appearing first in the index entry text. This is for ease of lookup of short options. 2025-08-11 Gavin Smith * info/session.c, info/info.c (info_debug): move to info.c. * info/session.h, info/info.h (debug): move to info.h. * info/info.c (get_initial_file), * info/configfiles.c (run_info_hook): output debug message in run_info_hook, using name of the hook as a variable. 2025-08-11 Gavin Smith * info/info-hooks-example/gnu-manuals-locations.dat, info/info-hooks-default/gnu-manuals-locations.dat, info/info-hooks-example/manual-not-found, info/info-hooks-default/manual-not-found: Rename subdirectory to info-hooks-default. Install files by default (not found by info yet). 2025-08-11 Gavin Smith * info/info-hooks-example/manual-not-found, * info/info-hooks-example/gnu-manuals-locations.dat: Add copyright notice. 2025-08-11 Gavin Smith Add further ALTIMP dependencies * tta/perl/Texinfo/Convert/Converter.pm, * tta/perl/Texinfo/Convert/HTML.pm, * tta/perl/Texinfo/Convert/PlainTexinfo.pm, * tta/perl/Texinfo/Convert/Texinfo.pm, * tta/perl/Texinfo/Convert/Text.pm, * tta/perl/Texinfo/Convert/Utils.pm, * tta/perl/XSTexinfo/convert/ConvertXS.xs: Add ALTIMP lines. (No changes needed to *.c files as these already referenced the corresponding Perl modules.) 2025-08-11 Gavin Smith Add ALTIMP comments to reference alternative implementation files * tta/C/main/document.c, * tta/C/parsetexi/errors_parser.c, * tta/C/texi2any.c, * tta/perl/texi2any.pl, * tta/perl/Texinfo/Document.pm, * tta/perl/Texinfo/DocumentXS.pm, * tta/perl/Texinfo/Indices.pm, * tta/perl/Texinfo/IndicesXS.pm, * tta/perl/Texinfo/ManipulateTree.pm, * tta/perl/Texinfo/OutputUnits.pm, * tta/perl/Texinfo/ParserNonXS.pm, * tta/perl/Texinfo/Parser.pm, * tta/perl/Texinfo/ReaderNonXS.pm, * tta/perl/Texinfo/Reader.pm, * tta/perl/Texinfo/Report.pm, * tta/perl/Texinfo/StructTransfXS.pm, * tta/perl/Texinfo/Structuring.pm, * tta/perl/Texinfo/Transformations.pm, * tta/perl/Texinfo/Translations.pm, * tta/perl/Texinfo/TreeElementNonXS.pm, * tta/perl/Texinfo/TreeElement.pm, * tta/perl/XSTexinfo/parser_document/DocumentXS.xs, * tta/perl/XSTexinfo/parser_document/IndicesXS.xs, * tta/perl/XSTexinfo/parser_document/StructuringTransfoXS.xs, * tta/perl/XSTexinfo/reader_element/ReaderXS.xs, * tta/perl/XSTexinfo/reader_element/TreeElementXS.xs: For .pl and .pm files under tta/perl, add comments referencing other relevant source codes with parts of alternative implementations in C. This is so someone updating the source code can be aware they exist. * tta/README: explain ALTIMP comments 2025-08-11 Gavin Smith * tta/README: Add note re Perl/C/XS code maintenance dependency 2025-08-11 Gavin Smith * README-hacking, tta/README: move information about running uninstalled program into tta/README. Add some headings in the latter file. 2025-08-11 Patrice Dumas * tta/C/main/build_perl_info.c (BUILD_PERL_DOCUMENT_ITEM) (BUILD_PERL_DOCUMENT_LIST): change the code to duplicate the returned reference. Simplify code. * tta/C/main/build_perl_info.c (document_global_information): rearrange code. * tta/C/main/build_perl_info.c (setup_output_units_handler) (html_build_button): avoid retaining superfluous references. * tta/C/main/build_perl_info.c (html_build_buttons_specification): duplicate the returned reference instead of increasing reference count. 2025-08-11 Patrice Dumas * tta/C/main/build_perl_info.c (build_perl_section_directions) (build_perl_section_relations_array, build_section_relations) (build_sectioning_root): Have build_perl_section_directions and build_perl_section_relations_array return HV and AV. Do not keep a reference in build_section_relations and build_sectioning_root. * tta/C/main/build_perl_info.c (build_tree_elements_relations_lists) (store_document_texinfo_tree): do not keep duperfluous references. * tta/C/main/build_perl_info.c (store_document_texinfo_tree): duplicate returned reference. * tta/C/main/build_perl_info.c (store_output_units_texinfo_tree): use newSVsv instead of SvREFCNT_inc. * tta/C/main/build_perl_info.c (pass_global_info) (build_minimal_document, fill_document_hv) (document_global_information): rename build_global_info as pass_global_info, and have pass_global_info use an HV in argument. Have build_minimal_document and fill_document_hv create the HV before calling pass_global_info. Modify document_global_information such that the reuse of global info hash is done in this function before calling pass_global_info. Simplify code based on document->hv necessarily being set. 2025-08-11 Patrice Dumas * tta/C/convert/build_html_perl_state.c, tta/C/convert/call_html_perl_function.c, tta/C/main/build_perl_info.c, tta/perl/XSTexinfo/parser_document/DocumentXS.xs, tta/perl/XSTexinfo/parser_document/StructuringTransfoXS.xs, tta/perl/XSTexinfo/reader_element/TreeElementConverterXS.xs, tta/perl/XSTexinfo/reader_element/TreeElementXS.xs: use newSVsv instead of SvREFHVCNT_inc everywhere. It is better to have independent references, and additionaly SvREFHVCNT_inc leads to unreleased references as the added SV reference prevents removal of an HV reference. 2025-08-11 Patrice Dumas * tta/C/main/build_perl_info.c (build_indices_sort_strings) (build_sorted_indices_by_index, build_sorted_indices_by_letter) (build_convert_text_options, pass_document_sv_to_converter_sv): use newSVsv instead of SvREFCNT_inc to obtain independent reference on the same object instead of reusing the same reference. 2025-08-11 Patrice Dumas * tta/C/main/build_perl_info.c (build_filenames, build_file_counters) (build_out_filepaths, pass_output_unit_files): return HV from build functions. Pass all the references. Note that the functions are currently unused and therefore could not be tested. 2025-08-11 Patrice Dumas * tta/C/main/build_perl_info.c (html_build_buttons_specification): do not return anything. * tta/C/main/build_perl_info.c (build_sv_option, build_global_info) (build_sv_options_from_options_list) (latex_build_options_for_convert_to_latex_math): remove useless increase in reference counts. 2025-08-11 Patrice Dumas * tta/C/convert/convert_html.c (html_convert_tree_append): add explicit checks to verify that functions references called for conversion are not NULL. * tta/C/texi2any.c (main): load HTML Perl conversion if XS_EXTERNAL_FORMATTING or XS_EXTERNAL_CONVERSION is set. 2025-08-10 Patrice Dumas * tta/C/main/build_perl_info.c (new_element_perl_data) (element_to_perl_hash), tta/C/main/tree.c (destroy_element): do not retain an additional reference in new_element_perl_data, and consistently do not remove an HV reference in destroy_element. Call newSVsv instead of SvREFHVCNT_inc in element_to_perl_hash. * tta/C/main/build_perl_info.c (build_elements_list) (fill_document_hv, store_document_texinfo_tree): use newSVsv instead of SvREFHVCNT_inc. * tta/C/main/build_perl_info.c (build_perl_const_element_array) (build_perl_directions, build_extra_misc_args) (build_extra_index_entry): do not retain an additional reference to the AV/HV. * tta/C/main/build_perl_info.c (build_perl_array) (build_perl_container): return an AV. Update caller. 2025-08-10 Patrice Dumas * tta/perl/Texinfo/ManipulateTree.pm (_copy_tree, copy_contents) (copy_contentsNonXS): handle an tree without contents in input of copy_contents and copy_contentsNonXS. 2025-08-10 Patrice Dumas * tta/C/main/manipulate_tree.c (copy_associated_info), tta/C/main/tree.c (destroy_associated_info), tta/C/main/tree_types.h (INDEX_ENTRY_LOCATION), tta/C/parsetexi/indices.c (enter_index_entry), tta/C/structuring_transfo/transformations.c (relate_index_entries_to_table_items_in): do a copy of the index name in INDEX_ENTRY_LOCATION index_entry in extra information. That way, the element can outlive the indices information. 2025-08-10 Gavin Smith * doc/texinfo.texi (Headings): Remove extra comma after "and". 2025-08-10 Gavin Smith * doc/texinfo.texi (@titlepage): Remove text about "@end titlepage" being required to turn on page numbering, as this is no longer the case. 2025-08-10 Gavin Smith * doc/texinfo.texi (Titlepage & Copyright Page, @setchapternewpage): 'frontmatter' -> 'front matter'. 2025-08-10 Gavin Smith * doc/texinfo.texi (@titlepage): Mention that @insertcopying is needed for @titlepage. Mention that the copyright page is always produced in the same way. Combine two examples. 2025-08-10 Patrice Dumas * tta/perl/Texinfo/Convert/Converter.pm (%XS_overrides, destroy) (_XS_destroy, converter_perl_release): rename destroy as converter_perl_release. Re-add destroy calling converter_perl_release and _XS_destroy, which is now the XS override. That way, the Perl data can be released before destroying the C data. * tta/C/Makefile.am (libtexinfoxs_la_SOURCES) (libcallperl_libtexinfo_convert_la_SOURCES), tta/perl/Texinfo/Document.pm (%XS_overrides, _XS_destroy_document) (destroy_document), tta/perl/XSTexinfo/parser_document/DocumentXS.xs (destroy_document): add _XS_destroy_document, called by destroy_document and use it as XS override. That way, the Perl data can be released before destroying the C data. Do not call call_document_remove_document_references in destroy_document in DocumentXS.xs. Move call_document_perl_functions.c to libcallperl_libtexinfo_convert_la_SOURCES. * tta/C/convert/call_conversion_perl.c (call_object_converter_perl_release), tta/C/convert/texinfo.c (txi_converter_destroy, txi_destroy_document), tta/C/texi2any.c (main): add call_object_converter_perl_release and call from txi_converter_destroy. Call call_document_remove_document_references from txi_destroy_document. Add remove_references argument to txi_destroy_document and txi_destroy_document. Set remove_references in texi2any.c. 2025-08-10 Patrice Dumas * tta/perl/Texinfo/Convert/Converter.pm (converter_destroy, destroy), tta/perl/Texinfo/Convert/HTML.pm (converter_destroy), tta/perl/Texinfo/Convert/LaTeX.pm (converter_destroy), tta/perl/Texinfo/Convert/Plaintext.pm (converter_destroy): add converter_destroy to the Perl converter API, called in Converter destroy, defined by each of the converters that need to. 2025-08-10 Patrice Dumas * tta/perl/Texinfo/Document.pm, tta/perl/Texinfo/ManipulateTree.pm (tree_remove_parents, tree_remove_references): move tree_remove_parents and tree_remove_references to Texinfo::ManipulateTree. Update callers. 2025-08-10 Patrice Dumas * tta/perl/Texinfo/Convert/Converter.pm (float_name_caption): copy tree in substrings to be able to destroy the tree afterwards. * tta/perl/Texinfo/Convert/HTML.pm (_convert_float_command): fix variable used in output when in string (which probably never happens). * tta/perl/Texinfo/Convert/Converter.pm (float_name_caption), tta/perl/Texinfo/Convert/HTML.pm (_convert_float_command), tta/perl/Texinfo/Convert/Plaintext.pm (_convert), tta/perl/Texinfo/Structuring.pm (number_floats): use exists or defined if the variable value is not used. * tta/perl/Texinfo/ParserNonXS.pm (_enter_index_entry): minor change in code. 2025-08-10 Patrice Dumas * tta/perl/Texinfo/ParserNonXS.pm (_get_current_node_relations): simplify condition, the current node is always registered in nodes_list. 2025-08-10 Patrice Dumas * tta/perl/Texinfo/ParserNonXS.pm (%parser_document_state_initialization, _move_last_space_to_element) (_parse_texi): do not initialize current_node, current_section, current_part and internal_space_holder to undef, and delete them to unset them. Update users. 2025-08-10 Patrice Dumas * tta/perl/Texinfo/OutputUnits.pm (units_directions): check that _label_target_unit_element did not return undef before setting a direction. 2025-08-10 Patrice Dumas * tta/perl/Texinfo/Structuring.pm (_print_down_menus): go out of the loops used to find lenu entry names as soon as a menu entry name is found. Only look in menu_entry. * tta/perl/Texinfo/Structuring.pm (_print_down_menus): use exists or defined if the variable value is not used, change arguments code. 2025-08-10 Patrice Dumas * tta/perl/Texinfo/Common.pm (parse_node_manual): fix return in case there is no contents. 2025-08-10 Patrice Dumas * tta/perl/Makefile.tres (test_files_generated_list): add missing_detailmenu_menu_entry_names. 2025-08-10 Patrice Dumas detailmenu generation in C * tta/C/structuring_transfo/structuring.c (print_down_menus): implement change in detailmenu generation: check for presence of a 'menu_entry_name' element in a menu, and if found, do not use it to make a detailmenu. Update test result. 2025-08-10 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm (_prepare_conversion_units), tta/perl/Texinfo/Convert/Info.pm (output), tta/perl/Texinfo/Convert/Plaintext.pm (convert, output), tta/perl/Texinfo/Document.pm (new_document) (register_output_units_lists, get_output_units_lists): add the possibility to register output units in document to be able to find them back (similar to C). * tta/perl/Texinfo/Convert/Plaintext.pm (conversion_finalization): remove count contexts. * tta/perl/Texinfo/ParserNonXS.pm (release), tta/perl/XSTexinfo/parser_document/Parsetexi.xs (release), tta/perl/t/test_utils.pl (test, tta/perl/texi2any.pl): add function in Perl to remove keys in parser that could create cycles or refer to elements. * tta/perl/Texinfo/ParserNonXS.pm (_parse_texi): properly unset internal_space_holder, and current_*. * tta/perl/Texinfo/Document.pm (tree_remove_parents): add to remove elements parents in a tree. This allows to remove cycles in tree, such that Perl can reuse the memory. * tta/perl/Texinfo/Document.pm (tree_remove_references): add to remove references to tree elements, work in progress to be able to check that the refcounting in XS/C is done correcty. * tta/perl/Texinfo/Convert/Converter.pm (destroy), tta/perl/texi2any.pl: remove cycles in converters. Add a remove_references argument, if set try to remove references to elements that cannot be accessed through the document too. Set remove_references in texi2any if TEST is > 1. * tta/perl/Texinfo/Document.pm (_remove_section_relations_relations) (_remove_output_units_directions): remove keys in relations and output units that could create cycles in data, such that Perl can reuse the memory. * tta/perl/Texinfo/Document.pm (_remove_section_relations_references) (_remove_node_relations_references) (_remove_heading_relations_references) (_remove_output_units_references, remove_document_references) (destroy_document), tta/C/Makefile.am (libtexinfoxs_la_SOURCES), tta/C/main/call_document_perl_functions.c (call_document_remove_document_references), tta/perl/XSTexinfo/parser_document/DocumentXS.xs (destroy_document), tta/perl/texi2any.pl: implement destroy_document in Perl. In the default case, remove cycles. With the remove_references argument, remove all references to elements. Add a call to Perl function from XS to remove Perl data before destroying the C document. * tta/perl/Texinfo/ParserNonXS.pm (_check_register_target_element_label): minor change in code. 2025-08-10 Patrice Dumas * tta/perl/Texinfo/Common.pm, tta/perl/Texinfo/ManipulateTree.pm, tta/perl/Texinfo/OutputUnits.pm: change formatting of sub arguments passing. Minor changes in code. * tta/perl/Texinfo/OutputUnits.pm: use exists or defined if the value is not used. 2025-08-10 Patrice Dumas * tta/perl/Texinfo/ManipulateTree.pm (_protect_text), (protect_first_parenthesis): modify directly the element source marks. * tta/perl/Texinfo/ManipulateTree.pm: use exists or defined if the value is not used. Minor changes in code. 2025-08-09 Patrice Dumas * tta/perl/Texinfo/Common.pm: use exists or defined if the value is not used. Minor changes in code. 2025-08-09 Patrice Dumas * tta/C/main/manipulate_tree.c (element_print_details): add, for debugging. 2025-08-09 Gavin Smith * doc/texinfo.texi (Copyright, @titlepage, Document Permissions): Move material out of 'Copyright' node and delete node. 2025-08-09 Gavin Smith * doc/texinfo.texi (@title @subtitle @author, @titlefont @center @sp): Make these sub-sections of the '@titlepage' node.. 2025-08-09 Gavin Smith * doc/texinfo.texi (Titlepage & Copyright Page): Move discussion of @settitle here. (Title Page Version): Create new node for discussion of version and edition on the title page. (@titlepage): Content moved from this node. 2025-08-09 Gavin Smith * NEWS: mention new title page commands * doc/texinfo.texi (Titlepage & Copyright Page, Document Metadata, @titlepage): Start work on documentation. 2025-08-08 Gavin Smith * tta/C/texi2any.c (main): Check for the existence of a built file relative to executable location, rather than a source code file, as this could be an out-of-source build. Report from Patrice. 2025-08-08 Gavin Smith * info/info-hooks-example/manual-not-found: if nothing known about a manual, exit unsucessfully to allow Info to continue. this means we display a manpage immediately, if one exists, rather than the hook output. 2025-08-08 Gavin Smith * TODO: add desideratum re info index lookup for manuals documenting many programs, such as coreutils. 2025-08-08 Gavin Smith * util/info-hooks, info/info-hooks-example: Move directory. * doc/info-stnd.texi (Hooks): update 2025-08-08 Gavin Smith * doc/texinfo.texi (HTML Xref Configuration): Adjust wording slightly re htmlxref.d location. 2025-08-07 Gavin Smith * tta/perl/t/z_misc/do_master_menu.t: update as re-using labels for the master menu is no longer supported 2025-08-07 Gavin Smith * tp/Texinfo/XS: run gnulib-tool --remove-import getcwd 2025-08-07 Gavin Smith ctexi2any remove use of getcwd * tta/C/texi2any.c (main): If TEXINFO_DEV_SOURCE is not set, check if program is uninstalled by checking directory above program directory in argv[0] contains a file that should be in that directory. argv[0] should always contain a directory name because the executable is run via the libtool wrapper script. This is simpler, and avoids calling getcwd, which requires gnulib modules to be installed. 2025-08-07 Gavin Smith * doc/texinfo.texi (Node Names, Macro Details): Document that user-defined macros should not appear within node names. Report from Werner Lemberg, bug-texinfo, 2025-02-05. 2025-08-06 Gavin Smith detailmenu generation * tta/perl/Texinfo/Structuring.pm (_print_down_menus): Check for presence of a 'menu_entry_name' element in a menu, and if found, do not use it to make a detailmenu. (NB no XS override exists for this function.) * tta/perl/t/10menu.t (missing_detailmenu_menu_entry_names): new test. 2025-08-06 Gavin Smith * tta/perl/Texinfo/Convert/HTML.pm: remove debugging code committed by mistake. 2025-08-06 Gavin Smith * info/dir.c (build_dir_node): Output labels for the list of dir files. Restructure code slightly so it is easier to follow. 2025-08-05 Gavin Smith * info/dir.c (build_dir_node): Add section to menu listing all the dir files used to make this dir node, if there were more than one. 2025-08-05 Gavin Smith * info/dir.c (build_dir_node): Use "dir" as file name, not the path to the first dir file found. 2025-08-05 Gavin Smith * info/dir.c (build_dir_node): free memory in one situation 2025-08-05 Gavin Smith Don't replace text from dir node * info/dir.c (build_dir_node): Don't supply our own introduction to the dir node. Just use what was in the user's dir node. Use higher-level functions to access the dir files. This also means that "dir.info" will work as a dir file. (insert_text_into_node): Free memory appropriately. * info/filesys.c (info_file_find_next_in_path): Change comment slightly. * NEWS: mention 2025-08-04 Gavin Smith Change default for WORDS_IN_PAGE * tta/data/converters_defaults.txt (WORDS_IN_PAGE): Change default from 300 to 200. This means the navigation panel is more likely to be output at the bottom of fairly short nodes, hopefully reducing user confusion. * doc/texinfo.texi (Customization of Navigation and Headers): Explain why WORDS_IN_PAGE is only approximate. (HTML Customization Variables List) : update for new default. * NEWS: mention. 2025-08-04 Gavin Smith * util/info-hooks/manual-not-found: update name of data file. 2025-08-04 Gavin Smith * configure.ac: Rename variable from ac_cv_var_ospeed to ac_cv_var_extratermlib as we are not checking only the 'ospeed' variable. Remove comment: /* Make sure all variables actually exist. AIX 4.3 has ospeed but no BC. --Andreas Ley 24 Aug 2000. */ This comment was added when more variables, including BC, were added to the test. Since this change is not apparent from looking at the current state of the file, the comment is not useful. 2025-08-04 Gavin Smith * configure.ac: Move AC_CHECK_HEADERS of "ncurses/termcap.h" before test that uses it (with #ifdef HAVE_NCURSES_TERMCAP_H). This had been in that location since commit on 2003-04-18. See https://lists.gnu.org/archive/html/bug-texinfo/2003-04/msg00092.html. This has not been a problem in practice as the following test only needs to succeed to find extra libraries to link with on rare occasions. 2025-08-04 Gavin Smith * configure.ac: In AC_LANG_PROGRAM used in AC_LINK_IFELSE used in terminal library check, provide first argument, which appears in the test program outside of the 'main' function. Including header files inside 'main' appears not to work well for this test, as all libraries tested failed. 2025-08-04 Gavin Smith * configure.ac: check for libtinfow and libncursesw in addition to libtinfo and libncurses. Report from Дилян Палаузов . 2025-08-04 Gavin Smith * doc/texinfo.texi (Directory Category): Note that dircategories will never be consistent but user can edit them if they like. Mention the possibility of package- specific categories. Add some suggested category names to list. Remove "Emacs" and "Basics". 2025-08-04 Gavin Smith * util/dir-example: some changes to categories to move towards categories used at https://www.gnu.org/manual/manual.html. Eliminate "Basics" category. Add reference to https://www.gnu.org/manual/manual.html. 2025-08-03 Gavin Smith * NEWS: mention that we now create extra redirection pages if --transliterate-file-names is given. 2025-08-02 Gavin Smith * doc/info-stnd.texi (Hooks): Mention sample hook in util/info-hooks. 2025-08-02 Gavin Smith * doc/texinfo.texi (@pxref): mention Info-hide-not-references variable in Emacs Info. 2025-08-02 Gavin Smith * util/info-hooks/gnu-manuals-locations, * util/info-hooks/gnu-manuals-locations.dat: rename. * util/Makefile.am: distrubute files in util/info-hooks. 2025-08-02 Gavin Smith * util/info-hooks/gnu-manuals-locations: add missed manuals. 2025-08-02 Gavin Smith * util/info-hooks/gnu-manuals-locations: reorder and group related manuals together for ease of maintence (similarly to htmlxref.d files) 2025-08-02 Gavin Smith * util/info-hooks/manual-not-found: Skip comments and blank lines in data file. 2025-08-02 Gavin Smith * util/info-hooks/gnu-manuals-locations: add links for remaining manuals. 2025-08-01 Gavin Smith * util/htmlxref.d/Texinfo_GNU.cnf (iwf_mh, scantest): fix. 2025-08-01 Gavin Smith * doc/texinfo.texi (@pxref): Attempt at clarifying why "see @ref" may often be better than "@pxref". 2025-08-01 Gavin Smith * util/htmlxref.d/Texinfo_GNU.cnf (mit-scheme-*): Unify the two blocks of mit-scheme-* manuals. A second block was added on 2022-11-12 not taking into account an existing block. 2025-08-01 Gavin Smith * util/htmlxref.d/Texinfo_GNU.cnf (dico): seems only to be available by node now. (lispintro): Make synonymous with eintr. 2025-08-01 Gavin Smith * util/info-hooks/gnu-manuals-locations: add more URLs 2025-08-01 Gavin Smith * util/info-hooks/gnu-manuals-locations: continue adding links. 2025-07-31 Gavin Smith * util/info-hooks/gnu-manuals-locations: fix gcc links and add more links 2025-07-31 Gavin Smith * util/info-hooks/gnu-manuals-locations: add link for R manuals (no link for Info manuals). 2025-07-31 Gavin Smith * util/info-hooks/gnu-manuals-locations: add link for mit-scheme manuals (no link for Info manuals). 2025-08-01 Patrice Dumas * tta/C/parsetexi/end_line.c (end_line_starting_block): re-add setting parent of element used in expanded conditional source mark to 0, that was erroneously removed. 2025-08-01 Patrice Dumas Remove parent information for text elements * tta/C/structuring_transfo/transformations.c (protect_hashchar_at_line_beginning_internal), tta/perl/Texinfo/Transformations.pm (_protect_hashchar_at_line_beginning): instead of processing text elements, process elements with contents, such that it is easier to find the position of the text with regard to end of lines. * tta/C/main/tree.c (add_element_to_element_contents) (insert_into_contents_as_array): add insert_into_contents_as_array. Add add_element_to_element_contents that works both for text elements and other types of elements. * tta/C/main/tree_types.h (CONTAINER, ELEMENT), tta/C/parsetexi/debug_parser.c (print_element_debug_parser), tta/C/main/build_perl_info.c (element_to_perl_hash), tta/C/convert/swig_interface.c (txi_ext_element_parent), tta/C/main/debug.c (print_element_debug), tta/C/*/*.c, tta/perl/Texinfo/*.pm, tta/perl/Texinfo/ParserNonXS.pm (_split_element_delimiters, _split_element_def_args), tta/perl/XSTexinfo/reader_element/TreeElementXS.xs: do not set parent for text elements, considering that the structure information should be with the parent already. Use add_to_contents_as_array and insert_into_contents_as_array to add text elements to contents, move the parent field from ELEMENT to CONTAINER, check if text element, or, in Perl, if there is already a parent to determine if the parent should be set. * tta/C/main/manipulate_tree.c (protect_text), tta/perl/Texinfo/ManipulateTree.pm (_protect_text): do not set the parent of the added @comma or @asis commands. * tta/perl/Texinfo/ManipulateTree.pm (element_print_details): add. 2025-07-31 Gavin Smith Separate footnote markers with commas * doc/texinfo.tex (\dofootnote): Do not reuse definition for the footnote marker, as this could include a separating comma. 2025-07-31 Gavin Smith Separate footnote markers with commas * doc/texinfo.tex (\dofootnote): Use \aftergroup to output a small penalty after the footnote. (\footnote): Check \lastpenalty and output a comma before our footnote marker if it appears that we are immediately after another footnote marker. * NEWS: mention Suggestion from Werner Lemberg. 2025-07-31 Gavin Smith * util/htmlxref.d/Texinfo_GNU.cnf (ada-mode, music-glossary): Corrections. 2025-07-31 Gavin Smith * util/info-hooks/gnu-manuals-locations: add locations for gcc manuals. no links to Info files, so reference the top-level documentation index that gives links to more formats including the Texinfo sources. 2025-07-31 Gavin Smith * util/info-hooks/gnu-manuals-locations: continue to add links, 2025-07-31 Gavin Smith * util/info-hooks/gnu-manuals-locations: continue to add links, including for guile-gnome. 2025-07-31 Gavin Smith * util/info-hooks/gnu-manuals-locations: continue to add links, including for gnupg and binutils manuals. note some manuals don't have downloads for Info files so we just link to the HTML version of the documentation instead. 2025-07-31 Gavin Smith * util/info-hooks/gnu-manuals-locations (emacs, eintr, elisp): add specific links. 2025-07-31 Gavin Smith * util/htmlxref.d/Texinfo_GNU.cnf (eintr): Add. 2025-07-31 Gavin Smith * util/info-hooks/gnu-manuals-locations: add links for emacs manuals. most of them don't have Info download links on the main page so just link to the main index page. 2025-07-31 Gavin Smith * util/info-hooks/gnu-manuals-locations: add URLs for more manuals that follow the usual pattern under www.gnu.org/software. 2025-07-31 Gavin Smith * util/htmlxref.d/Texinfo_GNU.cnf (autogen): Fix node URL, changing "autoconf" to "autogen". (Wrong ever since this entry was added.) 2025-07-31 Gavin Smith Add example hook program and supporting data file * util/info-hooks/manual-not-found, * util/info-hooks/gnu-manuals-locations: new 2025-07-31 Gavin Smith Info hooks documentation * doc/info-stnd.texi (Hooks): Describe how to get data files for a hook. Add index entries. In a comment, add exhortation not to use the collocation "hook script". 2025-07-30 Gavin Smith * TODO.HTML: discuss possible way forward for use of locally installed HTML. edit for flow after reordering document. 2025-07-30 Gavin Smith * TODO.HTML: spacing, formatting. 2025-07-30 Gavin Smith * TODO.HTML: re-order to put discussion of info.js, webkitgtk-info at the end of the file. 2025-07-30 Gavin Smith * TODO.HTML: edit slightly, update. 2025-07-30 Gavin Smith * js/info.js (init_index_page, init_sidebar, init_iframe): Add comments to make the "context initializers" easier to find as these are long functions that contain many other functions. 2025-07-30 Patrice Dumas * tta/C/main/build_perl_info.c (build_minimal_document): do not retain a reference to the document tree root element in C before registering the Perl object in the C element structure. 2025-07-30 Patrice Dumas * tta/C/Makefile.am (C_libtexinfo_main_sources), tta/C/convert/swig_element_types.h (TXI_CM_FLAGS_LIST) (TXI_CM_OTHER_FLAGS_LIST, TXI_TY_FLAGS_LIST), tta/C/convert/swig_element_data.h, tta/C/convert/swig_text_options_types.h (TEXT_INDICATOR_CONVERTER_OPTIONS), tta/C/convert/swig_text_options.h: split #define of swig_element_data.h out to a new file swig_element_types.h and swig_text_options.h #define to swig_text_options_types.h. * tta/C/convert/swig_interface.c, tta/C/convert/swig_text_options.h, tta/C/convert/swig_element_data.h, tta/swig/texinfo.i: prefix swig interface function names by txi_ext_. 2025-07-30 Gavin Smith * js/info.js (resolve_page): remove debugging code committed by accident. 2025-07-30 Gavin Smith * js/info.js: remove commented-out block of code checking screen width. This was commented out on 2021-02-24 when a button to hide the sidebar was added. 2025-07-30 Gavin Smith Reduce info.js indirection * js/info.js (Store): Do not pass "reducer" argument to constructor. There is only one Store object and it is only ever used with the 'updater' function. (Store.prototype.dispatch): Hardcode use of 'updater'. 2025-07-30 Patrice Dumas * tta/swig/perl/Makefile.am (all-local, .libs/auto/Texinfo), tta/swig/perl/_Texinfo_Tests.pm: add the all-local rule to setup the link from .libs/auto/Texinfo to .libs to have in-build XS extension found before other extensions in @INC auto/Texinfo subdirectories. Remove from _Texinfo_Tests.pm the code doing the link. 2025-07-30 Patrice Dumas * tta/C/Makefile.am (libperlcall_utils_la_SOURCES) (libperlcall_utils_la_CPPFLAGS), tta/C/main/use_interpreter_types.h (enum interpreter_use): add enum interpreter_use. * tta/C/main/set_perl_interpreter.c (tta/C/main/set_perl_interpreter.c): rename get_use_perl_interpreter as has_perl_interpreter. Update callers. * tta/C/convert/texinfo.c (txi_setup_main_load_interpreter) (txi_load_init_file, txi_stop_interpreter), tta/swig/texinfo.i (setup), tta/C/main/set_perl_interpreter.c (set_use_perl_interpreter) (has_perl_interpreter): use enum interpreter_use as argument and as variable. Update callers. 2025-07-30 Patrice Dumas Initialize the C library when Texinfo modules are loaded but not XS * tta/perl/Texinfo/DocumentXS.pm ($XS_package): set $XS_package as Texinfo::XSLoader::init return value. * tta/C/main/call_perl_function.c (call_eval_load_texinfo_modules): return -1 (or croak) if the Perl modules could not be used. Return the Texinfo::DocumentXS::XSLoader true or false value if the modules could be used, such that the caller knows if the Document XS module was loaded. It is in this XS module that the C library is initialized. * tta/C/convert/texinfo.c (txi_setup_main_load_interpreter): check the return value of call_eval_load_texinfo_modules and initialize the C library and set use interpreter accordingly. 2025-07-30 Patrice Dumas * tta/perl/Texinfo/StructTransfXS.pm: do not set $XS_package, it is not used anywhere. Do not set Texinfo::XSLoader::init return value if not used. * tta/swig/perl/t/40convert_to_text.t: minor changes in code and comment. 2025-07-30 Patrice Dumas * tta/C/convert/convert_html.c: remove html_translate_string, it is not used anymore. * tta/C/main/manipulate_tree.c (copy_tree): rename copy variable as copy_tree and current variable as element. * tta/C/main/manipulate_tree.c (set_element_tree_numbers): make a simple no-op as it does nothing currently, and rename the implementation. Changes in comments and TODO * tta/swig/perl/t/*.t: move code around. * tta/swig/perl/t/20index_sort.t: change in spacing. 2025-07-30 Gavin Smith * js/info.css (.highlight): Change background (used for search matches from "lightgrey" to #FFCC33 (orange-yellow) as the grey highlighting is easy to miss. 2025-07-30 Gavin Smith Don't accumulate elements under text input box * js/info.js (Text_input.prototype.show): Check if element already exists before creating it. Previously, multiple elements would accumulate within the as 'i' was repeatedly used. 2025-07-30 Gavin Smith * js/info.js (init_iframe) , (actions.cache_index_links): Inline most of actions.cache_index_links into on_load. This way actions.cache_index_links is focused on the structure of the message. 2025-07-30 Gavin Smith * NEWS: mention info.js fix 2025-07-30 Gavin Smith * js/info.js (on_keydown): Check that no modifiers (namely, Alt, Ctrl nor Meta) are pressed. This means specifically that C-l can still select the location bar and C-r can refresh the page. 2025-07-30 Gavin Smith Make clicking on links on Top node not so broken * js/info.js (config) : Change from "top" to "index". Links in the Top node are still rewritten to have href attributes that look like "index.html#index.toc-Nodes" and the value "index" is needed to make sure that the check for the Top node in 'resolve_page' works. This reverses change on 2024-10-07 (before which TOP_ID was called "INDEX_ID".) Before this, clicking on links in a short table of contents, or clicking on the copiable anchor in the manual title, would lead "index.html" to be loaded in the main iframe and two copies of the navigation interface would be visible. 2025-07-29 Gavin Smith Fewer functions called 'render' * js/info.js (Help_page.prototype.render, Minibuffer.prototype.render) (Echo_area.prototype.render, Sidebar.prototype.render) (Pages.prototype.render): Rather than defining all of these as "function render", use the names help_page_render, minibuffer_render, echo_area_render, sidebar_render, and pages_render respectively. This makes the output of "console.trace()" easier to understand. 2025-07-29 Patrice Dumas * tta/perl/ext/tex4ht.pm (tex4ht_prepare): warn if there was an error with close. 2025-07-29 Patrice Dumas Remove the Texinfo::TeX4HT customization package * NEWS, tta/perl/ext/tex4ht.pm (tex4ht_prepare) (tex4ht_process_format): remove the Texinfo::TeX4HT customization package, replace by the defaults. If customization is needed, it should be implemented through customization variables. * tta/perl/t/init/t2h_singular.init: replace the use of long gone Texinfo::TeX4HT STYLE by setting T4H_TEX_CONVERSION and T4H_MATH_CONVERSION to latex. 2025-07-29 Patrice Dumas * tta/perl/ext/latex2html.pm (l2h_retrieve_from_html): do not modify image file names. Remove l2h_change_image_file_names. 2025-07-29 Gavin Smith * js/info.js (on_load): Store "components" as an array rather than as a hash called "components" containing an array called "components". (Store.prototype.dispatch): Update. 2025-07-29 Gavin Smith * doc/texinfo.texi (@sp): Include argument within @code in section title. 2025-07-29 Gavin Smith * js/info.js (Store.prototype.dispatch): Inline contents of "render" function. (init_index_page) : Remove "render" as a property of "components" object referencing a function. 2025-07-29 Gavin Smith Eliminate "listeners" abstraction * js/info.js (Store): Do not set 'listeners' array. (Store.prototype.dispatch): Call 'render' function directly rather than looping over 'listeners'. (init_index_page) : Save 'components' array on 'store' object, rather than adding a single function to 'listeners'. Historically, the "listeners" paradigm was inspired by the "Redux" library (private May 2017 discussion). However, it appears to be unnecessary here as there was only only one listener. 2025-07-29 Patrice Dumas * tta/perl/ext/latex2html.pm (l2h_finish): warn if unlink did not succeed. 2025-07-29 Patrice Dumas * tta/perl/ext/latex2html.pm (l2h_to_latex, l2h_retrieve_from_html) (l2h_init_cache, l2h_store_cache): check close error condition and warn. * tta/perl/ext/latex2html.pm (l2h_process) (l2h_change_image_file_names, l2h_retrieve_from_html): handle empty destination_directory. * tta/perl/t/test_utils.pl: change in spacing. 2025-07-29 Gavin Smith * info/echo-area.c (ea_scroll_completions_window): Reinstate removed lines but use result as intended in call to set_window_pagetop. 2025-07-29 Gavin Smith * info/man.c (get_manpage_from_formatter): Keep on going if return value from 'get_output_from_program' is non-zero, in line with following comment. 2025-07-29 Gavin Smith * info/run-external.c (get_output_from_program): Enclose use of WIFEXITED and WEXITSTATUS in HAVE_SYS_WAIT_H check. Report from Patrice. 2025-07-29 Gavin Smith * info/run-external.c (get_output_from_program) [!PIPE_USE_FORK]: Check if return value of pclose is -1 before using WEXITSTATUS etc. on it. Report from Patrice. 2025-07-29 Patrice Dumas Code cleanups based on compiler warnings * info/echo-area.c (ea_scroll_completions_window): remove unused lines variable and associated code. * info/makedoc.c (process_one_file): remove line_start variable, set but not used. * info/session-cmd.c (info_get_node_with_defaults) (info_select_reference): remove unused variables. * tta/swig/texinfo.i (setup): initialize variables to silence compiler warning (they are not used anywhere if texinfo_uninstalled is set). 2025-07-29 Gavin Smith * info/run-external.c (get_output_from_program): Use WIFEXITED on exit status from wait or popen before using WEXITSTATUS. Return 127 as a general error code if WIFEXITED is false. Report from Patrice. 2025-07-28 Gavin Smith Remove annoying tooltip for Top node with info.js (updater): Add new action type "window-title-of-linkid". Not much is done in this function. (Pages.prototype.render): This called indirectly and is where a lot of the real processing is done after the main "store" receives an action. Handle "window-title-of-linkid" action. (init_iframe) : Initiate "window-title-of-linkid" action. This contains the ID of the node as well as the new title to use, leading the "title" to be updated on the correct
. We get the ID from the window location. This is more reliable than the "window-title" action as that seemed to try to use whichever node was currently being displayed, which was wrong when the index nodes were read in at start up. This led to a "title" attribute being set incorrectly on some element in the Top node, which would lead to a tool-tip appearing with the title of whichever Index node was read in last. (actions) (window_title_of_linkid): Add for "window-title-of-linkid" message. 2025-07-28 Gavin Smith * info.js (init_sidebar) : Remove 'a.copiable-link' element from main title in sidebar. This often contains a large ¶ symbol which is unnecessary. 2025-07-28 Patrice Dumas * tta/perl/XSTexinfo/Makefile.am (ReaderXS_la_LIBADD): add dependency on libtexinfo.la. 2025-07-28 Gavin Smith Less recommendation of @menu * doc/texinfo.texi (Short Sample Texinfo File): Remove @menu block from example. Add equivalent @nodedescription lines for the menu descriptions. (The Top Node): Explain that the @menu block is optional. (GNU Sample Texts): Remove @menu from example input. 2025-07-28 Gavin Smith Update info.js for new index output * js/info.js (init_iframe) : Use 'printindex-index-subentry-level-1' and 'printindex-index-subentry-level-2' classes to find index entries. (actions.cache_index_links): Change 'index-entry-level-1' to 'printindex-index-subentry-level-1'; likewise change 'index-entry-level-2' to 'printindex-index-subentry-level-2'. 2025-07-28 Patrice Dumas * tta/swig/perl/_Texinfo_Tests.pm, tta/swig/perl/parse_refold.pl: put swig/perl directory in @INC to find Texinfo.pm in out of source builds. * tta/swig/perl/parse_refold.pl: update call of Texinfo::setup to avoid using a Perl interpreter, as it is not needed, and the default paths do not allow to find the texi2any modules. 2025-07-28 Patrice Dumas * tta/swig/perl/_Texinfo_Tests.pm: do not create directory and link if the .libs directory does not exist, assuming that the MakeMaker build system is used in that case. * tta/swig/perl/Makefile.PL (INC): update compile flags. 2025-07-28 Patrice Dumas * tta/swig/Makefile.am, tta/swig/p*/Makefile.am (BUILT_SOURCES) (SWIG_include_directories, SWIG_header_dependencies) (*_texinfo_wrap.c, CLEANFILES): build files generated by swig in the language directories, not in the main swig directory. 2025-07-28 Gavin Smith Do not distribute generated SWIG files * tta/swig/perl/Makefile.am: Do not distribute Texinfo.pm or perl_texinfo_wrap.c. * tta/swig/python/Makefile.am: Do not distribute Texinfo.py or python_texinfo_wrap.c. * tta/swig/Makefile.am: Wrap rules for rebuilding files in "if SWIG_INTERFACES" conditional. 2025-07-28 Patrice Dumas * tta/C/main/set_perl_interpreter.c (use_perl_interpreter): correct default to be 1. 2025-07-28 Patrice Dumas * tta/swig/perl/Makefile.am (AM_CPPFLAGS), tta/swig/texinfo.i (setup), tta/swig/perl/t/20index_sort.t: set the compile-time default for the Perl SWIG Interface to use an existing interpreter, by setting the USE_PERL_INTERPRETER define. * tta/swig/texinfo.i (setup): rename *embed_perl as *use_interpreter. 2025-07-28 Patrice Dumas * tta/swig/perl/_Texinfo_Tests.pm: add Texinfo as a link from .libs/auto to .libs, such that with .libs in @INC, XSLoader finds the Texinfo.so object file. * tta/C/main/replace_set_perl_interpreter.c, tta/C/main/set_perl_interpreter.c (set_use_perl_interpreter) (get_use_perl_interpreter): change the logic, by having a positive value if a Perl interpreter is present. Rename get_no_perl_interpreter as get_use_perl_interpreter and set_no_perl_interpreter as set_use_perl_interpreter. Update callers. * tta/C/main/call_perl_function.c (call_modulepath_init) (call_eval_load_texinfo_modules): add a function to add to @INC, call Texinfo::ModulePath::init and load Texinfo texi2any Perl modules. Similar to texi2any.pl or load_txi_modules.pl initialization code, but trimmed down. * tta/C/convert/texinfo.c (txi_setup_main_load_interpreter): call call_eval_load_texinfo_modules if use_interpreter is > 1, add corresponding arguments, update callers. * tta/swig/python/Makefile.am (AM_CPPFLAGS), tta/swig/perl/Makefile.am (AM_CPPFLAGS), tta/swig/texinfo.i: add LIBDIR in defines, add embed_perl and updirs arguments to setup, pass new arguments to txi_setup_main_load_interpreter. * tta/configure.ac (swig_perl_tests), tta/swig/perl/Makefile.am (t_test_files), tta/swig/perl/t/20index_sort.t: add test of index sorting with the comparison with texi2any Perl modules sorting. Calls Texinfo::setup with use_interpreter set to 2. 2025-07-28 Gavin Smith * tta/C/convert/convert_html.c (copy_file_to): Call fwrite with the correct buffer size. 2025-07-28 Patrice Dumas * tta/maintain/all_tests.sh: call -g on t/z_misc/*.t files which now accept -g. 2025-07-28 Gavin Smith Smaller index letter headers. * tta/data/default_css_element_class_styles.csv (th.index-letter-header-printindex): Remove "font-size: large; padding-bottom: 0.5em; padding-top: 0.5em". This makes the HTML index formatting close in appearance to the formatting of the last release and earlier. 2025-07-28 Gavin Smith Indent index entries. * tta/data/default_css_element_class_styles.csv (td.printindex-index-entry, td.printindex-index-subentry-level-1) (td.printindex-index-subentry-level-2): Add 1.5 em of indent. This can help to make the letter headers more conspicuous when skimming through an index quickly. 2025-07-28 Gavin Smith Combined CSS class for index subentries * tta/C/convert/format_html.c (html_convert_printindex_command), * tta/perl/Texinfo/Convert/HTML.pm (_convert_printindex_command): For index subentries, output 'printindex-index-subentry-level-1' or 'printindex-index-subentry-level-2' class, and do not output 'index-entry-level-1', 'index-entry-level-2', or 'printindex-index-entry'. For the output of @seeentry, always output 'printindex-index-see-entry' as an additional class. * tta/data/default_css_element_class_styles.csv (td.index-entry-level-1, td.printindex-index-subentry-level-1) (td.index-entry-level-2, td.printindex-index-subentry-level-2): Rename and add "vertical-align: top" in order to be consistent with 'td.printindex-index-entry'. This is to make it easier to control the indentation of index entries in an index. Previously, 'printindex-index-entry' was output on index subentries too, which meant that customising 'padding-left' would override the setting for all index subentries. Using completely different classes avoids any trouble with the relative priorities of CSS rules. 2025-07-27 Gavin Smith * tta/perl/Makefile.am: Add Texinfo/HTMLDataCSS.pm to and dist_modules_DATA and MAINTAINERCLEANFILES. 2025-07-27 Gavin Smith Add maintain/generate_css_data.pl * tta/maintain/generate_css_data.pl: New. Generate source code files with CSS data for HTML output. * tta/maintain/generate_code_convert_data.pl: Do not output CSS data. * tta/C/Makefile.am: Update to use maintain/generate_css_data.pl to generate main/html_css_data.c and main/html_css_data.h. * tta/perl/Makefile.am: Update to use maintain/generate_css_data.pl to generate Texinfo/HTMLDataCSS.pm. * tta/perl/Texinfo/Convert/HTML.pm: use "Texinfo::HTMLDataCSS". * tta/C/convert/html_prepare_converter.c: include "main/html_css.data.h" as well as html_css_data.h. This cuts the time taken to rebuild after tta/data/default_css_element_class_styles.csv is touched by a factor of about 10. 2025-07-27 Patrice Dumas * tta/perl/Texinfo/Common.pm, tta/perl/Texinfo/ParserNonXS.pm: use exists or define in conditions if the value is not of interest. Remove useless check of number of contents elements. 2025-07-27 Patrice Dumas * tta/perl/Texinfo/ParserNonXS.pm (_split_element_delimiters) (_split_element_def_args): rename _split_delimiters as _split_element_delimiters and _split_def_args as _split_element_def_args to make clear that these functions do something different from the C functions. Use parent instead of passing it as argument. Fix a wrong parent. Rename $root as $element. Undef explicitly element when it is not used anymore to clarify the code (and maybe help release/reuse memory). 2025-07-27 Patrice Dumas * tta/perl/Texinfo/ParserNonXS.pm (_split_delimiters) (_split_def_args): use directly element source marks. 2025-07-27 Patrice Dumas Changes in comments 2025-07-27 Patrice Dumas * tta/perl/Makefile.tres, tta/perl/t/03coverage_braces.t (empty_line_in_command_in_math): add test. 2025-07-27 Patrice Dumas * TODO: add more flexible source highlighting interface entry 2025-07-27 Patrice Dumas Add/improve comments 2025-07-26 Patrice Dumas * tta/C/parsetexi/handle_commands.c (handle_line_command), tta/perl/Texinfo/ParserNonXS.pm (_handle_line_command): warn if a rawline @-command without argument has non-space argument. 2025-07-26 Patrice Dumas * tta/C/parsetexi/handle_commands.c (handle_line_command), tta/perl/Texinfo/ParserNonXS.pm (_handle_line_command): warn if a lineraw command without argument has non-space argument before a comment on the line. * tta/perl/Makefile.tres, tta/perl/t/08misc_commands.t (contents_arg_and_comment): add a test with a lineraw command without argument with an unexpected argument before a comment. 2025-07-26 Patrice Dumas * tta/perl/Texinfo/Convert/HTML.pm (_convert_printindex_command): fix order of hr output with regard to index entries. Update missed test results. 2025-07-26 Patrice Dumas * tta/C/parsetexi/handle_commands.c (parse_rawline_command), tta/perl/Texinfo/ParserNonXS.pm (_parse_rawline_command): remove special_arg unused return value. Update caller. * tta/C/convert/html_prepare_converter.c, tta/perl/Texinfo/Convert/HTML.pm: add comments. 2025-07-26 Gavin Smith -g option for two t/z_misc tests * tta/perl/t/z_misc/same_parser_multiple_files.t, * tta/perl/t/z_misc/no_structure_test.t (_update_test_results_dir, _do_format_test_file): Recognise -g option given to test program and copy the output files to the reference directory if given. This is an aid for updating the results of these tests, which are not covered by maintain/all_tests generate. 2025-07-26 Gavin Smith * tta/data/default_css_element_class_styles.csv (th.index-letter-header-printindex): Specify "font-size: large". 2025-07-26 Patrice Dumas * tta/swig/Makefile.am (EXTRA_DIST): add TODO. * tta/swig/TODO b/tta/swig/TODO: update. * tta/swig/perl/parse_refold.pl (BEGIN): handle better the MakeMaker based build system. * tta/swig/perl/parse_refold.pl: remove obsolete FIXME. * tta/swig/perl/MANIFEST, tta/swig/perl/MANIFEST.SKIP, tta/swig/perl/Makefile.PL: remove -DEMBED_PERL flag. Update and Improve MakeMaker based build system. * tta/swig/perl/Makefile.am (scripts_test_files): rename other_test_files as scripts_test_files. 2025-07-26 Patrice Dumas * tta/swig/perl/_Texinfo_Tests.pm (get_parser_error_messages), tta/swig/perl/t/30source_marks.t: add get_parser_error_messages based on 30source_marks.t code and use it in 30source_marks.t. 2025-07-26 Patrice Dumas * tta/C/Makefile.am (C_libtexinfo_main_sources), tta/C/convert/swig_error_messages_types.h (FORMATTED_ERROR_MESSAGE) (FORMATTED_ERROR_MESSAGE_LIST), tta/C/convert/swig_interface.c (get_error_messages_list_messages, get_parser_error_messages) (get_document_error_messages, messages_list_message_by_index) (messages_list_messages_number), tta/C/main/errors.c (error_message_text): make error_message_text extern. Add interface to error messages, with formatted error message added. With the functions get_parser_error_messages, get_document_error_messages, messages_list_message_by_index and messages_list_messages_number. * tta/swig/Makefile.am (SWIG_header_dependencies), tta/swig/texinfo.i: add interface to get formatted error messages. * tta/configure.ac (swig_perl_tests), tta/swig/perl/t/30source_marks.t: use formatted error messages interface. 2025-07-26 Gavin Smith Use
in index formatting * tta/C/convert/format_html.c (html_convert_printindex_command), * tta/perl/Texinfo/Convert/HTML.pm (_convert_printindex_command): Use
to separate sections of index. * tta/data/default_css_element_class_styles.csv (th.index-letter-header-printindex): Remove "border-width: thin; border-top-style: solid". This is a partial reversion of change to index formatting made on 2024-12-24. 2025-07-25 Patrice Dumas * tta/swig/perl/t/30source_marks.t: use _Texinfo_Tests. * tta/swig/perl/_Texinfo_Tests.pm (protect_perl_string), tta/swig/perl/t/30source_marks.t: move protect_perl_string to _Texinfo_Tests.pm. 2025-07-25 Patrice Dumas Add tta/C/main/reader_types.h 2025-07-25 Patrice Dumas * tta/C/Makefile.am (C_libtexinfo_main_sources), tta/C/swig_text_options.h, tta/C/convert/swig_interface.c (document_text_options, text_options_set_*) (text_options_clear_expanded_formats) (text_options_add_expanded_format, text_options_set_encoding), tta/C/main/convert_to_text.c (copy_options_for_convert_text), tta/swig/texinfo.i: add copy_options_for_convert_text to interface. Setup an interface that can be used to set text options from document options and with functions. Use in texinfo.i. * tta/swig/texinfo.i: add interface to convert to text. * tta/swig/perl/Makefile.am (EXTRA_DIST), tta/swig/perl/_Texinfo_Tests.pm: add an internal module to be used for common code for tests. * tta/swig/perl/Makefile.am (t_test_files), tta/swig/perl/t/40convert_to_text.t: add a test of conversion to text through the Perl SWIG interface. 2025-07-25 Patrice Dumas * tta/swig/texinfo.i: move code around, change in comments. 2025-07-25 Gavin Smith * tta/data/default_css_element_class_styles.csv (table.index-entries-printindex): Remove "border-spacing: 0 0.5em". This produced extra spacing between table rows and was added on 2024-12-24. The extra spacing combines badly with the "padding-bottom: 0.5em; padding-top: 0.5em" for 'th.index-letter-header-printindex' as in combination with the border-spacing, there was more space below the letter headers than there was above. It is also unnecesssary and doesn't match the formatting from previous releases. 2025-07-25 Gavin Smith * tta/data/default_css_element_class_styles.csv (th.index-letter-header-printindex): Remove "font-size: 150%". This was added with changes to index formatting on 2024-12-24. 2025-07-25 Patrice Dumas * tta/C/main/reader_types.h (TXI_READER_TOKEN_CAT_LST) (enum reader_token_category, READER_TOKEN), tta/C/main/tree_types.h, tta/swig/texinfo.i: move TXI_READER_TOKEN_CAT_LST, enum reader_token_category and READER_TOKEN to a distinct reader_types.h include file. * tta/C/main/reader.h: do not include reader_api.h. 2025-07-25 Patrice Dumas * tta/C/Makefile.am (C_libtexinfo_sources), tta/C/main/get_perl_info.c, tta/C/main/reader.h (READER_CONTEXT) (READER), tta/C/main/reader_api.h (retrieve_reader_descriptor) (txi_register_new_reader, txi_reader_read, txi_reader_skip_children), tta/C/main/tree_types.h, tta/swig/texinfo.i: move READER and READER_CONTEXT types to reader.h. Add a new file, reader_api.h with the functions needed to use the reader, retrieve_reader_descriptor, txi_register_new_reader, txi_reader_read and txi_reader_skip_children, but no definition of READER struct. * tta/C/main/reader.c (destroy_reader, new_reader): rename txi_new_reader as new_reader. Declare destroy_reader and new_reader static. 2025-07-25 Patrice Dumas * tta/C/Makefile.am (C_libtexinfo_sources), tta/C/main/tree_types.h, tta/C/main/source_mark_types.h (SM_TYPES_LIST, enum source_mark_type) (enum source_mark_status, SOURCE_MARK): move source mark type and enums to a separate file, source_mark_types.h. * tta/swig/Makefile.am (SWIG_include_directories) (SWIG_header_dependencies), tta/swig/texinfo.i: use source_mark_types. 2025-07-25 Patrice Dumas * tta/swig/texinfo.i (setup): add embed_perl argument to be able to set at runtime. * tta/swig/python/test_Texinfo.py: disable Perl interpreter embedding as it does not work (for me). 2025-07-25 Patrice Dumas * tta/m4/txi_perl_conf.m4: change a message. Minor changes in spacing, TODO, POD, comments, messages, move code around. 2025-07-25 Patrice Dumas * tta/swig/perl/parse_refold.pl, tta/swig/perl/t/30source_marks.t, tta/swig/texinfo.i (new_reader): wrap txi_register_new_reader and retrieve_reader_descriptor in a new_reader interface and do not provide with an interface through txi_new_reader. Update callers. 2025-07-25 Gavin Smith * doc/texinfo.texi: Remove "@clear txicodevaristt" lines. 2025-07-25 Gavin Smith * doc/texinfo.texi (Functions Commands, Typed Functions): Place discussion of the style of fonts used within @deffn and @deftypefn inside @ignore blocks. 2025-07-25 Gavin Smith * doc/info-stnd.texi (Hooks): update to reflect last change. 2025-07-25 Gavin Smith Remove node-not-found-interactive hook as separate hook * info/session-cmd.c (info_select_reference): In case of manual not found, run 'manual-not-found' hook with an extra "--interactive" argument, rather than a separate "node-not-found-interactive" hook. * info/configfiles.c (run_info_hook): Suppress stderr output from hook only if info_windows_initialized_p. 2025-07-25 Gavin Smith * info/pseudotty.c: Readd #include as it is needed for a declaration of 'memset', used via FD_ZERO, on some systems. Reports from Bruno Haible and Collin Funk. 2025-07-25 Gavin Smith Check infodir in loaded file list * info/nodes.c (check_loaded_file_in_infodir): New function to check both directory and filename in list of loaded files. * info/session-cmd.c (filename_for_xref): Use it before calling info_file_of_infodir. This means we avoid repeatedly checking the filesystem for the same file. 2025-07-24 Gavin Smith * NEWS: update a couple of items for Info. 2025-07-24 Gavin Smith Save directory name with file record * info/nodes.h (FILE_BUFFER): Add 'infodir' field. * info/nodes.c (info_load_file, forget_info_file): Set 'infodir' field to directory component of full file name used to load file. 2025-07-24 Patrice Dumas * tta/swig/perl/t/30source_marks.t (BEGIN): find the source directory by using the command location if there is no information in the environment. * tta/swig/README: update. 2025-07-24 Patrice Dumas Check linking with libperl * tta/configure.ac (libperl_link, LIBPERL_LINK), tta/swig/Makefile.am (SUBDIRS): check linking with libperl. If not possible and XS is enabled, do not build the Python SWIG interface as it requires linking with libperl. 2025-07-24 Patrice Dumas * tta/swig/perl/parse_refold.pl (_handle_source_marks): retrieve the correct current source mark at the end of an include file. * tta/swig/perl/Makefile.am (other_test_files): add test_includes.sh. 2025-07-24 Patrice Dumas * Pod-Simple-Texinfo/test_scripts/*.sh: add copyright notices. * tta/swig/perl/Makefile.am (t_test_files, other_test_files) (TESTS, EXTRA_DIST), tta/swig/perl/tests/*, tta/swig/perl/test_scripts/*.sh: add tests of parse_refold.pl and add parse_refold.pl to EXTRA_DIST. 2025-07-24 Patrice Dumas * tta/perl/Texinfo/Convert/LaTeX.pm (%informative_commands): fix use of command_equivalent_set_flag. 2025-07-24 Gavin Smith review info/window.h * info/window.h: Reorder to match order of window.c, and remove duplicative comments. * info/window.c (window_initialize_windows): Remove part of comment discussing non-existent "deleter" parameter. (window_message_in_echo_area, message_in_echo_area): Remove obsolete parts of comment from when these were not a variadic functions. 2025-07-24 Gavin Smith * info/window.h: Remove declaration for 'window_scroll_step' that is duplicated in variables.h. 2025-07-24 Patrice Dumas Leave @set/@clear as an alternative to @codequote* in Texinfo tree * tta/perl/Texinfo/Common.pm (%set_flag_command_equivalent) (%command_equivalent_set_flag), tta/perl/Texinfo/ParserNonXS.pm: move %set_flag_command_equivalent to Common.pm and add %command_equivalent_set_flag. * tta/C/main/utils.c (element_value_equivalent), tta/C/main/utils.c (element_value_equivalent), tta/perl/Texinfo/Common.pm (element_value_equivalent), tta/perl/Texinfo/Convert/TreeElementConverter.pm (_tree_element_element_value_equivalent): add function to return value and command of a @set/@clear command with a flag making it an alternative to another command. * tta/C/main/utils.c (informative_command_value), tta/C/main/customization_options.c (set_informative_command_value), tta/perl/Texinfo/Common.pm (informative_command_value) (set_informative_command_value), tta/perl/Texinfo/Convert/TreeElementConverter.pm (_tree_element_informative_command_value) (tree_element_set_informative_command_value): call element_value_equivalent in informative_command_value and return the command being actually modified. Update callers. * tta/C/parsetexi/parser.c (register_global_command), tta/perl/Texinfo/ParserNonXS.pm (_register_global_command): add an optional argument to give the command to store as. This is useful if the actual element is an alternative to another command, as is the case for @set/@clear command with a texicode* flag. Update callers. * tta/C/parsetexi/handle_commands.c (handle_line_command), tta/perl/Texinfo/ParserNonXS.pm (_handle_line_command): keep @set or @clear as an alternative to @codequote* as is in the tree, but register as a global command associated to the equivalent command. 2025-07-24 Patrice Dumas * contrib/mass_test/README: add. 2025-07-24 Gavin Smith No file fallback for "foo::" reference. * info/session-cmd.c (info_select_reference): Remove code for a reference that looks like "* foo::" checking for a manual called foo if a node foo is not found. This reverses change announced in NEWS for Info 2.11 (1995). However, this functionality does not appear to be present in Emacs Info (checked with Emacs 27.1) so presumably is not important. 2025-07-24 Gavin Smith Don't run hook if file for manual is found but node isn't. * info/session-cmd.c (info_select_reference): Inline some code from info_get_node_with_defaults and info_get_node. Only trigger the 'node-not-found-interactive' hook if the manual is not found, not if a node is not found within a manual that is found. * info/session-cmd.c (filename_for_xref): Remove an unused argument. 2025-07-24 Gavin Smith * info/session-cmd.c (filename_for_xref): New function, splitting out logic from info_get_node_with_defaults. (info_get_node_with_defaults): Use it. Omit calling it if we have a dir or manpage reference. 2025-07-23 Gavin Smith * info/t/follow-remain-other-dir.sh: new test 2025-07-23 Patrice Dumas * contrib/mass_test/check_refold.sh: improve. * contrib/mass_test/extract_manuals.sh: more fix of CRLF. Add @documentencoding ISO-8859-1 for two manuals. * contrib/mass_test/notes_on_manuals.txt: add. 2025-07-23 Patrice Dumas * tta/swig/perl/parse_refold.pl: add -I option. * tta/swig/perl/parse_refold.pl: set texi2any formats to be expanded. * tta/swig/perl/parse_refold.pl: missing @verb delimiter decode added. 2025-07-23 Patrice Dumas * tta/C/parsetexi/close.c (close_current), tta/perl/Texinfo/ParserNonXS.pm (_close_current): use source mark at the opening of a block command without @end found, instead of at the end of the document. 2025-07-23 Patrice Dumas * tta/swig/perl/parse_refold.pl: take a directory in argument and output files in that directory. Handle included files using an inputs stack and putting the result in a reference on a string. Decode strings early to get correct counting of characters. * contrib/mass_test/check_refold.sh: update for change in parse_refold.pl. 2025-07-23 Gavin Smith const for info * info/scan.c (info_concatenate_references, info_copy_references info_new_reference): Declare arguments as const. 2025-07-23 Gavin Smith const for info * info/scan.c (info_get_menu_entry_by_label, info_copy_reference) * info/session-cmd.c (info_select_reference) * info/dir.c (lookup_dir_entry, dir_entry_of_infodir) Declare more parameters and return values as const. * info/session-cmd.c (info_intuit_options_node): Avoid modifying field in REFERENCE object returned by info_get_menu_entry_by_label. * info/info.c (info_find_matching_files): Copy REFERENCE before adding it to a list. 2025-07-23 Gavin Smith info/scan.h * info/scan.c (read_bracketed_filename, init_conversion) (close_conversion, save_conversion_state, reset_conversion): Declare as static. * info/scan.h: reorder slightly to match order of scan.c. 2025-07-23 Gavin Smith * info/session.c, info/scan.c (free_history_node): Move to scan.c, as this is a slightly "lower-level" source file. 2025-07-23 Gavin Smith No for