]> git.lyx.org Git - lyx.git/blobdiff - src/Paragraph.cpp
Remove todo
[lyx.git] / src / Paragraph.cpp
index 6b6287d9f8b80d97d92ef0ad07208e788b0a5e31..498c5c1c2c1eda23071bf0a826c66b300e612a86 100644 (file)
@@ -183,10 +183,6 @@ public:
        ///
        ParagraphParameters params_;
 
-       /// position of the paragraph in the buffer. Only macros from
-       /// paragraphs strictly smaller are visible in this paragraph
-       unsigned int macrocontext_position_;
-       
        /// for recording and looking up changes
        Changes changes_;
 
@@ -232,7 +228,6 @@ Paragraph::Private::Private(Paragraph * owner)
        : owner_(owner), inset_owner_(0), begin_of_body_(0)
 {
        id_ = paragraph_id++;
-       macrocontext_position_ = 0;
        text_.reserve(100);
 }
 
@@ -915,7 +910,7 @@ bool Paragraph::Private::latexSpecialT1(char_type const c, odocstream & os,
                os.put(c);
                // In T1 encoding, these characters exist
                // but we should avoid ligatures
-               if (i + 1 > int(text_.size()) || text_[i + 1] != c)
+               if (i + 1 >= int(text_.size()) || text_[i + 1] != c)
                        return true;
                os << "\\,{}";
                column += 3;
@@ -1004,6 +999,13 @@ void Paragraph::Private::validate(LaTeXFeatures & features,
 
        // then the layouts
        features.useLayout(layout.name());
+       if (!layout.requires().empty()) {
+               vector<string> req = layout.requires();
+               for (vector<string>::const_iterator it = req.begin();
+                    it != req.end(); ++it) {
+                       features.require(*it);
+               }
+       }
 
        // then the fonts
        fontlist_.validate(features);
@@ -1961,8 +1963,7 @@ bool Paragraph::latex(Buffer const & buf,
                    runparams.encoding->package() == Encoding::none &&
                    font.language()->encoding()->package() == Encoding::none) {
                        pair<bool, int> const enc_switch = switchEncoding(os, bparams,
-                                       runparams, *(runparams.encoding),
-                                       *(font.language()->encoding()));
+                                       runparams, *(font.language()->encoding()));
                        if (enc_switch.first) {
                                column += enc_switch.second;
                                runparams.encoding = font.language()->encoding();
@@ -2025,9 +2026,24 @@ bool Paragraph::latex(Buffer const & buf,
                                        texrow, rp, running_font,
                                        basefont, outerfont, open_font,
                                        runningChange, *style, i, column);
-               else
-                       d->latexSpecialChar(os, rp, running_font, runningChange,
-                               *style, i, column);
+               else {
+                       try {
+                               d->latexSpecialChar(os, rp, running_font, runningChange,
+                                       *style, i, column);
+                       } catch (EncodingException & e) {
+                               if (runparams.dryrun) {
+                                       os << "<" << _("LyX Warning: ")
+                                          << _("uncodable character") << " '";
+                                       os.put(c);
+                                       os << "'>";
+                               } else {
+                                       // add location information and throw again.
+                                       e.par_id = id();
+                                       e.pos = i;
+                                       throw(e);
+                               }
+                       }
+               }
 
                // Set the encoding to that returned from simpleTeXSpecialChars (see
                // comment for encoding member in OutputParams.h)
@@ -2490,18 +2506,6 @@ int Paragraph::checkBiblio(bool track_changes)
 }
 
 
-unsigned int Paragraph::macrocontextPosition() const
-{
-       return d->macrocontext_position_;
-}
-
-
-void Paragraph::setMacrocontextPosition(unsigned int pos)
-{
-       d->macrocontext_position_ = pos;
-}
-
-
 void Paragraph::checkAuthors(AuthorList const & authorList)
 {
        d->changes_.checkAuthors(authorList);