]> git.lyx.org Git - lyx.git/blobdiff - src/Converter.cpp
Bump layout formats
[lyx.git] / src / Converter.cpp
index 933e2f673b4d63be480adf1c07b80b067c26cec4..58e486e67d3dde4b2fe6aad4de2ba1ca2a5f9a96 100644 (file)
@@ -29,6 +29,7 @@
 #include "support/FileNameList.h"
 #include "support/filetools.h"
 #include "support/gettext.h"
+#include "support/lassert.h"
 #include "support/lstrings.h"
 #include "support/os.h"
 #include "support/Package.h"
@@ -299,15 +300,16 @@ bool Converters::convert(Buffer const * buffer,
                        string const command =
                                os::python() + ' ' +
                                quoteName(libFileSearch("scripts", "convertDefault.py").toFilesystemEncoding()) +
-                               ' ' +
-                               quoteName(from_ext + ':' + from_file.toFilesystemEncoding()) +
-                               ' ' +
-                               quoteName(to_ext + ':' + to_file.toFilesystemEncoding());
+                               ' ' + from_ext + ' ' +
+                               quoteName(from_file.toFilesystemEncoding()) +
+                               ' ' + to_ext + ' ' +
+                               quoteName(to_file.toFilesystemEncoding());
                        LYXERR(Debug::FILES, "No converter defined! "
                                   "I use convertDefault.py:\n\t" << command);
                        Systemcall one;
-                       one.startscript(Systemcall::Wait, command, buffer ?
-                                       buffer->filePath() : string());
+                       one.startscript(Systemcall::Wait, command,
+                                       buffer ? buffer->filePath() : string(),
+                                       buffer ? buffer->layoutPos() : string());
                        if (to_file.isReadableFile()) {
                                if (conversionflags & try_cache)
                                        ConverterCache::get().add(orig_from,
@@ -337,7 +339,9 @@ bool Converters::convert(Buffer const * buffer,
        runparams.flavor = getFlavor(edgepath, buffer);
 
        if (buffer) {
-               runparams.use_japanese = buffer->params().bufferFormat() == "platex";
+               runparams.use_japanese =
+                       buffer->params().bufferFormat() == "latex"
+                       && buffer->params().encoding().package() == Encoding::japanese;
                runparams.use_indices = buffer->params().use_indices;
                runparams.bibtex_command = (buffer->params().bibtex_command == "default") ?
                        string() : buffer->params().bibtex_command;
@@ -474,13 +478,16 @@ bool Converters::convert(Buffer const * buffer,
                        if (dummy) {
                                res = one.startscript(Systemcall::DontWait,
                                        to_filesystem8bit(from_utf8(command)),
-                                       buffer ? buffer->filePath() : string());
+                                       buffer ? buffer->filePath() : string(),
+                                       buffer ? buffer->layoutPos() : string());
                                // We're not waiting for the result, so we can't do anything
                                // else here.
                        } else {
                                res = one.startscript(Systemcall::Wait,
                                                to_filesystem8bit(from_utf8(command)),
                                                buffer ? buffer->filePath()
+                                                      : string(),
+                                               buffer ? buffer->layoutPos()
                                                       : string());
                                if (!real_outfile.empty()) {
                                        Mover const & mover = getMover(conv.to());
@@ -501,7 +508,8 @@ bool Converters::convert(Buffer const * buffer,
                                                " > " + quoteName(logfile);
                                        one.startscript(Systemcall::Wait,
                                                to_filesystem8bit(from_utf8(command2)),
-                                               buffer->filePath());
+                                               buffer->filePath(),
+                                               buffer->layoutPos());
                                        if (!scanLog(*buffer, command, makeAbsPath(logfile, path), errorList))
                                                return false;
                                }
@@ -624,7 +632,7 @@ bool Converters::scanLog(Buffer const & buffer, string const & /*command*/,
 namespace {
 
 class ShowMessage
-       : public boost::signals::trackable {
+       : public boost::signals2::trackable {
 public:
        ShowMessage(Buffer const & b) : buffer_(b) {}
        void operator()(docstring const & msg) const { buffer_.message(msg); }
@@ -644,7 +652,8 @@ bool Converters::runLaTeX(Buffer const & buffer, string const & command,
        // do the LaTeX run(s)
        string const name = buffer.latexName();
        LaTeX latex(command, runparams, FileName(makeAbsPath(name)),
-                   buffer.filePath());
+                   buffer.filePath(), buffer.layoutPos(),
+                   buffer.lastPreviewError());
        TeXErrors terr;
        ShowMessage show(buffer);
        latex.message.connect(show);
@@ -653,8 +662,12 @@ bool Converters::runLaTeX(Buffer const & buffer, string const & command,
        if (result & LaTeX::ERRORS)
                buffer.bufferErrors(terr, errorList);
 
-       // check return value from latex.run().
-       if (result & LaTeX::NO_LOGFILE) {
+       if (!errorList.empty()) {
+         // We will show the LaTeX Errors GUI later which contains
+         // specific error messages so it would be repetitive to give
+         // e.g. the "finished with an error" dialog in addition.
+       }
+       else if (result & LaTeX::NO_LOGFILE) {
                docstring const str =
                        bformat(_("LaTeX did not run successfully. "
                                               "Additionally, LyX could not locate "
@@ -666,7 +679,6 @@ bool Converters::runLaTeX(Buffer const & buffer, string const & command,
                              "finished with an error. "
                              "It is recommended you fix the cause of the external "
                              "program's error (check the logs). "), from_utf8(command));
-               // FIXME: In LyX 2.3.0 the warning will be converted to an error.
                Alert::error(_("LaTeX failed"), str);
        } else if (result & LaTeX::NO_OUTPUT) {
                Alert::warning(_("Output is empty"),
@@ -698,19 +710,20 @@ void Converters::buildGraph()
        for (; it != end ; ++it) {
                int const from = formats.getNumber(it->from());
                int const to   = formats.getNumber(it->to());
+               LASSERT(from >= 0, continue);
+               LASSERT(to >= 0, continue);
                G_.addEdge(from, to);
        }
 }
 
 
-vector<Format const *> const
-Converters::intToFormat(vector<int> const & input)
+FormatList const Converters::intToFormat(vector<int> const & input)
 {
-       vector<Format const *> result(input.size());
+       FormatList result(input.size());
 
        vector<int>::const_iterator it = input.begin();
        vector<int>::const_iterator const end = input.end();
-       vector<Format const *>::iterator rit = result.begin();
+       FormatList::iterator rit = result.begin();
        for ( ; it != end; ++it, ++rit) {
                *rit = &formats.get(*it);
        }
@@ -718,8 +731,8 @@ Converters::intToFormat(vector<int> const & input)
 }
 
 
-vector<Format const *> const
-Converters::getReachableTo(string const & target, bool const clear_visited)
+FormatList const Converters::getReachableTo(string const & target, 
+               bool const clear_visited)
 {
        vector<int> const & reachablesto =
                G_.getReachableTo(formats.getNumber(target), clear_visited);
@@ -728,9 +741,9 @@ Converters::getReachableTo(string const & target, bool const clear_visited)
 }
 
 
-vector<Format const *> const
-Converters::getReachable(string const & from, bool const only_viewable,
-                        bool const clear_visited, set<string> const & excludes)
+FormatList const Converters::getReachable(string const & from, 
+               bool const only_viewable, bool const clear_visited, 
+               set<string> const & excludes)
 {
        set<int> excluded_numbers;
 
@@ -763,29 +776,28 @@ Graph::EdgePath Converters::getPath(string const & from, string const & to)
 }
 
 
-vector<Format const *> Converters::importableFormats()
+FormatList Converters::importableFormats()
 {
        vector<string> l = loaders();
-       vector<Format const *> result = getReachableTo(l[0], true);
+       FormatList result = getReachableTo(l[0], true);
        vector<string>::const_iterator it = l.begin() + 1;
        vector<string>::const_iterator en = l.end();
        for (; it != en; ++it) {
-               vector<Format const *> r = getReachableTo(*it, false);
+               FormatList r = getReachableTo(*it, false);
                result.insert(result.end(), r.begin(), r.end());
        }
        return result;
 }
 
 
-vector<Format const *> Converters::exportableFormats(bool only_viewable)
+FormatList Converters::exportableFormats(bool only_viewable)
 {
        vector<string> s = savers();
-       vector<Format const *> result = getReachable(s[0], only_viewable, true);
+       FormatList result = getReachable(s[0], only_viewable, true);
        vector<string>::const_iterator it = s.begin() + 1;
        vector<string>::const_iterator en = s.end();
        for (; it != en; ++it) {
-               vector<Format const *> r =
-                       getReachable(*it, only_viewable, false);
+                FormatList r = getReachable(*it, only_viewable, false);
                result.insert(result.end(), r.begin(), r.end());
        }
        return result;