]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.cpp
Const.
[lyx.git] / src / Buffer.cpp
index 97ecd4df41d52466872176e49c5f66ee4e6b6558..043f0cc9a7a37c51882a15111c94c86e2afb8170 100644 (file)
@@ -4363,7 +4363,10 @@ Buffer::ExportStatus Buffer::doExport(string const & target, bool put_in_tempdir
        } else if (!lyxrc.tex_allows_spaces
                   && contains(filePath(), ' ')) {
                Alert::error(_("File name error"),
-                          _("The directory path to the document cannot contain spaces."));
+                       bformat(_("The directory path to the document\n%1$s\n"
+                           "contains spaces, but your TeX installation does "
+                           "not allow them. You should save the file to a directory "
+                                       "whose name does not contain spaces."), from_ascii(filePath())));
                return ExportTexPathHasSpaces;
        } else {
                runparams.nice = false;
@@ -4789,9 +4792,13 @@ void Buffer::updateBuffer(UpdateScope scope, UpdateType utype) const
                return;
 
        // if the bibfiles changed, the cache of bibinfo is invalid
-       sort(d->bibfiles_cache_.begin(), d->bibfiles_cache_.end());
-       // the old one should already be sorted
-       if (old_bibfiles != d->bibfiles_cache_) {
+       FileNamePairList new_bibfiles = d->bibfiles_cache_;
+       // this is a trick to determine whether the two vectors have
+       // the same elements.
+       sort(new_bibfiles.begin(), new_bibfiles.end());
+       sort(old_bibfiles.begin(), old_bibfiles.end());
+       if (old_bibfiles != new_bibfiles) {
+               LYXERR(Debug::FILES, "Reloading bibinfo cache.");
                invalidateBibinfoCache();
                reloadBibInfoCache();
                // We relied upon the bibinfo cache when recalculating labels. But that
@@ -4801,10 +4808,21 @@ void Buffer::updateBuffer(UpdateScope scope, UpdateType utype) const
                // labels. Nothing else will have changed. So we could create a new 
                // UpdateType that would signal that fact, if we needed to do so.
                parit = cbuf.par_iterator_begin();
+               // we will be re-doing the counters and references and such.
+               textclass.counters().reset();
+               clearReferenceCache();
+               // we should not need to do this again?
+               // updateMacros();
+               setChangesPresent(false);
                updateBuffer(parit, utype);
+               // this will already have been done by reloadBibInfoCache();
+               // d->bibinfo_cache_valid_ = true;
        }
-       else
+       else {
+               LYXERR(Debug::FILES, "Bibfiles unchanged.");
+               // this is also set to true on the other path, by reloadBibInfoCache.
                d->bibinfo_cache_valid_ = true;
+       }
        d->cite_labels_valid_ = true;
        /// FIXME: Perf
        cbuf.tocBackend().update(true, utype);