X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FTextClass.cpp;h=25965c6762ef367d3324964e449dac2aff422b00;hb=c41f9f7ed7a890523acd387868472080d0c68df2;hp=9b25a67b181229b1b9ca0c83005f6f24e1ca5060;hpb=461fda9ca9a8079f235fe6d26031aa6b9c5ff36e;p=lyx.git diff --git a/src/TextClass.cpp b/src/TextClass.cpp index 9b25a67b18..25965c6762 100644 --- a/src/TextClass.cpp +++ b/src/TextClass.cpp @@ -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 = 63; //spitz: new tags CiteFramework, MaxCiteNames, extended InsetCite syntax. +int const LAYOUT_FORMAT = 66; //spitz: New layout tag AutoNests // Layout format for the current lyx file format. Controls which format is @@ -133,7 +133,7 @@ string translateReadType(TextClass::ReadType rt) return string(); } -} // namespace anon +} // namespace // This string should not be translated here, @@ -152,7 +152,7 @@ TextClass::TextClass() opt_enginetype_("authoryear|numerical"), opt_fontsize_("10|11|12"), opt_pagestyle_("empty|plain|headings|fancy"), pagestyle_("default"), columns_(1), sides_(OneSide), secnumdepth_(3), tocdepth_(3), - outputType_(LATEX), outputFormat_("latex"), + outputType_(LATEX), outputFormat_("latex"), has_output_format_(false), defaultfont_(sane_font), titletype_(TITLE_COMMAND_AFTER), titlename_("maketitle"), min_toclevel_(0), max_toclevel_(0), maxcitenames_(2), @@ -282,7 +282,7 @@ LexerKeyword textClassTags[] = { { "tocdepth", TC_TOCDEPTH } }; -} //namespace anon +} // namespace bool TextClass::convertLayoutFormat(support::FileName const & filename, ReadType rt) @@ -408,11 +408,14 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt) if (!lexrc.isOK()) return ERROR; - // Format of files before the 'Format' tag was introduced - int format = 1; - bool error = false; + // The first usable line should be + // Format LAYOUT_FORMAT + if (lexrc.lex() != TC_FORMAT || !lexrc.next() + || lexrc.getInteger() != LAYOUT_FORMAT) + return FORMAT_MISMATCH; // parsing + bool error = false; while (lexrc.isOK() && !error) { int le = lexrc.lex(); @@ -437,13 +440,15 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt) switch (static_cast(le)) { case TC_FORMAT: - if (lexrc.next()) - format = lexrc.getInteger(); + lexrc.next(); + lexrc.printError("Duplicate Format directive"); break; case TC_OUTPUTFORMAT: - if (lexrc.next()) + if (lexrc.next()) { outputFormat_ = lexrc.getString(); + has_output_format_ = true; + } break; case TC_OUTPUTTYPE: @@ -463,8 +468,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()) { @@ -512,9 +522,9 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt) error = !readStyle(lexrc, lay); break; } - + bool const have_layout = hasLayout(name); - + // If the layout already exists, then we want to add it to // the existing layout, as long as we are not in an ProvideStyle // block. @@ -544,9 +554,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; } @@ -849,11 +858,6 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt) error = !readOutlinerName(lexrc); break; } // end of switch - - // Note that this is triggered the first time through the loop unless - // we hit a format tag. - if (format != LAYOUT_FORMAT) - return FORMAT_MISMATCH; } // at present, we abort if we encounter an error, @@ -1097,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) @@ -1173,7 +1179,7 @@ bool TextClass::readCiteFormat(Lexer & lexrc) char initchar = etype[0]; if (initchar == '#') continue; - if (initchar == '!' || initchar == '_') { + if (initchar == '!' || initchar == '_' || prefixIs(etype, "B_")) { if (type & ENGINE_TYPE_AUTHORYEAR) cite_macros_[ENGINE_TYPE_AUTHORYEAR][etype] = definition; if (type & ENGINE_TYPE_NUMERICAL) @@ -1782,7 +1788,7 @@ Layout const & DocumentClass::getTOCLayout() const for (; lit != len; ++lit) { int const level = lit->toclevel; // we don't want Part or unnumbered sections - if (level == Layout::NOT_IN_TOC || level < 0 + if (level == Layout::NOT_IN_TOC || level < 0 || level >= minlevel || lit->counter.empty()) continue; lay = &*lit;