]> git.lyx.org Git - lyx.git/blobdiff - src/BufferParams.cpp
status.22x
[lyx.git] / src / BufferParams.cpp
index 8024d4a5b13fcf0ff467241445a4db132820b745..6b56037aeccad690ce2e936f235e8fec7c363b2e 100644 (file)
@@ -369,6 +369,7 @@ BufferParams::BufferParams()
        biblio_style = "plain";
        use_bibtopic = false;
        use_indices = false;
+       save_transient_properties = true;
        track_changes = false;
        output_changes = false;
        use_default_options = true;
@@ -673,6 +674,8 @@ string BufferParams::readToken(Lexer & lex, string const & token,
                        frontend::Alert::warning(_("Document class not available"),
                                       msg, true);
                }
+       } else if (token == "\\save_transient_properties") {
+               lex >> save_transient_properties;
        } else if (token == "\\origin") {
                lex.eatLine();
                origin = lex.getString();
@@ -1015,6 +1018,9 @@ void BufferParams::writeFile(ostream & os, Buffer const * buf) const
        // The top of the file is written by the buffer.
        // Prints out the buffer info into the .lyx file given by file
 
+       os << "\\save_transient_properties "
+          << convert<string>(save_transient_properties) << '\n';
+
        // the document directory (must end with a path separator)
        // realPath() is used to resolve symlinks, while addPath(..., "")
        // ensures a trailing path separator.
@@ -1024,7 +1030,7 @@ void BufferParams::writeFile(ostream & os, Buffer const * buf) const
                to_utf8(makeRelPath(from_utf8(filepath), from_utf8(sysdir)));
        if (!prefixIs(relpath, "../") && !FileName::isAbsolute(relpath))
                filepath = addPath("/systemlyxdir", relpath);
-       else if (!lyxrc.save_origin)
+       else if (!save_transient_properties || !lyxrc.save_origin)
                filepath = "unavailable";
        os << "\\origin " << quoteIfNeeded(filepath) << '\n';
 
@@ -1273,15 +1279,16 @@ void BufferParams::writeFile(ostream & os, Buffer const * buf) const
                }
        }
 
-       os << "\\tracking_changes " << convert<string>(track_changes) << '\n'
-          << "\\html_math_output " << html_math_output << '\n'
+       os << "\\tracking_changes "
+          << (save_transient_properties ? convert<string>(track_changes) : "false")
+          << '\n';
+
+       os << "\\output_changes "
+          << (save_transient_properties ? convert<string>(output_changes) : "false")
+          << '\n';
+
+       os << "\\html_math_output " << html_math_output << '\n'
           << "\\html_css_as_file " << html_css_as_file << '\n'
-               // \output_changes is output at a distance from \tracking changes as a
-               // workaround to bug #9841: both parameters can be seen as per-user
-               // preferences and therefore can cause undesirable merge conflicts, in a
-               // multi-author setting, if it were treated as a single block by the
-               // version control system.
-          << "\\output_changes " << convert<string>(output_changes) << '\n'
           << "\\html_be_strict " << convert<string>(html_be_strict) << '\n';
 
        if (html_math_img_scale != 1.0)
@@ -1575,7 +1582,8 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
                os << from_ascii(ams);
 
        if (useNonTeXFonts) {
-               os << "\\usepackage{fontspec}\n";
+               if (!features.isProvided("fontspec"))
+                       os << "\\usepackage{fontspec}\n";
                if (features.mustProvide("unicode-math")
                    && features.isAvailable("unicode-math"))
                        os << "\\usepackage{unicode-math}\n";
@@ -2040,7 +2048,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
        // koma's own caption commands are used instead of caption. We
        // use \PassOptionsToPackage here because the user could have
        // already loaded subfig in the preamble.
-       if (features.isRequired("subfig")) {
+       if (features.mustProvide("subfig")) {
                atlyxpreamble += "\\@ifundefined{showcaptionsetup}{}{%\n"
                        " \\PassOptionsToPackage{caption=false}{subfig}}\n"
                        "\\usepackage{subfig}\n";
@@ -2101,7 +2109,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
        }
        if (features.isRequired("bicaption"))
                lyxpreamble += "\\usepackage{bicaption}\n";
-       if (!listings_params.empty() || features.isRequired("listings"))
+       if (!listings_params.empty() || features.mustProvide("listings"))
                lyxpreamble += "\\usepackage{listings}\n";
        if (!listings_params.empty()) {
                lyxpreamble += "\\lstset{";