X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FTextClass.cpp;h=eb79e13eaef1710cc55b5896e4ae554033525155;hb=7e121117bb320368a9164d3a39432a4b54789538;hp=5d01b9d2198444e1d01fb5975cc47d2c6e3523ae;hpb=425c190d623daeb6d05bce1aa2244b548225305a;p=lyx.git diff --git a/src/TextClass.cpp b/src/TextClass.cpp index 5d01b9d219..eb79e13eae 100644 --- a/src/TextClass.cpp +++ b/src/TextClass.cpp @@ -133,7 +133,7 @@ string translateReadType(TextClass::ReadType rt) return string(); } -} // namespace anon +} // namespace // This string should not be translated here, @@ -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,8 +440,8 @@ 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: @@ -463,8 +466,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 +520,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 +552,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 +856,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 +1099,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) @@ -1416,18 +1420,6 @@ bool TextClass::readOutlinerName(Lexer & lexrc) } -docstring TextClass::outlinerName(std::string const & type) const -{ - std::map::const_iterator const it - = outliner_names_.find(type); - if (it == outliner_names_.end()) { - LYXERR0("Missing OutlinerName for " << type << "!"); - return translateIfPossible(from_utf8(type)); - } else - return translateIfPossible(it->second); -} - - string const & TextClass::prerequisites(string const & sep) const { if (contains(prerequisites_, ',')) { @@ -1794,7 +1786,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;