using support::ascii_lowercase;
using support::compare_ascii_no_case;
-using support::compare_no_case;
using support::contains;
using support::FileName;
// First write the layout
string const & tmp = par.layout()->name();
- if (compare_no_case(tmp, "itemize") == 0) {
+ if (compare_ascii_no_case(tmp, "itemize") == 0) {
ltype = 1;
ltype_depth = depth + 1;
} else if (compare_ascii_no_case(tmp, "enumerate") == 0) {
ltype_depth = 0;
}
- /* maybe some vertical spaces */
-
/* the labelwidthstring used in lists */
- /* some lines? */
-
- /* some pagebreaks? */
-
/* noindent ? */
/* what about the alignment */
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
+ // deleted characters don't make much sense in plain text output
+ if (par.isDeleted(i))
continue;
char_type c = par.getUChar(buf.params(), i);
- switch (c) {
- case Paragraph::META_INSET: {
+
+ if (c == Paragraph::META_INSET || c == ' ') {
if (runparams.linelen > 0 &&
currlinelen + word.length() > runparams.linelen) {
os << '\n';
os << word;
currlinelen += word.length();
word.erase();
+ }
+ switch (c) {
+ case Paragraph::META_INSET: {
OutputParams rp = runparams;
rp.depth = par.params().depth();
int len = par.getInset(i)->plaintext(buf, os, rp);
- if (len >= runparams.linelen)
- currlinelen = len - runparams.linelen;
+ if (len >= InsetBase::PLAINTEXT_NEWLINE)
+ currlinelen = len - InsetBase::PLAINTEXT_NEWLINE;
else
currlinelen += len;
break;
}
case ' ':
- if (runparams.linelen > 0 &&
- currlinelen + word.length() > runparams.linelen) {
- os << '\n';
- pair<int, docstring> p = addDepth(depth, ltype_depth);
- os << p.second;
- currlinelen = p.first;
- }
- os << word << ' ';
- currlinelen += word.length() + 1;
- word.erase();
+ os << ' ';
+ currlinelen++;
break;
case '\0':
- lyxerr[Debug::INFO] <<
+ LYXERR(Debug::INFO) <<
"writePlaintextFile: NULL char in structure." << endl;
break;
}
}
- if (runparams.linelen > 0 &&
- currlinelen + word.length() > runparams.linelen) {
- os << '\n';
- pair<int, docstring> p = addDepth(depth, ltype_depth);
- os << p.second;
- currlinelen = p.first;
+ // currlinelen may be greater than runparams.linelen!
+ // => check whether word is empty and do nothing in this case
+ if (!word.empty()) {
+ if (runparams.linelen > 0 &&
+ currlinelen + word.length() > runparams.linelen) {
+ os << '\n';
+ pair<int, docstring> p = addDepth(depth, ltype_depth);
+ os << p.second;
+ currlinelen = p.first;
+ }
+ os << word;
}
- os << word;
}