]> git.lyx.org Git - lyx.git/blobdiff - src/Converter.cpp
Resave in older designer
[lyx.git] / src / Converter.cpp
index 4128129fc76bcab9f7008bd0487dd4a6bb040887..1563242f147095c13216f64f1aafa206192b54a1 100644 (file)
@@ -108,9 +108,11 @@ void Converter::readFlags()
                string flag_name, flag_value;
                flag_list = split(flag_list, flag_value, ',');
                flag_value = split(flag_value, flag_name, '=');
-               if (flag_name == "latex")
+               if (flag_name == "latex") {
                        latex = true;
-               else if (flag_name == "xml")
+                       latex_flavor = flag_value.empty() ?
+                               "latex" : flag_value;
+               } else if (flag_name == "xml")
                        xml = true;
                else if (flag_name == "needaux")
                        need_aux = true;
@@ -186,11 +188,12 @@ void Converters::add(string const & from, string const & to,
        }
        converter.readFlags();
 
-       if (converter.latex && (latex_command_.empty() || to == "dvi"))
-               latex_command_ = subst(command, token_from, "");
        // If we have both latex & pdflatex, we set latex_command to latex.
        // The latex_command is used to update the .aux file when running
        // a converter that uses it.
+       if (converter.latex
+           && (latex_command_.empty() || converter.latex_flavor == "latex"))
+               latex_command_ = subst(command, token_from, "");
 
        if (it == converterlist_.end()) {
                converterlist_.push_back(converter);
@@ -255,9 +258,11 @@ OutputParams::FLAVOR Converters::getFlavor(Graph::EdgePath const & path)
             cit != path.end(); ++cit) {
                Converter const & conv = converterlist_[*cit];
                if (conv.latex)
-                       if (contains(conv.from, "xetex"))
+                       if (conv.latex_flavor == "xelatex")
                                return OutputParams::XETEX;
-                       if (contains(conv.to, "pdf"))
+                       if (conv.latex_flavor == "lualatex")
+                               return OutputParams::LUATEX;
+                       if (conv.latex_flavor == "pdflatex")
                                return OutputParams::PDFLATEX;
                if (conv.xml)
                        return OutputParams::XML;
@@ -470,8 +475,8 @@ bool Converters::convert(Buffer const * buffer,
 // FIXME: this should go out of here. For example, here we cannot say if
 // it is a document (.lyx) or something else. Same goes for elsewhere.
                                        Alert::error(_("Cannot convert file"),
-                                               bformat(_("An error occurred whilst running %1$s"),
-                                               from_utf8(command.substr(0, 50))));
+                                               bformat(_("An error occurred while running:\n%1$s"),
+                                               wrapParas(from_utf8(command))));
                                }
                                return false;
                        }
@@ -747,6 +752,7 @@ vector<string> Converters::savers() const
        v.push_back("docbook");
        v.push_back("latex");
        v.push_back("literate");
+       v.push_back("luatex");
        v.push_back("lyx");
        v.push_back("xhtml");
        v.push_back("pdflatex");