texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: Give documentlanguage setting priority over @docu


From: Gavin D. Smith
Subject: branch master updated: Give documentlanguage setting priority over @documentlanguage
Date: Sat, 28 Aug 2021 05:58:16 -0400

This is an automated email from the git hooks/post-receive script.

gavin pushed a commit to branch master
in repository texinfo.

The following commit(s) were added to refs/heads/master by this push:
     new b767760  Give documentlanguage setting priority over @documentlanguage
b767760 is described below

commit b7677606be614bca3277904178b4bde72c211cc8
Author: Gavin Smith <gavinsmith0123@gmail.com>
AuthorDate: Sat Aug 28 10:58:02 2021 +0100

    Give documentlanguage setting priority over @documentlanguage
    
    * tp/Texinfo/XS/parsetexi/Parsetexi.xs,
    * tp/Texinfo/XS/parsetexi/api.c (set_documentlanguage_override):
    New Perl-visible function to replace set_documentlanguage.
    * tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser): Call it.
    * tp/Texinfo/XS/parsetexi/parser.c (set_documentlanguage_fixed):
    New variable.
    * tp/Texinfo/XS/parsetexi/parser.c (set_documentlanguage): Don't
    set the document language if it was already set by
    set_documentlanguage_override.
---
 ChangeLog                            | 16 ++++++++++++++++
 tp/Texinfo/XS/parsetexi/Parsetexi.pm |  6 +++---
 tp/Texinfo/XS/parsetexi/Parsetexi.xs |  2 +-
 tp/Texinfo/XS/parsetexi/api.c        |  8 ++++++++
 tp/Texinfo/XS/parsetexi/api.h        |  2 ++
 tp/Texinfo/XS/parsetexi/parser.c     |  9 +++++++--
 tp/Texinfo/XS/parsetexi/parser.h     |  1 +
 7 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 68641c0..b87554b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2021-08-28  Gavin Smith  <gavinsmith0123@gmail.com>
+
+       Give documentlanguage setting priority over @documentlanguage
+       
+       * tp/Texinfo/XS/parsetexi/Parsetexi.xs,
+       * tp/Texinfo/XS/parsetexi/api.c (set_documentlanguage_override):
+       New Perl-visible function to replace set_documentlanguage.
+       * tp/Texinfo/XS/parsetexi/Parsetexi.pm (parser): Call it.
+       * tp/Texinfo/XS/parsetexi/parser.c (set_documentlanguage_fixed):
+       New variable.
+       * tp/Texinfo/XS/parsetexi/parser.c (set_documentlanguage): Don't
+       set the document language if it was already set by
+       set_documentlanguage_override.
+
+       Report from Patrice.
+
 2021-08-27  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/Convert/Converter.pm (xml_accent): if using numerical
diff --git a/tp/Texinfo/XS/parsetexi/Parsetexi.pm 
b/tp/Texinfo/XS/parsetexi/Parsetexi.pm
index 992f4a8..5ee1851 100644
--- a/tp/Texinfo/XS/parsetexi/Parsetexi.pm
+++ b/tp/Texinfo/XS/parsetexi/Parsetexi.pm
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -58,7 +58,7 @@ sub simple_parser {
   goto &parser;
 }
 
-# Stub for Texinfo::Parser::parser
+# Initialize the parser
 sub parser (;$$)
 {
   my $conf = shift;
@@ -103,7 +103,7 @@ sub parser (;$$)
         }
       } elsif ($key eq 'documentlanguage') {
         if (defined ($conf->{$key})) {
-          set_documentlanguage ($conf->{$key});
+          set_documentlanguage_override ($conf->{$key});
         }
       } elsif ($key eq 'FORMAT_MENU') {
         if ($conf->{$key} eq 'menu') {
diff --git a/tp/Texinfo/XS/parsetexi/Parsetexi.xs 
b/tp/Texinfo/XS/parsetexi/Parsetexi.xs
index 705a4cc..36dd3b9 100644
--- a/tp/Texinfo/XS/parsetexi/Parsetexi.xs
+++ b/tp/Texinfo/XS/parsetexi/Parsetexi.xs
@@ -103,7 +103,7 @@ void
 conf_set_IGNORE_SPACE_AFTER_BRACED_COMMAND_NAME (int i)
 
 void
-set_documentlanguage (value)
+set_documentlanguage_override (value)
      char *value
 
 void
diff --git a/tp/Texinfo/XS/parsetexi/api.c b/tp/Texinfo/XS/parsetexi/api.c
index cf3fabe..efc74d3 100644
--- a/tp/Texinfo/XS/parsetexi/api.c
+++ b/tp/Texinfo/XS/parsetexi/api.c
@@ -1025,3 +1025,11 @@ set_debug (int value)
   debug_output = value;
 }
 
+void
+set_documentlanguage_override (char *value)
+{
+  free (global_documentlanguage);
+  global_documentlanguage = strdup (value);
+  global_documentlanguage_fixed = 1;
+}
+
diff --git a/tp/Texinfo/XS/parsetexi/api.h b/tp/Texinfo/XS/parsetexi/api.h
index 7843680..e86b535 100644
--- a/tp/Texinfo/XS/parsetexi/api.h
+++ b/tp/Texinfo/XS/parsetexi/api.h
@@ -13,6 +13,8 @@ void reset_parser_except_conf (void);
 void set_debug (int);
 void wipe_values (void);
 void reset_context_stack (void);
+void set_documentlanguage_override (char *value);
+
 
 HV *build_texinfo_tree (void);
 AV *build_label_list (void);
diff --git a/tp/Texinfo/XS/parsetexi/parser.c b/tp/Texinfo/XS/parsetexi/parser.c
index 30aa5da..2453f2e 100644
--- a/tp/Texinfo/XS/parsetexi/parser.c
+++ b/tp/Texinfo/XS/parsetexi/parser.c
@@ -136,15 +136,20 @@ COUNTER count_cells;
 GLOBAL_INFO global_info;
 char *global_clickstyle = 0;
 char *global_documentlanguage = 0;
+int global_documentlanguage_fixed = 0;
 int global_accept_internalvalue = 0;
 
 enum kbd_enum global_kbdinputstyle = kbd_distinct;
 
+/* Set the document language unless it was set on the texi2any command line. */
 void
 set_documentlanguage (char *value)
 {
-  free (global_documentlanguage);
-  global_documentlanguage = strdup (value);
+  if (!global_documentlanguage_fixed)
+    {
+      free (global_documentlanguage);
+      global_documentlanguage = strdup (value);
+    }
 }
 
 void
diff --git a/tp/Texinfo/XS/parsetexi/parser.h b/tp/Texinfo/XS/parsetexi/parser.h
index 045327c..a44d4a0 100644
--- a/tp/Texinfo/XS/parsetexi/parser.h
+++ b/tp/Texinfo/XS/parsetexi/parser.h
@@ -176,6 +176,7 @@ extern ELEMENT *current_part;
 extern GLOBAL_INFO global_info;
 extern char *global_clickstyle;
 extern char *global_documentlanguage;
+extern int global_documentlanguage_fixed;
 extern int global_accept_internalvalue;
 
 enum kbd_enum {kbd_none, kbd_code, kbd_example, kbd_distinct };



reply via email to

[Prev in Thread] Current Thread [Next in Thread]