]> git.lyx.org Git - features.git/commitdiff
Fix bug #6284: missing space between # and text in math mode when using \mbox
authorEnrico Forestieri <forenr@lyx.org>
Mon, 19 Oct 2009 23:11:36 +0000 (23:11 +0000)
committerEnrico Forestieri <forenr@lyx.org>
Mon, 19 Oct 2009 23:11:36 +0000 (23:11 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31680 a592a061-630c-0410-9148-cb99ea01b6c8

src/mathed/MathParser.cpp

index d259a19332dacb0b093586952c734640cd2a2e3e..91baa45cd741889025bf40c48f2359d53f3165d4 100644 (file)
@@ -1777,8 +1777,15 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
                                if (mode == InsetMath::TEXT_MODE) {
                                        int num_tokens = 0;
                                        docstring cmd = prevToken().asInput();
-                                       skipSpaces();
+                                       // Check whether we have a macro
+                                       // argument, taking into account that
+                                       // it may come after some spaces.
                                        CatCode cat = nextToken().cat();
+                                       while (cat == catSpace) {
+                                               getToken();
+                                               ++num_tokens;
+                                               cat = nextToken().cat();
+                                       }
                                        if (cat == catBegin) {
                                                int count = 0;
                                                while (good() && (count || cat != catEnd)) {
@@ -1790,6 +1797,12 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
                                                        else if (cat == catEnd)
                                                                --count;
                                                }
+                                       } else {
+                                               // No macro argument is present,
+                                               // so put back the spaces that
+                                               // we may have read.
+                                               for (; num_tokens; --num_tokens)
+                                                       putback();
                                        }
                                        bool is_combining;
                                        char_type c =