]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.cpp
Handle change-accept and change-reject in multi-cell selection
[lyx.git] / src / Buffer.cpp
index 18fc0d3a3bb8c545313c7d877d8a95ebc45aea7b..2d3160e5a65dc6434eb8d324572cce3663efa403 100644 (file)
@@ -321,7 +321,7 @@ public:
        /// If there was an error when previewing, on the next preview we do
        /// a fresh compile (e.g. in case the user installed a package that
        /// was missing).
-       bool preview_error_;
+       bool require_fresh_start_;
 
        /// Cache the references associated to a label and their positions
        /// in the buffer.
@@ -456,7 +456,7 @@ Buffer::Impl::Impl(Buffer * owner, FileName const & file, bool readonly_,
          file_fully_loaded(false), file_format(LYX_FORMAT), need_format_backup(false),
          ignore_parent(false),  toc_backend(owner), macro_lock(false),
          checksum_(0), wa_(0),  gui_(0), undo_(*owner), bibinfo_cache_valid_(false),
-         cite_labels_valid_(false), have_bibitems_(false), preview_error_(false),
+         cite_labels_valid_(false), have_bibitems_(false), require_fresh_start_(false),
          inset(0), preview_loader_(0), cloned_buffer_(cloned_buffer),
          clone_list_(0), doing_export(false),
          tracked_changes_present_(0), externally_modified_(false), parent_buffer(0),
@@ -489,7 +489,7 @@ Buffer::Impl::Impl(Buffer * owner, FileName const & file, bool readonly_,
        layout_position = cloned_buffer_->d->layout_position;
        preview_file_ = cloned_buffer_->d->preview_file_;
        preview_format_ = cloned_buffer_->d->preview_format_;
-       preview_error_ = cloned_buffer_->d->preview_error_;
+       require_fresh_start_ = cloned_buffer_->d->require_fresh_start_;
        tracked_changes_present_ = cloned_buffer_->d->tracked_changes_present_;
 }
 
@@ -1246,9 +1246,14 @@ void Buffer::setFullyLoaded(bool value)
 }
 
 
-bool Buffer::lastPreviewError() const
+bool Buffer::freshStartRequired() const
 {
-       return d->preview_error_;
+       return d->require_fresh_start_;
+}
+
+void Buffer::requireFreshStart(bool const b) const
+{
+       d->require_fresh_start_ = b;
 }
 
 
@@ -1940,9 +1945,15 @@ Buffer::ExportStatus Buffer::writeLaTeXSource(otexstream & os,
                                        os << "\\catcode`\\%=11"
                                              "\\def\\%{%}\\catcode`\\%=14\n";
                                }
-                               bool const detokenize = !isAscii(from_utf8(docdir))
-                                               || contains(docdir, '~');
+                               if (contains(docdir, '~'))
+                                       docdir = subst(docdir, "~", "\\string~");
+                               bool const nonascii = !isAscii(from_utf8(docdir));
+                               // LaTeX 2019/10/01 handles non-ascii path without detokenize
+                               bool const utfpathlatex = features.isAvailable("LaTeX-2019/10/01");
+                               bool const detokenize = !utfpathlatex && nonascii;
                                bool const quote = contains(docdir, ' ');
+                               if (utfpathlatex && nonascii)
+                                       os << "\\UseRawInputEncoding\n";
                                os << "\\makeatletter\n"
                                   << "\\def\\input@path{{";
                                if (detokenize)
@@ -3119,7 +3130,7 @@ void Buffer::getLanguages(std::set<Language const *> & langs) const
        for (ParConstIterator it = par_iterator_begin(); it != end; ++it)
                it->getLanguages(langs);
        // also children
-       ListOfBuffers clist = getDescendents();
+       ListOfBuffers clist = getDescendants();
        for (auto const & cit : clist)
                cit->getLanguages(langs);
 }
@@ -3488,7 +3499,7 @@ Buffer const * Buffer::parent() const
 
 ListOfBuffers Buffer::allRelatives() const
 {
-       ListOfBuffers lb = masterBuffer()->getDescendents();
+       ListOfBuffers lb = masterBuffer()->getDescendants();
        lb.push_front(const_cast<Buffer *>(masterBuffer()));
        return lb;
 }
@@ -3559,7 +3570,7 @@ ListOfBuffers Buffer::getChildren() const
 }
 
 
-ListOfBuffers Buffer::getDescendents() const
+ListOfBuffers Buffer::getDescendants() const
 {
        ListOfBuffers v;
        collectChildren(v, true);
@@ -3583,7 +3594,7 @@ typename M::const_iterator greatest_below(M & m, typename M::key_type const & x)
        if (it == m.begin())
                return m.end();
 
-       it--;
+       --it;
        return it;
 }
 
@@ -4389,7 +4400,7 @@ bool Buffer::autoSave() const
 void Buffer::setExportStatus(bool e) const
 {
        d->doing_export = e;
-       ListOfBuffers clist = getDescendents();
+       ListOfBuffers clist = getDescendants();
        for (auto const & bit : clist)
                bit->d->doing_export = e;
 }
@@ -4600,7 +4611,7 @@ Buffer::ExportStatus Buffer::doExport(string const & target, bool put_in_tempdir
                else
                        errors(error_type);
                // also to the children, in case of master-buffer-view
-               ListOfBuffers clist = getDescendents();
+               ListOfBuffers clist = getDescendants();
                for (auto const & bit : clist) {
                        if (runparams.silent)
                                bit->d->errorLists[error_type].clear();
@@ -4722,7 +4733,7 @@ Buffer::ExportStatus Buffer::preview(string const & format, bool includeall) con
        Impl * theimpl = isClone() ? d->cloned_buffer_->d : d;
        theimpl->preview_file_ = previewFile;
        theimpl->preview_format_ = format;
-       theimpl->preview_error_ = (status != ExportSuccess);
+       theimpl->require_fresh_start_ = (status != ExportSuccess);
 
        if (status != ExportSuccess)
                return status;
@@ -4925,7 +4936,7 @@ void Buffer::Impl::traverseErrors(TeXErrors::Errors::const_iterator err, TeXErro
                        tie(start, end) = p->texrow.getEntriesFromRow(errorRow);
                else {
                        // The error occurred in a child
-                       for (Buffer const * child : owner_->getDescendents()) {
+                       for (Buffer const * child : owner_->getDescendants()) {
                                string const child_name =
                                        DocFileName(changeExtension(child->absFileName(), "tex")).
                                        mangledFileName();