X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fexporter.C;h=d3ff74a95ef7e4e2df0315353e267d19c2e17312;hb=cd4033aef3a3f1efdb5a676b8bab3d367f53a830;hp=decde47a4f2523de469ff3ebfb5b841c64395973;hpb=c5df681fe87aba4058870041074a323994268989;p=lyx.git diff --git a/src/exporter.C b/src/exporter.C index decde47a4f..d3ff74a95e 100644 --- a/src/exporter.C +++ b/src/exporter.C @@ -153,27 +153,20 @@ bool Exporter::Export(Buffer * buffer, string const & format, runparams.flavor = OutputParams::LATEX; runparams.linelen = lyxrc.plaintext_linelen; vector backends = Backends(*buffer); - // FIXME: Without this test export to lyx1[34] would be through - // latex -> lyx -> lyx1[34], because the first backend below with a - // working conversion path is used. We should replace this test and - // the explicit loop below with a method - // getShortestPath(vector const & from, string const & to) - // which returns the shortest path from one of the formats in 'from' - // to 'to'. - if ((format == "lyx13x" || format == "lyx14x") && - !theConverters().getPath("lyx", format).empty()) - backend_format = "lyx"; - else if (find(backends.begin(), backends.end(), format) == backends.end()) { + if (find(backends.begin(), backends.end(), format) == backends.end()) { + // Get shortest path to format + Graph::EdgePath path; for (vector::const_iterator it = backends.begin(); it != backends.end(); ++it) { Graph::EdgePath p = theConverters().getPath(*it, format); - if (!p.empty()) { - runparams.flavor = theConverters().getFlavor(p); + if (!p.empty() && (path.empty() || p.size() < path.size())) { backend_format = *it; - break; + path = p; } } - if (backend_format.empty()) { + if (!path.empty()) + runparams.flavor = theConverters().getFlavor(path); + else { Alert::error(_("Couldn't export file"), bformat(_("No information for exporting the format %1$s."), formats.prettyName(format))); @@ -225,7 +218,8 @@ bool Exporter::Export(Buffer * buffer, string const & format, tmp_result_file, FileName(buffer->fileName()), backend_format, format, buffer->errorList(error_type)); // Emit the signal to show the error list. - buffer->errors(error_type); + if (format != backend_format) + buffer->errors(error_type); if (!success) return false;