Author: baum
Date: Sat Nov 12 19:43:13 2011
New Revision: 40178
URL: http://www.lyx.org/trac/changeset/40178

Log:
Fix "stray '}' in text" warnings: When parsing with FLAG_ITEM the braces need
to occur in pairs.
If you change something in tex2lyx please don't commit without running the
tests and ensuring that no warnings or errors are written on stderr.

Modified:
   lyx-devel/branches/BRANCH_2_0_X/   (props changed)
   lyx-devel/branches/BRANCH_2_0_X/src/tex2lyx/   (props changed)
   lyx-devel/branches/BRANCH_2_0_X/src/tex2lyx/text.cpp

Modified: lyx-devel/branches/BRANCH_2_0_X/src/tex2lyx/text.cpp
==============================================================================
--- lyx-devel/branches/BRANCH_2_0_X/src/tex2lyx/text.cpp        Sat Nov 12 
19:41:44 2011        (r40177)
+++ lyx-devel/branches/BRANCH_2_0_X/src/tex2lyx/text.cpp        Sat Nov 12 
19:43:13 2011        (r40178)
@@ -891,6 +891,13 @@
                        // the inner env
                        if (!inner_type.empty() && (inner_flags & FLAG_END))
                                active_environments.pop_back();
+       
+                       // Ensure that the end of the outer box is parsed 
correctly:
+                       // The opening brace has been eaten by parse_outer_box()
+                       if (!outer_type.empty() && (outer_flags & FLAG_ITEM)) {
+                               outer_flags &= ~FLAG_ITEM;
+                               outer_flags |= FLAG_BRACE_LAST;
+                       }
                        parse_text(p, os, outer_flags, outer, parent_context);
                        if (outer_flags & FLAG_END)
                                handle_ert(os, "\\end{" + outer_type + '}',
@@ -3458,14 +3465,18 @@
                }
 
                //\makebox() is part of the picture environment and different 
from \makebox{}
-               //\makebox{} will be parsed by parse_box when bug 2956 is fixed
+               //\makebox{} will be parsed by parse_box
                else if (t.cs() == "makebox") {
                        string arg = t.asInput();
                        if (p.next_token().character() == '(') {
                                //the syntax is: 
\makebox(x,y)[position]{content}
                                arg += p.getFullParentheseArg();
                                arg += p.getFullOpt();
-                               handle_ert(os, arg + p.get_token().asInput(), 
context);
+                               eat_whitespace(p, os, context, false);
+                               handle_ert(os, arg + '{', context);
+                               eat_whitespace(p, os, context, false);
+                               parse_text(p, os, FLAG_ITEM, outer, context);
+                               handle_ert(os, "}", context);
                        } else
                                //the syntax is: 
\makebox[width][position]{content}
                                parse_box(p, os, 0, FLAG_ITEM, outer, context,

Reply via email to