]> git.lyx.org Git - lyx.git/blobdiff - src/Paragraph.cpp
Revert "Objective-C compililation support with cmake and C++11"
[lyx.git] / src / Paragraph.cpp
index fb522391fbb7e9dd108a9a6ebd22d3cd9af5074b..3751cfd933e9ce9e12e3e208eec20df7fa02b82d 100644 (file)
@@ -499,7 +499,7 @@ public:
        TextContainer text_;
 
        typedef set<docstring> Words;
-       typedef map<Language, Words> LangWordsMap;
+       typedef map<string, Words> LangWordsMap;
        ///
        LangWordsMap words_;
        ///
@@ -1451,7 +1451,7 @@ void Paragraph::Private::validate(LaTeXFeatures & features) const
                bool const is_command = layout_->latextype == LATEX_COMMAND;
                Buffer const & buf = inset_owner_->buffer();
                BufferParams const & bp = features.runparams().is_child
-                       ? buf.masterBuffer()->params() : buf.params();
+                       ? buf.masterParams() : buf.params();
                Font f;
                TexRow texrow;
                // Using a string stream here circumvents the encoding
@@ -2475,7 +2475,7 @@ void Paragraph::latex(BufferParams const & bparams,
                Change const & change = runparams.inDeletedInset
                        ? runparams.changeOfDeletedInset : lookupChange(i);
 
-               if (bparams.outputChanges && runningChange != change) {
+               if (bparams.output_changes && runningChange != change) {
                        if (open_font) {
                                column += running_font.latexWriteEndChanges(
                                                os, bparams, runparams, basefont, basefont);
@@ -2491,7 +2491,7 @@ void Paragraph::latex(BufferParams const & bparams,
 
                // do not output text which is marked deleted
                // if change tracking output is disabled
-               if (!bparams.outputChanges && change.deleted()) {
+               if (!bparams.output_changes && change.deleted()) {
                        continue;
                }
 
@@ -3347,7 +3347,7 @@ docstring Paragraph::asString(int options) const
 }
 
 
-docstring Paragraph::asString(pos_type beg, pos_type end, int options) const
+docstring Paragraph::asString(pos_type beg, pos_type end, int options, const OutputParams *runparams) const
 {
        odocstringstream os;
 
@@ -3364,9 +3364,14 @@ docstring Paragraph::asString(pos_type beg, pos_type end, int options) const
                    || (c == '\n' && (options & AS_STR_NEWLINES)))
                        os.put(c);
                else if (c == META_INSET && (options & AS_STR_INSETS)) {
-                       getInset(i)->toString(os);
-                       if (getInset(i)->asInsetMath())
-                               os << " ";
+                       if (c == META_INSET && (options & AS_STR_PLAINTEXT)) {
+                               LASSERT(runparams != 0, return docstring());
+                               getInset(i)->plaintext(os, *runparams);
+                       } else {
+                               getInset(i)->toString(os);
+                               if (getInset(i)->asInsetMath())
+                                       os << " ";
+                       }
                }
        }
 
@@ -3374,7 +3379,7 @@ docstring Paragraph::asString(pos_type beg, pos_type end, int options) const
 }
 
 
-void Paragraph::forToc(docstring & os, size_t maxlen) const
+void Paragraph::forOutliner(docstring & os, size_t maxlen) const
 {
        if (!d->params_.labelString().empty())
                os += d->params_.labelString() + ' ';
@@ -3387,38 +3392,11 @@ void Paragraph::forToc(docstring & os, size_t maxlen) const
                else if (c == '\t' || c == '\n')
                        os += ' ';
                else if (c == META_INSET)
-                       getInset(i)->forToc(os, maxlen);
+                       getInset(i)->forOutliner(os, maxlen);
        }
 }
 
 
-docstring Paragraph::stringify(pos_type beg, pos_type end, int options,
-        OutputParams const & runparams) const
-{
-       odocstringstream os;
-
-       if (beg == 0
-               && options & AS_STR_LABEL
-               && !d->params_.labelString().empty())
-               os << d->params_.labelString() << ' ';
-
-       OutputParams op = runparams;
-       op.for_search = true;
-
-       for (pos_type i = beg; i < end; ++i) {
-               char_type const c = d->text_[i];
-               if (isPrintable(c) || c == '\t'
-                   || (c == '\n' && (options & AS_STR_NEWLINES)))
-                       os.put(c);
-               else if (c == META_INSET && (options & AS_STR_INSETS)) {
-                       getInset(i)->plaintext(os, op);
-               }
-       }
-
-       return os.str();
-}
-
-
 void Paragraph::setInsetOwner(Inset const * inset)
 {
        d->inset_owner_ = inset;
@@ -3566,7 +3544,7 @@ int Paragraph::fixBiblio(Buffer const & buffer)
        if (d->layout_->labeltype != LABEL_BIBLIO)
                return 0;
 
-       bool const track_changes = buffer.params().trackChanges;
+       bool const track_changes = buffer.params().track_changes;
        int bibitem_pos = d->insetlist_.find(BIBITEM_CODE);
        bool const hasbibitem0 = bibitem_pos == 0;
 
@@ -3581,8 +3559,7 @@ int Paragraph::fixBiblio(Buffer const & buffer)
                // these, which there should be.
                // FIXME: why does it make sense to do that rather
                // than keep the first? (JMarc)
-               Inset * inset = d->insetlist_.release(bibitem_pos);
-               eraseChar(bibitem_pos, track_changes);
+               Inset * inset = releaseInset(bibitem_pos);
                d->insetlist_.begin()->inset = inset;
                return -bibitem_pos;
        }
@@ -3671,9 +3648,11 @@ void Paragraph::changeCase(BufferParams const & bparams, pos_type pos,
        // process sequences of modified characters; in change
        // tracking mode, this approach results in much better
        // usability than changing case on a char-by-char basis
-       docstring changes;
+       // We also need to track the current font, since font
+       // changes within sequences can occur.
+       vector<pair<char_type, Font> > changes;
 
-       bool const trackChanges = bparams.trackChanges;
+       bool const trackChanges = bparams.track_changes;
 
        bool capitalize = true;
 
@@ -3705,7 +3684,7 @@ void Paragraph::changeCase(BufferParams const & bparams, pos_type pos,
                }
 
                if (oldChar != newChar) {
-                       changes += newChar;
+                       changes.push_back(make_pair(newChar, getFontSettings(bparams, pos)));
                        if (pos != right - 1)
                                continue;
                        // step behind the changing area
@@ -3714,9 +3693,8 @@ void Paragraph::changeCase(BufferParams const & bparams, pos_type pos,
 
                int erasePos = pos - changes.size();
                for (size_t i = 0; i < changes.size(); i++) {
-                       insertChar(pos, changes[i],
-                                  getFontSettings(bparams,
-                                                  erasePos),
+                       insertChar(pos, changes[i].first,
+                                  changes[i].second,
                                   trackChanges);
                        if (!eraseChar(erasePos, trackChanges)) {
                                ++erasePos;
@@ -3867,7 +3845,7 @@ void Paragraph::collectWords()
                        if (cit == d->fontlist_.end())
                                return;
                        Language const * lang = cit->font().language();
-                       d->words_[*lang].insert(word);
+                       d->words_[lang->lang()].insert(word);
                }
        }
 }