]> git.lyx.org Git - lyx.git/blobdiff - src/Paragraph.cpp
The mode changing math insets already provide the needed info, so
[lyx.git] / src / Paragraph.cpp
index 4ad0d59be0903158bfb7be0f2801e28d491bd8ab..eb966b8029cc7e616f0c180f9ee52e28508e9c57 100644 (file)
@@ -744,7 +744,16 @@ void Paragraph::Private::latexInset(
                }
        }
 
-       int tmp = inset->latex(os, runparams);
+       int tmp;
+
+       try {
+               tmp = inset->latex(os, runparams);
+       } catch (EncodingException & e) {
+               // add location information and throw again.
+               e.par_id = id_;
+               e.pos = i;
+               throw(e);
+       }
 
        if (close) {
        if (running_font.language()->lang() == "farsi")
@@ -1212,7 +1221,7 @@ void Paragraph::appendString(docstring const & s, Font const & font,
        d->text_.append(s);
 
        // FIXME: Optimize this!
-       for (pos_type i = 0; i != end; ++i) {
+       for (pos_type i = oldsize; i != newsize; ++i) {
                // track change
                d->changes_.insert(change, i);
        }
@@ -2302,40 +2311,26 @@ bool Paragraph::isMultiLingual(BufferParams const & bparams) const
 }
 
 
-docstring const Paragraph::printableString(bool label) const
-{
-       odocstringstream os;
-       if (label && !params().labelString().empty())
-               os << params().labelString() << ' ';
-       pos_type end = size();
-       for (pos_type i = 0; i < end; ++i) {
-               char_type const c = d->text_[i];
-               if (isPrintable(c))
-                       os.put(c);
-       }
-       return os.str();
-}
-
-
-docstring Paragraph::asString(bool label) const
+docstring Paragraph::asString(int options) const
 {
-       return asString(0, size(), label);
+       return asString(0, size(), options);
 }
 
 
-docstring Paragraph::asString(pos_type beg, pos_type end, bool label) const
+docstring Paragraph::asString(pos_type beg, pos_type end, int options) const
 {
-
        odocstringstream os;
 
-       if (beg == 0 && label && !d->params_.labelString().empty())
+       if (beg == 0 
+               && options & AS_STR_LABEL
+               && !d->params_.labelString().empty())
                os << d->params_.labelString() << ' ';
 
        for (pos_type i = beg; i < end; ++i) {
                char_type const c = d->text_[i];
                if (isPrintable(c))
                        os.put(c);
-               else if (c == META_INSET)
+               else if (c == META_INSET && options & AS_STR_INSETS)
                        getInset(i)->textString(os);
        }
 
@@ -2513,8 +2508,8 @@ int Paragraph::checkBiblio(Buffer const & buffer)
 
        // There was no inset at the beginning, so we need to create one with
        // the key and label of the one we erased.
-       InsetBibitem * inset = new InsetBibitem(InsetCommandParams(BIBITEM_CODE));
-       inset->setBuffer(const_cast<Buffer &>(buffer));
+       InsetBibitem * inset = 
+               new InsetBibitem(buffer, InsetCommandParams(BIBITEM_CODE));
        // restore values of previously deleted item in this par.
        if (!oldkey.empty())
                inset->setParam("key", oldkey);