]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.cpp
After a hiatus, I'm returning to the rewrite of InsetCommandParams, the purpose of...
[lyx.git] / src / Buffer.cpp
index da23889c5d167fe921d1393625b08c27e93439d0..3a074cba943e6663a491b42c2dbff92c057c593c 100644 (file)
@@ -79,7 +79,6 @@
 #include "support/convert.h"
 #include "support/debug.h"
 #include "support/ExceptionMessage.h"
-#include "support/FileFilterList.h"
 #include "support/FileName.h"
 #include "support/FileNameList.h"
 #include "support/filetools.h"
@@ -114,7 +113,7 @@ namespace os = support::os;
 
 namespace {
 
-int const LYX_FORMAT = 314; // Uwe Stöhr: scrlttr2 for serial letters
+int const LYX_FORMAT = 315; // Richard Heck: column separation
 
 } // namespace anon
 
@@ -204,6 +203,9 @@ public:
        /// A cache for the bibfiles (including bibfiles of loaded child
        /// documents), needed for appropriate update of natbib labels.
        mutable EmbeddedFileList bibfilesCache_;
+       
+       ///
+       WordList words_;
 };
 
 /// Creates the per buffer temporary directory
@@ -467,6 +469,7 @@ int Buffer::readHeader(Lexer & lex)
        params().headheight.erase();
        params().headsep.erase();
        params().footskip.erase();
+       params().columnsep.erase();
        params().listings_params.clear();
        params().clearLayoutModules();
        params().pdfoptions().clear();
@@ -568,10 +571,7 @@ bool Buffer::readDocument(Lexer & lex)
        }
 
        // read main text
-       bool const res = text().read(*this, lex, errorList);
-       for_each(text().paragraphs().begin(),
-                text().paragraphs().end(),
-                bind(&Paragraph::setInsetOwner, _1, &inset()));
+       bool const res = text().read(*this, lex, errorList, &(d->inset));
 
        updateMacros();
        updateMacroInstances();
@@ -1187,19 +1187,19 @@ void Buffer::writeLaTeXSource(odocstream & os,
 
 bool Buffer::isLatex() const
 {
-       return params().getTextClass().outputType() == LATEX;
+       return params().textClass().outputType() == LATEX;
 }
 
 
 bool Buffer::isLiterate() const
 {
-       return params().getTextClass().outputType() == LITERATE;
+       return params().textClass().outputType() == LITERATE;
 }
 
 
 bool Buffer::isDocBook() const
 {
-       return params().getTextClass().outputType() == DOCBOOK;
+       return params().textClass().outputType() == DOCBOOK;
 }
 
 
@@ -1230,7 +1230,7 @@ void Buffer::writeDocBookSource(odocstream & os, string const & fname,
 
        d->texrow.reset();
 
-       TextClass const & tclass = params().getTextClass();
+       TextClass const & tclass = params().textClass();
        string const top_element = tclass.latexname();
 
        if (!only_body) {
@@ -1285,7 +1285,7 @@ void Buffer::writeDocBookSource(odocstream & os, string const & fname,
            << " file was created by LyX " << lyx_version
            << "\n  See http://www.lyx.org/ for more information -->\n";
 
-       params().getTextClass().counters().reset();
+       params().textClass().counters().reset();
 
        loadChildDocuments();
 
@@ -1486,60 +1486,37 @@ bool Buffer::isMultiLingual() const
 }
 
 
-ParConstIterator Buffer::getParFromID(int const id) const
-{
-       ParConstIterator it = par_iterator_begin();
-       ParConstIterator const end = par_iterator_end();
-
-       if (id < 0) {
-               // John says this is called with id == -1 from undo
-               lyxerr << "getParFromID(), id: " << id << endl;
-               return end;
-       }
-
-       for (; it != end; ++it)
-               if (it->id() == id)
-                       return it;
-
-       return end;
-}
-
-
-ParIterator Buffer::getParFromID(int const id)
+DocIterator Buffer::getParFromID(int const id) const
 {
-       ParIterator it = par_iterator_begin();
-       ParIterator const end = par_iterator_end();
-
        if (id < 0) {
                // John says this is called with id == -1 from undo
                lyxerr << "getParFromID(), id: " << id << endl;
-               return end;
+               return doc_iterator_end(inset());
        }
 
-       for (; it != end; ++it)
-               if (it->id() == id)
+       for (DocIterator it = doc_iterator_begin(inset()); !it.atEnd(); it.forwardPar())
+               if (it.paragraph().id() == id)
                        return it;
 
-       return end;
+       return doc_iterator_end(inset());
 }
 
 
 bool Buffer::hasParWithID(int const id) const
 {
-       ParConstIterator const it = getParFromID(id);
-       return it != par_iterator_end();
+       return !getParFromID(id).atEnd();
 }
 
 
 ParIterator Buffer::par_iterator_begin()
 {
-       return lyx::par_iterator_begin(inset());
+       return ParIterator(doc_iterator_begin(inset()));
 }
 
 
 ParIterator Buffer::par_iterator_end()
 {
-       return lyx::par_iterator_end(inset());
+       return ParIterator(doc_iterator_end(inset()));
 }
 
 
@@ -1901,7 +1878,7 @@ void Buffer::updateEnvironmentMacros(DocIterator & it,
                                if (!child)
                                        continue;                               
 
-                               // register it, but only when it is
+                               // register its position, but only when it is
                                // included first in the buffer
                                if (d->children_positions.find(child)
                                    == d->children_positions.end())
@@ -2011,8 +1988,8 @@ void Buffer::updateMacroInstances() const
 {
        LYXERR(Debug::MACROS, "updateMacroInstances for "
                << d->filename.onlyFileName());
-       ParConstIterator it = par_iterator_begin();
-       ParConstIterator end = par_iterator_end();
+       DocIterator it = doc_iterator_begin(inset());
+       DocIterator end = doc_iterator_end(inset());
        for (; it != end; it.forwardPos()) {
                // look for MathData cells in InsetMathNest insets
                Inset * inset = it.nextInset();
@@ -2338,6 +2315,9 @@ void Buffer::autoSave() const
 
 void Buffer::resetChildDocuments(bool close_them) const
 {
+       if (text().empty())
+               return;
+
        for (InsetIterator it = inset_iterator_begin(inset()); it; ++it) {
                if (it->lyxCode() != INCLUDE_CODE)
                        continue;
@@ -2556,7 +2536,7 @@ vector<Format const *> Buffer::exportableFormats(bool only_viewable) const
 vector<string> Buffer::backends() const
 {
        vector<string> v;
-       if (params().getTextClass().isTeXClassAvailable()) {
+       if (params().textClass().isTeXClassAvailable()) {
                v.push_back(bufferFormat());
                // FIXME: Don't hardcode format names here, but use a flag
                if (v.back() == "latex")
@@ -2687,4 +2667,16 @@ void Buffer::bufferErrors(TeXErrors const & terr, ErrorList & errorList) const
        }
 }
 
+
+void Buffer::registerWord(docstring const & word)
+{
+       d->words_.insert(word);
+}
+
+
+WordList const & Buffer::registeredWords() const
+{
+       return d->words_;
+}
+
 } // namespace lyx