]> git.lyx.org Git - lyx.git/blobdiff - src/text.C
fix reading the author field.
[lyx.git] / src / text.C
index 853ddfa29db18993a24546a1a80c6c1772ff5d45..399b3fd3f70ed4d80989735f8b8fccbf863fa827 100644 (file)
@@ -159,10 +159,9 @@ int numberOfHfills(Paragraph const & par, Row const & row)
 }
 
 
-int readParToken(Buffer const & buf, Paragraph & par, LyXLex & lex,
-       string const & token)
+void readParToken(Buffer const & buf, Paragraph & par, LyXLex & lex,
+       string const & token, LyXFont & font)
 {
-       static LyXFont font;
        static Change change;
 
        BufferParams const & bp = buf.params();
@@ -188,11 +187,9 @@ int readParToken(Buffer const & buf, Paragraph & par, LyXLex & lex,
                bool hasLayout = tclass.hasLayout(layoutname);
 
                if (!hasLayout) {
-                       lyxerr << "Layout '" << layoutname << "' does not"
-                              << " exist in textclass '" << tclass.name()
-                              << "'." << endl;
-                       lyxerr << "Trying to use default layout instead."
-                              << endl;
+                       buf.error(ErrorItem(_("Unknown layout"),
+                       bformat(_("Layout '%1$s' does not exists in textclass '%2$s'\nTrying to use the default instead.\n"),
+                               layoutname, tclass.name()), par.id(), 0, par.size()));
                        layoutname = tclass.defaultLayoutName();
                }
 
@@ -220,7 +217,6 @@ int readParToken(Buffer const & buf, Paragraph & par, LyXLex & lex,
                        string line = lex.getString();
                        buf.error(ErrorItem(_("Unknown Inset"), line,
                                            par.id(), 0, par.size()));
-                       return 1;
                }
        } else if (token == "\\family") {
                lex.next();
@@ -346,22 +342,19 @@ int readParToken(Buffer const & buf, Paragraph & par, LyXLex & lex,
                buf.error(ErrorItem(_("Unknown token"),
                        bformat(_("Unknown token: %1$s %2$s\n"), token, lex.getString()),
                        par.id(), 0, par.size()));
-               return 1;
        }
-       return 0;
 }
 
 
-int readParagraph(Buffer const & buf, Paragraph & par, LyXLex & lex)
+void readParagraph(Buffer const & buf, Paragraph & par, LyXLex & lex)
 {
-       int unknown = 0;
-
        lex.nextToken();
        string token = lex.getString();
+       LyXFont font;
 
        while (lex.isOK()) {
 
-               unknown += readParToken(buf, par, lex, token);
+               readParToken(buf, par, lex, token, font);
 
                lex.nextToken();
                token = lex.getString();
@@ -386,8 +379,6 @@ int readParagraph(Buffer const & buf, Paragraph & par, LyXLex & lex)
                        break;
                }
        }
-
-       return unknown;
 }
 
 
@@ -448,15 +439,11 @@ int LyXText::singleWidth(Paragraph const & par, pos_type pos) const
 int LyXText::singleWidth(Paragraph const & par,
                         pos_type pos, char c, LyXFont const & font) const
 {
-       if (pos >= par.size()) {
-               lyxerr << "in singleWidth(), pos: " << pos << endl;
-               BOOST_ASSERT(false);
-               return 0;
-       }
+       BOOST_ASSERT(pos < par.size());
 
        // The most common case is handled first (Asger)
        if (IsPrintable(c)) {
-               if (!font.language()->RightToLeft()) {
+               if (font.language()->RightToLeft()) {
                        if ((lyxrc.font_norm_type == LyXRC::ISO_8859_6_8 ||
                             lyxrc.font_norm_type == LyXRC::ISO_10646_1)
                            && font.language()->lang() == "arabic") {
@@ -465,7 +452,7 @@ int LyXText::singleWidth(Paragraph const & par,
                                else
                                        c = par.transformChar(c, pos);
                        } else if (font.language()->lang() == "hebrew" &&
-                                Encodings::IsComposeChar_hebrew(c))
+                                  Encodings::IsComposeChar_hebrew(c))
                                return 0;
                }
                return font_metrics::width(c, font);
@@ -1871,13 +1858,18 @@ bool LyXText::read(Buffer const & buf, LyXLex & lex)
                        break;
                }
 
+               if (token == "\\end_body") {
+                       continue;
+               }
+
+               if (token == "\\begin_body") {
+                       continue;
+               }
+
                if (token == "\\end_document") {
                        return false;
                }
 
-               // FIXME: ugly.
-               int unknown = 0;
-
                if (token == "\\begin_layout") {
                        lex.pushToken(token);
 
@@ -1901,9 +1893,9 @@ bool LyXText::read(Buffer const & buf, LyXLex & lex)
                                --depth;
                        }
                } else {
-                       ++unknown;
+                       lyxerr << "Handling unknown body token: `"
+                              << token << '\'' << endl;
                }
-
        }
        return true;
 }
@@ -2121,5 +2113,9 @@ int LyXText::dist(int x, int y) const
        else if (y > yo_ + descent())
                yy = y - yo_ - descent();
 
+       lyxerr << " xo_=" << xo_ << "  yo_=" << yo_ 
+              << " width_=" << width_ << " ascent=" << ascent()
+              << " descent=" << descent() 
+              << " dist=" << xx+yy <<endl;
        return xx + yy;
 }