]> git.lyx.org Git - lyx.git/blobdiff - src/Converter.cpp
Do not overwrite read-only files. We now move the file to the backup directory and...
[lyx.git] / src / Converter.cpp
index 5174d5bc3d9aabfccda87979c85caa576043d4c5..f5102fee48c2a889317a8f1b32593f48af0227bd 100644 (file)
 
 #include "Converter.h"
 
-#include "ConverterCache.h"
 #include "Buffer.h"
 #include "buffer_funcs.h"
 #include "BufferParams.h"
+#include "ConverterCache.h"
+#include "Encoding.h"
 #include "ErrorList.h"
 #include "Format.h"
 #include "Language.h"
@@ -49,7 +50,7 @@ string const token_base("$$b");
 string const token_to("$$o");
 string const token_path("$$p");
 string const token_orig_path("$$r");
-
+string const token_encoding("$$e");
 
 
 string const add_options(string const & command, string const & options)
@@ -256,6 +257,8 @@ OutputParams::FLAVOR Converters::getFlavor(Graph::EdgePath const & path)
                if (conv.latex)
                        if (contains(conv.from, "xetex"))
                                return OutputParams::XETEX;
+                       if (contains(conv.from, "luatex"))
+                               return OutputParams::LUATEX;
                        if (contains(conv.to, "pdf"))
                                return OutputParams::PDFLATEX;
                if (conv.xml)
@@ -325,7 +328,7 @@ bool Converters::convert(Buffer const * buffer,
        // used anyway.
        OutputParams runparams(buffer ? &buffer->params().encoding() : 0);
        runparams.flavor = getFlavor(edgepath);
-       
+
        if (buffer) {
                runparams.use_japanese = buffer->bufferFormat() == "platex";
                runparams.use_indices = buffer->params().use_indices;
@@ -367,7 +370,7 @@ bool Converters::convert(Buffer const * buffer,
                        : addName(subst(conv.result_dir,
                                        token_base, from_base),
                                  subst(conv.result_file,
-                                       token_base, onlyFilename(from_base))));
+                                       token_base, onlyFileName(from_base))));
 
                // if input and output files are equal, we use a
                // temporary file as intermediary (JMarc)
@@ -397,9 +400,9 @@ bool Converters::convert(Buffer const * buffer,
                        }
 
                        // FIXME UNICODE
-                       string const infile2 = 
+                       string const infile2 =
                                to_utf8(makeRelPath(from_utf8(infile.absFileName()), from_utf8(path)));
-                       string const outfile2 = 
+                       string const outfile2 =
                                to_utf8(makeRelPath(from_utf8(outfile.absFileName()), from_utf8(path)));
 
                        string command = conv.command;
@@ -408,6 +411,7 @@ bool Converters::convert(Buffer const * buffer,
                        command = subst(command, token_to, quoteName(outfile2));
                        command = subst(command, token_path, quoteName(infile.onlyPath().absFileName()));
                        command = subst(command, token_orig_path, quoteName(orig_from.onlyPath().absFileName()));
+                       command = subst(command, token_encoding, buffer ? buffer->params().encoding().iconvName() : string());
                        command = libScriptSearch(command);
 
                        if (!conv.parselog.empty())
@@ -513,7 +517,7 @@ bool Converters::move(string const & fmt,
 
        bool no_errors = true;
        string const path = onlyPath(from.absFileName());
-       string const base = onlyFilename(removeExtension(from.absFileName()));
+       string const base = onlyFileName(removeExtension(from.absFileName()));
        string const to_base = removeExtension(to.absFileName());
        string const to_extension = getExtension(to.absFileName());
 
@@ -521,7 +525,7 @@ bool Converters::move(string const & fmt,
        for (support::FileNameList::const_iterator it = files.begin();
             it != files.end(); ++it) {
                string const from2 = it->absFileName();
-               string const file2 = onlyFilename(from2);
+               string const file2 = onlyFileName(from2);
                if (prefixIs(file2, base)) {
                        string const to2 = changeExtension(
                                to_base + file2.substr(base.length()),
@@ -745,6 +749,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");