]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.cpp
Harmonize naming
[lyx.git] / src / Buffer.cpp
index 6ef03f6c785b7dcae83379cc4eb7f5be5f35071e..904042577349e895638de161a29b69abd1b8b908 100644 (file)
@@ -28,7 +28,7 @@
 #include "CutAndPaste.h"
 #include "DispatchResult.h"
 #include "DocIterator.h"
-#include "Encoding.h"
+#include "BufferEncodings.h"
 #include "ErrorList.h"
 #include "Exporter.h"
 #include "Format.h"
@@ -323,7 +323,7 @@ public:
        CloneList * clone_list_;
        /// are we in the process of exporting this buffer?
        mutable bool doing_export;
+
        /// compute statistics
        /// \p from initial position
        /// \p to points to the end position
@@ -933,7 +933,7 @@ bool Buffer::readDocument(Lexer & lex)
                }
        }
 
-       if (!params().master.empty()) {
+       if (!parent() && !params().master.empty()) {
                FileName const master_file = makeAbsPath(params().master,
                           onlyPath(absFileName()));
                if (isLyXFileName(master_file.absFileName())) {
@@ -1536,7 +1536,10 @@ bool Buffer::makeLaTeXFile(FileName const & fname,
                lyxerr << "File '" << fname << "' was not closed properly." << endl;
        }
 
-       errors("Export");
+       if (runparams_in.silent)
+               errorList.clear();
+       else
+               errors("Export");
        return !failed_export;
 }
 
@@ -1558,13 +1561,15 @@ void Buffer::writeLaTeXSource(otexstream & os,
                d->ignore_parent = true;
 
        // Classify the unicode characters appearing in math insets
-       Encodings::initUnicodeMath(*this);
+       BufferEncodings::initUnicodeMath(*this);
 
        // validate the buffer.
        LYXERR(Debug::LATEX, "  Validating buffer...");
        LaTeXFeatures features(*this, params(), runparams);
        validate(features);
-       runparams.use_polyglossia = features.usePolyglossia();
+       // This is only set once per document (in master)
+       if (!runparams.is_child)
+               runparams.use_polyglossia = features.usePolyglossia();
        LYXERR(Debug::LATEX, "  Buffer validation done.");
 
        bool const output_preamble =
@@ -1666,7 +1671,9 @@ void Buffer::writeLaTeXSource(otexstream & os,
                runparams.use_babel = params().writeLaTeX(os, features,
                                                          d->filename.onlyPath());
 
-               runparams.use_japanese = features.isRequired("japanese");
+               // Japanese might be required only in some children of a document,
+               // but once required, we must keep use_japanese true.
+               runparams.use_japanese |= features.isRequired("japanese");
 
                if (!output_body) {
                        // Restore the parenthood if needed
@@ -1864,7 +1871,7 @@ void Buffer::writeLyXHTMLSource(odocstream & os,
 
        if (output_preamble) {
                os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-                  << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN\" \"http://www.w3.org/TR/2001/REC-MathML2-20010221/dtd/xhtml-math11-f.dtd\">\n"
+                  << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN\" \"http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd\">\n"
                   // FIXME Language should be set properly.
                   << "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"
                   << "<head>\n"
@@ -1912,7 +1919,7 @@ void Buffer::writeLyXHTMLSource(odocstream & os,
                                            << ";\n";
                                css << "}\n";
                }
-               
+
                docstring const dstyles = css.str();
                if (!dstyles.empty()) {
                        bool written = false;
@@ -1996,7 +2003,10 @@ int Buffer::runChktex()
 
        setBusy(false);
 
-       errors("ChkTeX");
+       if (runparams.silent)
+               d->errorLists["ChkTeX"].clear();
+       else
+               errors("ChkTeX");
 
        return res;
 }
@@ -2361,9 +2371,13 @@ void Buffer::dispatch(FuncRequest const & func, DispatchResult & dr)
                break;
        }
 
-       case LFUN_BUILD_PROGRAM:
-               doExport("program", true);
+       case LFUN_BUILD_PROGRAM: {
+               ExportStatus const status = doExport("program", true);
+               dr.setError(status != ExportSuccess);
+               if (status != ExportSuccess)
+                       dr.setMessage(_("Error generating literate programming code."));
                break;
+       }
 
        case LFUN_BUFFER_CHKTEX:
                runChktex();
@@ -2477,6 +2491,7 @@ void Buffer::dispatch(FuncRequest const & func, DispatchResult & dr)
                                        msg += ("\n");
                                msg += bformat(_("Branch \"%1$s\" already exists."), branch_name);
                        } else {
+                               undo().recordUndoFullDocument(CursorData());
                                branch_list.add(branch_name);
                                branch = branch_list.find(branch_name);
                                string const x11hexname = X11hexname(branch->color());
@@ -2552,7 +2567,7 @@ void Buffer::dispatch(FuncRequest const & func, DispatchResult & dr)
                        break;
                }
 
-               if (!doExport("dvi", true)) {
+               if (doExport("dvi", true) != ExportSuccess) {
                        showPrintError(absFileName());
                        dr.setMessage(_("Error exporting to DVI."));
                        break;
@@ -3435,7 +3450,7 @@ void Buffer::changeRefsIfUnique(docstring const & from, docstring const & to)
 
        string const paramName = "key";
        for (InsetIterator it = inset_iterator_begin(inset()); it; ++it) {
-               if (it->lyxCode() != CITE_CODE) 
+               if (it->lyxCode() != CITE_CODE)
                        continue;
                InsetCommand * inset = it->asInsetCommand();
                docstring const oldValue = inset->getParam(paramName);
@@ -3964,17 +3979,21 @@ Buffer::ExportStatus Buffer::doExport(string const & target, bool put_in_tempdir
        // Emit the signal to show the error list or copy it back to the
        // cloned Buffer so that it can be emitted afterwards.
        if (format != backend_format) {
-               if (d->cloned_buffer_) {
+               if (runparams.silent)
+                       error_list.clear();
+               else if (d->cloned_buffer_)
                        d->cloned_buffer_->d->errorLists[error_type] =
                                d->errorLists[error_type];
-               else
+               else
                        errors(error_type);
                // also to the children, in case of master-buffer-view
                ListOfBuffers clist = getDescendents();
                ListOfBuffers::const_iterator cit = clist.begin();
                ListOfBuffers::const_iterator const cen = clist.end();
                for (; cit != cen; ++cit) {
-                       if (d->cloned_buffer_) {
+                       if (runparams.silent)
+                               (*cit)->d->errorLists[error_type].clear();
+                       else if (d->cloned_buffer_) {
                                // Enable reverse search by copying back the
                                // texrow object to the cloned buffer.
                                // FIXME: this is not thread safe.
@@ -4667,16 +4686,16 @@ void Buffer::Impl::updateStatistics(DocIterator & from, DocIterator & to, bool s
        word_count_ = 0;
        char_count_ = 0;
        blank_count_ = 0;
+
        for (DocIterator dit = from ; dit != to && !dit.atEnd(); ) {
                if (!dit.inTexted()) {
                        dit.forwardPos();
                        continue;
                }
-               
+
                Paragraph const & par = dit.paragraph();
                pos_type const pos = dit.pos();
-               
+
                // Copied and adapted from isWordSeparator() in Paragraph
                if (pos == dit.lastpos()) {
                        inword = false;
@@ -4690,7 +4709,7 @@ void Buffer::Impl::updateStatistics(DocIterator & from, DocIterator & to, bool s
                                        break;
                                continue;
                        } else if (!par.isDeleted(pos)) {
-                               if (par.isWordSeparator(pos)) 
+                               if (par.isWordSeparator(pos))
                                        inword = false;
                                else if (!inword) {
                                        ++word_count_;
@@ -4732,7 +4751,7 @@ int Buffer::charCount(bool with_blanks) const
 }
 
 
-Buffer::ReadStatus Buffer::reload(bool clearUndo)
+Buffer::ReadStatus Buffer::reload()
 {
        setBusy(true);
        // c.f. bug http://www.lyx.org/trac/ticket/6587
@@ -4750,8 +4769,7 @@ Buffer::ReadStatus Buffer::reload(bool clearUndo)
                updateTitles();
                markClean();
                message(bformat(_("Document %1$s reloaded."), disp_fn));
-               if (clearUndo)
-                       d->undo_.clear();
+               d->undo_.clear();
        } else {
                message(bformat(_("Could not reload document %1$s."), disp_fn));
        }