blob: 2b8889aa6cf010dfff6029fea35330beda37367a [file]
2026-05-13 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/convert_html.c (html_prepare_converted_output_info):
access command flags only if an element is not a text element.
* tta/perl/Makefile.tres, tta/perl/t/converters_tests.t
(documentinfo_with_empty_line): new test with empty line in
@documentinfo.
2026-05-13 Patrice Dumas <pertusus@free.fr>
Do not install nor put on the web the texi2any internals manual
* doc/Makefile.am (wwwdoc-build, wwwdoc-install): do not generate the
texi2any internals manual. The manual is only useful to develop
texi2any and can be with the sources only.
* doc/tta_api/Makefile.am (AUTOMAKE_OPTIONS): add no-installinfo to
avoid installing the texi2any internals Info manual.
2026-05-13 Patrice Dumas <pertusus@free.fr>
* tta/perl/t/z_misc/html_convert_tree.t,
tta/perl/t/z_misc/test_fill_gaps_in_sectioning.t: use a combination of
XS_parser_enabled call return true and core_modules_built set to
determine if the XS Parser is used, as it is the good way to check
that the XS Parser is actually used.
2026-05-13 Patrice Dumas <pertusus@free.fr>
* Pod-Simple-Texinfo/pod2texi.pl, tta/perl/t/*.t: remove unused code,
change formatting of functions beginning. Change in spacing.
Cosmetic changes.
2026-05-12 Patrice Dumas <pertusus@free.fr>
* util/htmlxref.d/Texinfo_GNU.cnf: add autosprintf.
2026-05-11 Patrice Dumas <pertusus@free.fr>
* Pod-Simple-Texinfo/t/Pod-Simple-Texinfo.t: change formatting of
functions beginning. Change in spacing.
* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm: update Pod
documentation.
2026-05-11 Patrice Dumas <pertusus@free.fr>
* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm: change formatting of
functions beginning. Use defined or exists if the value is not used.
Change in spacing.
2026-05-11 Patrice Dumas <pertusus@free.fr>
* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm (%line_commands)
(_texinfo_handle_element_end): keep %pod_head_commands_level levels
out of %line_commands.
* Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm,
Pod-Simple-Texinfo/pod2texi.pl: change formatting of functions
beginning. Use defined or exists if the value is not used. Change in
spacing. Other cosmetic changes.
2026-05-11 Patrice Dumas <pertusus@free.fr>
* Pod-Simple-Texinfo/pod2texi.pl (BEGIN): update to match the change
in Texinfo::ModulePath::init call.
2026-05-11 Patrice Dumas <pertusus@free.fr>
* Pod-Simple-Texinfo/pod2texi.pl (pod2texi_help), POD: use document
instead of manual, convert instead of translate. Other updates.
* doc/texinfo.texi (Invoking @command{pod2texi}): use document
instead of manual, convert instead of translate.
2026-05-11 Patrice Dumas <pertusus@free.fr>
* tta/perl/ext/epub3.pm (@epub_language, epub_setup, epub_init)
(epub_finish): add epub_init handler where all the languages are
gathered. Use configured documentlanguage and documentscript and
go through global commands information language_commands to gather
all the language in the document, and use all the languages to set
dc:language elements. Only add a language with @documentscript or
@documentlanguagevariant if there was already a script or variant
setup, to avoid setting languages without following @documentscript or
@documentlanguagevariant values set.
* tta/perl/Makefile.tres, tta/perl/t/epub_tests.t
(languages_scripts_variants): new test of multilingual document.
2026-05-10 Patrice Dumas <pertusus@free.fr>
Generic metadata in HTML and DocBook in @documentinfo
* tta/C/convert/build_html_perl_info.c (pass_sv_converter_info),
tta/C/convert/convert_html.c (html_prepare_converted_output_info),
tta/C/convert/format_html.c (html_default_format_begin_file)
(html_default_format_node_redirection_page),
tta/C/convert/html_converter_finish.c (html_free_converter),
tta/C/convert/html_prepare_converter.c
(html_conversion_initialization), tta/C/main/converter_types.h
(CONVERTER), tta/perl/Texinfo/Convert/HTML.pm
(_file_header_information, _default_format_begin_file)
(_default_format_node_redirection_page),
tta/perl/Texinfo/Convert/HTMLNonXS.pm (%available_converter_info)
(_prepare_converted_output_info): add documentinfo_metadata
to converter in C and to 'converter_info' in Perl with @documentinfo
content except for metadata_commands. Get in _file_header_information
in Perl. Output in file headers.
* doc/texi2any_api.texi (Converter General Information): document
documentinfo_metadata in converter information.
* tta/perl/Texinfo/Convert/DocBook.pm (conversion_output_begin):
gather @documentinfo content except for metadata_commands and output
in documentinfo element.
* tta/perl/t/converters_tests.t (metadata_in_documentinfo),
tta/perl/Makefile.tres: new test for metadata in @documentinfo.
2026-05-10 Patrice Dumas <pertusus@free.fr>
* tta/perl/ext/epub3.pm ($epub_doc_dest_dir): reindent. Rename
$epub_document_destination_directory as $epub_doc_dest_dir.
2026-05-10 Patrice Dumas <pertusus@free.fr>
* tta/C/api_for_swig/swig_element_types.h (TXI_CM_OTHER_FLAGS_LIST),
tta/C/main/builtin_commands.h (CF_metadata),
tta/C/main/command_data.awk, tta/data/command_data.txt: add metadata
flag for @-commands with document metadata information that are
supposed to be handled explicitly in output formats conversion.
* tta/perl/ext/epub3.pm: remove local definition of
$metadata_commands, use Texinfo::Commands::metadata_commands.
2026-05-10 Patrice Dumas <pertusus@free.fr>
Generic metadata in EPUB in @documentinfo
* tta/perl/ext/epub3.pm (%metadata_commands, conversion_output_begin):
convert content of @documentinfo that is not an explicit @-command
usually used for metadata in the <metadata> EPUB element.
* tta/perl/t/epub_tests.t (epub_metadata), tta/perl/Makefile.tres: new
test.
2026-05-09 Gavin Smith <gavinsmith0123@gmail.com>
Fix M-TAB moving before DEL-quoted cross-reference
* info/scan.c (scan_reference_label) [hide-note-references=On]:
If "quoting" DEL bytes surround the reference label, remove them
when rewriting the node contents.
Because these bytes are invisible, if the node position is placed
on one of these bytes, it would be advanced past that byte in
display_cursor_at_point, which is called in the main loop in
info_read_and_dispatch. Then the cursor would get "stuck"
when trying to move before a cross-reference with M-TAB.
Report from Aidan <aidanczhai@gmail.com>.
2026-05-07 Patrice Dumas <pertusus@free.fr>
* doc/texi2any_api.texi (Text Tree Elements Conversion): document
xml_format_text_with_numeric_entities.
* doc/texi2any_api.texi (Commands Without Arguments Formatting):
document expand_today.
* doc/texi2any_api.texi (Accent Commands with Arguments Formatting):
document %Texinfo::UnicodeData::unicode_accented_letters.
* doc/texi2any_api.texi (Specific Formatting for Indices): add
the description of more indices related formatting functions.
* doc/texi2any_api.texi (@code{@@verbatiminclude} Formatting)
(Definition Commands Formatting)
(Float and List of Floats Formatting)
(Block Commands with @code{@@item})
(Informative Commands): add nodes for diverse elements.
* doc/texi2any_api.texi (Specific Functions for Specific Elements):
remove previous "Specific Functions for Specific Elements" node and
rename "Functions and Data for Default Formatting" as "Specific
Functions for Specific Elements".
* doc/texi2any_api.texi (Specific Functions for Specific Elements):
document simple_arg_text, empty_spaces_argument and
Texinfo::Convert::NodeNameNormalization methods.
* tta/perl/Texinfo/Convert/HTML.pm (_convert_float_command): call
float_name_caption object oriented.
* tta/perl/Texinfo/Convert/NodeNameNormalization.pm (@EXPORT_OK):
export convert_to_normalized.
2026-05-06 Patrice Dumas <pertusus@free.fr>
* doc/texi2any_api.texi (Command Tree Element Conversion)
(Functions and Data for Default Formatting): put information on
default formatting functions used for diverse commands in a spearate
chapter, keeping only formatting of commands that require calling some
specific functions in "Command Tree Element Conversion".
2026-05-06 Gavin Smith <gavinsmith0123@gmail.com>
Replace use of strcat and strncat
* install-info/install-info.c (split_entry):
Remove sole remaining use of strncat.
2026-05-06 Gavin Smith <gavinsmith0123@gmail.com>
Replace use of strcat
* install-info/install-info.c (format_entry):
Eliminate use of strcat and strncat.
2026-05-06 Gavin Smith <gavinsmith0123@gmail.com>
Replace use of strcat
* install-info/install-info.c (split_entry):
Eliminate use of strcat in this function, as it always needs to scan
the string from the beginning, which is a well-known defect in the use
of this function.
Remove pointless division by "sizeof (char)".
2026-05-06 Gavin Smith <gavinsmith0123@gmail.com>
* install-info/install-info.c (split_entry):
Only convert "\n" to " " a limited number of times, and allocate
enough memory to do so.
Memory overflow reported by LogicLuminary <memorylogicdev@gmail.com>.
2026-05-06 Patrice Dumas <pertusus@free.fr>
* doc/texi2any_api.texi (Texinfo Tree Conversion Functions),
POD documentation: update/improve.
2026-05-06 Patrice Dumas <pertusus@free.fr>
* tta/C/api_for_swig/swig_interface.c
(txi_ext_get_index_sorted_by_index), tta/C/convert/converter.c
(lang_info_sorting_locale, get_converter_indices_sorted_by_index)
(get_converter_indices_sorted_by_letter), tta/C/main/document.c
(sorted_indices_by_index, sorted_indices_by_letter)
(print_document_indices_sort_strings), tta/C/main/document_types.h,
tta/C/main/utils.c, tta/perl/Texinfo/Convert/ConverterNonXS.pm
(get_converter_indices_sorted_by_letter)
(get_converter_indices_sorted_by_index), tta/perl/Texinfo/Document.pm
(sorted_indices_by_letter, sorted_indices_by_index),
tta/perl/Texinfo/DocumentNonXS.pm
(print_document_indices_sort_strings): determine the
lang_sorting_locale based either on COLLATION_LANGUAGE customization
variable or current_lang_translations lang and script in Converter
code, in get_converter_indices_sorted_by_index and
get_converter_indices_sorted_by_letter instead of in Document code.
Move lang_info_sorting_locale to converter.c. Remove
SORTING_LANG_INFO and new_sorting_lang_info.
2026-05-05 Patrice Dumas <pertusus@free.fr>
* doc/texi2any_api.texi: add indices entries.
* tta/perl/Texinfo/Indices.pm (setup_index_entries_sort_strings)
(_setup_sortable_index_entries, sort_indices_by_letter): cosmetic
changes and variable names change.
Changes in POD and comments.
2026-05-05 Gavin Smith <gavinsmith0123@gmail.com>
info: Fix infinite loop
* info/session-cmd.c (forward_move_node_structure):
Replace call to info_handle_pointer to follow "Up" pointer.
Check Up pointer is not to a different file, to avoid going
all the way up to "(dir)". Also check that it does not point
to the current node, to avoid an infinite loop. Fall through to
code handling last node in the file when we can't go Up any more.
Remove braces and extra level of indentation.
An infinite loop occured when the "dir" node had an Up node.
Report from Aidan <aidanczhai@gmail.com>.
2026-05-04 Gavin Smith <gavinsmith0123@gmail.com>
* doc/texinfo.tex (@documentlanguagevariant, @documentscript):
Add stub implementations.
2026-05-03 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/get_converter_perl_info.c (get_hv_lang_translation)
(copy_sv_options_for_convert_text), tta/C/main/get_perl_info.c
(get_lang_translation_sv),
tta/perl/XSTexinfo/parser_document/TranslationsXS.xs
(cache_translate_string): add get_hv_lang_translation and
get_lang_translation_sv based on copy_sv_options_for_convert_text
code. Use in TranslationsXS.xs cache_translate_string.
* tta/C/api_for_swig/swig_interface.c
(txi_ext_get_index_sorted_by_index), tta/C/convert/converter.c
(get_converter_indices_sorted_by_index)
(get_converter_indices_sorted_by_letter), tta/C/main/document.c
(lang_info_sorting_locale, sorted_indices_by_index)
(sorted_indices_by_letter, print_document_indices_sort_strings),
tta/C/main/document.h (SORTING_LANG_INFO), tta/C/main/utils.c
(new_sorting_lang_info), tta/perl/Texinfo/Convert/ConverterNonXS.pm
(get_converter_indices_sorted_by_letter), tta/perl/Texinfo/Document.pm
(sorted_indices_by_letter, sorted_indices_by_index),
tta/perl/Texinfo/DocumentNonXS.pm
(print_document_indices_sort_strings),
tta/perl/XSTexinfo/convert/ConvertConverterXS.xs
(get_converter_indices_sorted_by_index): setup information on
language for sorting based COLLATION_LANGUAGE or on current lang
translations lang_info in a SORTING_LANG_INFO structure in
get_converter_indices_sorted_by_*, using new_sorting_lang_info in C.
Use this information in sorted_indices_by_* to determine the
language to use for sorting, based either on COLLATION_LANGUAGE
or on the main language and script from the lang_info, using
lang_info_sorting_locale in C.
* tta/perl/Texinfo/Indices.pm (_setup_collator): rename $locale_lang
as $lang_sorting_locale.
* tta/tests/other/Makefile.am (EXTRA_DIST),
tta/tests/other/index_collation_script_test.texi,
tta/tests/other/list-of-tests
(index_collation_script_test_documentlanguage_collation): add test
with documentscript and DOCUMENTLANGUAGE_COLLATION set. This test is
not final, as the order is not different with and without the
documentscript for the selected index entries.
* tta/tests/other/list-of-tests: comment out tests of
XS_STRXFRM_COLLATION_LOCALE.
2026-05-03 Gavin Smith <gavinsmith0123@gmail.com>
* doc/texinfo.texi (Internationalization, Setting the language):
Grammar fixes.
2026-05-03 Patrice Dumas <pertusus@free.fr>
document @documentscript and @documentlanguagevariant
* doc/texinfo.texi (Inserting Accents): add a pragraph stating that
accented chracters and other can in general be input as encoded
characters.
* doc/texinfo.texi (Internationalization): be more precise on the
current status of Internationalization in Texinfo.
* doc/texinfo.texi (Internationalization): introduce the @-commands
and elements of a language locale.
* doc/texinfo.texi (Setting the language): rename
@code{@@documentlanguage} as "Setting the language". Document that
the IANA language subtag registry is used, use CC for the country code
and do not use a precise ISO 639 standard.
* doc/texinfo.texi (Setting the language)
(Customization Variables for @@-Commands)
(Global Customization Variables, Command List)
(Internationalization of Document Strings): add
@documentlanguagevariant and @documentscript.
* doc/texinfo.texi (Invoking @command{texi2any}): update description
of --document-language.
2026-05-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/HTML.pm (bcp47_tag),
tta/perl/t/init/translated_strings_customization.pm: rename
bcp47_locale as bcp47_tag.
* doc/texi2any_api.texi (Translated Strings Customization): document
the lang_info argument of format_translate_message and xpg_locale and
bcp47_tag use.
* tta/perl/init/documentation_examples.pm, doc/texi2any_api.texi
(Translated Strings Customization): use a country code in language to
show an XPG locale name in example.
2026-05-02 Patrice Dumas <pertusus@free.fr>
object-based interface for format_translate_message lang info argument
* tta/perl/Texinfo/Translations.pm (get_lang_info_xpg_locale): rename
get_lang_info_xdg_locale as get_lang_info_xpg_locale. Update callers.
* tta/perl/Texinfo/Convert/HTML.pm (Texinfo::Convert::HTML::Language)
(new, bcp47_locale, xpg_locale): new package turning lang_info to a
blessed reference, with two accessors xpg_locale and bcp47_locale.
* tta/perl/Texinfo/Convert/HTML.pm ($unknown_lang_info)
(_html_cache_translate_string): call
Texinfo::Convert::HTML::Language::new on the lang_info argument of
format_translate_message.
* tta/C/convert/call_html_perl_function.c
(call_formatting_function_format_translate_message): bless lang_info
argument of format_translate_message into the
Texinfo::Convert::HTML::Language class.
* tta/perl/t/init/translated_strings_customization.pm (%translations)
(_texi2any_tests_format_translate_message),
tta/perl/t/init_files_tests.t (customize_translations): use bcp47
locale name, add test of language with country code.
2026-05-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Translations.pm: rename translations argument as
translations_cache.
2026-05-01 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/build_html_perl_state.c (build_html_translated_names),
tta/perl/Texinfo/Translations.pm (_init_lang_translation)
(_set_lang_info_translation, $converters_translation_cache),
tta/perl/Texinfo/TranslationsNonXS.pm (cache_translate_string): use
lang_translations array references as
$Texinfo::Translations::converters_translation_cache values, not
translated strings hash. The translated strings hash is last in the
lang_translations array references and now set in
_init_lang_translation. Preset the empty string lang_translations in
converters_translation_cache for the unknown language.
2026-05-01 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Translations.pm (_lang_info_bcp47_locale): rename
lang_info_bcp47_locale as _lang_info_bcp47_locale.
* tta/C/main/translations.c (set_lang_info_translation),
tta/perl/Texinfo/Translations.pm (_set_lang_info_translation): set
bcp47_locale in set_lang_info_translation instead of right before in
callers. Update callers.
* tta/C/main/translations.c (new_element_language_translation),
tta/perl/Texinfo/Translations.pm (new_element_language_translation):
inline new_lang_info in new_element_language_translation. Remove
new_lang_info.
2026-05-01 Patrice Dumas <pertusus@free.fr>
* tta/C/main/translations.c (set_translations_documentlanguage)
(set_translations_documentscript)
(set_translations_documentlanguagevariant),
tta/perl/Texinfo/Translations.pm (set_translations_documentlanguage)
(set_translations_documentscript)
(set_translations_documentlanguagevariant): do not check the current
lang translations to return it, as it can only happen if the
user use the same command twice, which is not supposed to happen.
2026-05-01 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/convert_html.c (html_prepare_converted_output_info),
tta/C/convert/html_prepare_converter.c (html_setup_output),
tta/C/main/translations.c (reset_lang_translation_from_customization):
add reset_lang_translation_from_customization and use it in
html_prepare_converted_output_info and html_setup_output.
2026-05-01 Patrice Dumas <pertusus@free.fr>
* tta/C/main/convert_utils.c (definition_category_tree),
tta/perl/Texinfo/Convert/Utils.pm (definition_category_tree): remove
unused command_line_encoding argument. Update callers.
2026-05-01 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/build_html_perl_state.c (build_html_translated_names):
pass a full current_lang_translations including the translated strings
cache hash, setup if needed.
* tta/perl/Texinfo/TranslationsNonXS.pm (cache_translate_string):
update code now that lang translations always have a translation cache
associated.
2026-05-01 Patrice Dumas <pertusus@free.fr>
* tta/C/main/get_perl_info.c (get_lang_info_hv): get bcp47_locale from
Perl data.
* tta/C/main/get_perl_info.c (set_lang_info_copy_translation): rename
get_lang_info_translation as set_lang_info_copy_translation. Update
caller.
* tta/C/main/get_perl_info.c (new_lang_info_copy)
(set_lang_info_copy_translation): add new_lang_info_copy based on
new_copy_translation. Inline the remaining of new_copy_translation in
set_lang_info_copy_translation.
* tta/perl/Texinfo/Translations.pm (_init_lang_translation)
(_new_lang_info): rename new_lang_info as _new_lang_info and
_set_lang_info_translation as _init_lang_translation.
* tta/perl/Texinfo/Translations.pm (%parser_translation_cache): rename
%indices_lang_translations as %parser_translation_cache.
* tta/perl/Texinfo/Translations.pm (complete_indices): call
new_element_language_translation instead of two levels caching.
2026-05-01 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Translations.pm (new_element_language_translation):
add a translations cache argument and call _set_lang_info_translation.
Update callers.
* tta/perl/Texinfo/Translations.pm: remove new_lang_translations.
2026-04-30 Patrice Dumas <pertusus@free.fr>
* tta/C/main/translations.c (set_translations_documentscript)
(set_translations_documentlanguagevariant): copy lang only if it is
set.
* tta/perl/Makefile.tres, tta/perl/t/languages.t
(documentscript_documentlanguagevariant)
(documentlanguagevariant_documentscript): add tests for current lang
translations without @documentlanguage being set.
2026-04-30 Patrice Dumas <pertusus@free.fr>
* tta/C/main/translations.c: move code around.
2026-04-30 Patrice Dumas <pertusus@free.fr>
* tta/C/main/translations.c (new_element_language_translation): add
lang translation cache arguments, such that they are always set by the
callers, call set_lang_info_translation. Update callers.
* tta/C/parsetexi/indices.c (complete_indices): call
new_element_language_translation.
* tta/C/main/translations.c: remove new_element_lang_info and
new_lang_translations. Make more functions static.
* tta/C/main/translations.c (cache_translate_string): simplify now
that translations can only be unset if the lang_translation argument
is NULL.
* tta/C/main/translations.c (unknown_lang_translations)
(set_output_strings_translate_method, cache_translate_string):
add a specific lang translation tree list for unknown language, and
simpler code for that case. Remove unknown_lang_info.
2026-04-29 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/build_html_perl_state.c (build_html_translated_names):
build language_env again, reverting recent change, in case
cache_translate_string is not overriden.
* tta/perl/Texinfo/TransformationsNonXS.pm
(complete_tree_nodes_missing_menu, regenerate_master_menu): set
the translation cache when calling set_preamble_language_commands.
* tta/C/main/translations.c (cache_translate_string),
tta/perl/Texinfo/TranslationsNonXS.pm (cache_translate_string): move
code around to have all the code related to finding the translation
hash before the code finding the string and context in the hash.
Reorganize Perl code to be more like C code, to first find
translations hash.
2026-04-29 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/build_html_perl_state.c (build_html_translated_names):
inline set_perl_lang_translations in build_html_translated_names and
remove set_perl_lang_translations.
2026-04-29 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/build_html_perl_state.c (set_perl_lang_translations):
do not pass language_env, it is not needed as cache_translate_string
is overriden.
2026-04-29 Patrice Dumas <pertusus@free.fr>
add const for current lang translation in argument and return
2026-04-29 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/build_html_perl_state.c (set_perl_lang_translations):
do not pass translations at all, it is not needed as
cache_translate_string is overriden.
2026-04-29 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/build_html_perl_state.c (set_perl_lang_translations):
update for the changes in Perl code, by using converters_translation_cache
directly.
2026-04-29 Patrice Dumas <pertusus@free.fr>
gnulib update
* tta: run "gnulib-tool --add-import".
2026-04-29 Patrice Dumas <pertusus@free.fr>
revert 2026-04-22 change of bcp47.c now fixed upstream
2026-04-29 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/Converter.pm (converter_perl_release)
(converter_set_documentlanguage, converter_set_documentscript)
(converter_set_documentlanguagevariant)
(set_converter_preamble_language_commands),
tta/perl/Texinfo/Convert/Text.pm (copy_options_for_convert_text): do
not add a 'translations' state in converters, pass directly
$Texinfo::Translations::converters_translation_cache argument.
2026-04-29 Patrice Dumas <pertusus@free.fr>
* README-hacking: add a note to update TXI_DOCUMENT_TRANSLATED_STRINGS_NR
* tta/C/main/translations.c (converters_translation_cache),
tta/C/parsetexi/indices.c (parser_translation_cache),
tta/perl/Texinfo/Translations.pm ($converters_translation_cache)
($parser_translation_cache): rename translation_cache as
converters_translation_cache and
lang_translations_cache/lang_translations as parser_translation_cache.
Update users
* tta/C/main/translations.c (get_lang_info_translation): add const.
2026-04-28 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/Text.pm (copy_options_for_convert_text)
(convert, output): inline and remove
_initialize_converter_text_options_encoding and
_initialize_text_options_encoding.
* tta/C/main/convert_to_text.c, tta/perl/Texinfo/Convert/Text.pm:
remove text_set_language, text_set_script, text_set_languagevariant,
set_language, set_script and set_languagevariant.
* tta/C/convert/convert_html.c (html_prepare_converted_output_info):
remove language_variants unused variable code.
* tta/perl/t/z_misc/convert_to_text.t: add a test with a
@documentlanguage before the translated appendix @-command.
2026-04-27 Patrice Dumas <pertusus@free.fr>
* tta/C/main/build_perl_info.c (build_lang_info): build bcp47_locale
field too.
2026-04-27 Patrice Dumas <pertusus@free.fr>
* tta/C/main/manipulate_tree.c (parse_node_manual): destroy node if it
is not registered.
* tta/C/main/translations.c (set_translations_documentlanguage): free
bcp47_locale.
2026-04-27 Patrice Dumas <pertusus@free.fr>
* tta/C/main/build_perl_info.c (pass_global_info): remove unsed
variables.
2026-04-27 Patrice Dumas <pertusus@free.fr>
Document language_commands global commands data
2026-04-27 Patrice Dumas <pertusus@free.fr>
* tta/perl/texi2any.pl: do not set main_configuration documentlanguage
based on document information, as it is not gathered in document
information anymore. It wouldn't be needed from there anyway, as
values set from command-line or init files are already in
main_configuration.
* tta/C/parsetexi/parser.c (get_parser_info): rename get_document_info
as get_parser_info to have the same name as in Perl.
Changes in comments.
2026-04-27 Patrice Dumas <pertusus@free.fr>
* tta/perl/t/test_utils.pl (test): pass documentlanguage and
documentscript to test_customization_options.
* tta/perl/t/transformations.t (@tests_converted): set full_document.
* tta/perl/Makefile.tres, tta/perl/t/transformations.t
(regenerate_master_menu_language_at_beginning_and_end)
(regenerate_master_menu_language_at_beginning_end_set_lang),
tta/tests/formatting/no_detailmenu_lang_at_begin_end.texi,
tta/tests/formatting/Makefile.am (EXTRA_DIST),
tta/tests/formatting/list-of-tests (no_detailmenu_lang_at_begin_end)
(no_detailmenu_lang_at_begin_end_set_lang): add tests of
regenerate_master_menu tree transformations and documentlanguage at
beginning and end of Texinfo file, and setting documentlanguage.
2026-04-27 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/converter.c
(set_converter_preamble_language_commands),
tta/perl/Texinfo/Convert/Converter.pm
(set_converter_preamble_language_commands): reset configuration
variables to begin values in set_converter_preamble_language_commands.
Update callers.
* tta/C/main/translations.c (set_preamble_language_commands),
tta/perl/Texinfo/Translations.pm (set_preamble_language_commands):
start from a NULL lang_translations, remove the corresponding
argument. Update callers.
* tta/C/convert/build_html_perl_state.c (set_perl_lang_translations):
rename set_perl_translations_documentlanguage as
set_perl_lang_translations.
* tta/C/convert/build_html_perl_state.c (build_html_translated_names):
remove code setting documentlanguage for Text converter, as it is not
used.
2026-04-26 Patrice Dumas <pertusus@free.fr>
* tta/C/main/build_perl_info.c (pass_global_info): do not register
language related commands information directly in global_info.
2026-04-26 Patrice Dumas <pertusus@free.fr>
* tta/C/main/manipulate_tree.c (copy_tree_internal),
tta/perl/Texinfo/ManipulateTree.pm (_copy_tree): do not add a parent
to the copied element if the source element does not have a parent.
* tta/perl/Texinfo/Translations.pm (gdt): use
Texinfo::ManipulateTree::copy_element_tree to copy tree, and not
dclone, to get the same detailed tree as in C.
* tta/perl/Texinfo/Translations.pm (_set_lang_info_translation):
handle an undef $translations.
* tta/C/structuring_transfo/transformations.c
(complete_tree_nodes_missing_menu, regenerate_master_menu),
tta/perl/Texinfo/TransformationsNonXS.pm
(complete_tree_nodes_missing_menu, regenerate_master_menu): create
lang_translation by calling set_preamble_language_commands.
* tta/perl/Texinfo/ParserNonXS.pm (get_parser_info): do not register
language related commands information directly in global_info.
2026-04-26 Patrice Dumas <pertusus@free.fr>
for DocBook, take into account resetting by @documentlanguage in preamble
* tta/perl/Texinfo/Convert/DocBook.pm (conversion_output_begin): call
set_converter_preamble_language_commands to determine the bcp47_locale
at the end of the preamble.
2026-04-26 Patrice Dumas <pertusus@free.fr>
for HTML, take into account resetting by @documentlanguage in preamble
* tta/C/convert/convert_html.c (html_translate_names)
(html_convert_tree_append), tta/perl/Texinfo/Convert/HTML.pm
(_convert), tta/perl/Texinfo/Convert/HTMLNonXS.pm (_translate_names),
tta/perl/XSTexinfo/convert/ConvertHTMLXS.xs (_translate_names): do not
set current_lang_translations converter in *_translate_names, set it
before calling *_translate_names, for instance in
html_convert_tree_append. Remove language_variants *_translate_names
argument, update callers.
* tta/perl/Texinfo/Common.pm (in_preamble), tta/C/main/utils.c
(in_preamble): rename _in_preamble as in_preamble in Perl. Make
function extern in C and add const.
* tta/C/main/command_data.awk, tta/C/parsetexi/end_line.c
(end_line_misc_line), tta/C/main/build_perl_info.c
(build_global_commands), tta/C/main/utils.c (delete_global_commands),
tta/perl/Texinfo/ParserNonXS.pm (_end_line_misc_line): add new elements
list in global_commands with all the language related commands in the
order they appear in in the document. This allows to get the commands
in order to take into acount that @documentlanguage resets
@documentscript and @documentlanguagevariant.
* tta/C/main/document_types.h (PREAMBLE_LANG_CMD)
(PREAMBLE_LANG_CMD_LIST, GLOBAL_INFO), tta/C/main/utils.c
(delete_global_info), tta/C/parsetexi/parser.c (add_preamble_lang_cmd),
(get_document_info, parse_texi_document), tta/C/main/build_perl_info.c
(pass_global_info), tta/perl/Texinfo/ParserNonXS.pm (get_parser_info):
new global info field, preamble_lang_cmd with add textual information
on lang related commands appearing in preamble in the order the appear
in the preamble, and only if the values are not already set from
command-line.
* tta/C/convert/converter.c
(set_converter_preamble_language_commands), tta/C/main/translations.c
(set_preamble_language_commands), tta/C/main/convert_to_text.c
(copy_options_for_convert_text), tta/perl/Texinfo/Convert/Converter.pm
(set_converter_preamble_language_commands),
tta/perl/Texinfo/Translations.pm (set_preamble_language_commands),
tta/perl/Texinfo/Convert/Text.pm (copy_options_for_convert_text): add
to set current_lang_translations based on global info
preamble_lang_cmd. Use in copy_options_for_convert_text.
* tta/C/convert/convert_html.c (html_prepare_converted_output_info),
tta/C/convert/html_prepare_converter.c (html_setup_output),
tta/perl/Texinfo/Convert/HTMLNonXS.pm (_prepare_converted_output_info)
(_setup_output): call set_converter_preamble_language_commands to set
current_lang_translations to the end of the preamble values. Reset
afterwards.
* tta/perl/t/languages.t (documentscript_variant_reset_in_preamble),
tta/perl/Makefile.tres: add a test with @documentscript and
@documentlanguagevariant reset by @documentlanguge in preamble.
2026-04-24 Patrice Dumas <pertusus@free.fr>
* tta/perl/t/languages.t (unknown_documentscript_selection)
(documentlanguagevariant_selection): add more testing to have some
combinations now that documentlanguage unset the other language
commands.
2026-04-24 Patrice Dumas <pertusus@free.fr>
documentlanguage resets documentscript and variants in conversion
* tta/C/main/translations.c (set_translations_documentlanguage),
tta/perl/Texinfo/Translations.pm (set_translations_documentlanguage):
reset script and language variants.
* tta/perl/Texinfo/Convert/Text.pm (copy_options_for_convert_text):
call set_translations_documentlanguage first to avoid resetting the
other commands values.
2026-04-24 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Translations.pm (%indices_lang_translations)
(complete_indices): collect a lang_info only from the definition
element, and cache the corresponding lang_translations. Separate the
current_lang_translations and the element lang_translations such that
the element lang_translations can be undef independently of the
current_lang_translations.
* tta/C/main/translations.c (new_element_lang_info)
(new_element_language_translation), tta/perl/Texinfo/Translations.pm
(new_element_language_translation): return undef/NULL immediately
if documentlanguage is not present.
2026-04-24 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/Converter.pm
(converter_set_documentlanguage, converter_set_documentscript)
(converter_set_documentlanguagevariant),
tta/perl/Texinfo/Convert/Text.pm (set_language, set_script)
(set_languagevariant): do not register undef as
current_lang_translations.
* tta/perl/Texinfo/Translations.pm (new_lang_translations): return
directly undef if $lang_info is undef.
* tta/perl/Texinfo/Convert/HTML.pm (_html_cache_translate_string): use
a file scoped $unknown_lang_info when lang_translation is undef.
* tta/perl/Texinfo/Translations.pm (lang_info_bcp47_locale): add.
* tta/perl/Texinfo/Translations.pm (new_lang_info)
(set_translations_documentlanguage, set_translations_documentscript)
(set_translations_documentlanguagevariant): always set 'bcp47_locale'
when creating a lang translations. Remove get_lang_info_bcp47_locale.
Update get_lang_info_bcp47_locale callers.
2026-04-24 Patrice Dumas <pertusus@free.fr>
documentlanguage resets documentscript and variants in parsers
* tta/C/parsetexi/end_line.c (end_line_misc_line),
tta/perl/Texinfo/ParserNonXS.pm (_end_line_misc_line): reset
documentscript and documentlanguagevariant states when encountering
documentlanguage.
2026-04-24 Patrice Dumas <pertusus@free.fr>
* tta/C/main/build_perl_info.c (pass_global_info): pass
documentlanguagevariant from the end of the preamble.
* tta/C/main/utils.c (documentlanguagevariant_variants): change a
variable name.
2026-04-26 Gavin Smith <gavinsmith0123@gmail.com>
Index sort key output for UTF-8
* doc/texinfo.tex (\unicodechardefs):
Use \DeclareUnicodeCharacterSK instead of \DeclareUnicodeCharacter
for several characters in the Latin-1 block (U+00A0-U+OOFF).
2026-04-26 Gavin Smith <gavinsmith0123@gmail.com>
Index sort key output for UTF-8
* doc/texinfo.tex (\DeclareUnicodeCharacterSK): Add definition
to be used in place of \DeclareUnicodeCharacter to allow defining
sort string for index sort key along with the main definition for
the character.
2026-04-26 Gavin Smith <gavinsmith0123@gmail.com>
Index sort key output for UTF-8
* doc/texinfo.tex
(\ifinindexsortkey): Define with \newif.
(\doindexsegment): Set \inindexsortkeytrue when processing index
sort key.
(\UTFviiiSortkeyTwo, \UTFviiiSortkeyThree, \UTFviiiSortkeyFour):
Special definitions for UTF-8 sequences inside UTF-8 sequences.
By default, output the sequences as they are within a pair of
curly brackets. Check for special sort key definition and
use that instead if available.
(\DefineSortKey): Add macro to define special sort key for
Unicode codepoint. Do not actually use it anywhere yet.
(\DeclareUnicodeCharacterNative): Handle \ifinindexsortkey similarly
for luatex and xetex.
(\DeclareUnicodeCharacterUTFviii): Correct a comment.
There would be errors with texindex output with a UTF-8-encoded
Texinfo file under a non-UTF-8 locale, or with an awk program
that didn't pay attention to the locale encoding.
Report from Vincent Belaïche, March 2026, and Werner Lemberg,
November 2022.
2026-04-23 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/get_converter_perl_info.c
(copy_sv_options_for_convert_text), tta/C/main/get_perl_info.c
(get_lang_info_hv),
tta/perl/XSTexinfo/parser_document/TranslationsXS.xs
(cache_translate_string): allocate lang info in get_lang_info_hv.
* tta/C/main/translations.c (lang_info_bcp47_locale): add.
* tta/C/main/get_perl_info.c (get_lang_info_hv),
tta/C/main/translations.c (new_lang_info, new_copy_translation)
(set_translations_documentlanguage, set_translations_documentscript)
(set_translations_documentlanguagevariant): always set bcp47_locale
when creating a lang info. Remove get_lang_info_bcp47_locale. Update
get_lang_info_bcp47_locale callers to access directly bcp47_locale.
The bcp47_locale is always needed soon after the creation and it
simplifies the code.
* tta/C/parsetexi/indices.c (complete_indices): rename
current_lang_translations variable as element_lang_translations.
2026-04-23 Patrice Dumas <pertusus@free.fr>
use documentlanguagevariant in HTML, DocBook and LaTeX conversion
* tta/C/main/utils.c (documentlanguagevariant_variants): add.
* tta/C/convert/convert_html.c (html_translate_names)
(html_prepare_converted_output_info, html_convert_tree_append),
tta/C/convert/format_html.c
(html_convert_documentlanguagevariant_command),
tta/C/convert/html_prepare_converter.c
(commands_internal_conversion_table), tta/perl/Texinfo/Convert/HTML.pm
(_convert_documentlanguagevariant_command, _convert),
tta/perl/Texinfo/Convert/HTMLNonXS.pm (_translate_names)
(_prepare_converted_output_info),
tta/perl/XSTexinfo/convert/ConvertHTMLXS.xs (_translate_names): add
language_variants argument to *_translate_names. Set variants based
on documentlanguagevariant and value at the end of the preamble and
pass to translate_names. Update *_translate_names callers.
* tta/C/convert/html_prepare_converter.c (html_setup_output),
tta/perl/Texinfo/Convert/HTMLNonXS.pm (_setup_output): handle
documentlanguagevariant for BODY_ELEMENT_ATTRIBUTES lang attribute.
* tta/perl/Texinfo/Convert/DocBook.pm (%docbook_global_commands)
(conversion_output_begin, _convert): handle documentlanguagevariant.
* tta/perl/Texinfo/Convert/LaTeX.pm (%LaTeX_formatted_line_commands)
(%LaTeX_formatted_nobrace_commands): rename %formatted_line_commands
as %LaTeX_formatted_line_commands and %formatted_nobrace_commands as
%LaTeX_formatted_nobrace_commands.
* tta/perl/Texinfo/Convert/LaTeX.pm (%LaTeX_formatted_line_commands)
(_convert): handle documentlanguagevariant.
2026-04-23 Patrice Dumas <pertusus@free.fr>
use documentlanguagevariant in Plaintext and in Text with converter
* tta/C/main/utils.c (join_strings_list): add const.
* tta/C/main/convert_to_text.c (copy_options_for_convert_text)
(text_set_languagevariant), tta/C/main/translations.c
(set_translations_documentlanguagevariant),
tta/perl/Texinfo/Convert/Converter.pm (converter_set_documentscript),
tta/perl/Texinfo/Convert/Text.pm (copy_options_for_convert_text)
(set_languagevariant), tta/perl/Texinfo/Translations.pm
(set_translations_documentlanguagevariant): handle
documentlanguagevariant with set_translations_documentlanguagevariant,
converter_set_documentscript and text_set_languagevariant. Add
document argument to copy_options_for_convert_text and update callers.
Use global_information for documentlanguage and documentscript in Perl
copy_options_for_convert_text.
* tta/perl/Texinfo/Convert/Plaintext.pm (%formatted_line_commands)
(_convert): set current lang translation based on
documentlanguagevariant.
* tta/C/main/translations.c (new_copy_translation): inline
copy_lang_info in new_copy_translation.
* tta/C/main/translations.c (set_translations_documentscript): set to
0 before copying.
* po_document/qaa.po, po_document/qaa@1234.po,
po_document/qaa@latin.po, tta/perl/t/z_misc/convert_to_text.t
(@tests_specs, run_test): add a function to generalize running tests
and tests specifications that also test documentscript and
documentlanguagevariant. Call parse_texi_text instead of
parse_texi_piece and let the generic code set documentlanguage and
documentscript.
2026-04-22 Patrice Dumas <pertusus@free.fr>
use documentlanguagevariant in completed def alias translations
* tta/C/main/translations.c (init_lang_translation): use both the XPG
full locale and the lang part if they are different.
* tta/C/main/translations.c (new_lang_info), tta/C/main/translations.c
(new_element_lang_info, new_element_language_translation),
tta/perl/Texinfo/Translations.pm (new_lang_info)
(new_element_language_translation): get documentlanguagevariant from
element and put variants in lang info.
* tta/perl/Makefile.tres, tta/perl/t/languages.t
(documentlanguagevariant_conversion): add test of
@documentlanguagevariant for conversion.
2026-04-22 Patrice Dumas <pertusus@free.fr>
* tta/gnulib/lib/bcp47.c (bcp47_to_xpg): do not consider a subtag with
numbers to possibly be a script subtag. Local fix reported upstream:
https://lists.gnu.org/archive/html/bug-gnulib/2026-04/msg00154.html
2026-04-22 Patrice Dumas <pertusus@free.fr>
* po_document/LINGUAS, po_document/Makevars (UNDESIRED_LINGUAS),
po_document/qaa@1234.po: rename qaa@123.po as qaa@1234.po and update
translations. A variant with numbers must be at least 4 characters
long.
2026-04-22 Patrice Dumas <pertusus@free.fr>
Set documentlanguagevariant in extra for translations and global info
* tta/C/main/utils.c (analyze_documentlanguagevariant_argument_e),
tta/C/parsetexi/end_line.c (end_line_misc_line),
tta/perl/Texinfo/Common.pm
(_analyze_documentlanguagevariant_argument_e)
(warn_documentlanguagevariant_arguments)
(documentlanguagevariant_variants), tta/perl/Texinfo/ParserNonXS.pm
(_end_line_misc_line) (@translation_commands), : add
analyze_documentlanguagevariant_argument_e. Add warnings on malformed
or unknown documentlanguagevariant arguments.
* tta/C/main/tree_types.h (AI_KEYS_LIST), tta/C/parsetexi/def.c
(parse_def), tta/C/parsetexi/end_line.c (end_line_def_line),
tta/perl/Texinfo/ManipulateTree.pm (_print_element_associated_info),
tta/perl/Texinfo/ParserNonXS.pm (@translation_commands): add extra
documentlanguagevariant and pass it to def elements to translate.
* tta/C/main/build_perl_info.c (pass_global_info),
tta/C/main/document_types.h (GLOBAL_INFO), tta/C/main/utils.c
(delete_global_info), tta/C/parsetexi/end_line.c (end_line_misc_line),
tta/perl/Texinfo/ParserNonXS.pm (get_parser_info): pass
documentlanguagevariant to global info.
* tta/perl/Makefile.tres, tta/perl/t/08misc_commands.t
(documentlanguagevariant_validity), tta/perl/t/languages.t
(documentlanguagevariant_selection): add tests for malformed
documentlanguagevariant arguments, and to see extra being set.
2026-04-22 Patrice Dumas <pertusus@free.fr>
* po_document/qaa@123.po: add pseudo-translations that make clear
which file they come from.
2026-04-21 Patrice Dumas <pertusus@free.fr>
Use documentscript in conversion
* tta/C/main/utils.c (analyze_documentscript_argument): handle NULL
text.
* tta/perl/Texinfo/Translations.pm (get_lang_info_xdg_locale): fix
typo in module name.
* tta/perl/Texinfo/Translations.pm
(set_translations_documentlanguage): return current_lang_translations
if the documentlanguage is bogus.
* tta/C/convert/build_html_perl_state.c
(set_perl_translations_documentlanguage),
tta/C/convert/get_converter_perl_info.c
(copy_sv_options_for_convert_text): use converter
current_lang_translations to build the lang info Perl information
through a call to build_lang_info.
* tta/C/main/translations.c (new_lang_info, new_element_lang_info)
(new_lang_translations, new_element_language_translation)
(set_translations_documentlanguage), tta/C/main/tree_types.h
(LANG_TRANSLATION), tta/perl/Texinfo/Translations.pm (new_lang_info)
(new_lang_translations, new_element_language_translation),
tta/perl/XSTexinfo/parser_document/TranslationsXS.xs
(cache_translate_string): add new_lang_info and new_element_lang_info,
new_lang_translations and new_element_language_translation. Use a
pointer for DOCUMENT_LANG_INFO info in LANG_TRANSLATION. Update
set_translations_documentlanguage and other users. Remove
new_documentlanguage_translation, get_documentlanguage_translation and
fill_document_lang_info.
* tta/C/main/translations.c (destroy_document_lang_info): replace
free_document_lang_info by destroy_document_lang_info and free the
lang_info too.
* tta/C/main/translations.c (set_translations_documentscript),
tta/perl/Texinfo/Translations.pm (set_translations_documentscript):
add.
* tta/C/main/build_perl_info.c (build_convert_text_options),
tta/C/main/convert_to_text.c (destroy_text_options)
(copy_options_for_convert_text, text_set_language, text_set_script)
tta/C/main/convert_to_text.h (TEXT_OPTIONS),
tta/perl/Texinfo/Convert/Text.pm (copy_options_for_convert_text)
(set_script): remove documentlanguage from text options, instead set
current_lang_translations based on documentlanguage and documentscript
options values. Add text_set_script and set_script.
* tta/C/convert/converter.c (set_converter_init_information),
tta/perl/Texinfo/Convert/Converter.pm (converter_set_documentscript),
tta/perl/Texinfo/Convert/ConverterNonXS.pm (_generic_converter_init):
pass documentscript. Add converter_set_documentscript.
* tta/C/convert/convert_html.c (html_prepare_converted_output_info),
tta/perl/Texinfo/Convert/HTMLNonXS.pm
(_prepare_converted_output_info): use current_lang_translations to get
bcp47_locale and set documentlanguage and documentscript in
html_prepare_converted_output_info.
* tta/C/parsetexi/indices.c (complete_indices),
tta/perl/Texinfo/Translations.pm (complete_indices): use
new_element_lang_info and set_lang_info_translation in
complete_indices in C and new_element_language_translation in Perl.
* tta/C/structuring_transfo/transformations.c
(complete_tree_nodes_missing_menu, regenerate_master_menu),
tta/perl/Texinfo/TransformationsNonXS.pm
(complete_tree_nodes_missing_menu, regenerate_master_menu): setup
lang_translation with a call to new_lang_translations.
* tta/C/convert/convert_html.c (html_translate_names)
(conf_for_documentlanguage, html_convert_tree_append),
tta/C/convert/html_prepare_converter.c (informative_global_commands)
(conf_for_documentlanguage, commands_internal_conversion_table),
tta/perl/Texinfo/Convert/HTML.pm (@informative_global_commands)
(_convert), tta/perl/Texinfo/Convert/HTMLNonXS.pm (_translate_names):
in html_translate_names, call text_set_script and
set_translations_documentscript based on documentscript option. Get
documentscript value during conversion, and call html_translate_names
for documentscript too.
* tta/perl/Texinfo/Convert/DocBook.pm (%docbook_global_commands)
(conversion_output_begin, _convert), tta/perl/Texinfo/Convert/LaTeX.pm
(_informative_command_output, _latex_begin_output),
tta/perl/Texinfo/Convert/Plaintext.pm (@informative_global_commands)
(_convert): handle documentscript.
* tta/C/main/convert_to_text.c (convert_to_text_internal),
tta/C/main/convert_utils.c (definition_category_tree),
tta/perl/Texinfo/Convert/Text.pm (_convert),
tta/perl/Texinfo/Convert/Utils.pm (definition_category_tree): use
new_element_language_translation to set lang translations for category
text when there is no converter.
* tta/C/convert/html_prepare_converter.c (html_setup_output),
tta/perl/Texinfo/Convert/HTMLNonXS.pm (_setup_output): use
new_lang_info with configuration options to determine the body lang
attribute.
* tta/perl/t/languages.t (documentscript_conversion),
tta/perl/Makefile.tres: add test for documentscript in conversions.
* tta/perl/t/z_misc/do_master_menu.t: simply pass undef for
lang_translation.
2026-04-20 Patrice Dumas <pertusus@free.fr>
* po_document/qaa.po po_document/qaa@latin.po: add pseudo-translations
that make clear which file they come from.
2026-04-20 Patrice Dumas <pertusus@free.fr>
Setup po files with private use language for script and variant tests
* README-hacking, po_document/LINGUAS, po_document/Makevars
(UNDESIRED_LINGUAS, INST_LINGUAS, CATALOGS), po_document/qaa.po,
po_document/qaa@123.po, po_document/qaa@latin.po: add po files solely
used for in-build tests. Reset CATALOGS in Makevars excluding these
po files such that they are not installed. Use qaa language for these
files, which is in a range with "Private use" Description in
language-subtag-registry.
2026-04-20 Patrice Dumas <pertusus@free.fr>
* tta/C/main/tree_types.h (enum extra_type): rename extra_misc_args as
extra_string_list. Update users.
* tta/C/main/extra.c (add_extra_string_list)
(lookup_extra_string_list): rename lookup_extra_misc_args as
lookup_extra_string_list and add_extra_misc_args as
add_extra_string_list. Update callers.
* tta/C/main/tree_types.h (AI_KEYS_LIST), tta/C/parsetexi/macro.c
(parse_macro_command_line, lookup_macro_parameter)
(expand_macro_arguments, expand_linemacro_arguments, handle_macro),
tta/perl/Texinfo/Example/TexinfoMarkup.pm (_convert),
tta/perl/Texinfo/ManipulateTree.pm (_print_element_associated_info),
tta/perl/Texinfo/ParserNonXS.pm (_parse_macro_command_line)
(_expand_macro_arguments, _expand_linemacro_arguments)
(_handle_macro): add formal_args extra_string_list extra element for
macro formal arguments list and use it.
* tta/C/api_for_swig/swig_interface.c (txi_ext_element_formal_args),
tta/swig/texinfo.i (element_formal_args): add.
2026-04-19 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/html_converter_finish.c (html_free_converter): clear
units_direction_names_index (found with valgrind).
2026-04-19 Patrice Dumas <pertusus@free.fr>
* tta/C/main/build_perl_info.c: move code around.
2026-04-19 Patrice Dumas <pertusus@free.fr>
* tta/C/main/build_perl_info.c (build_key_pair_info),
tta/C/tree_elements/build_perl_tree_elements.c
(build_element_attribute): replace build_extra_misc_args by a call to
build_string_list. Remove build_extra_misc_args.
2026-04-19 Patrice Dumas <pertusus@free.fr>
* tta/perl/t/languages.t (invalid_documentlanguage)
(documentlanguage_selection_accented_region)
(documentlanguage_selection_region_unicode): do not set
COMMAND_LINE_ENCODING as documentlanguage argument is not encoded
anymore.
2026-04-19 Patrice Dumas <pertusus@free.fr>
* tta/C/parsetexi/end_line.c (end_line_misc_line),
tta/perl/Texinfo/ParserNonXS.pm (_end_line_misc_line): do not set
documentscript state if it is an empty string.
* tta/perl/Makefile.tres, tta/perl/t/languages.t
(documentscript_selection, documentscript_before_documentlanguage)
(unknown_documentscript_selection): add tests of documentscript
being set in translated elements extra.
2026-04-19 Patrice Dumas <pertusus@free.fr>
Set documentscript extra on translated elements
* tta/C/main/utils.c (analyze_documentscript_argument): rename
analyse_documentscript_argument as analyze_documentscript_argument.
Add valid_script argument. Fix one-off NUL.
* tta/C/parsetexi/parser.c (text_contents_to_plain_text): return an
empty string, never return NULL. Update callers.
* tta/C/main/parser_conf.h (PARSER_CONF), tta/C/parsetexi/api.c
(initialize_parsing), tta/C/parsetexi/conf.c
(parser_conf_set_documentscript), tta/C/parsetexi/parser.c
(global_documentscript), tta/C/parsetexi/end_line.c
(end_line_def_line), tta/perl/Texinfo/Common.pm
(analyze_documentscript_argument), tta/perl/Texinfo/ParserNonXS.pm
(@translation_commands, get_parser_info, _initialize_parsing)
(_end_line_misc_line), tta/perl/Texinfo/ParserXS.pm (parser),
tta/perl/XSTexinfo/parser_document/ParserXS.xs
(parser_conf_set_documentscript), tta/C/convert/texinfo.c
(txi_parser), tta/C/main/build_perl_info.c (pass_global_info),
tta/perl/texi2any.pl, tta/C/main/document.c (set_document_options):
pass documentscript from command line. Analyze documentscript
argument and warn if needed. Set documentscript in parser state.
* tta/C/parsetexi/def.c (parse_def), tta/C/main/tree_types.h
(AI_KEYS_LIST), tta/C/parsetexi/end_line.c (end_line_def_line),
tta/perl/Texinfo/ParserNonXS.pm (_parse_def, _end_line_def_line):
put documenscript in extra for elements needing to be translated.
* tta/C/api_for_swig/swig_parser_api.c
(txi_ext_parser_conf_set_documentscript), tta/swig/texinfo.i
(parser_conf_set_documentscript): add.
* tta/perl/t/08misc_commands.t (documentscript_argument),
tta/perl/Makefile.tres: add @documentscript arguments test.
2026-04-19 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/Converter.pm
(converter_set_documentlanguage), tta/perl/Texinfo/Convert/Text.pm
(set_language), tta/perl/Texinfo/Convert/Utils.pm,
tta/perl/Texinfo/Translations.pm (_set_lang_info_translation)
(set_translations_documentlanguage): move _set_lang_info_translation
and set_translations_documentlanguage, have
set_translations_documentlanguage return the new current translations,
pass translations hashes and current translations in argument. Add
converter_set_documentlanguage wrapper and use Text.pm set_language
as wrapper. Update callers to call the wrappers. For a more logical
separation of code and to be more like C.
* tta/perl/Texinfo/Translations.pm (_new_lang_info_translation):
rename new_lang_info_translation as _new_lang_info_translation.
2026-04-19 Patrice Dumas <pertusus@free.fr>
* tta/C/main/translations.c (set_translations_documentlanguage),
tta/perl/Texinfo/Convert/Utils.pm (set_translations_documentlanguage),
tta/C/convert/build_html_perl_state.c
(set_perl_translations_documentlanguage): rename
switch_lang_translations as set_translations_documentlanguage and
switch_perl_lang_translations as
set_perl_translations_documentlanguage.
2026-04-19 Patrice Dumas <pertusus@free.fr>
Merge new documentlanguage with current lang translations
* tta/perl/Texinfo/Translations.pm (new_lang_info_translation):
split out of new_documentlanguage_translation.
* tta/C/main/translations.c (switch_lang_translations),
tta/perl/Texinfo/Convert/Utils.pm (switch_lang_translations)
(_switch_lang_info_translations): compare lang and region to
current_lang_translations. Merge current_lang_translations lang_info
with new documentlanguage information. add _set_lang_info_translation
in Perl.
* tta/C/structuring_transfo/structuring.c (new_complete_node_menu):
allow NULL lang_translations.
* tta/perl/Texinfo/Common.pm (analyze_documentlanguage_argument):
allow undef argument.
* tta/C/main/translations.c (set_lang_info_translation): inline and
remove new_set_translation. Rename info as lang_info.
2026-04-18 Patrice Dumas <pertusus@free.fr>
Add data fields for language scripts and variants
* tta/C/convert/build_html_perl_state.c
(switch_perl_lang_translations),
tta/C/convert/call_html_perl_function.c
(call_formatting_function_format_translate_message),
tta/C/main/build_perl_info.c (build_lang_info): add build_lang_info.
* tta/C/main/translations.c (free_document_lang_info): rename
clear_document_lang_info as free_document_lang_info. Update callers.
* tta/C/main/translations.c (copy_lang_info, new_copy_translation):
add copy_lang_info, based on new_copy_translation.
* tta/C/convert/build_html_perl_state.c
(switch_perl_lang_translations),
tta/C/convert/call_html_perl_function.c
(call_formatting_function_format_translate_message),
tta/C/convert/convert_html.c (unknown_lang_info),
tta/C/convert/html_prepare_converter.c (html_setup_output),
tta/C/main/build_perl_info.c (build_lang_info),
tta/C/main/get_perl_info.c (get_lang_info_hv),
tta/C/main/translations.c (get_lang_info_bcp47_locale)
(fill_document_lang_info, free_document_lang_info)
(init_lang_translation, new_documentlanguage_translation)
(new_set_translation, copy_lang_info, new_copy_translation)
(find_lang_translation, set_lang_info_translation)
(get_lang_info_translation, switch_lang_translations)
(unknown_lang_info), tta/C/main/tree_types.h (DOCUMENT_LANG_INFO),
tta/perl/Texinfo/Convert/Converter.pm (current_bcp47_locale),
tta/perl/Texinfo/Convert/HTML.pm (_html_cache_translate_string),
tta/perl/Texinfo/Convert/HTMLNonXS.pm (_setup_output),
tta/perl/Texinfo/Convert/Utils.pm (switch_lang_translations),
tta/perl/Texinfo/Translations.pm (get_lang_info_xdg_locale),
(get_lang_info_bcp47_locale, fill_document_lang_info)
(new_documentlanguage_translation, complete_indices),
tta/perl/Texinfo/TranslationsNonXS.pm (cache_translate_string),
tta/perl/XSTexinfo/parser_document/TranslationsXS.xs
(cache_translate_string): use a hash for lang_info in Perl. Add
script and variants to lang info data structures. Add
get_lang_info_bcp47_locale in C. Do not set immediately bcp47_locale,
set when needed by calling get_lang_info_bcp47_locale. Initialize
lang info to 0. Because get_lang_info_bcp47_locale modifies the data,
remove const for most LANG_TRANSLATION. Add get_lang_info_hv. Modify
get_lang_info_xdg_locale and get_lang_info_bcp47_locale to prepare for
having script and variants set in lang info.
* tta/C/parsetexi/indices.c: reindent.
2026-04-18 Patrice Dumas <pertusus@free.fr>
* tta/maintain/regenerate_documentlanguages-iana.pl: add
%documentscript_XPG_script to associated ISO script name to name
usable for XPG locales.
2026-04-18 Patrice Dumas <pertusus@free.fr>
* tta/data/options_data.txt (documentscript): add documentscript.
2026-04-18 Patrice Dumas <pertusus@free.fr>
* tta/C/main/utils.c (join_strings_list): add delimiter argument.
Update callers.
* tta/C/main/utils.c (analyse_documentscript_argument): add.
* tta/C/main/utils.h (TXI_DOCUMENT_SCRIPT): add typedef.
2026-04-18 Patrice Dumas <pertusus@free.fr>
* tta/perl/t/init/translate_txiinternalvalue_macro.init: change
beginning of function, use exists instead of defined.
2026-04-17 Patrice Dumas <pertusus@free.fr>
* tta/C/Makefile.am (C_libtexinfo_sources),
tta/maintain/regenerate_documentlanguages-iana.pl: get language
variants.
2026-04-17 Patrice Dumas <pertusus@free.fr>
* tta/C/main/utils.h (TXI_DOCUMENT_SCRIPT),
tta/maintain/regenerate_documentlanguages-iana.pl: add aliases for
script names to be able to specify scripts usually part of XPG locale
@variant.
2026-04-16 Patrice Dumas <pertusus@free.fr>
@documentlanguagevariant and @documentscript in texi2any tree
* tta/C/parsetexi/end_line.c (end_line_misc_line),
tta/C/parsetexi/handle_commands.c (handle_line_command),
tta/perl/Texinfo/ParserNonXS.pm (_end_line_misc_line)
(_handle_line_command): handle variadic line command. Use the same
condition to remove remaining_args for line commands as for adding it.
* tta/C/parsetexi/end_line.c (end_line_misc_line),
tta/data/command_data.txt (documentscript, documentlanguagevariant),
tta/perl/Texinfo/ParserNonXS.pm (_end_line_misc_line):
add @documentlanguagevariant and @documentscript.
* tta/perl/t/08misc_commands.t (documentlanguagevariant_arguments),
tta/perl/Makefile.tres: add test of @documentlanguagevariant.
2026-04-19 Gavin Smith <gavinsmith0123@gmail.com>
* doc/texinfo.tex (\onepageout): Remove call to \turnoffactive
directly after \atdummies as \atdummies also calls \turnoffactive.
2026-04-19 Gavin Smith <gavinsmith0123@gmail.com>
* info/dir.c (build_dir_node): avoid crash if dir file is malformed
or couldn't be loaded.
Report from Hilmar Preuße.
2026-04-14 Patrice Dumas <pertusus@free.fr>
Use BCP 47 language format in output formats
* tta/C/convert/html_prepare_converter.c (html_setup_output),
tta/perl/Texinfo/Convert/Converter.pm (current_bcp47_locale),
tta/perl/Texinfo/Convert/DocBook.pm (conversion_output_begin)
(_convert), tta/perl/Texinfo/Convert/HTMLNonXS.pm (_setup_output),
tta/perl/Texinfo/Convert/LaTeX.pm (_informative_command_output)
(_latex_header): add current_bcp47_locale to get the BCP 47 language
locale in the current_lang_translations. Output BCP 47 language
locales for output formats, as output formats use this language
specification format.
* tta/C/main/convert_utils.h: do not include translations.h in
convert_utils.h. Update users.
* tta/C/main/translations.c (init_lang_translation): add const.
2026-04-14 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/DocBook.pm,
tta/perl/Texinfo/Convert/HTMLNonXS.pm,
tta/perl/Texinfo/Convert/Info.pm, tta/perl/Texinfo/Convert/LaTeX.pm,
tta/perl/Texinfo/Convert/Plaintext.pm,
tta/perl/Texinfo/Convert/Text.pm,
tta/perl/Texinfo/Example/ReadDocBook.pm: remove now unused command
line encoding argument in calls to
Texinfo::Convert::Utils::switch_lang_translations.
* tta/perl/Texinfo/Convert/DocBook.pm: minor changes in code order.
2026-04-12 Patrice Dumas <pertusus@free.fr>
add lang information in lang_translation and use bcp47 locale
* tta/perl/Texinfo/Common.pm (analyze_documentlanguage_argument): add.
* tta/perl/Texinfo/Translations.pm ($lang_translations_cache): rename
$lang_translations as $lang_translations_cache.
* tta/C/convert/build_html_perl_state.c
(switch_perl_lang_translations, build_html_translated_names),
tta/C/convert/convert_html.c (html_cache_translate_string),
tta/C/main/call_perl_function.c (call_translations_translate_string),
tta/C/main/translations.c (translate_string, fill_document_lang_info)
(clear_document_lang_info, init_lang_translation)
(new_documentlanguage_translation, new_set_translation)
(new_copy_translation, free_lang_translation, find_lang_translation)
(set_lang_info_translation, get_lang_info_translation)
(get_documentlanguage_translation, switch_lang_translations)
(cache_translate_string), tta/C/main/tree_types.h (DOCUMENT_LANG_INFO)
(LANG_TRANSLATION), tta/C/parsetexi/indices.c (complete_indices),
(analyze_documentlanguage_argument), tta/perl/Texinfo/Convert/HTML.pm
(_html_cache_translate_string), tta/perl/Texinfo/Convert/Utils.pm
(switch_lang_translations), tta/perl/Texinfo/Translations.pm
(translate_string, fill_document_lang_info)
(new_documentlanguage_translation, complete_indices),
tta/perl/Texinfo/TranslationsNonXS.pm (cache_translate_string),
tta/perl/XSTexinfo/parser_document/TranslationsXS.xs
(cache_translate_string): add lang information with the language,
region and bcp47 language locale name to lang_translation. Setup
string to use with LANGUAGE environement variable for gettext when
creating lang_translation and pass it to translate_string to avoid
recomputing it many times. Rename new_lang_translation as
new_documentlanguage_translation and get_lang_translation as
get_documentlanguage_translation. Use the bcp47 language name to
retrieve translations. Remove encoded language as argument
and remove get_lang_encoded_lang_translation.
* tta/perl/Texinfo/Translations.pm (get_lang_info_xdg_locale)
(get_lang_info_bcp47_locale, get_lang_info_language)
(get_lang_info_region): add accessors for lang_info.
* tta/C/convert/call_html_perl_function.c
(call_formatting_function_format_translate_message),
tta/C/convert/convert_html.c (format_translate_message)
(html_custom_translate_string, html_cache_translate_string): pass
lang_info to html_custom_translate_string and
format_translate_message.
* tta/perl/init/documentation_examples.pm (*_translate_message),
tta/perl/t/init/css_in_node_redirection_page.pm (*_translate_message),
tta/perl/t/init/special_element_customization.pm
(*_translate_message),
tta/perl/t/init/translated_strings_customization.pm
(*_translate_message),
tta/perl/t/init/translation_in_parser_in_translation.pm
(*_translate_message): use get_lang_info_xdg_locale to get language
from lang_info.
* tta/C/main/utils.c (analyze_documentlanguage_argument): allocate
region. Update callers.
2026-04-11 Patrice Dumas <pertusus@free.fr>
add gnulib bcp47 module
* tta: run "gnulib-tool --add-import bcp47".
2026-04-10 Patrice Dumas <pertusus@free.fr>
* tta/C/main/utils.c (analyze_documentlanguage_argument),
tta/perl/Texinfo/Common.pm (warn_unknown_language): if the
documentlanguage is invalid, for instance if not ASCII, or not
lower-case language and upper-case region, return NULL/undef for the
language code.
* tta/perl/Texinfo/ParserNonXS.pm (_end_line_misc_line),
tta/C/parsetexi/end_line.c (end_line_misc_line), tta/C/texi2any.c
(main), tta/perl/texi2any.pl: do not set documentlanguage if the
argument is invalid.
2026-04-10 Patrice Dumas <pertusus@free.fr>
* tta/C/Makefile.am (C_libtexinfo_sources),
tta/maintain/regenerate_documentlanguages-iana.pl: improve
regenerate_documentlanguages-iana.pl to correctly extract language
names and region names. Extract scripts names and generate Perl hash,
gperf input and gperf generated C code.
2026-04-10 Patrice Dumas <pertusus@free.fr>
* tta/tests/coverage/formatting.texi: add something in Top.
2026-04-10 Patrice Dumas <pertusus@free.fr>
Add @ifepub and @ifnotepub in texi2any
* tta/C/texi2any.c (is_texinfo_output_formats)
(format_expanded_formats): add is_texinfo_output_formats.
* tta/C/texi2any.c (main): add converted_format_specification
for the converted format, and keep format_specification for the
main format.
* tta/C/texi2any.c (format_expanded_formats), tta/perl/texi2any.pl
(_format_expanded_formats): add expanded region for main format (as
opposed to converted format).
* tta/C/main/parser_conf.h (PARSER_CONF), tta/C/main/utils.c
(default_expanded_formats), tta/data/command_data.txt (ifepub)
(ifnotepub), tta/perl/Texinfo/Common.pm (%texinfo_output_formats):
add ifepub and ifnotepub block @-commands and epub expanded format.
* tta/C/texi2any.c (converter_format_expanded_region_name)
(IFEPUB_OPT, NO_IFEPUB_OPT, long_options, main),
tta/perl/t/test_utils.pl (convert_to_html, test), tta/perl/texi2any.pl
(%converter_format_expanded_region_name, makeinfo_help, GetOptions):
add epub as expanded format for EPUB output format and corresponding
command-line options.
* NEWS, doc/texinfo.texi (Conditional Commands, Raw Formatter Commands)
(Inline Conditionals, Invoking @command{texi2any}, Command List):
document @ifepub, @ifnotepub and associated command-line arguments.
* tta/perl/Makefile.tres, tta/perl/t/16raw.t (raw_epub),
tta/perl/t/epub_tests.t (epub_conditional, epub_inline_conditional),
tta/perl/t/html_tests.t (epub_conditionals): add tests for epub
conditionals.
2026-04-09 Gavin Smith <gavinsmith0123@gmail.com>
No menu positioning after "Up" to different file
* info/session-cmd.c (info_handle_pointer):
If going up to a different file, do not try to find the current
node in the new node's menu. This led to a bad result when going
"Up" to the dir node.
Report from Aidan <aidanczhai@gmail.com>.
2026-04-09 Gavin Smith <gavinsmith0123@gmail.com>
No crash for repeated visit to "*" node
* info/nodes.c (info_get_node_of_file_buffer):
If nodename is "*", set replica bit on node so to avoid attempt
to free the contents of the node.
Report from Aidan <aidanczhai@gmail.com>.
2026-04-09 Gavin Smith <gavinsmith0123@gmail.com>
Fix searching dir node
* info/scan.c (scan_node_contents): Clear N_Simple flag.
As we used info_node_of_tag_fast to build the dir node, the final
dir node still had this flag set on it, which led to an infinite
recursion in info_search_in_node_internal attempting to retrieve
the dir node without the N_Simple flag set.
* info/session-cmd.c (info_search_internal): Avoid attempting
to load other nodes when searching in the dir node (or other nodes
flagged as internal).
Report from Aidan <aidanczhai@gmail.com>.
2026-04-08 Gavin Smith <gavinsmith0123@gmail.com>
Fix dir node for hide-note-references=On
* info/nodes.c (info_get_node_tag_of_file_buffer):
New function, returning pointer into tags table.
(info_get_node_of_file_buffer): Use it.
* info/dir.c (build_dir_node): Use info_get_node_tag_of_file_buffer
along with info_node_of_tag_fast to load dir nodes without scanning
their contents. Only call scan_node_contents once, on the composite
dir node.
When hide-note-references was On, the dir node was completely broken
due to parts of it being processed by scan_node_contents multiple
times. Report from Aidan <aidanczhai@gmail.com>.
2026-04-08 Patrice Dumas <pertusus@free.fr>
* tta/C/main/translations.c (translate_string),
tta/perl/Texinfo/Translations.pm (translate_string): only get the main
language, do not try to match the region code at all, such that bogus
region codes do not prevent matching the main language, in case
gettext does not do it already.
* tta/perl/t/test_utils.pl (test): pass COMMAND_LINE_ENCODING to
convert_to_text.
* tta/perl/Makefile.tres, tta/perl/t/languages.t
(invalid_documentlanguage, documentlanguage_selection_accented_region)
(documentlanguage_selection_region_unicode): add more tests of invalid
documentlanguage. Check if the main language is selected with a bogus
region code.
2026-04-08 Gavin Smith <gavinsmith0123@gmail.com>
* info/session-cmd.c (info_move_to_next_xref, info_move_to_prev_xref):
If cursor-movement-scrolls=On and scroll-behaviour="Page Only", issue
an error message when there is no later (resp. earlier) cross-reference
to move to. Suggestion from Aidan <aidanczhai@gmail.com>.
2026-04-07 Gavin Smith <gavinsmith0123@gmail.com>
* info/dir.c (build_dir_node): Add blank line at end of list of
used dir nodes. Report from Aidan <aidanczhai@gmail.com>.
2026-04-06 Patrice Dumas <pertusus@free.fr>
* README-hacking: information on testing ffmpeg HTML customization
init file.
2026-04-06 Patrice Dumas <pertusus@free.fr>
* tta/C/structuring_transfo/transformations.c (new_node): add missing
NUL at end of string in place of white spaces.
* tta/perl/Texinfo/ManipulateTree.pm (modify_tree): if the returned
content is an empty string, remove the tree contents if it becomes
empty.
* tta/perl/Texinfo/Transformations.pm (_reference_to_arg): rename
$result as $new. Always return a list if the element is an @*ref
element.
* tta/C/structuring_transfo/transformations.c
(reference_to_arg_internal), tta/perl/Texinfo/Transformations.pm
(_reference_to_arg): put new element in returned elements list only if
there is a non-empty argument for the @*ref command.
* tta/perl/Makefile.tres, tta/perl/t/transformations.t
(test_new_node_empty_ref): test adding nodes with empty @ref to test
reference_to_arg_in_tree with empty @ref, and the result in _new_node.
2026-04-06 Patrice Dumas <pertusus@free.fr>
* tta/perl/t/transformations.t (insert_nodes_for_sectioning_commands):
sync with tta/perl/t/z_misc/automatic_nodes.t $sections_text.
2026-04-06 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/Plaintext.pm (node_name),
tta/perl/Texinfo/Transformations.pm
(_protect_first_parenthesis_in_targets): simplify conditions on
Texinfo::Common::get_label_element returned element.
2026-04-06 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Transformations.pm,
tta/perl/Texinfo/TransformationsNonXS.pm (_new_node): move _new_node
to TransformationsNonXS.pm.
2026-04-06 Patrice Dumas <pertusus@free.fr>
* tta/perl/t/z_misc/automatic_nodes.t: remove test_new_node and
associated tests, that are now equivalently done in the
t/transformations.t various_added_nodes_and_refs test.
2026-04-06 Patrice Dumas <pertusus@free.fr>
* tta/perl/Makefile.tres, tta/perl/t/transformations.t
(various_added_nodes_and_refs): add test of node additions with
insert_nodes_for_sectioning_commands tree transformation corresponding
to tests of _new_node in tta/perl/t/z_misc/automatic_nodes.t.
* tta/perl/Texinfo/Transformations.pm (_reference_to_arg): undef
contents of removed tree elements to remove more references.
2026-04-06 Patrice Dumas <pertusus@free.fr>
* tta/C/structuring_transfo/transformations.c
(move_selected_element_index_entries_after_items),
tta/perl/Texinfo/ManipulateTreeNonXS.pm
(_move_selected_element_index_entries_after_items): remove condition
on @subentry, which is not relevant now that subentries are in index
commands in the tree.
* tta/C/parsetexi/handle_commands.c (handle_line_command),
tta/perl/Texinfo/ParserNonXS.pm (_handle_line_command): rename
internal variable to avoid reusing the name of an external variable
for a more readable code.
2026-04-06 Patrice Dumas <pertusus@free.fr>
* tta/perl/Makefile.tres, tta/perl/t/transformations.t
(index_entry_before_item_with_subentry): test index entry with
@subentry before @item with with move_index_entries_after_items.
2026-04-06 Patrice Dumas <pertusus@free.fr>
* tta/tests/formatting/indices_in_begin_tables_lists.texi: add index
command and comments or something else in @itemize in @example.
2026-04-03 Gavin Smith <gavinsmith0123@gmail.com>
gnulib update
* tta: run "gnulib-tool --add-import".
* .gitignore: update
2026-04-03 Gavin Smith <gavinsmith0123@gmail.com>
gnulib update
* (top-level): run "gnulib-tool --add-import".
2026-04-03 Gavin Smith <gavinsmith0123@gmail.com>
* tta: run "gnulib-tool --add-import
unictype/property-unified-ideograph uninorm/nfd
uninorm/u32-normalize unistr/u8-to-u32" in preparation for
testing collation code.
2026-04-03 Gavin Smith <gavinsmith0123@gmail.com>
* tta: replace gnulib module uchar (old name) with uchar-h.
2026-04-02 Gavin Smith <gavinsmith0123@gmail.com>
Remove misleading messages for move-to-next/prev-xref.
* info/session-cmd.c
(forward_move_node_structure, backward_move_node_structure)
[scroll-behaviour=Page Only]: Do not print message saying we
are already on the last (or first) page of a node. This may
not be true if called via move-to-next-xref (or move-to-prev-xref).
(point_next_line, point_prev_line, _scroll_backward, _scroll_forward):
Reinstate the removed messages for cursor movement and scrolling
commands where they would be accurate.
2026-04-02 Gavin Smith <gavinsmith0123@gmail.com>
Fix M-Tab with "info -v scroll-behaviour=Page\ Only"
* info/session-cmd.c (info_move_to_prev_xref):
Move misplaced ) in order to correctly pass value of
info_scroll_behaviour to backward_move_node_structure.
M-Tab would move to a previous node with scroll-behavior=Page Only
and cursor-movement-scrolls=On, which was incorrect.
Report from Aidan <aidanczhai@gmail.com>.
2026-04-02 Gavin Smith <gavinsmith0123@gmail.com>
* info/variables.c (variable_long_description_string):
Handle alias variable specially, in part to avoid printing
null pointer.
2026-04-02 Gavin Smith <gavinsmith0123@gmail.com>
Implement scroll-behavior/scroll-behaviour alias differently
* info/variables.c (ALIAS_VAR, alias_var):
New macro and dummy variable for declaring an alias of a variable.
(info_variables) <"scroll-behavior">: Use it.
(variable_by_name): Check if variable is an alias and if so resolve
the alias.
This is to avoid using separate 'where_set' fields for the two
equivalent names of the variable, which could lead to inconsistency,
including in the help buffer.
2026-04-02 Gavin Smith <gavinsmith0123@gmail.com>
* info/variables.c (set_variable_to_value):
For variables with a list of possible choices, if requested value
is not in that list, do not update 'where_set' field and return 0.
This has the effect of printing an error message if an incorrect
value is used in an infokey file, which wasn't done before with this
version of the code.
2026-04-02 Gavin Smith <gavinsmith0123@gmail.com>
* doc/info-stnd.texi (Selecting Xrefs):
Remove text "in this node" from description of move-to-next-xref
and move-to-prev-xref as this is incorrect.
Report from Aidan <aidanczhai@gmail.com>.
2026-04-02 Gavin Smith <gavinsmith0123@gmail.com>
* doc/info-stnd.texi (Cursor Commands):
Add a note mentioning that some of these commands are governed
by the "cursor-movement-scrolls" variable.
2026-04-02 Gavin Smith <gavinsmith0123@gmail.com>
* doc/info-stnd.texi (Xref Commands): Move chapter before
"Searching Commands" and "Index Commands".
2026-04-01 Patrice Dumas <pertusus@free.fr>
Update po files
2026-04-01 Patrice Dumas <pertusus@free.fr>
* po/POTFILES.in: add XS interface files with translated strings.
* Makefile.am (po-check, po_document-check): match .xs files.
2026-04-01 Patrice Dumas <pertusus@free.fr>
Update po files
2026-04-01 Patrice Dumas <pertusus@free.fr>
* configure.ac (AC_CONFIG_FILES): remove removed doc/refcard/Makefile.
2026-04-01 Patrice Dumas <pertusus@free.fr>
* NEWS, configure.ac, tta/configure.ac: remove
--enable-refcounts-checks, --enable-perl-api-texi-build and
--enable-pod-simple-texinfo-tests configure flags, keeping the
automatic detection only.
2026-04-01 Patrice Dumas <pertusus@free.fr>
* po/POTFILES.in, po_document/POTFILES.in: update.
* Makefile.am (po-check, po_document-check): update.
2026-04-01 Patrice Dumas <pertusus@free.fr>
* TODO: update, item on translations, SWIG information when relevant,
update non implemented manuals installation support to hint that it is
not really rejected, but one possibility among others.
2026-04-01 Bruno Haible <bruno@clisp.org>
* INSTALL: edit description of --enable-xs-perl-libintl.
2026-04-01 Gavin Smith <gavinsmith0123@gmail.com>
* TODO: remove done items
2026-04-01 Gavin Smith <gavinsmith0123@gmail.com>
No -c DUMP_TREE=1
* tta/perl/texi2any.pl,
* tta/C/texi2any.c (main):
Do not accept "1" as synonym for "-".
* doc/texinfo.texi, TODO: update
2026-04-01 Gavin Smith <gavinsmith0123@gmail.com>
* README-hacking: update for refcard removal.
2026-04-01 Gavin Smith <gavinsmith0123@gmail.com>
* doc/refcard/txicmdcheck, doc/txicmdcheck,
* doc/refcard/txivarcheck, doc/txivarcheck:
Move to doc/.
* doc/refcard: remove subdirectory.
2026-04-01 Gavin Smith <gavinsmith0123@gmail.com>
Remove refcard
* doc/refcard/txicmdcheck, doc/refcard/txivarcheck:
check texi2any and manual only.
* doc/refcard/txirefcard.tex: deleted
2026-04-01 Gavin Smith <gavinsmith0123@gmail.com>
* TODO: remove done item
2026-04-01 Gavin Smith <gavinsmith0123@gmail.com>
* NEWS,
* doc/texinfo.texi (Click Sequences, Macro Details, Command List)
(Obsolete @-Commands):
Document @clickstyle removal.
2026-04-01 Gavin Smith <gavinsmith0123@gmail.com>
Test updates for removal of @clickstyle
* tta/perl/t/08misc_commands.t
(clickstyle, clickstyle_no_end_of_line, invalid_clickstyle)
(clickstyle_and_comments): remove.
2026-04-01 Gavin Smith <gavinsmith0123@gmail.com>
Test updates for removal of @clickstyle
* tta/perl/t/50value.t (value_in_misc_commands),
* tta/perl/t/60value.t (macro_in_misc_commands),
* tta/perl/t/html_tests.t,
* tta/perl/t/xml_tests.t (commands_and_spaces):
Remove use of @clickstyle.
2026-04-01 Gavin Smith <gavinsmith0123@gmail.com>
Test updates for removal of @clickstyle
* tta/tests/coverage_macro.texi: remove use of @clickstyle.
2026-04-01 Gavin Smith <gavinsmith0123@gmail.com>
Remove @clickstyle
* tta/data/command_data.txt,
* tta/C/parsetexi/handle_commands.c (parse_rawline_command),
* tta/perl/Texinfo/ParserNonXS.pm (_parse_rawline_command),
* tta/perl/Texinfo/Example/TexinfoMarkup.pm (_convert):
Remove @clickstyle as a Texinfo command.
2026-04-01 Gavin Smith <gavinsmith0123@gmail.com>
* TODO: remove done item
2026-03-31 Gavin Smith <gavinsmith0123@gmail.com>
* doc/texinfo.tex (\indexwritesortas): Remove useless change
of catcode around definition.
2026-03-31 Gavin Smith <gavinsmith0123@gmail.com>
* doc/texinfo.tex (\dummybox): Move definition in file.
2026-03-31 Gavin Smith <gavinsmith0123@gmail.com>
Fix "Missing character" messages in log file
* doc/texinfo.tex
(\extractindexcommands, \checksortas, \checkseealso, \checkseeentry):
New. Use TeX macros to check if @sortas, @seeentry and @seealso occur
in the text of an index entry.
(\doindexsegment):
Replace implementation of the @sortas, @seeentry and @seealso commands
with call to \extractindexcommands. The problem with the old way was
that we typeset the index text inside a dummy box, which could lead to
many error messages about missing glyphs being output in the log file.
Report from Jamenson Espindula.
2026-03-30 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/convert_html.c, tta/C/main/convert_to_text.c,
tta/C/main/convert_utils.c, tta/C/main/converter_types.h (CONVERTER),
tta/C/main/translations.c (find_lang_translation)
(store_new_lang_translation, get_lang_translation)
(get_lang_encoded_lang_translation, switch_lang_translations)
(cache_translate_string, gdt_string, gdt_tree, pgdt_tree),
tta/C/parsetexi/indices.c, tta/C/structuring_transfo/structuring.c,
tta/perl/XSTexinfo/parser_document/TranslationsXS.xs
(cache_translate_string): add const for LANG_TRANSLATION passed
around.
* tta/C/main/translations.c (substitute_substrings_in_tree)
(substitute_element_array): const for replaced_substrings.
2026-03-30 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/LaTeX.pm (%LaTeX_environment_commands)
(_convert): use Texinfoindented environment for @indentedblock and
@def item.
* tta/perl/t/converters_tests.t (table_in_display_in_example)
(table_in_example_in_display): add some text for easier visualization.
2026-03-30 Patrice Dumas <pertusus@free.fr>
* tta/tests/coverage_macro.texi: remove empty line in @displaymath to
avoid invalid LaTeX.
2026-03-30 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/DocBook.pm (_convert): use blockquote for
@indentedblock and @smallindentedblock. Report from Per Bothner in
2014.
* tta/tests/coverage_macro.texi: add @indentedblock and
@smallindentedblock.
2026-03-30 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/LaTeX.pm (_stop_embrac, _convert_def_line)
(_convert): simplify code related to embrac context stack.
2026-03-30 Noé Lopez <noelopez@free.fr> (tiny change)
* util/htmlxref.d/Texinfo_GNU.cnf: Update URLs for Guix and
Shepherd.
2026-03-29 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/Utils.pm (output_files_rename_opened): add.
* tta/perl/Texinfo/Convert/Info.pm (output): call
Texinfo::Convert::Utils::output_files_rename_opened instead of setting
an unused array.
2026-03-29 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/LaTeX.pm (_tree_anchor_label): get an
element in argument.
* tta/perl/Texinfo/Convert/LaTeX.pm: use
Texinfo::Common::empty_spaces_argument to determine if arguments are
empty. Use elements instead of contents when relevant. Use exists or
defined when the value is not used.
2026-03-29 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/Plaintext.pm (_convert): do not output
anything for @itemx in @itemize or @enumerate in @table.
2026-03-29 Patrice Dumas <pertusus@free.fr>
* tta/perl/XSTexinfo/convert/get_html_perl_info.c
(html_converter_get_customization_sv): initialize
direction_node_name->direction_nr to 0.
* tta/C/convert/html_prepare_converter.c (html_set_global_direction)
(html_set_main_units_direction_names)
(html_prepare_output_units_global_targets),
tta/perl/Texinfo/Convert/HTML.pm (converter_initialize),
tta/perl/Texinfo/Convert/HTMLNonXS.pm (set_global_direction): warn if
a customized global direction is set on a relative direction.
* tta/C/convert/html_prepare_converter.c
(html_prepare_output_units_global_targets): more explicit fatal
message.
* tta/perl/t/init/set_global_direction_for_relative.pm: also test
calling set_global_direction on a relative direction.
* tta/perl/Makefile.tres, tta/perl/t/init_files_tests.t
(set_global_direction_for_relative_direction): enable test.
2026-03-28 Patrice Dumas <pertusus@free.fr>
* ta/maintain/generate_code_convert_data.pl (@ordered_text_directions)
(%ordered_text_global_directions_hash, %direction_orders)
(@orders_order, @ordered_directions): separate text directions from
global units directions.
* tta/maintain/generate_code_convert_data.pl,
tta/C/convert/format_html.c, tta/C/convert/html_prepare_converter.c:
generate DEFAULT_GLOBAL_DIRECTION_LAST_IDX and
DEFAULT_TEXT_DIRECTION_LAST_IDX and use instead of D_Last and
D_direction_This.
* tta/C/convert/html_prepare_converter.c
(html_prepare_output_units_global_targets),
tta/perl/Texinfo/Convert/HTMLNonXS.pm
(_prepare_output_units_global_targets): show default text directions
in debugging code.
* tta/perl/Texinfo/Convert/HTML.pm (@text_directions_order)
(converter_initialize): set @text_directions_order based on
automatically generated directions and use it to set default text
directions in converter_initialize.
2026-03-28 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/DocBook.pm (_convert): determine $part if
not already determined.
2026-03-28 Patrice Dumas <pertusus@free.fr>
* tta/C/main/document.c (setup_texinfo_main),
tta/C/main/translations.c (set_output_strings_translate_method)
(setup_output_strings_translations): split
set_output_strings_translate_method out of
setup_output_strings_translations. Call it in setup_texinfo_main, as
it sets use_external_translate_string, which should always be set,
even if C functions are not used for translation of output strings.
* tta/C/convert/texinfo.c (txi_general_output_strings_setup),
tta/perl/XSTexinfo/parser_document/TranslationsXS.xs
(setup_output_strings): update for change in
setup_output_strings_translations. Update callers.
2026-03-28 Patrice Dumas <pertusus@free.fr>
* tta/C/structuring_transfo/structuring.c
(check_node_tree_menu_structure), tta/perl/Texinfo/StructuringNonXS.pm
(check_node_tree_menu_structure): remove a condition on node
associated to node menu relation being set, as if there is a number,
the relation exists.
* tta/perl/Makefile.tres, tta/perl/t/10menu.t
(menu_pointing_to_anchor_nodes): add test of anchor and namedanchor
nodes in menu, with another node with a sectioning command too, such
that the menu structure is checked (with CHECK_NORMAL_MENU_STRUCTURE).
2026-03-28 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Translations.pm (BEGIN): do not load XS module for
translations if Perl is older than 5.38.0 as before Perl 5.38.0
getenv/setenv and similar cannot be reliably used in XS.
* tta/configure.ac: remove setting HAVE_USABLE_GETENV_IN_XS, unused.
2026-03-27 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/TranslationsNonXS.pm (setup_output_strings),
tta/perl/XSTexinfo/parser_document/TranslationsXS.xs
(setup_output_strings): rename configure as setup_output_strings.
Update callers.
* tta/C/main/translations.c (setup_output_strings_translations):
rename configure_output_strings_translations as
setup_output_strings_translations. Update callers.
2026-03-27 Patrice Dumas <pertusus@free.fr>
XS interface for Texinfo::Translations configure
* tta/perl/Texinfo/DocumentNonXS.pm, tta/perl/Texinfo/Translations.pm,
tta/perl/Texinfo/TranslationsNonXS.pm (configure),
tta/perl/XSTexinfo/parser_document/DocumentXS.xs,
tta/perl/XSTexinfo/parser_document/TranslationsXS.xs (configure): add
an XS interface for Texinfo::Translations configure. Remove
configure_output_strings_translations from Perl code and from Document
XS interface.
2026-03-27 Patrice Dumas <pertusus@free.fr>
XS interface for Texinfo::Translations for cache_translate_string
* tta/configure.ac (use_libintl_perl_in_xs), tta/perl/Makefile.am
(ModulePath.pm), tta/perl/Texinfo/ModulePath.pm.in
($use_libintl_perl_in_xs): pass use_libintl_perl_in_xs to Perl.
* tta/C/main/translations.c (find_lang_translation)
(get_lang_translation, store_new_lang_translation)
(get_lang_encoded_lang_translation): split find_lang_translation and
store_new_lang_translation out of get_lang_translation. Add
get_lang_encoded_lang_translation that is very similar to
get_lang_translation, but directly uses encoded lang instead of
determining it.
* tta/perl/Texinfo/Translations.pm (BEGIN),
tta/perl/XSTexinfo/Makefile.am (xs_LTLIBRARIES, TranslationsXS*),
tta/perl/Makefile.am (dist_modules_DATA),
tta/perl/Texinfo/TranslationsNonXS.pm (cache_translate_string),
tta/perl/XSTexinfo/parser_document/TranslationsXS.xs
(cache_translate_string): add an XS interface for
Texinfo::Translations cache_translate_string.
2026-03-27 Patrice Dumas <pertusus@free.fr>
* tta/perl/t/z_misc/do_master_menu.t: setup the lang_translation by
calling new_lang_translation.
2026-03-26 Patrice Dumas <pertusus@free.fr>
* doc/texi2any_api.texi (Tree Elements and Document Structure)
(Heading Commands Formatting): describe relevant functions in "Tree
Elements and Document Structure" not in the appendix. Improve
references to this node.
* tta/perl/Texinfo/Convert/DocBook.pm (%docbook_level_section)
(%docbook_sections, _docbook_section_element): split
%docbook_level_section out of %docbook_sections for the map of section
levels, for a more readable code.
* tta/perl/t/z_misc/no_structure_test.t: add raisesctions to the
test Texinfo code.
2026-03-26 Patrice Dumas <pertusus@free.fr>
* doc/texi2any_api.texi (Simple Formatting Customization)
(Internationalization of Output Strings): rename "Simple formatting
customization" as "Simple Formatting Customization" and
"Internationalization of Strings Function" as "Internationalization of
Output Strings".
* doc/texi2any_api.texi (Accent Commands with Arguments Formatting):
add.
* doc/texi2any_api.texi: remove cross-references to modules
documentation that are not needed for the described tasks. Copy the
function or data descriptions instead of having a cross reference, as
the corresponding text is small and requiring to go to another
document to get the information is distracting.
Improve Pod documentation of output strings translation language
switching.
2026-03-23 Patrice Dumas <pertusus@free.fr>
* tta/C/main/utils.h (ARG_INDICES), tta/C/main/utils.c
(non_leading_trailing_indices): add the ARG_INDICES struct to hold the
first and last indices of non trailing non leading contents. Use it
in non_leading_trailing_indices. Update callers.
2026-03-22 Gavin Smith <gavinsmith0123@gmail.com>
Always build info/makedoc when cross-compiling
* Makefile.am (SUBDIRS) [TOOLS_ONLY]:
Always include "info" subdirectory to allow "makedoc" program
to be built on "build" system when cross-compiling, even if terminal
library is not found on "build".
* info/Makefile.am (bin_PROGRAMS): Use HAVE_TERMLIBS conditional to
only include "ginfo" if terminal library is found. Use TOOLS_ONLY
not to built "ginfo" if building tools for cross-compiling.
(LDADD, ginfo_LDADD): Only use $(TERMLIBS) in ginfo_LDADD.
Report and investigation by Manuel Jacob,
2026-03-23 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/convert_html.c (html_convert_tree_append),
tta/perl/Texinfo/Convert/HTML.pm (_convert): different message for
ignored text type and other ignored types and commands.
2026-03-23 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/html_prepare_converter.c (html_converter_customize):
set ignored types for css conversion too. This is not needed when
called from Perl XS, but necessary for ctexi2any.
2026-03-23 Patrice Dumas <pertusus@free.fr>
* tta/C/parsetexi/macro.c (expand_macro_body),
tta/perl/Texinfo/ParserNonXS.pm (_expand_macro_body): simplify
conditions, taking into account that macro call arguments can only
contain text elements.
2026-03-23 Patrice Dumas <pertusus@free.fr>
* tta/C/parsetexi/handle_commands.c (handle_line_command),
tta/perl/Texinfo/ParserNonXS.pm (_handle_line_command): use
spaces_before_argument for an empty lineraw line.
* tta/perl/Texinfo/Common.pm (non_leading_trailing_indices): verify
that end_idx is not negative. This could happen if there are only
spaces_after_argument.
* tta/perl/Texinfo/ParserNonXS.pm (_expand_macro_body): use a tree
element in input for macro arguments.
2026-03-23 Patrice Dumas <pertusus@free.fr>
* tta/C/main/element_types.txt, tta/C/parsetexi/parser.c
(process_remaining_on_line), tta/perl/Texinfo/ParserNonXS.pm
(%trailing_space_types, _process_remaining_on_line): use
spaces_after_argument for ignored spaces before @subentry. Remove
ignorable_spaces_before_command type everywhere.
* tta/C/parsetexi/parser.c (isolate_leading_trailing),
tta/perl/Texinfo/ParserNonXS.pm (_isolate_leading_trailing): add a
debugging statement.
2026-03-23 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/ParserNonXS.pm (_is_container_empty): do not check
info value, and avoid checking contents for text elements, with same
code as in C.
2026-03-23 Patrice Dumas <pertusus@free.fr>
* tta/C/parsetexi/close.c (remove_empty_content),
tta/perl/Texinfo/ParserNonXS.pm (_remove_empty_content): remove the
empty element, which could theoretically be before comments and
trailing spaces.
2026-03-23 Patrice Dumas <pertusus@free.fr>
* tta/C/parsetexi/close.c (close_container),
tta/perl/Texinfo/ParserNonXS.pm (_close_container): remove check that
was needed when there were args in tree. Reorganize code to be easier
to read.
2026-03-22 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Example/TexinfoMarkup.pm (_convert): inline
and remove _arg_leading_spaces_arg and simplify attribute setting of
endspaces.
2026-03-22 Patrice Dumas <pertusus@free.fr>
* tta/C/main/element_types.awk, tta/C/main/element_types.txt,
tta/C/main/tree_types.h (enum elt_info_type), tta/C/main/tree.c
(elt_info_names), tta/C/parsetexi/parser.c (do_abort_empty_line)
(merge_text), tta/perl/Texinfo/ParserNonXS.pm (%leading_space_types)
(_merge_text, _abort_empty_line): remove
internal_spaces_after_command, now unused. Remove spaces_before and
spaces_after flags too, as they are not generated anymore. Remove
spaces_before_argument, spaces_after_argument and comment_at_end names
and enums. Remove move_last_space_to_element, not called anymore.
* tta/C/structuring_transfo/structuring.c (new_block_command),
tta/C/structuring_transfo/transformations.c (correct_level)
(fill_gaps_in_sectioning_in_document, new_node),
tta/perl/Texinfo/ManipulateTree.pm (_print_tree_elements_ref)
(tree_remove_parents, _element_remove_references, @elt_info_names),
tta/perl/Texinfo/Structuring.pm (new_block_command),
tta/perl/Texinfo/Transformations.pm (_new_node),
tta/perl/Texinfo/TransformationsNonXS.pm (_correct_level)
(fill_gaps_in_sectioning_in_document): do not generate
spaces_before_argument, spaces_after_argument nor comment_at_end in
info additional information, directly in the tree. Update to match
the new tree structure.
* tta/C/main/convert_to_texinfo.c (convert_to_texinfo_internal),
tta/C/main/convert_utils.c (get_comment_or_end_line),
tta/perl/Texinfo/Convert/Converter.pm (comment_or_end_line),
tta/perl/Texinfo/Convert/DocBook.pm (_format_comment),
tta/perl/Texinfo/Convert/Texinfo.pm (_convert_to_texinfo),
tta/perl/Texinfo/DebugTree.pm,
tta/perl/Texinfo/Example/TexinfoMarkup.pm: remove use of
spaces_before_argument, spaces_after_argument and comment_at_end in
info additional information.
* tta/perl/t/z_misc/01use.t: update for the new tree structure.
2026-03-22 Patrice Dumas <pertusus@free.fr>
* tta/C/main/element_types.txt, tta/perl/Texinfo/ParserNonXS.pm
(%leading_space_types): remove
internal_spaces_before_context_argument, which is not set
anymore, and remove all conditions with this type.
2026-03-22 Patrice Dumas <pertusus@free.fr>
Put lineraw line commands leading and trailing directly in tree
* tta/C/parsetexi/handle_commands.c (raw_line_command_arg_spaces)
(handle_line_command, add_comment_at_end),
tta/perl/Texinfo/ParserNonXS.pm (_raw_line_command_arg_spaces)
(_add_comment_at_end, _handle_line_command): put lineraw line commands
leading and trailing spaces, and comments directly in tree, not in
info elements. Remove raw_line_command_arg_spaces second argument,
since it is not used anymore.
* tta/perl/Texinfo/Convert/DocBook.pm (_format_comment),
tta/perl/Texinfo/Convert/LaTeX.pm (_convert),
tta/perl/Texinfo/Example/TexinfoMarkup.pm (_format_comment, _convert),
tta/perl/t/init/ignore_and_comments_output.init: adapt for change in
tree.
2026-03-22 Patrice Dumas <pertusus@free.fr>
Put context brace commands leading spaces directly in tree
* tta/C/main/element_types.txt (spaces_before_argument),
tta/C/parsetexi/separator.c (handle_open_brace),
tta/perl/Texinfo/ParserNonXS.pm (%leading_space_types)
(_handle_open_brace): use spaces_before_argument instead of
internal_spaces_before_context_argument at context brace command
opening such that it stays as is in the tree and is not collected in
info.
* tta/C/convert/format_html.c (html_convert_float_command)
(html_convert_listoffloats_command), tta/C/main/floats.c
(print_caption_shortcaption), tta/perl/Texinfo/Convert/HTML.pm
(_convert_listoffloats_command, _convert_float_command),
tta/perl/Texinfo/Convert/LaTeX.pm (_convert),
tta/perl/Texinfo/Convert/Plaintext.pm (_convert),
tta/perl/Texinfo/ManipulateTree.pm (_print_caption_shortcaption):
update for change in tree, and also to cope with bogus @caption
without brace at all.
* tta/perl/t/27float.t (no_brace_caption), tta/perl/Makefile.tres:
caption without brace in float with listoffloats.
2026-03-22 Patrice Dumas <pertusus@free.fr>
* tta/C/main/element_types.txt, tta/perl/Texinfo/ParserNonXS.pm
(%leading_space_types): remove internal_spaces_before_argument as it
is not set anywhere anymore. Remove in test in all the using codes.
2026-03-22 Patrice Dumas <pertusus@free.fr>
Put macro expansion element leading spaces directly in tree
* tta/C/parsetexi/close.c (remove_empty_content),
tta/perl/Texinfo/ParserNonXS.pm (_remove_empty_content): remove empty
elements starting from the end, avoiding empty spaces.
* tta/C/parsetexi/macro.c (expand_macro_arguments)
(expand_linemacro_arguments, expand_macro_body),
tta/perl/Texinfo/ParserNonXS.pm (_expand_macro_arguments)
(_expand_linemacro_arguments, _expand_macro_body): put leading spaces
directly in argument elements, and call isolate_leading_trailing in
expand_macro_body. Avoid leading and trailing spaces when gathering
formal arguments.
2026-03-21 Patrice Dumas <pertusus@free.fr>
Put leading and trailing spaces directly in tree for block and line non
raw
* tta/C/parsetexi/separator.c (handle_close_brace): remove spurious
backslash in string.
* tta/C/main/utils.c (informative_command_value),
tta/perl/Texinfo/Common.pm (informative_command_value): do not handle
rawline @-command with more than one argument, as it is only the case
for @set, which is not an informative command associated to a
customization variable. More const.
* tta/C/main/manipulate_tree.c (parse_node_manual): set node_content
in result only if not empty.
* tta/C/parsetexi/parser.c (isolate_leading_spaces_element),
tta/perl/Texinfo/ParserNonXS.pm (_isolate_leading_spaces_element):
rebase remaining source marks. Always set the type. Consider that
spaces are ascii. Rename leading_spaces as spaces_len.
* tta/C/main/utils.c (simple_arg_text, empty_text),
tta/perl/Texinfo/Common.pm (simple_arg_text): ignore comments.
Return TEXT instead of string in C and update callers.
* tta/C/parsetexi/parser.c (text_contents_to_plain_text),
tta/perl/Texinfo/ParserNonXS.pm (_text_contents_to_plain_text): ignore
comments.
* tta/perl/Texinfo/Common.pm (non_leading_trailing_tree): remove
optional arguments.
* tta/perl/Texinfo/Common.pm (non_trailing_tree),
tta/perl/Texinfo/Convert/Converter.pm (comment_end_line_end_space):
add.
* tta/C/main/convert_to_texinfo.c (convert_contents_to_texinfo),
tta/C/main/structure_list.c: use non_leading_trailing_indices to
determine the slice to convert. Update callers as the function can
now return NULL if the argument is empty.
* tta/C/main/manipulate_tree.c, tta/C/main/utils.c
(non_leading_trailing_indices): move non_leading_trailing_indices to
utils.c.
* tta/perl/Texinfo/Common.pm (non_leading_trailing_indices): rename
_non_leading_trailing_indices as non_leading_trailing_indices.
* tta/C/parsetexi/def.c (split_def_args),
tta/C/structuring_transfo/transformations.c
(protect_first_parenthesis), tta/perl/Texinfo/ManipulateTree.pm
(protect_first_parenthesis), tta/perl/Texinfo/ParserNonXS.pm
(_split_element_delimiters): catch all types of text elements and
spaces_before_argument.
* tta/perl/Texinfo/ParserNonXS.pm (_parse_def): move code around to be
more similar to C implementation.
* tta/C/parsetexi/def.c (parse_def), tta/C/parsetexi/end_line.c
(parse_line_command_args, end_line_starting_block)
(end_line_misc_line), tta/C/parsetexi/labels.c
(check_register_target_element_label), tta/C/parsetexi/parser.c
(parent_of_command_as_argument, process_remaining_on_line),
tta/C/parsetexi/separator.c (handle_close_brace, handle_comma),
tta/perl/Texinfo/ParserNonXS.pm (_parse_def, _end_line_misc_line)
(_end_line_starting_block, _check_register_target_element_label)
(_parent_of_command_as_argument, _handle_line_command)
(_handle_close_brace, _handle_comma, _process_remaining_on_line):
put leading and trailing spaces and comments directly in tree by
isolate_leading_trailing instead of isolate_last_space, having effect
on all block command lines and most line commands arguments, except
for raw line commands. Remove isolate_last_space.
* tta/C/parsetexi/handle_commands.c (handle_other_command),
tta/C/parsetexi/parser.c, tta/perl/Texinfo/ParserNonXS.pm
(_handle_other_command): inline start_empty_line_after_command as now
there is only one case that remains and remove
start_empty_line_after_command.
* tta/perl/Texinfo/Convert/Texinfo.pm (convert_contents_to_texinfo):
add.
* tta/C/main/convert_utils.c (get_comment_or_end_line),
tta/C/main/manipulate_tree.c (copy_contents), tta/C/main/utils.c
(block_line_argument_command, multitable_columnfractions)
(informative_command_value, enumerate_item_representation),
tta/perl/Texinfo/Common.pm (multitable_columnfractions)
(block_line_argument_command, informative_command_value)
(enumerate_item_representation), tta/perl/Texinfo/Convert/Converter.pm
(comment_or_end_line, table_item_content_tree),
tta/perl/Texinfo/Convert/Texinfo.pm (target_element_to_texi_label)
(check_node_same_texinfo_code), tta/perl/Texinfo/ManipulateTree.pm
(copy_contents, _print_root_command, print_element_base),
tta/perl/Texinfo/OutputUnits.pm (_output_unit_name_string),
tta/perl/Texinfo/StructuringNonXS.pm (_print_line_command)
(_print_root_command, _print_menu_node, print_headings_list)
(print_nodes_list): update for changes in tree.
* tta/C/main/convert_to_texinfo.c (link_element_to_texi): call
convert_to_texinfo instead of convert_contents_to_texinfo as there is
no need to convert contents only, and to always return a string.
* tta/C/main/convert_utils.c: comment out item_itemize_prepended as it
is unused.
* tta/C/convert/format_html.c (html_internal_command_tree)
(html_convert_enumerate_command, html_convert_item_command)
(html_open_quotation_command), tta/C/main/convert_utils.c
(itemize_line_prepended_element),
tta/C/structuring_transfo/transformations.c
(protect_hashchar_at_line_beginning_internal),
tta/perl/Texinfo/Convert/Converter.pm (sort_element_counts),
tta/perl/Texinfo/Convert/DocBook.pm (conversion_output_begin)
(_format_comment_or_end_line, _convert_def_line, _convert),
tta/perl/Texinfo/Convert/HTML.pm (_convert_enumerate_command)
(_convert_item_command, _open_quotation_command),
tta/perl/Texinfo/Convert/HTMLNonXS.pm (_internal_command_tree)
(_node_redirections), tta/perl/Texinfo/Convert/Info.pm (output),
tta/perl/Texinfo/Convert/LaTeX.pm (_set_environment_options)
(_convert), tta/perl/Texinfo/Convert/Plaintext.pm (_convert),
tta/perl/Texinfo/Convert/TextContent.pm (_convert),
tta/perl/Texinfo/Document.pm (_existing_label_error),
tta/perl/Texinfo/Example/TexinfoMarkup.pm,
tta/perl/Texinfo/Transformations.pm
(_protect_hashchar_at_line_beginning),
tta/perl/init/documentation_examples.pm
(_set_appendix_direction_node_name),
tta/perl/t/init/index_direction_from_index_name.pm
(_set_index_global_direction_from_index_name): update for changes in
tree, mainly by using empty_spaces_argument, simple_arg_text, or
handling especially spaces_* types. Also calling
convert_contents_to_texinfo in Perl.
2026-03-17 Patrice Dumas <pertusus@free.fr>
* tta/C/main/utils.c (simple_arg_text), tta/perl/Texinfo/Common.pm
(simple_arg_text): return information related to unexpected non text
elements. Update callers.
* tta/C/parsetexi/separator.c (handle_close_brace),
tta/perl/Texinfo/ParserNonXS.pm (_handle_close_brace): add more
information on superfluous argument to @U.
* tta/C/parsetexi/end_line.c (parse_line_command_args),
tta/perl/Texinfo/ParserNonXS.pm (_parse_line_command_args): use
simple_arg_text.
2026-03-17 Patrice Dumas <pertusus@free.fr>
Move @math command from context commands to arguments commands
* tta/data/command_data.txt (math), tta/C/parsetexi/close.c
(close_brace_command, close_current), tta/C/parsetexi/separator.c
(handle_open_brace, handle_close_brace),
tta/perl/Texinfo/ParserNonXS.pm (_close_brace_command, _close_current)
(_handle_open_brace, _handle_close_brace): change math data type to be
arguments. Move code related to math to arguments brace commands
handling, with explicit setting of context.
* tta/C/convert/html_conversion_state.c
(html_open_command_update_context)
(html_convert_command_update_context),
tta/perl/Texinfo/Convert/DocBook.pm (_convert),
tta/perl/Texinfo/Convert/HTMLNonXS.pm (_open_command_update_context)
(_convert_command_update_context): set explicitly math context for
brace math command.
2026-03-17 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/ParserNonXS.pm (_end_line_def_line): reorganize the
code to be more legible, and converge to C version.
2026-03-17 Patrice Dumas <pertusus@free.fr>
Put leading spaces and trailing spaces directly in brace arg elements
* tta/C/main/manipulate_tree.c (non_leading_trailing_indices)
(parse_node_manual), tta/C/main/utils.c (empty_spaces_argument)
(simple_arg_text), tta/perl/Texinfo/Common.pm
(_non_leading_trailing_indices, parse_node_manual)
(empty_spaces_argument, simple_arg_text): add functions to
determine if empty, what are the non empty argument and simple text
argument if there are trailing, leading spaces and comments. Use in
parse_node_manual.
* tta/C/parsetexi/close.c (close_all_style_commands, close_current),
tta/C/parsetexi/def.c (split_def_args), tta/C/parsetexi/parser.c
(isolate_leading_spaces_element, isolate_leading_trailing),
tta/C/parsetexi/separator.c (handle_open_brace, handle_close_brace)
(handle_comma), tta/perl/Texinfo/ParserNonXS.pm
(_close_all_style_commands, _close_current)
(_isolate_leading_spaces_element, _split_element_def_args)
(_end_line_def_line, _handle_open_brace, _handle_close_brace)
(_handle_comma): add functions to isolate trailing spaces and comments
and leading spaces and comments, use them in parsing for brace
commands and also use simple_arg_text and empty_spaces_argument.
Isolate trailing spaces in @math too.
* tta/C/main/element_types.txt (empty_line),
tta/perl/Texinfo/ParserNonXS.pm (%trailing_space_types): set
empty_line as trailing space such that it is not replaced by
spaces_after_argument.
* tta/C/parsetexi/parser.c (isolate_last_space),
tta/perl/Texinfo/ParserNonXS.pm (_isolate_last_space): simplify, it is not
called for brace commands anymore.
* tta/C/structuring_transfo/transformations.c
(reference_to_arg_internal), tta/perl/Texinfo/Common.pm
(non_leading_trailing_tree), tta/perl/Texinfo/Transformations.pm
(_reference_to_arg), tta/perl/ext/tex4ht.pm (tex4ht_prepare): update
for change in tree.
* tta/C/convert/html_prepare_converter.c (ignored_types),
tta/C/main/convert_to_text.c (convert_to_text_internal),
tta/C/main/node_name_normalization.c (convert_to_normalized_internal),
tta/C/main/manipulate_indices.c (idx_leading_text_or_command),
tta/C/parsetexi/end_line.c (end_line_def_line),
tta/C/parsetexi/parser.c (text_contents_to_plain_text),
tta/perl/Texinfo/ParserNonXS.pm (_text_contents_to_plain_text),
tta/perl/Texinfo/Convert/DocBook.pm, tta/perl/Texinfo/Convert/HTML.pm,
tta/perl/Texinfo/Convert/LaTeX.pm,
tta/perl/Texinfo/Convert/NodeNameNormalization.pm,
tta/perl/Texinfo/Convert/Plaintext.pm,
tta/perl/Texinfo/Convert/Text.pm,
tta/perl/Texinfo/Convert/TextContent.pm: ignore spaces_before_argument
and spaces_after_argument. Catch all spaces in more code.
* tta/C/convert/convert_html.c, tta/perl/Texinfo/Convert/DocBook.pm
(_convert), tta/perl/Texinfo/Convert/HTML.pm,
tta/perl/Texinfo/Convert/HTMLNonXS.pm,
tta/perl/Texinfo/Convert/Info.pm, tta/perl/Texinfo/Convert/LaTeX.pm,
tta/perl/Texinfo/Convert/Plaintext.pm: call empty_spaces_argument to
determine if an argument is empty, cannot check only that there are no
contents anymore.
2026-03-16 Gavin Smith <gavinsmith0123@gmail.com>
* NEWS: mention removal of --xml etc. options
2026-03-14 Gavin Smith <gavinsmith0123@gmail.com>
* doc/texinfo.texi (@example): Tweak description of tab handling.
Report from Werner Lemberg.
2026-03-12 Patrice Dumas <pertusus@free.fr>
Obey @exampleindent in plaintext and Info output
* tta/perl/Texinfo/Convert/Plaintext.pm (_convert): use exampleindent
customization info to increase the indent length for
%example_indented_commands. Report from Rik.
* tta/perl/Makefile.tres, tta/perl/t/20preformatted.t
($nested_examples, exampleindent_set, exampleindent_zero)
(exampleindent_set_nestings, exampleindent_zero_nestings): new tests
of @exampleindent.
2026-03-12 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/Plaintext.pm (new_formatter, _convert):
never put 'indent_length' in 'format_context', only in new_formatter
$conf.
2026-03-12 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/Plaintext.pm (%example_indented_commands):
set to the indented %preformatted_commands.
* tta/perl/Texinfo/Convert/Plaintext.pm (push_top_formatter)
(new_formatter, new_formatter, _convert): replace 'indent_level'
by a length, 'context_indent_len'. This prepares for indentation
added being different from the default.
2026-03-12 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/Plaintext.pm
(@informative_global_commands): add exampleindent.
* tta/perl/Texinfo/Convert/Plaintext.pm ($default_indent_length)
(_text_heading): rename $indent_length as $default_indent_length.
Rename $indent_length in _text_heading as $indented_len.
2026-03-12 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/convert_html.c (html_cache_translate_string):
initialize lang.
2026-03-11 Gavin Smith <gavinsmith0123@gmail.com>
* info/infodoc.c (create_internal_info_help_node):
Free return value of variable_long_description_string.
2026-03-11 Gavin Smith <gavinsmith0123@gmail.com>
* info/infodoc.c (create_internal_info_help_node):
Check if return value of where_is is null before using it. This
shouldn't happen but it is not easy to see this just by looking
at this function. Avoid calling strdup on a string.
Report from Patrice.
2026-03-10 Gavin Smith <gavinsmith0123@gmail.com>
* tta/perl/Texinfo/Translations.pm (fake_setlocale) [openbsd]:
Remove forced override of POSIX::setlocale as now we use the
"gettext_dumb" option of Locale::Messages.
2026-03-09 Patrice Dumas <pertusus@free.fr>
* Pod-Simple-Texinfo/t/Pod-Simple-Texinfo.t: set number of tests when
importing Test::More.
2026-03-09 Patrice Dumas <pertusus@free.fr>
* tta/C/texi2any.c (main), tta/perl/texi2any.pl: if TEST is set and
OUTFILE is set to /dev/null and /dev/null is not a null device, reset
OUTFILE to a platform null device. For a test that uses -o /dev/null.
2026-03-09 Patrice Dumas <pertusus@free.fr>
* tta/C/Makefile.am (libtexinfo_main_la_LDFLAGS): add $(LTLIBINTL)
since gettext is used in texinfo.c.
2026-03-09 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Indices.pm (BEGIN): add missing texinfo libraries
dependencies.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* tta/C/Makefile.am (libtexinfo_convert_la_LIBADD)
(libtexinfo_main_la_LIBADD, ctexi2any_LDADD): remove libgnu.la from
libraries and executable linking against libtexinfo, as libtexinfo
already includes libgnu.a files through libperlcall_utils convenience
library linked in libtexinfo. Based on Bruno Haible report.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* tta/C/main/utils.c (html_get_direction_index): remove unused
variable.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* doc/texinfo.texi (@command{texi2any} Environment Variables):
remove explanations on TEXINFO_XS_* and TEXINFO_C_EMBED_PERL as these
environment variables are likely to be removed at some point.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* doc/texinfo.texi (@command{texi2any} Environment Variables):
update for changes in TEXINFO_XS.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* doc/texinfo.texi (Invoking @command{texi2any})
(Global Customization Variables): remove references to xml
command-line and format options.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* tta/perl/Makefile.tres, tta/perl/t/xml_tests.t: remove the
sectioning_test_no_use_nodes that is now a duplicate. Replace
$sectioning_test by its value.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* tta/maintain/check_back_xml_forth_texi_t.sh: update.
* util/txixml2texi.pl: update Perl modules names.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* NEWS, TODO: update for Texinfo XML removed as an output format.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* doc/tta_api/Makefile.am (texi2any_internals_dependencies): fix
TexinfoMarkup.pm and TexinfoXML.pm paths.
2026-03-08 Patrice Dumas <pertusus@free.fr>
Move TexinfoXML.pm, TexinfoSXML.pm and TexinfoMarkup.pm to Example
* tta/perl/Makefile.am (dist_convertmodules_DATA),
tta/perl/Texinfo/Example/TexinfoMarkup.pm,
tta/perl/Texinfo/Example/TexinfoSXML.pm,
tta/perl/Texinfo/Example/TexinfoXML.pm: move TexinfoMarkup.pm,
TexinfoSXML.pm and TexinfoXML.pm out of Texinfo/ to Example/.
* tta/C/texi2any.c (formats_table),
tta/perl/Texinfo/Example/TexinfoMarkup.pm,
tta/perl/Texinfo/Example/TexinfoSXML.pm,
tta/perl/Texinfo/Example/TexinfoXML.pm, tta/perl/t/test_utils.pl,
tta/perl/t/z_misc/no_structure_test.t, tta/perl/texi2any.pl: update
Perl modules names.
* tta/maintain/regenerate_converters_documentation.sh,
tta/perl/Convert_format_template.pod: update to handle TexinfoXML
being in Example.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* tta/perl/t/test_utils.pl (test): remove xml from the default
expanded formats.
2026-03-08 Patrice Dumas <pertusus@free.fr>
Mark texinfo XML related @-command as deprecated
* tta/data/command_data.txt: mark xml, ifxml and ifnotxml as
deprecated.
2026-03-08 Patrice Dumas <pertusus@free.fr>
Remove Texinfo XML command line options
* tta/C/texi2any.c (format_command_line_names, long_options)
(main), tta/perl/texi2any.pl (%format_command_line_names)
(makeinfo_help): remove Texinfo XML related command line options.
* tta/tests/coverage/list-of-tests (formatting_xml): update.
2026-03-08 Patrice Dumas <pertusus@free.fr>
Deprecate xml format in documentation and associated variables
* doc/texinfo.texi (Output Formats, Adding Output Formats)
(Conditional Commands, Conditional Not Commands)
(Raw Formatter Commands, Inline Conditionals)
(Generic Translator @command{texi2any}, Invoking @command{texi2any})
(Output Format Selection, Command List)
(Customization Variables for Multiple Formats): do not document
Texinfo XML as being a supported output format. Document @ifxml, @xml
and @ifnotxml as being deprecated.
* tta/maintain/catalog.xml.in,
tta/perl/Texinfo/Convert/TexinfoMarkup.pm (_convert),
tta/perl/Texinfo/Convert/TexinfoXML.pm (txi_markup_header): remove
TXI_MARKUP_NO_SECTION_EXTENT, considering that it is always false.
Hardcode TEXINFO_DTD_VERSION to 7.3.
* tta/data/options_data.txt: set TEXINFO_DTD_VERSION to 7.3, document
markup and Texinfo XML customization variables as not being used
anymore.
* doc/texinfo.texi (Other Formats Customization Variables),
tta/Makefile.am (maintain/catalog.xml), tta/perl/Makefile.am
(do_subst): remove Texinfo XML customization variables documentation
and substitutions.
* configure.ac, tta/configure.ac,
tta/maintain/change_perl_modules_version.sh: do not set
TEXINFO_DTD_VERSION.
* tta/C/convert/texinfo.c (txi_set_base_default_options),
tta/perl/texi2any.pl ($main_program_set_options): do not set
TEXINFO_DTD_VERSION.
* tta/perl/t/xml_tests.t (sectioning_test_no_use_nodes): do not set
TXI_MARKUP_NO_SECTION_EXTENT.
* Makefile.am, README-hacking: remove dtd-check.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* tta/perl/XSTexinfo/convert/ConvertTextXS.xs (XS_convert_tree):
remove call of get_sv_element_document and get_sv_element_element,
no code sets the corresponding handle and document descriptor.
* tta/C/tree_elements/get_perl_tree_elements.c
(get_sv_element_document, get_sv_element_element),
tta/C/main/get_perl_info.c: move unused get_sv_element_document and
get_sv_element_element to get_perl_tree_elements.c.
* tta/C/main/document.c (destroy_document),
tta/C/main/document_types.h (DOCUMENT): comment out definition of
element_handles document field and associated code, as no code built
uses it currently.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* tta/C/Makefile.am (libtexinfo_convertxs_la_SOURCES, EXTRA_DIST): do
not build tree_elements/build_perl_tree_elements.c and
tree_elements/get_perl_tree_elements.c.
2026-03-08 Patrice Dumas <pertusus@free.fr>
remove the Texinfo::TreeElement XS interface
* doc/tta_api/Makefile.am (texi2any_internals_dependencies),
tta/perl/Makefile.am (dist_modules_DATA),
tta/perl/Texinfo/TreeElement.pm, tta/perl/XSTexinfo/Makefile.am:
rename TreeElementNonXS.pm as TreeElement.pm. Remove TreeElement XS
loading and reader_element/TreeElementXS.xs.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/TreeElementNonXS.pm,
tta/perl/XSTexinfo/reader_element/TreeElementXS.xs: remove all the
methods except for new. Those methods should not be used.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/Converter.pm (txt_image_text),
tta/perl/Texinfo/Example/ReadDocBook.pm (_convert): do not use the
TreeElement interface.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* tta/C/tree_elements/build_perl_tree_elements.c: remove unused header
includes.
* tta/C/tree_elements/get_perl_tree_elements.c: remove
get_sv_reader_reader.
2026-03-08 Patrice Dumas <pertusus@free.fr>
remove the Texinfo::Reader XS interface
* doc/tta_api/Makefile.am (texi2any_internals_dependencies),
tta/perl/Makefile.am (dist_modules_DATA), tta/perl/Texinfo/Reader.pm,
tta/perl/XSTexinfo/Makefile.am:
remove XS interface of Texinfo::Reader. Rename ReaderNonXS.pm as
Reader.pm. Remove reader_element/ReaderXS.xs.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* tta/C/tree_elements/build_perl_tree_elements.c: remove
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 that were only used in
TreeElementConverterXS.
* tta/C/tree_elements/get_perl_tree_elements.c: remove
get_lang_translations_sv.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* doc/tta_api/Makefile.am (texi2any_internals_dependencies),
tta/perl/Makefile.am (dist_convertmodules_DATA),
tta/perl/XSTexinfo/Makefile.am: remove completely
TreeElementConverter by removing TreeElementConverterXS.xs,
TreeElementConverter.pm and TreeElementConverterXS.pm.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* Texinfo/Example/ReadDocBook.pm: remove or replace code related to XS
interfaces.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* tta/perl/Makefile.am (dist_convertmodules_DATA),
tta/perl/texi2any.pl (%formats_table): remove completely
Texinfo::Example::TreeElementReadDocBook.
* tta/perl/Texinfo/Example/TODO: move information on obsolete code to
this new file.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/XSLoader.pm: make $disable_C_libraries a file
scoped variable.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Parser.pm (BEGIN): do not call
set_XS_parser_loaded.
* tta/perl/Texinfo/XSLoader.pm: remove XS_parser_loaded and
set_XS_parser_loaded. The information can be determined in advance
with $Texinfo::XSLoader::core_modules_built and XS_parser_enabled.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/ManipulateTree.pm (tree_remove_references):
determine early the object count number by using the
$Texinfo::XSLoader::core_modules_built variable value to determine if
the XS parser module is loaded.
2026-03-08 Patrice Dumas <pertusus@free.fr>
* tta/swig/perl/t/20index_sort.t: load the SWIG interface before the
texi2any internal modules and call Texinfo::setup in a BEGIN block to
make sure that set_XS_mandatory is called before any module reading
TEXINFO_XS_* environmnent variables is loaded.
2026-03-07 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/XSLoader.pm (set_XS_mandatory, init): unset
$ENV{'TEXINFO_XS'} if set to omit in set_XS_mandatory, not in init.
* tta/perl/Texinfo/XSLoader.pm (init): handle first the case where
there is no attempt to load XS module. Make $TEXINFO_XS a file
lexical.
* tta/perl/Texinfo/XSLoader.pm ($core_modules_built): add.
2026-03-07 Patrice Dumas <pertusus@free.fr>
* tta/C/main/call_perl_function.c (call_eval_load_texinfo_modules): no
need to check whether Document XS loaded, XS is mandatory such that
XSLoader would already have died if Document XS was not loaded.
* tta/perl/Texinfo/Document.pm (BEGIN): no more need to detect that
Document XS was loaded. In general, it should be better to make sure
in upstream codes that failure happens as soon as the XS module does
not load.
2026-03-07 Patrice Dumas <pertusus@free.fr>
* tta/swig/perl/test_refold.sh: avoid using diff exit status.
2026-03-07 Patrice Dumas <pertusus@free.fr>
* tta/C/main/call_perl_function.c (call_eval_load_texinfo_modules):
call set_XS_mandatory to be more like C texi2any and simplify the
possible cases.
2026-03-07 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/XSLoader.pm (init): handle mandatory_xs more like
other cases since in situations with mandatory_xs set, all the XS
modules should be enabled.
Show missing fallback only after the required modules that have not
been loaded caused to die.
Silently reset TEXINFO_XS if set to omit and mandatory_xs is set.
2026-03-07 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/XSLoader.pm ($mandatory_xs, set_XS_mandatory):
rename embedded_xs to mandatory_xs and set_XS_embedded to
set_XS_mandatory. Update users and callers.
2026-03-07 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/Converter.pm (BEGIN),
tta/perl/Texinfo/Convert/HTML.pm (BEGIN),
tta/perl/Texinfo/Convert/Texinfo.pm (BEGIN),
tta/perl/Texinfo/Convert/Text.pm (BEGIN), tta/perl/Texinfo/Indices.pm
(BEGIN), tta/perl/Texinfo/ManipulateTree.pm (BEGIN),
tta/perl/Texinfo/OutputUnits.pm (BEGIN),
tta/perl/Texinfo/Structuring.pm (BEGIN),
tta/perl/Texinfo/Transformations.pm (BEGIN): remove unused
Texinfo::XSLoader::init return value variable.
2026-03-07 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/ModulePath.pm.in ($XS_modules_dir, init),
tta/perl/Texinfo/XSLoader.pm (init): set $XS_modules_dir in ModulePath
instead of prepending to @INC. Search for libtool archive in
$XS_modules_dir only in XSLoader init. Remove _find_file_in_inc.
2026-03-07 Patrice Dumas <pertusus@free.fr>
* INSTALL, README-hacking: document TEXINFO_XS_CONVERT only in
INSTALL. Move documentation about all the TEXINFO_XS_* to
README-hacking. Mention that those variables will be removed in the
future.
2026-03-07 Patrice Dumas <pertusus@free.fr>
* INSTALL, tta/perl/Texinfo/XSLoader.pm (_message, init, override):
make requiredifenabled the default for TEXINFO_XS. Remove
TEXINFO_XS warn, required and previous default possibilities.
2026-03-07 Patrice Dumas <pertusus@free.fr>
* tta/perl/Makefile.am (modulesdir), tta/perl/Texinfo/Config.pm
(BEGIN): move ConfigXS.pm code to Config.pm. Remove ConfigXS.pm.
2026-03-06 Patrice Dumas <pertusus@free.fr>
* tta/perl/init/documentation_examples.pm: add a license.
2026-03-06 Patrice Dumas <pertusus@free.fr>
* tta/perl/Makefile.am (test_files): remove unused
test_renamed_nodes.init.
2026-03-06 Patrice Dumas <pertusus@free.fr>
* tta/C/main/get_perl_info.c, tta/C/main/txi_config.c,
tta/C/tree_elements/get_perl_tree_elements.c,
tta/perl/XSTexinfo/convert/ConvertConverterXS.xs,
tta/perl/XSTexinfo/convert/ConvertHTMLXS.xs,
tta/perl/XSTexinfo/convert/get_html_perl_info.c,
tta/perl/XSTexinfo/parser_document/ConfigXS.xs,
tta/perl/XSTexinfo/parser_document/DocumentXS.xs,
tta/perl/XSTexinfo/parser_document/ManipulateTreeXS.xs,
tta/perl/XSTexinfo/parser_document/OutputUnitsXS.xs,
tta/perl/XSTexinfo/parser_document/ParserXS.xs: remove cast for
SvPVutf8_nolen and SvPVbyte_nolen. Add const.
2026-03-06 Patrice Dumas <pertusus@free.fr>
* tta/perl/XSTexinfo/convert/ConvertHTMLXS.xs (direction_string):
remove static for const size_t, as the solaris compiler does not want
a non-constant initializer with strlen call.
2026-03-06 Patrice Dumas <pertusus@free.fr>
* tta/perl/XSTexinfo/convert/ConvertHTMLXS.xs: remove cast to char *
for SvPVutf8_nolen, it should not be useful.
2026-03-05 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/ParagraphNonXS.pm,
tta/perl/XSTexinfo/xspara.c: minor changes in spacing, parentheses
use.
2026-03-05 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/ParagraphNonXS.pm (dump, add_text): check
if $paragraph->{'end_sentence'} exists, not if defined.
* tta/perl/XSTexinfo/xspara.c (enum eos_status): rename eos_undef as
eos_unset. Update users.
2026-03-05 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/ParagraphNonXS.pm (add_end_sentence),
tta/perl/XSTexinfo/ParagraphXS.xs (xspara_add_end_sentence),
tta/perl/XSTexinfo/xspara.c (xspara_add_end_sentence): remove
add_end_sentence value argument, always set to eos_present. Update
callers.
2026-03-05 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/ParagraphNonXS.pm (get_pending)
(_add_pending_word): do not delete $paragraph->{'space'}, set it to an
empty string instead.
2026-03-05 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/ParagraphNonXS.pm (new, get_pending)
(_add_pending_word, _add_next, set_space_protection, add_text):
instead of setting paragraph->{'word'} to undef to signal that there
is no empty string pending that need to be kept as is, add
invisible_pending_word to signal it, as in C.
* tta/perl/XSTexinfo/xspara.c (xspara__add_next)
(xspara_set_space_protection): change conditions to be simpler.
* tta/perl/XSTexinfo/xspara.c (xspara_add_text, xspara__add_next):
more similar debug messages as in Perl.
2026-03-04 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/ParagraphNonXS.pm: reformat functions
beginning.
2026-03-04 Patrice Dumas <pertusus@free.fr>
* doc/texi2any_api.texi, tta/perl/init/documentation_examples.pm:
change the formatting of functions beginning in
documentation_examples.pm and in texi2any_api.texi examples.
2026-03-04 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/ParserNonXS.pm: update POD.
2026-03-04 Patrice Dumas <pertusus@free.fr>
* tta/C/main/get_perl_info.c (find_element_from_sv),
tta/C/main/tree_types.h (enum string_info_type),
tta/C/parsetexi/labels.c (check_register_target_element_label),
tta/C/structuring_transfo/transformations.c (new_node),
tta/perl/Texinfo/Transformations.pm (_new_node),
tta/perl/Texinfo/ParserNonXS.pm
(_check_register_target_element_label): set 'identifier' extra
information with element label instead of 'normalized' for elements
being targets of links. Update code accessing the extra information.
2026-03-04 Patrice Dumas <pertusus@free.fr>
* tta/C/main/targets.c: remove unused compare_labels.
* tta/C/main/build_perl_info.c: update comments.
2026-03-04 Patrice Dumas <pertusus@free.fr>
* doc/texi2any_api.texi (Simple Customization for Commands Without
Arguments): fix documentation of
texinfo_register_no_arg_command_texinfo.
2026-03-03 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/build_html_perl_info.c,
tta/C/convert/build_html_perl_state.c: commented out code and unused
variables. Remove unused build_directions_strings function.
2026-03-03 Patrice Dumas <pertusus@free.fr>
TODO: update DevHelp information
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/C/main/api_to_perl.c: remove useless includes and preprocessor
code.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/XSTexinfo/Makefile.am: remove BUILD_C_CODE conditional use,
as it should always be true. BUILD_C_CODE true is implied by XS being
enabled, and code is built in the directory only if XS is enabled.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/Paragraph.pm (BEGIN),
tta/perl/XSTexinfo/Makefile.am, tta/perl/XSTexinfo/ParagraphXS.xs:
rename XSParagraph.xs as ParagraphXS.xs.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Parser.pm (BEGIN), tta/perl/XSTexinfo/Makefile.am,
tta/perl/XSTexinfo/parser_document/ParserXS.xs: rename Parsetexi.xs to
ParserXS.xs.
2026-03-02 Patrice Dumas <pertusus@free.fr>
Finish TEXINFO_XS requiredifenabled implementation
* tta/perl/Texinfo/XSLoader.pm (init): now that all the modules that
need one have fallback, die if fallback is missing when it should be
present. Update comments.
* tta/perl/Texinfo/XSLoader.pm (override): die if overriding a
function failed and embedded_xs is set.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/configure.ac (prefer_c_t2a): move ctexi2any related code later
to depend on use_shared_txi_libraries rather than am_func_iconv.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Structuring.pm (_associate_internal_references):
rename associate_internal_referencesNonXS as
_associate_internal_references. Update callers.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/C/main/manipulate_tree.c (copy_tree_root),
tta/perl/Texinfo/ManipulateTreeNonXS.pm (copy_tree_root),
tta/perl/XSTexinfo/parser_document/ManipulateTreeXS.xs
(copy_tree_root), tta/perl/t/z_misc/test_tree_copy.t: add
copy_tree_root that copies a whole tree root element.
* tta/perl/Texinfo/ManipulateTree.pm (copy_element_tree),
tta/C/main/manipulate_tree.c (copy_element_tree): rename
copy_treeNonXS as copy_element_tree in Perl. Rename copy_tree as
copy_element_tree in C. Update callers.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/Texinfo.pm (BEGIN),
tta/perl/XSTexinfo/Makefile.am,
tta/perl/XSTexinfo/convert/ConvertTexinfoXS.xs: rename
ConvertToTexinfoXS.xs to ConvertTexinfoXS.xs.
2026-03-02 Patrice Dumas <pertusus@free.fr>
Finish TEXINFO_XS requiredifenabled implementation
* tta/perl/Texinfo/XSLoader.pm (init): now that all the modules that
need one have fallback, die if fallback is missing when it should be
present. Update comments.
* tta/perl/Texinfo/XSLoader.pm (override): die if overriding a
function failed and embedded_xs is set.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/configure.ac (prefer_c_t2a): move ctexi2any related code later
to depend on use_shared_txi_libraries rather than am_func_iconv.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Structuring.pm (_associate_internal_references):
rename associate_internal_referencesNonXS as
_associate_internal_references. Update callers.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/C/main/manipulate_tree.c (copy_tree_root),
tta/perl/Texinfo/ManipulateTreeNonXS.pm (copy_tree_root),
tta/perl/XSTexinfo/parser_document/ManipulateTreeXS.xs
(copy_tree_root), tta/perl/t/z_misc/test_tree_copy.t: add
copy_tree_root that copies a whole tree root element.
* tta/perl/Texinfo/ManipulateTree.pm (copy_element_tree),
tta/C/main/manipulate_tree.c (copy_element_tree): rename
copy_treeNonXS as copy_element_tree in Perl. Rename copy_tree as
copy_element_tree in C. Update callers.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/ManipulateTree.pm (copy_contents): remove
copy_contentsNonXS, copy_contents does not have an XS implementation.
Update callers.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/C/structuring_transfo/transformations.c
(move_selected_element_index_entries_after_items): rename
move_index_entries_after_items as
move_selected_element_index_entries_after_items.
* tta/perl/Texinfo/ManipulateTreeNonXS.pm
(_move_selected_element_index_entries_after_items): rename
move_index_entries_after_items as
_move_selected_element_index_entries_after_items.
* tta/perl/Texinfo/ManipulateTreeNonXS.pm
(move_index_entries_after_items_in_document): remove
move_index_entries_after_items_in_tree.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/XSTexinfo/convert/ConvertToTexinfoXS.xs
(_XS_texinfo_convert_tree): rename plain_texinfo_convert_tree as
_XS_texinfo_convert_tree.
* tta/perl/Texinfo/Convert/Texinfo.pm (_convert_to_texinfo): rename
convert_to_texinfoNonXS as _convert_to_texinfo.
* tta/perl/Texinfo/Convert/Texinfo.pm (BEGIN, convert_to_texinfo),
tta/perl/Texinfo/Convert/TexinfoNonXS.pm (_XS_texinfo_convert_tree),
tta/perl/XSTexinfo/convert/ConvertToTexinfoXS.xs
(_XS_texinfo_convert_tree): have _XS_texinfo_convert_tree return undef
if the C data is not found. Override _XS_texinfo_convert_tree in
TexinfoNonXS.pm, returning undef. Define convert_to_texinfo in
Texinfo.pm, by calling _XS_texinfo_convert_tree and switching to Perl
implementation if _XS_texinfo_convert_tree returns undef.
* tta/perl/Makefile.am (dist_convertmodules_DATA): remove
Texinfo/Convert/TexinfoXS.pm.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/Converter.pm (table_item_content_tree):
rename table_item_content_tree_noxs as table_item_content_tree.
Update callers.
* tta/C/main/get_perl_info.c (get_messages_from_sv),
tta/perl/Texinfo/Convert/Converter.pm,
tta/perl/Texinfo/Convert/ConverterNonXS.pm
(merge_converter_error_messages_lists),
tta/perl/XSTexinfo/convert/ConvertConverterXS.xs
(merge_converter_error_messages_lists): add get_messages_from_sv, and
use it in merge_converter_error_messages_lists to get messages from
the Perl object if a C converter could not be found. Move
merge_converter_error_messages_lists_noxs code to
merge_converter_error_messages_lists in ConverterNonXS.pm. Remove
merge_converter_error_messages_lists_noxs.
2026-03-02 Patrice Dumas <pertusus@free.fr>
Change in comments
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Config.pm, tta/perl/Texinfo/Convert/HTML.pm,
tta/perl/Texinfo/Convert/Plaintext.pm,
tta/perl/Texinfo/Convert/Unicode.pm,
tta/perl/Texinfo/Example/TreeElementConverter.pm,
tta/perl/Texinfo/ParserNonXS.pm: make $module_loaded a file scoped my
variable.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/HTML.pm,
tta/perl/Texinfo/Convert/HTMLNonXS.pm,
tta/perl/XSTexinfo/convert/ConvertHTMLXS.xs: prepend _ to function
names for functions that are not supposed to be called outside of
HTML converter.
* tta/perl/Texinfo/Convert/HTMLNonXS.pm
(command_is_in_referred_command_stack),
tta/perl/XSTexinfo/convert/ConvertHTMLXS.xs
(command_is_in_referred_command_stack): rename
_command_is_in_referred_command_stack as
command_is_in_referred_command_stack. Update callers.
* tta/perl/XSTexinfo/convert/ConvertHTMLXS.xs: remove
_push_referred_command_stack_command and _pop_referred_command_stack
XS interfaces, the functions are only called from already overriden
functions.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Makefile.am (dist_modules_DATA),
tta/perl/Texinfo/Indices.pm (BEGIN), tta/perl/Texinfo/IndicesNonXS.pm,
tta/perl/XSTexinfo/parser_document/IndicesXS.xs: add IndicesNonXS.pm
based on Indices.pm for the code also in the XS interface. Add
loading of XS module in Indices.pm.
Remove tta/perl/Texinfo/IndicesXS.pm.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/HTML.pm,
tta/perl/Texinfo/Convert/HTMLNonXS.pm,
tta/perl/XSTexinfo/convert/ConvertHTMLXS.xs: prepend _ to function
names for functionss that are not supposed to be called outside of
HTML converter.
* tta/perl/Texinfo/Convert/HTMLNonXS.pm
(command_is_in_referred_command_stack),
tta/perl/XSTexinfo/convert/ConvertHTMLXS.xs
(command_is_in_referred_command_stack): rename
_command_is_in_referred_command_stack as
command_is_in_referred_command_stack. Update callers.
* tta/perl/XSTexinfo/convert/ConvertHTMLXS.xs: remove
_push_referred_command_stack_command and _pop_referred_command_stack
XS interfaces, the functions are only called from already overriden
functions.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/XSTexinfo/convert/ConvertHTMLXS.xs: fix names in strings
used in warn message. Modify 2 XS interface names.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/format_html.c (html_unit_is_top_output_unit): rename
unit_is_top_output_unit as html_unit_is_top_output_unit.
* tta/C/main/get_perl_info.c (get_output_unit_from_sv): add, based on
find_root_command code.
* tta/perl/Texinfo/Convert/HTML.pm,
tta/perl/Texinfo/Convert/HTMLNonXS.pm (_get_top_unit)
(unit_is_top_output_unit), tta/perl/XSTexinfo/convert/ConvertHTMLXS.xs
(unit_is_top_output_unit): add an XS interface for
unit_is_top_output_unit.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/html_prepare_converter.c
(html_set_main_units_direction_names), tta/C/main/converter_types.h
(CONVERTER), tta/C/main/utils.c (html_get_direction_index): setup an
hash associating direction names to their index in
main_units_direction_names while filling the array. Use it in
html_get_direction_index.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/format_html.c (html_direction_string): rename
direction_string as html_direction_string.
* tta/perl/Texinfo/Convert/HTML.pm,
tta/perl/Texinfo/Convert/HTMLNonXS.pm (direction_string),
tta/perl/XSTexinfo/convert/ConvertHTMLXS.xs (direction_string): add XS
interface for direction_string.
* tta/C/convert/build_html_perl_info.c
(html_pass_converter_initialization_state),
tta/C/convert/build_html_perl_state.c (build_html_translated_names):
do not pass nor reset direction_string converter hash, as nothing
access the Perl data when going through the XS interface.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/format_html.c (html_special_unit_info): handle an
unknown special_unit_variety being given in argument.
* tta/perl/Texinfo/Convert/HTML.pm,
tta/perl/Texinfo/Convert/HTMLNonXS.pm
(get_special_unit_info_varieties, special_unit_info),
tta/perl/XSTexinfo/convert/ConvertHTMLXS.xs
(get_special_unit_info_varieties, special_unit_info): do not sort
get_special_unit_info_varieties output. Add an XS interface for
get_special_unit_info_varieties and special_unit_info.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/format_html.c (html_get_top_unit): reorganize code to
be more efficient, and more similar to Perl code.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* doc/texi2any_api.texi (Customizing Output Target Names)
(Target Tree Element Link), tta/perl/Texinfo/Convert/ConverterNonXS.pm
(converter_find_identifier_target), tta/perl/Texinfo/Convert/HTML.pm,
tta/perl/XSTexinfo/convert/ConvertConverterXS.xs
(converter_find_identifier_target): rename find_identifier_target as
converter_find_identifier_target. Move to ConverterNonXS.pm and add
an XS implementation. Update callers.
* tta/perl/Texinfo/Convert/HTML.pm (_get_top_unit)
(_convert_xref_command, _convert_printindex_command): use
converter_find_identifier_target.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* doc/texi2any_api.texi (Customizing Output Target Names)
(Target Tree Element Link), tta/perl/Texinfo/Convert/HTML.pm
(find_identifier_target), tta/perl/init/documentation_examples.pm,
tta/perl/t/init/access_output_unit_in_handler.pm: rename label_command
as find_identifier_target. Update callers.
* tta/perl/Texinfo/Convert/HTML.pm (_convert_xref_command): rename
_convert_xref_commands as _convert_xref_command.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/t/init/t2h_singular.init (singular_collect_values)
(singular_get_value): collect version set values in the tree. Use
them in formatting.
* tta/perl/Texinfo/Convert/HTML.pm: remove get_value.
* tta/tests/coverage/formatting.texi: add setting of VERSION value,
for t2h_singular.init testing.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/HTML.pm,
tta/perl/Texinfo/Convert/HTMLNonXS.pm: move functions around and
modify comments for a better organized code.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Makefile.am (dist_convertmodules_DATA),
tta/perl/Texinfo/Convert/HTML.pm (BEGIN),
tta/perl/Texinfo/Convert/HTMLNonXS.pm, tta/perl/XSTexinfo/Makefile.am
(xs_LTLIBRARIES, *_ConvertHTMLXS_la_*),
tta/perl/XSTexinfo/convert/ConvertHTMLXS.xs: add HTMLNonXS.pm based on
HTML.pm for the code also in the XS interface. Rename ConvertXS.xs as
ConvertHTMLXS.xs. Add loading of XS module in HTML.pm. Use the same
name in Perl code and in XS interface.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/HTML.pm (%XS_conversion_overrides),
tta/perl/XSTexinfo/convert/ConvertXS.xs: use the same name in Perl
code and in XS interface.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/converter.c (setup_converter_generic_done)
(setup_converter_generic), tta/C/convert/html_prepare_converter.c
(html_format_setup): have html_format_setup call
setup_converter_generic_done as it depends on some xml conversion data
having been set. Add setup_converter_generic_done to avoid running
setup_converter_generic code twice.
* tta/perl/Texinfo/Convert/HTML.pm (%XS_conversion_overrides, import),
tta/perl/XSTexinfo/convert/ConvertXS.xs (init): call html_format_setup
in init in ConvertXS.xs. Remove html_format_setup.
* tta/perl/Texinfo/Convert/HTML.pm (%XS_conversion_overrides)
(html_converter_initialize_beginning)
(XS_html_converter_get_customization),
tta/perl/XSTexinfo/convert/ConvertXS.xs
(XS_html_converter_get_customization): rename
_XS_html_converter_initialize_beginning as
html_converter_initialize_beginning and
_XS_html_converter_get_customization and
html_converter_get_customization_sv as
XS_html_converter_get_customization.
* tta/perl/Texinfo/Convert/HTML.pm
(html_converter_initialize_beginning, converter_initialize): do not
use a dynamic check of converter_descriptor presence before
html_converter_initialize_beginning and converter_initialize calls, it
should always set and we do not do it for any other function. Move
Perl code called where html_converter_initialize_beginning was to the
function.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Makefile.am (dist_convertmodules_DATA),
tta/perl/Texinfo/Convert/Text.pm (BEGIN),
tta/perl/Texinfo/Convert/TextNonXS.pm,
tta/perl/XSTexinfo/Makefile.am (xs_LTLIBRARIES, *_ConvertTextXS_la_*),
tta/perl/XSTexinfo/convert/ConvertXS.xs,
tta/perl/XSTexinfo/convert/ConvertTextXS.xs: add TextNonXS.pm based on
Text.pm with the trivial code present in the XS interface. Split
ConvertTextXS.xs out of ConvertXS.xs with the Texinfo::Convert::Text
XS interface code. Add loading of XS module in Text.pm.
* tta/perl/XSTexinfo/Makefile.am: cleanups.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Convert/Text.pm (XS_convert_tree),
tta/perl/XSTexinfo/convert/ConvertXS.xs (XS_convert_tree): rename
_convert_tree_with_XS and text_convert_tree as XS_convert_tree.
* tta/perl/Texinfo/Convert/Text.pm (XS_convert_tree, convert_to_text)
(convert, output), tta/perl/XSTexinfo/convert/ConvertXS.xs
(XS_convert_tree): determine in XS_convert_tree if a C element
corresponding to the input Perl tree element is found and if not found
return undef. Always call XS_convert_tree in Perl code, and determine
if the element was converted by checking if the return value is undef.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Makefile.am (dist_convertmodules_DATA),
tta/perl/Texinfo/Convert/Converter.pm,
tta/perl/Texinfo/Convert/ConverterNonXS.pm,
tta/perl/XSTexinfo/Makefile.am (xs_LTLIBRARIES)
(*ConvertConverterXS_la_*), tta/perl/XSTexinfo/convert/ConvertXS.xs,
tta/perl/XSTexinfo/convert/ConvertConverterXS.xs: add
ConverterNonXS.pm based on Converter.pm with the code also present in
the XS interface. Split ConvertConverterXS.xs out of ConvertXS.xs with
the Texinfo::Convert::Converter XS interface code. Add loading of XS
module in Converter.pm.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Makefile.am (dist_modules_DATA),
tta/perl/Texinfo/ManipulateTree.pm,
tta/perl/Texinfo/ManipulateTreeNonXS.pm,
tta/perl/Texinfo/OutputUnits.pm, tta/perl/Texinfo/OutputUnitsNonXS.pm,
tta/perl/XSTexinfo/Makefile.am (xs_LTLIBRARIES, *_OutputUnitsXS_*)
(*_ManipulateTreeXS_la_),
tta/perl/XSTexinfo/parser_document/ManipulateTreeXS.xs,
tta/perl/XSTexinfo/parser_document/OutputUnitsXS.xs: add
OutputUnitsNonXS.pm based on OutputUnits.pm with the code also present
in the XS interface. Similarly, add ManipulateTreeNonXS.pm based on
ManipulateTree.pm with the code also present in the XS interface.
Split StructuringTransfoXS.xs in ManipulateTreeXS.xs and
OutputUnitsXS.xs.
Add loading of XS module in OutputUnits.pm and ManipulateTree.pm,
and keep there the functions not in the XS interfaces.
Remove StructuringTransfoXS.xs and perl/Texinfo/StructTransfXS.pm.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Makefile.am (dist_modules_DATA),
tta/perl/Texinfo/Transformations.pm,
tta/perl/Texinfo/TransformationsNonXS.pm
tta/perl/XSTexinfo/parser_document/TransformationsXS.xs,
tta/perl/XSTexinfo/Makefile.am (xs_LTLIBRARIES)
(*_TransformationsXS_la_*),
tta/perl/XSTexinfo/parser_document/StructuringTransfoXS.xs: add
TransformationsNonXS.pm based on Transformations.pm with the code also
present in the XS interface. Separate TransformationsXS.xs from
StructuringTransfoXS.xs with the transformations interface only. Add
loading of XS modules in Transformations.pm and keep the code not in
the XS interface in that file too.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Makefile.am (dist_modules_DATA),
tta/perl/Texinfo/StructuringNonXS.pm, tta/perl/Texinfo/Structuring.pm,
tta/perl/XSTexinfo/parser_document/StructuringTransfoXS.xs,
tta/perl/XSTexinfo/parser_document/StructuringXS.xs,
tta/perl/XSTexinfo/Makefile.am (xs_LTLIBRARIES, *_StructuringXS_la_*):
add StructuringNonXS.pm based on Structuring.pm code, keeping only
code also in the XS interface. Separate StructuringXS.xs from
StructuringTransfoXS.xs with the structuring interface only. Add
loading of XS in Structuring.pm and keep code not in the XS interface
too.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/C/Makefile.am (libcallperl_libtexinfo_la_SOURCES)
(libcallperl_libtexinfo_convert_la_SOURCES): move
call_document_perl_functions.c to libtexinfo.
* tta/perl/Makefile.am (dist_modules_DATA),
tta/perl/XSTexinfo/parser_document/DocumentXS.xs (destroy_document):
call call_document_remove_document_references in destroy_document in
DocumentXS.xs. Remove DocumentXS.pm.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Makefile.am (dist_modules_DATA),
tta/perl/Texinfo/Document.pm (BEGIN),
tta/perl/Texinfo/DocumentNonXS.pm, tta/perl/Texinfo/DocumentXS.pm
(destroy_document), tta/perl/XSTexinfo/parser_document/DocumentXS.xs
(MODULE, PACKAGE): move code loading XS to Document.pm, move non XS
interface code to the new DocumentNonXS.pm code file. Use
DocumentXS.pm for the only Perl function needed by the XS interface.
Update XS interface function names.
* tta/perl/Texinfo/Translations.pm (configure): simply call
Texinfo::Document::configure_output_strings_translations, remove XS
override.
* tta/C/main/call_perl_function.c (call_eval_load_texinfo_modules):
update for change in Perl modules.
2026-02-21 Patrice Dumas <pertusus@free.fr>
* tta/perl/Makefile.am (dist_modules_DATA),
tta/perl/XSTexinfo/Makefile.am, tta/perl/Texinfo/Parser.pm (BEGIN),
tta/perl/Texinfo/ParserXS.pm: rename tta/perl/XSTexinfo/Parsetexi.pm
as ParserXS.pm and move to tta/perl/Texinfo/ to be consistent with
the other modules.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/perl/Texinfo/Translations.pm (translate_string): switch to
gettext_dumb implementation to use a gettext implementation that does
not use the current locale information at all. Idea of Guido Flohr.
2026-03-02 Gavin Smith <gavinsmith0123@gmail.com>
* README-hacking: add instructions for updating refcard on
website
2026-03-02 Gavin Smith <gavinsmith0123@gmail.com>
* TODO: change "Post-release" section to "After 7.3 release".
2026-03-02 Gavin Smith <gavinsmith0123@gmail.com>
* tta/perl/t/08misc_commands.t
(definfoenclose_command_on_section_line):
Re-enable test.
2026-03-02 Patrice Dumas <pertusus@free.fr>
* tta/C/convert/call_html_perl_function.c: add includes for libc files
used in the code. Report from Eli Zaretskii.
2026-03-02 Gavin Smith <gavinsmith0123@gmail.com>
* configure.ac: bump version to 7.3dev.
Copyright 2026 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.