texinfo-commits
[Top][All Lists]
Advanced

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

[7088] parsetexi nested ifset


From: Gavin D. Smith
Subject: [7088] parsetexi nested ifset
Date: Thu, 31 Mar 2016 18:58:59 +0000

Revision: 7088
          http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=7088
Author:   gavin
Date:     2016-03-31 18:58:58 +0000 (Thu, 31 Mar 2016)
Log Message:
-----------
parsetexi nested ifset

Modified Paths:
--------------
    trunk/tp/parsetexi/parser.c

Modified: trunk/tp/parsetexi/parser.c
===================================================================
--- trunk/tp/parsetexi/parser.c 2016-03-31 18:02:53 UTC (rev 7087)
+++ trunk/tp/parsetexi/parser.c 2016-03-31 18:58:58 UTC (rev 7088)
@@ -699,16 +699,31 @@
               goto funexit;
             }
         }
-#if 0
-      /* Else check for nested ifclear */
-     if (...)
+
+      /* Else check for nested @ifset (so that @end ifset doesn't
+         end the outermost @ifset). */
+      if (current->cmd == CM_ifclear || current->cmd == CM_ifset
+          || current->cmd == CM_ifcommanddefined
+          || current->cmd == CM_ifcommandnotdefined)
         {
-          /* ... */
-          current = current->contents.list[number];
-          break;
+          ELEMENT *e;
+          char *p = line;
+          p += strspn (p, whitespace_chars);
+          if (!strncmp (p, command_name(current->cmd),
+                        strlen (command_name(current->cmd))))
+            {
+              line = p;
+              p += strlen (command_name(current->cmd));
+              e = new_element (ET_NONE);
+              e->cmd = current->cmd;
+              add_extra_string (e, "line", strdup (line));
+              add_to_element_contents (current, e);
+              current = e;
+              retval = GET_A_NEW_LINE;
+              goto funexit;
+            }
         }
-      else
-#endif
+
       /* 3755 Else check if line is "@end ..." for current command. */
       if (is_end_current_command (current, &line, &end_cmd))
         {




reply via email to

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