]> git.lyx.org Git - lyx.git/blobdiff - src/BufferParams.cpp
Try another way to signal a false positive to coverity
[lyx.git] / src / BufferParams.cpp
index a4c3a80dc1cd3a80025671ff79368e7c4fd331c5..f20078bdff3e97cf742aec331ac7b9b4f055c3fb 100644 (file)
@@ -1646,7 +1646,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
 
        // if we use fontspec or newtxmath, we have to load the AMS packages here
        string const ams = features.loadAMSPackages();
-       bool const ot1 = (font_encoding() == "default" || font_encoding() == "OT1");
+       bool const ot1 = (main_font_encoding() == "default" || main_font_encoding() == "OT1");
        bool const use_newtxmath =
                theLaTeXFonts().getLaTeXFont(from_ascii(fontsMath())).getUsedPackage(
                        ot1, false, false) == "newtxmath";
@@ -1673,7 +1673,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
        // set font encoding
        // XeTeX and LuaTeX (with OS fonts) do not need fontenc
        if (!useNonTeXFonts && !features.isProvided("fontenc")
-           && font_encoding() != "default") {
+           && main_font_encoding() != "default") {
                // get main font encodings
                vector<string> fontencs = font_encodings();
                // get font encodings of secondary languages
@@ -2176,12 +2176,19 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
                os << "}\n";
        }
 
-       // xunicode needs to be loaded at least after amsmath, amssymb,
+       // xunicode only needs to be loaded if tipa is used
+       // (the rest is obsoleted by the new TU encoding).
+       // It needs to be loaded at least after amsmath, amssymb,
        // esint and the other packages that provide special glyphs
-       // The package only supports XeTeX currently.
-       if (features.runparams().flavor == OutputParams::XETEX
-           && useNonTeXFonts)
+       if (features.mustProvide("tipa") && useNonTeXFonts) {
+               // The package officially only supports XeTeX, but also works
+               // with LuaTeX. Thus we work around its XeTeX test.
+               if (features.runparams().flavor != OutputParams::XETEX) {
+                       os << "% Pretend to xunicode that we are XeTeX\n"
+                          << "\\def\\XeTeXpicfile{}\n";
+               }
                os << "\\usepackage{xunicode}\n";
+       }
 
        // Polyglossia must be loaded last ...
        if (use_polyglossia) {
@@ -2985,7 +2992,7 @@ string const BufferParams::dvips_options() const
 }
 
 
-string const BufferParams::font_encoding() const
+string const BufferParams::main_font_encoding() const
 {
        return font_encodings().empty() ? "default" : font_encodings().back();
 }
@@ -3221,7 +3228,7 @@ string const BufferParams::loadFonts(LaTeXFeatures & features) const
        }
 
        // Tex Fonts
-       bool const ot1 = (font_encoding() == "default" || font_encoding() == "OT1");
+       bool const ot1 = (main_font_encoding() == "default" || main_font_encoding() == "OT1");
        bool const dryrun = features.runparams().dryrun;
        bool const complete = (fontsSans() == "default" && fontsTypewriter() == "default");
        bool const nomath = (fontsMath() == "default");
@@ -3298,8 +3305,12 @@ bool BufferParams::addCiteEngine(vector<string> const & engine)
 
 string const & BufferParams::defaultBiblioStyle() const
 {
-       map<string, string> bs = documentClass().defaultBiblioStyle();
-       return bs[theCiteEnginesList.getTypeAsString(citeEngineType())];
+       map<string, string> const & bs = documentClass().defaultBiblioStyle();
+       auto cit = bs.find(theCiteEnginesList.getTypeAsString(citeEngineType()));
+       if (cit != bs.end())
+               return cit->second;
+       else
+               return empty_string();
 }