X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBuffer.cpp;h=445503993eae7ad536bd105b1649645d89c93ed8;hb=d9082639080b9de993742bd352f92e5183058cf5;hp=058fb44fd50663da3f4d5eaccefa410b23b5fe42;hpb=ad7c5568cd0969b13218167127f82eb3b40a7f2b;p=lyx.git diff --git a/src/Buffer.cpp b/src/Buffer.cpp index 058fb44fd5..445503993e 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -69,7 +69,6 @@ #include "insets/InsetBranch.h" #include "insets/InsetInclude.h" -#include "insets/InsetTabular.h" #include "insets/InsetText.h" #include "mathed/InsetMathHull.h" @@ -1772,7 +1771,7 @@ Buffer::ExportStatus Buffer::makeLaTeXFile(FileName const & fname, catch (EncodingException const & e) { docstring const failed(1, e.failed_char); ostringstream oss; - oss << "0x" << hex << e.failed_char << dec; + oss << "0x" << hex << static_cast(e.failed_char) << dec; if (getParFromID(e.par_id).paragraph().layout().pass_thru) { docstring msg = bformat(_("Uncodable character '%1$s'" " (code point %2$s)"), @@ -2138,7 +2137,7 @@ Buffer::ExportStatus Buffer::writeDocBookSource(odocstream & os, // parsep in output_docbook.cpp). os << "\n" << "\n"; + << "\n See https://www.lyx.org/ for more information -->\n"; // Directly output the root tag, based on the current type of document. string languageCode = params().language->code(); @@ -2321,7 +2320,7 @@ int Buffer::runChktex() // Generate the LaTeX file if neccessary OutputParams runparams(¶ms().encoding()); - runparams.flavor = OutputParams::LATEX; + runparams.flavor = Flavor::LaTeX; runparams.nice = false; runparams.linelen = lyxrc.plaintext_linelen; ExportStatus const retval = @@ -2593,18 +2592,16 @@ void Buffer::collectBibKeys(FileNameList & checkedFiles) const } -void Buffer::addBiblioInfo(BiblioInfo const & bin) const +void Buffer::addBiblioInfo(BiblioInfo const & bi_in) const { - // We add the biblio info to the master buffer, - // if there is one, but also to every single buffer, - // in case a child is compiled alone. - BiblioInfo & bi = d->bibinfo_; - bi.mergeBiblioInfo(bin); + // We add the biblio info to the parent buffer, + // if there is one, but also to this buffer, in case + // it is compiled alone. + BiblioInfo & our_bi = d->bibinfo_; + our_bi.mergeBiblioInfo(bi_in); - if (parent() != nullptr) { - BiblioInfo & masterbi = parent()->d->bibinfo_; - masterbi.mergeBiblioInfo(bin); - } + if (parent()) + parent()->addBiblioInfo(bi_in); } @@ -3139,6 +3136,11 @@ ParConstIterator Buffer::par_iterator_end() const return ParConstIterator(doc_iterator_end(this)); } +bool Buffer::empty() const +{ + return paragraphs().size() == 1 && paragraphs().front().empty(); +} + Language const * Buffer::language() const { @@ -4054,38 +4056,49 @@ unique_ptr Buffer::getSourceCode(odocstream & os, string const & format, // Some macros rely on font encoding runparams.main_fontenc = params().main_font_encoding(); + // Use the right wrapping for the comment at the beginning of the generated + // snippet, so that it is either valid LaTeX or valid XML (including HTML and DocBook). + docstring comment_start = from_ascii("% "); + docstring comment_end = from_ascii(""); + if (runparams.flavor == Flavor::Html || runparams.flavor == Flavor::DocBook5) { + comment_start = from_ascii(""); + } + if (output == CurrentParagraph) { runparams.par_begin = par_begin; runparams.par_end = par_end; if (par_begin + 1 == par_end) { - os << "% " + os << comment_start << bformat(_("Preview source code for paragraph %1$d"), par_begin) + << comment_end << "\n\n"; } else { - os << "% " + os << comment_start << bformat(_("Preview source code from paragraph %1$s to %2$s"), convert(par_begin), convert(par_end - 1)) + << comment_end << "\n\n"; } // output paragraphs - if (runparams.flavor == OutputParams::LYX) { + if (runparams.flavor == Flavor::LyX) { Paragraph const & par = text().paragraphs()[par_begin]; ostringstream ods; depth_type dt = par.getDepth(); par.write(ods, params(), dt); os << from_utf8(ods.str()); - } else if (runparams.flavor == OutputParams::HTML) { + } else if (runparams.flavor == Flavor::Html) { XMLStream xs(os); setMathFlavor(runparams); xhtmlParagraphs(text(), *this, xs, runparams); - } else if (runparams.flavor == OutputParams::TEXT) { + } else if (runparams.flavor == Flavor::Text) { bool dummy = false; // FIXME Handles only one paragraph, unlike the others. // Probably should have some routine with a signature like them. writePlaintextParagraph(*this, text().paragraphs()[par_begin], os, runparams, dummy); - } else if (runparams.flavor == OutputParams::DOCBOOK5) { + } else if (runparams.flavor == Flavor::DocBook5) { XMLStream xs{os}; docbookParagraphs(text(), *this, xs, runparams); } else { @@ -4115,15 +4128,16 @@ unique_ptr Buffer::getSourceCode(odocstream & os, string const & format, d->ignore_parent = false; } } else { - os << "% "; + os << comment_start; if (output == FullSource) os << _("Preview source code"); else if (output == OnlyPreamble) os << _("Preview preamble"); else if (output == OnlyBody) os << _("Preview body"); + os << comment_end; os << "\n\n"; - if (runparams.flavor == OutputParams::LYX) { + if (runparams.flavor == Flavor::LyX) { ostringstream ods; if (output == FullSource) write(ods); @@ -4132,14 +4146,14 @@ unique_ptr Buffer::getSourceCode(odocstream & os, string const & format, else if (output == OnlyBody) text().write(ods); os << from_utf8(ods.str()); - } else if (runparams.flavor == OutputParams::HTML) { + } else if (runparams.flavor == Flavor::Html) { writeLyXHTMLSource(os, runparams, output); - } else if (runparams.flavor == OutputParams::TEXT) { - if (output == OnlyPreamble) { + } else if (runparams.flavor == Flavor::Text) { + if (output == OnlyPreamble) os << "% "<< _("Plain text does not have a preamble."); - } else + else writePlaintextFile(*this, os, runparams); - } else if (runparams.flavor == OutputParams::DOCBOOK5) { + } else if (runparams.flavor == Flavor::DocBook5) { writeDocBookSource(os, runparams, output); } else { // latex or literate @@ -4374,7 +4388,7 @@ Buffer::ExportStatus Buffer::doExport(string const & target, bool put_in_tempdir } MarkAsExporting exporting(this); string backend_format; - runparams.flavor = OutputParams::LATEX; + runparams.flavor = Flavor::LaTeX; runparams.linelen = lyxrc.plaintext_linelen; runparams.includeall = includeall; vector backs = params().backends(); @@ -4418,13 +4432,13 @@ Buffer::ExportStatus Buffer::doExport(string const & target, bool put_in_tempdir LYXERR(Debug::FILES, "backend_format=" << backend_format); // FIXME: Don't hardcode format names here, but use a flag if (backend_format == "pdflatex") - runparams.flavor = OutputParams::PDFLATEX; + runparams.flavor = Flavor::PdfLaTeX; else if (backend_format == "luatex") - runparams.flavor = OutputParams::LUATEX; + runparams.flavor = Flavor::LuaTeX; else if (backend_format == "dviluatex") - runparams.flavor = OutputParams::DVILUATEX; + runparams.flavor = Flavor::DviLuaTeX; else if (backend_format == "xetex") - runparams.flavor = OutputParams::XETEX; + runparams.flavor = Flavor::XeTeX; } string filename = latexName(false); @@ -4435,7 +4449,7 @@ Buffer::ExportStatus Buffer::doExport(string const & target, bool put_in_tempdir // Plain text backend if (backend_format == "text") { - runparams.flavor = OutputParams::TEXT; + runparams.flavor = Flavor::Text; try { writePlaintextFile(*this, FileName(filename), runparams); } @@ -4443,7 +4457,7 @@ Buffer::ExportStatus Buffer::doExport(string const & target, bool put_in_tempdir } // HTML backend else if (backend_format == "xhtml") { - runparams.flavor = OutputParams::HTML; + runparams.flavor = Flavor::Html; setMathFlavor(runparams); if (makeLyXHTMLFile(FileName(filename), runparams) == ExportKilled) return ExportKilled; @@ -4451,7 +4465,7 @@ Buffer::ExportStatus Buffer::doExport(string const & target, bool put_in_tempdir writeFile(FileName(filename)); // DocBook backend else if (backend_format == "docbook5") { - runparams.flavor = OutputParams::DOCBOOK5; + runparams.flavor = Flavor::DocBook5; runparams.nice = false; if (makeDocBookFile(FileName(filename), runparams) == ExportKilled) return ExportKilled;