]> git.lyx.org Git - lyx.git/blobdiff - src/BufferParams.cpp
Account for old versions of Pygments
[lyx.git] / src / BufferParams.cpp
index ef6ad0a9df789da1bc0a44fdf334181fa8a5928d..38ca643400698da1c4247edc177423ac02437896 100644 (file)
@@ -385,7 +385,7 @@ BufferParams::BufferParams()
        makeDocumentClass();
        paragraph_separation = ParagraphIndentSeparation;
        is_math_indent = false;
-       math_number_before = "default";
+       math_numbering_side = DEFAULT;
        quotes_style = InsetQuotesParams::EnglishQuotes;
        dynamic_quotes = false;
        fontsize = "default";
@@ -461,6 +461,7 @@ BufferParams::BufferParams()
 
        output_sync = false;
        use_refstyle = true;
+       use_minted = false;
 
        // map current author
        author_map_[pimpl_->authorlist.get(0).bufferId()] = 0;
@@ -667,6 +668,19 @@ void BufferParams::setDefSkip(VSpace const & vs)
 }
 
 
+BufferParams::MathNumber BufferParams::getMathNumber() const
+{
+       if (math_numbering_side != DEFAULT)
+               return math_numbering_side;
+       // FIXME: do not hardcode language here
+       else if (language->lang() == "arabic_arabi"
+                || documentClass().provides("leqno"))
+               return LEFT;
+       else
+               return RIGHT;
+}
+
+
 string BufferParams::readToken(Lexer & lex, string const & token,
        FileName const & filepath)
 {
@@ -852,9 +866,20 @@ string BufferParams::readToken(Lexer & lex, string const & token,
                lex >> is_math_indent;
        } else if (token == "\\math_indentation") {
                lex.next();
-               pimpl_->mathindent = Length(lex.getString());
-       } else if (token == "\\math_number_before") {
-               lex >> math_number_before;
+               string mathindent = lex.getString();
+               if (mathindent == "default")
+                       pimpl_->mathindent = Length();
+               else
+                       pimpl_->mathindent = Length(mathindent);
+       } else if (token == "\\math_numbering_side") {
+               string tmp;
+               lex >> tmp;
+               if (tmp == "left")
+                       math_numbering_side = LEFT;
+               else if (tmp == "right")
+                       math_numbering_side = RIGHT;
+               else
+                       math_numbering_side = DEFAULT;
        } else if (token == "\\quotes_style") {
                string qstyle;
                lex >> qstyle;
@@ -1075,6 +1100,8 @@ string BufferParams::readToken(Lexer & lex, string const & token,
                lex >> output_sync_macro;
        } else if (token == "\\use_refstyle") {
                lex >> use_refstyle;
+       } else if (token == "\\use_minted") {
+               lex >> use_minted;
        } else {
                lyxerr << "BufferParams::readToken(): Unknown token: " <<
                        token << endl;
@@ -1282,6 +1309,7 @@ void BufferParams::writeFile(ostream & os, Buffer const * buf) const
           << "\n\\suppress_date " << convert<string>(suppress_date)
           << "\n\\justification " << convert<string>(justification)
           << "\n\\use_refstyle " << use_refstyle
+          << "\n\\use_minted " << use_minted
           << '\n';
        if (isbackgroundcolor == true)
                os << "\\backgroundcolor " << lyx::X11hexname(backgroundcolor) << '\n';
@@ -1353,9 +1381,20 @@ void BufferParams::writeFile(ostream & os, Buffer const * buf) const
        else
                os << "\n\\defskip " << getDefSkip().asLyXCommand();
        os << "\n\\is_math_indent " << is_math_indent;
-       if (is_math_indent && !getMathIndent().empty())
-               os << "\n\\math_indentation " << getMathIndent().asString();
-       os << "\n\\math_number_before " << math_number_before;
+       if (is_math_indent)
+               os << "\n\\math_indentation "
+                  << (getMathIndent().empty() ? "default" : getMathIndent().asString());
+       os << "\n\\math_numbering_side ";
+       switch(math_numbering_side) {
+       case LEFT:
+               os << "left";
+               break;
+       case RIGHT:
+               os << "right";
+               break;
+       case DEFAULT:
+               os << "default";
+       }
        os << "\n\\quotes_style "
           << string_quotes_style[quotes_style]
           << "\n\\dynamic_quotes " << dynamic_quotes
@@ -1640,11 +1679,16 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
        if (is_math_indent)
                clsoptions << "fleqn,";
 
-       if (math_number_before == "true")
+       switch(math_numbering_side) {
+       case LEFT:
                clsoptions << "leqno,";
-       else if (math_number_before == "false") {
+               break;
+       case RIGHT:
                clsoptions << "reqno,";
                features.require("amsmath");
+               break;
+       case DEFAULT:
+               break;
        }
 
        // language should be a parameter to \documentclass
@@ -2218,10 +2262,19 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
        }
        if (features.isRequired("bicaption"))
                os << "\\usepackage{bicaption}\n";
-       if (!listings_params.empty() || features.mustProvide("listings"))
-               os << "\\usepackage{listings}\n";
+       if (!listings_params.empty()
+           || features.mustProvide("listings")
+           || features.mustProvide("minted")) {
+               if (features.mustProvide("listings"))
+                       os << "\\usepackage{listings}\n";
+               else
+                       os << "\\usepackage{minted}\n";
+       }
        if (!listings_params.empty()) {
-               os << "\\lstset{";
+               if (features.mustProvide("listings"))
+                       os << "\\lstset{";
+               else
+                       os << "\\setminted{";
                // do not test validity because listings_params is
                // supposed to be valid
                string par =
@@ -2318,7 +2371,8 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
        }
 
        docstring const i18npreamble =
-               features.getTClassI18nPreamble(use_babel, use_polyglossia);
+               features.getTClassI18nPreamble(use_babel, use_polyglossia,
+                                              use_minted);
        if (!i18npreamble.empty())
                os << i18npreamble + '\n';