]> git.lyx.org Git - lyx.git/blobdiff - src/buffer.C
Trivial fixes to some warnings thrown up by MSVS.Net 2003.
[lyx.git] / src / buffer.C
index 83050e655890b249bd63a6b7ea08dccf35937a70..b2cf912c18a2a1d43d32c1ec43fe56c4543c9b1e 100644 (file)
@@ -64,6 +64,7 @@
 
 #include "graphics/Previews.h"
 
+#include "support/lyxalgo.h"
 #include "support/filetools.h"
 #include "support/fs_extras.h"
 #ifdef USE_COMPRESSION
@@ -143,7 +144,7 @@ extern BufferList bufferlist;
 
 namespace {
 
-int const LYX_FORMAT = 243;
+int const LYX_FORMAT = 245;
 
 } // namespace anon
 
@@ -1526,19 +1527,58 @@ void Buffer::buildMacros()
        pimpl_->macros = MacroTable::globalMacros();
 
        // Now add our own.
-       ParagraphList & pars = text().paragraphs();
+       ParagraphList const & pars = text().paragraphs();
        for (size_t i = 0, n = pars.size(); i != n; ++i) {
                //lyxerr << "searching main par " << i
                //      << " for macro definitions" << std::endl;
-               InsetList::iterator it = pars[i].insetlist.begin();
-               InsetList::iterator end = pars[i].insetlist.end();
+               InsetList const & insets = pars[i].insetlist;
+               InsetList::const_iterator it = insets.begin();
+               InsetList::const_iterator end = insets.end();
                for ( ; it != end; ++it) {
                        //lyxerr << "found inset code " << it->inset->lyxCode() << std::endl;
                        if (it->inset->lyxCode() == InsetBase::MATHMACRO_CODE) {
-                               MathMacroTemplate & mac
-                                       = static_cast<MathMacroTemplate &>(*it->inset);
+                               MathMacroTemplate const & mac
+                                       = static_cast<MathMacroTemplate const &>(*it->inset);
                                insertMacro(mac.name(), mac.asMacroData());
                        }
                }
        }
 }
+
+
+void Buffer::saveCursor(StableDocIterator cur, StableDocIterator anc)
+{
+       cursor_ = cur;
+       anchor_ = anc;
+}
+
+
+void Buffer::changeRefsIfUnique(string const & from, string const & to)
+{
+       // Check if the label 'from' appears more than once
+       vector<string> labels;
+       getLabelList(labels);
+
+       if (lyx::count(labels.begin(), labels.end(), from) > 1)
+               return;
+
+       InsetBase::Code code = InsetBase::REF_CODE;
+
+       ParIterator it = par_iterator_begin();
+       ParIterator end = par_iterator_end();
+       for ( ; it != end; ++it) {
+               bool changed_inset = false;
+               for (InsetList::iterator it2 = it->insetlist.begin();
+                    it2 != it->insetlist.end(); ++it2) {
+                       if (it2->inset->lyxCode() == code) {
+                               InsetCommand * inset = static_cast<InsetCommand *>(it2->inset);
+                               if (inset->getContents() == from) {
+                                       inset->setContents(to);
+                                       //inset->setButtonLabel();
+                                       changed_inset = true;
+                               }
+                       }
+               }
+       }
+}
+