]> git.lyx.org Git - lyx.git/blobdiff - src/TextClass.cpp
Account for old versions of Pygments
[lyx.git] / src / TextClass.cpp
index 9e71e1c9a769f480457d8426d432cd8767b2eced..612539843f0b2148574d4eb3cb512ce113786e6e 100644 (file)
@@ -62,7 +62,7 @@ namespace lyx {
 // You should also run the development/tools/updatelayouts.py script,
 // to update the format of all of our layout files.
 //
-int const LAYOUT_FORMAT = 62; //spitz PassThru for arguments.
+int const LAYOUT_FORMAT = 63; //spitz: new tags CiteFramework, MaxCiteNames, extended InsetCite syntax.
 
 
 // Layout format for the current lyx file format. Controls which format is
@@ -155,7 +155,7 @@ TextClass::TextClass()
          outputType_(LATEX), outputFormat_("latex"),
          defaultfont_(sane_font),
          titletype_(TITLE_COMMAND_AFTER), titlename_("maketitle"),
-         min_toclevel_(0), max_toclevel_(0),
+         min_toclevel_(0), max_toclevel_(0), maxcitenames_(2),
          cite_full_author_list_(true)
 {
 }
@@ -222,6 +222,7 @@ enum TextClassTags {
        TC_CITEENGINETYPE,
        TC_CITEFORMAT,
        TC_CITEFRAMEWORK,
+       TC_MAXCITENAMES,
        TC_DEFAULTBIBLIO,
        TC_FULLAUTHORLIST,
        TC_OUTLINERNAME
@@ -256,6 +257,7 @@ LexerKeyword textClassTags[] = {
        { "input",             TC_INPUT },
        { "insetlayout",       TC_INSETLAYOUT },
        { "leftmargin",        TC_LEFTMARGIN },
+       { "maxcitenames",      TC_MAXCITENAMES },
        { "modifystyle",       TC_MODIFYSTYLE },
        { "nocounter",         TC_NOCOUNTER },
        { "nofloat",           TC_NOFLOAT },
@@ -461,8 +463,13 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt)
 
                case TC_INPUT: // Include file
                        if (lexrc.next()) {
+                               FileName tmp;
                                string const inc = lexrc.getString();
-                               FileName tmp = libFileSearch("layouts", inc,
+                               if (!path().empty() && (prefixIs(inc, "./") ||
+                                                       prefixIs(inc, "../")))
+                                       tmp = fileSearch(path(), inc, "layout");
+                               else
+                                       tmp = libFileSearch("layouts", inc,
                                                            "layout");
 
                                if (tmp.empty()) {
@@ -542,9 +549,8 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt)
                        // Either way, we just scan the rest and discard it
                        else {
                                Layout lay;
-                               // false positive from coverity
-                               // coverity[CHECKED_RETURN]
-                               readStyle(lexrc, lay);
+                               // signal to coverity that we do not care about the result
+                               (void)readStyle(lexrc, lay);
                        }
                        break;
                }
@@ -765,6 +771,11 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt)
                        citeframework_ = rtrim(lexrc.getString());
                        break;
 
+               case TC_MAXCITENAMES:
+                       lexrc.next();
+                       maxcitenames_ = size_t(lexrc.getInteger());
+                       break;
+
                case TC_DEFAULTBIBLIO:
                        if (lexrc.next()) {
                                vector<string> const dbs =
@@ -1090,6 +1101,8 @@ bool TextClass::readCiteEngine(Lexer & lexrc)
                                latex_cmd += ichar;
                        else if (mode == StarDesc)
                                stardesc += ichar;
+                       else if (ichar == '$')
+                               cs.hasQualifiedList = true;
                        else if (ichar == '*')
                                cs.hasStarredVersion = true;
                        else if (ichar == '[' && cs.textAfter)
@@ -1409,18 +1422,6 @@ bool TextClass::readOutlinerName(Lexer & lexrc)
 }
 
 
-docstring TextClass::outlinerName(std::string const & type) const
-{
-       std::map<std::string,docstring>::const_iterator const it
-               = outliner_names_.find(type);
-       if (it == outliner_names_.end()) {
-               LYXERR0("Missing OutlinerName for " << type << "!");
-               return from_utf8(type);
-       } else
-               return it->second;
-}
-
-
 string const & TextClass::prerequisites(string const & sep) const
 {
        if (contains(prerequisites_, ',')) {
@@ -1808,10 +1809,12 @@ Layout const & DocumentClass::htmlTOCLayout() const
 }
 
 
-string const DocumentClass::getCiteFormat(CiteEngineType const & type,
-       string const & entry, string const & fallback) const
+string const DocumentClass::getCiteFormat(CiteEngineType const & type,
+       string const & entry, bool const punct, string const & fallback) const
 {
-       static string default_format = "{%author%[[%author%, ]][[{%editor%[[%editor%, ed., ]]}]]}\"%title%\"{%journal%[[, {!<i>!}%journal%{!</i>!}]][[{%publisher%[[, %publisher%]][[{%institution%[[, %institution%]]}]]}]]}{%year%[[ (%year%)]]}{%pages%[[, %pages%]]}.";
+       string default_format = "{%fullnames:author%[[%fullnames:author%, ]][[{%fullnames:editor%[[%fullnames:editor%, ed., ]]}]]}\"%title%\"{%journal%[[, {!<i>!}%journal%{!</i>!}]][[{%publisher%[[, %publisher%]][[{%institution%[[, %institution%]]}]]}]]}{%year%[[ (%year%)]]}{%pages%[[, %pages%]]}";
+       if (punct)
+               default_format += ".";
 
        map<CiteEngineType, map<string, string> >::const_iterator itype = cite_formats_.find(type);
        if (itype == cite_formats_.end())
@@ -1821,6 +1824,8 @@ string const & DocumentClass::getCiteFormat(CiteEngineType const & type,
                it = itype->second.find(fallback);
        if (it == itype->second.end())
                return default_format;
+       if (punct)
+               return it->second + ".";
        return it->second;
 }