X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FConverter.cpp;h=58e486e67d3dde4b2fe6aad4de2ba1ca2a5f9a96;hb=95db20e008c84991dcf2ea7fb31a639fb9b9f851;hp=933e2f673b4d63be480adf1c07b80b067c26cec4;hpb=1dbf0e5aab732bdba4eed1af2866c357bc30a526;p=lyx.git diff --git a/src/Converter.cpp b/src/Converter.cpp index 933e2f673b..58e486e67d 100644 --- a/src/Converter.cpp +++ b/src/Converter.cpp @@ -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 const -Converters::intToFormat(vector const & input) +FormatList const Converters::intToFormat(vector const & input) { - vector result(input.size()); + FormatList result(input.size()); vector::const_iterator it = input.begin(); vector::const_iterator const end = input.end(); - vector::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 const & input) } -vector const -Converters::getReachableTo(string const & target, bool const clear_visited) +FormatList const Converters::getReachableTo(string const & target, + bool const clear_visited) { vector const & reachablesto = G_.getReachableTo(formats.getNumber(target), clear_visited); @@ -728,9 +741,9 @@ Converters::getReachableTo(string const & target, bool const clear_visited) } -vector const -Converters::getReachable(string const & from, bool const only_viewable, - bool const clear_visited, set const & excludes) +FormatList const Converters::getReachable(string const & from, + bool const only_viewable, bool const clear_visited, + set const & excludes) { set excluded_numbers; @@ -763,29 +776,28 @@ Graph::EdgePath Converters::getPath(string const & from, string const & to) } -vector Converters::importableFormats() +FormatList Converters::importableFormats() { vector l = loaders(); - vector result = getReachableTo(l[0], true); + FormatList result = getReachableTo(l[0], true); vector::const_iterator it = l.begin() + 1; vector::const_iterator en = l.end(); for (; it != en; ++it) { - vector r = getReachableTo(*it, false); + FormatList r = getReachableTo(*it, false); result.insert(result.end(), r.begin(), r.end()); } return result; } -vector Converters::exportableFormats(bool only_viewable) +FormatList Converters::exportableFormats(bool only_viewable) { vector s = savers(); - vector result = getReachable(s[0], only_viewable, true); + FormatList result = getReachable(s[0], only_viewable, true); vector::const_iterator it = s.begin() + 1; vector::const_iterator en = s.end(); for (; it != en; ++it) { - vector r = - getReachable(*it, only_viewable, false); + FormatList r = getReachable(*it, only_viewable, false); result.insert(result.end(), r.begin(), r.end()); } return result;