#include "frontends/LyXView.h"
#include "support/lstrings.h"
-#include "support/std_sstream.h"
+
+#include <sstream>
using lyx::support::rtrim;
using std::ostringstream;
using std::string;
+// anonym namespace
+namespace {
+int findToken(char const * const str[], string const search_token)
+{
+ int i = 0;
+
+ if (search_token != "default") {
+ while (str[i][0] && str[i] != search_token) {
+ ++i;
+ }
+ if (!str[i][0]) {
+ i = -1;
+ }
+ }
+
+ return i;
+}
+
+}
+
ParagraphParameters::ParagraphParameters()
: noindent_(false),
if (token == "\\noindent") {
noindent(true);
} else if (token == "\\leftindent") {
- lex.nextToken();
+ lex.next();
LyXLength value(lex.getString());
leftIndent(value);
} else if (token == "\\start_of_appendix") {
lex.printError("Unknown spacing token: '$$Token'");
}
} else if (token == "\\align") {
- int tmpret = lex.findToken(string_align);
+ lex.next();
+ int tmpret = findToken(string_align, lex.getString());
if (tmpret == -1)
++tmpret;
align(LyXAlignment(1 << tmpret));
void ParagraphParameters::write(ostream & os) const
{
+ ostringstream oss;
+
// Maybe the paragraph has special spacing
- spacing().writeFile(os, true);
+ spacing().writeFile(oss, true);
// The labelwidth string used in lists.
if (!labelWidthString().empty())
- os << "\\labelwidthstring "
+ oss << "\\labelwidthstring "
<< labelWidthString() << '\n';
// Start of appendix?
if (startOfAppendix())
- os << "\\start_of_appendix ";
+ oss << "\\start_of_appendix ";
// Noindent?
if (noindent())
- os << "\\noindent ";
+ oss << "\\noindent ";
// Do we have a manual left indent?
if (!leftIndent().zero())
- os << "\\leftindent " << leftIndent().asString()
+ oss << "\\leftindent " << leftIndent().asString()
<< ' ';
// Alignment?
case LYX_ALIGN_CENTER: h = 3; break;
default: h = 0; break;
}
- os << "\\align " << string_align[h] << ' ';
+ oss << "\\align " << string_align[h] << ' ';
}
+ os << rtrim(oss.str());
}
/// set default alignment
os << "\\aligndefault " << layout->align << '\n';
- /// is paragraph in inset
- os << "\\ininset " << (par.inInset()?1:0) << '\n';
+ /// paragraph is always in inset. This is redundant.
+ os << "\\ininset " << 1 << '\n';
data = os.str();
}