On Wed, Nov 27, 2024 at 05:31:15AM +0000, Carlos Maniero wrote:
> ---
> V3:
> - Add missing entry on Changelog
> - Update the commit message with the Changelog entry
> 
> Thanks Patrice for the feedback!
> 
>  ChangeLog                    | 7 +++++++
>  tp/ext/highlight_syntax.pm   | 5 +++++
>  tp/tests/other/list-of-tests | 4 ++--
>  3 files changed, 14 insertions(+), 2 deletions(-)
 

It was suggested that this change be made before the next release.

However, I do not like the idea of saying that HIGHLIGHT_SYNTAX has an
invalid value, and yet setting the value still does something (causes
"source-highlight") to be used.  It seems more straightforward to make
it so that an invalid value is as if the variable were not set at all.

Here is a proposed patch to make this change.  (The changes to the
tests made sense.)  I move most of the texinfo_register_* calls
into 'highlight_setup' so that the module will not be active if
HIGHLIGHT_SYNTAX has an unrecognised value.

I have not committed this as I am not very familiar with the texi2any
Perl API so the patch would benefit from someone checking if it was
correct.

diff --git a/tp/ext/highlight_syntax.pm b/tp/ext/highlight_syntax.pm
index 953f5c10eb..c760d652e3 100644
--- a/tp/ext/highlight_syntax.pm
+++ b/tp/ext/highlight_syntax.pm
@@ -54,14 +54,6 @@ my %languages_extensions = (
 my %highlighted_languages_list;
 
 texinfo_register_handler('setup', \&highlight_setup);
-texinfo_register_handler('structure', \&highlight_process);
-texinfo_register_command_formatting('example', 
\&highlight_preformatted_command);
-# normally this is done in preformatted type, but preformatted
-# types conversion output in example is discarded in
-# highlight_preformatted_command, so register a replacement.
-# Register inline pending content when opening an example block.
-texinfo_register_command_opening('example',
-                                 \&highlight_open_inline_container_type);
 
 sub highlight_setup($$)
 {
@@ -74,15 +66,22 @@ sub highlight_setup($$)
 
   my $highlight_type = $self->get_conf('HIGHLIGHT_SYNTAX');
 
+  return 1 if !defined($highlight_type);
+
   my $cmd;
-  if (defined($highlight_type) and $highlight_type eq 'highlight') {
+  if ($highlight_type eq 'highlight') {
     $cmd = 'highlight --list-scripts=lang';
-  } elsif (defined($highlight_type) and $highlight_type eq 'pygments') {
+  } elsif ($highlight_type eq 'pygments') {
     $cmd = 'pygmentize -L lexers';
-  } else {
+  } elsif ($highlight_type eq 'source-highlight') {
     $highlight_type = 'source-highlight';
     $cmd = 'source-highlight --lang-list';
+  } else {
+    $self->converter_document_warn(sprintf(__(
+      "`%s' is not valid for HIGHLIGHT_SYNTAX"), $highlight_type));
+    return 1;
   }
+
   if ($highlight_type_languages_name_mappings{$highlight_type}) {
     %languages_name_mapping
       = %{$highlight_type_languages_name_mappings{$highlight_type}};
@@ -90,6 +89,15 @@ sub highlight_setup($$)
     %languages_name_mapping = ();
   }
 
+  texinfo_register_handler('structure', \&highlight_process);
+  texinfo_register_command_formatting('example', 
\&highlight_preformatted_command);
+  # normally this is done in preformatted type, but preformatted
+  # types conversion output in example is discarded in
+  # highlight_preformatted_command, so register a replacement.
+  # Register inline pending content when opening an example block.
+  texinfo_register_command_opening('example',
+                                   \&highlight_open_inline_container_type);
+
   # NOTE open failure triggers a warning message if run with -w if the
   # file is not found.  This message can be catched with $SIG{__WARN__}.
   # This message is along:

Reply via email to