X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Foutput_plaintext.C;h=ae70ac44d14fae4d71e5ec022be9c72b044c6ad0;hb=b3ced091d2eb7b1f2e174973614157b1c26c7001;hp=0adf86779e51199e5628a6a8d14bc6a738fcb1ec;hpb=76dc838dfeb27c94530226010b8f47afce7e5367;p=lyx.git diff --git a/src/output_plaintext.C b/src/output_plaintext.C index 0adf86779e..ae70ac44d1 100644 --- a/src/output_plaintext.C +++ b/src/output_plaintext.C @@ -59,8 +59,10 @@ void writePlaintextFile(Buffer const & buf, odocstream & os, ParagraphList::const_iterator it = beg; for (; it != end; ++it) { writePlaintextParagraph(buf, *it, os, runparams, ref_printed); + os << "\n"; + if (runparams.linelen > 0) + os << "\n"; } - os << "\n"; } @@ -127,13 +129,10 @@ void writePlaintextParagraph(Buffer const & buf, /* what about the alignment */ - // runparams.linelen <= 0 is special and means we don't have paragraph breaks + // runparams.linelen == 0 is special and means we don't have paragraph breaks string::size_type currlinelen = 0; - if (runparams.linelen > 0) - os << "\n\n"; - os << docstring(depth * 2, ' '); currlinelen += depth * 2; @@ -175,33 +174,36 @@ void writePlaintextParagraph(Buffer const & buf, default: { docstring const label = par.params().labelString(); - os << label << ' '; - currlinelen += label.length() + 1; + if (!label.empty()) { + os << label << ' '; + currlinelen += label.length() + 1; + } break; } } - if (!currlinelen) { + if (currlinelen == 0) { pair p = addDepth(depth, ltype_depth); os << p.second; currlinelen += p.first; } - // this is to change the linebreak to do it by word a bit more - // intelligent hopefully! (only in the case where we have a - // max runparams.linelength!) (Jug) - docstring word; for (pos_type i = 0; i < par.size(); ++i) { + if (par.isDeleted(i)) // deleted characters don't make much sense in plain text output + continue; + char_type c = par.getUChar(buf.params(), i); switch (c) { case Paragraph::META_INSET: { InsetBase const * inset = par.getInset(i); + os << word; currlinelen += word.length(); word.erase(); + OutputParams rp = runparams; rp.depth = par.params().depth(); if (inset->plaintext(buf, os, rp)) { @@ -213,7 +215,7 @@ void writePlaintextParagraph(Buffer const & buf, case ' ': if (runparams.linelen > 0 && - currlinelen + word.length() > runparams.linelen - 10) { + currlinelen + word.length() > runparams.linelen) { os << '\n'; pair p = addDepth(depth, ltype_depth); os << p.second; @@ -231,17 +233,17 @@ void writePlaintextParagraph(Buffer const & buf, default: word += c; - if (runparams.linelen > 0 && - currlinelen + word.length() > runparams.linelen) - { - os << '\n'; - pair p = addDepth(depth, ltype_depth); - os << p.second; - currlinelen = p.first; - } break; } } + + if (runparams.linelen > 0 && + currlinelen + word.length() > runparams.linelen) { + os << '\n'; + pair p = addDepth(depth, ltype_depth); + os << p.second; + currlinelen = p.first; + } os << word; }