texinfo-commits
[Top][All Lists]
Advanced

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

[8142] parsetexi update


From: gavinsmith0123
Subject: [8142] parsetexi update
Date: Sat, 1 Sep 2018 12:22:18 -0400 (EDT)

Revision: 8142
          http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=8142
Author:   gavin
Date:     2018-09-01 12:22:18 -0400 (Sat, 01 Sep 2018)
Log Message:
-----------
parsetexi update

Modified Paths:
--------------
    trunk/tp/Texinfo/XS/parsetexi/def.c

Modified: trunk/tp/Texinfo/XS/parsetexi/def.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/def.c 2018-09-01 15:43:30 UTC (rev 8141)
+++ trunk/tp/Texinfo/XS/parsetexi/def.c 2018-09-01 16:22:18 UTC (rev 8142)
@@ -155,7 +155,8 @@
 }
 
 /* Divide any text elements into separate elements, separating whitespace
-   and non-whitespace. */
+   and non-whitespace.  Change ET_bracketed elements to 
+   ET_bracketed_def_content. */
 static void
 split_def_args (ELEMENT *current)
 {
@@ -167,6 +168,12 @@
       char *p;
       ELEMENT *new;
       int len;
+      if (e->type == ET_bracketed)
+        {
+          isolate_last_space (e, 0);
+          e->type = ET_bracketed_def_content;
+          continue;
+        }
       if (e->text.end == 0)
         continue;
       if (e->type == ET_empty_spaces_after_command)
@@ -173,18 +180,23 @@
         continue;
       p = e->text.text;
 
-      len = strspn (p, whitespace_chars);
-      if (len)
-        {
-          new = new_element (ET_spaces);
-          text_append_n (&new->text, p, len);
-          insert_into_contents (current, new, i++);
-          add_extra_string_dup (new, "def_role", "spaces");
-          p += len;
-        }
-
       while (1)
         {
+          len = strspn (p, whitespace_chars);
+          if (len)
+            {
+              new = new_element (ET_spaces);
+              text_append_n (&new->text, p, len);
+              insert_into_contents (current, new, i++);
+              add_extra_string_dup (new, "def_role", "spaces");
+              if (!*(p += len))
+                {
+                  if (p[-1] == '\n')
+                    new->type = ET_spaces_at_end;
+                  break;
+                }
+            }
+            
           len = strcspn (p, whitespace_chars);
           new = new_element (ET_NONE);
           text_append_n (&new->text, p, len);
@@ -192,16 +204,6 @@
           if (!*(p += len))
             break;
 
-          len = strspn (p, whitespace_chars);
-          new = new_element (ET_spaces);
-          text_append_n (&new->text, p, len);
-          insert_into_contents (current, new, i++);
-          add_extra_string_dup (new, "def_role", "spaces");
-          if (!*(p += len))
-            {
-              new->type = ET_spaces_at_end;
-              break;
-            }
         }
       destroy_element (remove_from_contents (current, i--));
     }




reply via email to

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