namespace lyx {
+using lyx::support::contains;
+using lyx::support::rsplit;
using support::subst;
using std::distance;
output += correction(env);
else
output += env;
- return output + "}";
+ output += "}";
+ if (suffix == "\\begin")
+ output += "\n";
+ return output;
+}
+
+
+int adjust_column_count(string const & str, int oldcol)
+{
+ if (!contains(str, "\n"))
+ return oldcol + str.size();
+ else {
+ string tmp;
+ return rsplit(str, tmp, '\n').size();
+ }
}
} // namespace anon
else
output = corrected_env("\\begin", "flushright", ownerCode());
os << from_ascii(output);
- column += output.size();
+ column = adjust_column_count(output, column);
break;
} case LYX_ALIGN_RIGHT: {
string output;
else
output = corrected_env("\\begin", "flushleft", ownerCode());
os << from_ascii(output);
- column += output.size();
+ column = adjust_column_count(output, column);
break;
} case LYX_ALIGN_CENTER: {
string output;
output = corrected_env("\\begin", "center", ownerCode());
os << from_ascii(output);
- column += output.size();
+ column = adjust_column_count(output, column);
break;
}
}
case LYX_ALIGN_LEFT: {
string output;
if (getParLanguage(bparams)->babel() != "hebrew")
- output = corrected_env("\\par\\end", "flushleft", ownerCode());
+ output = corrected_env("\n\\par\\end", "flushleft", ownerCode());
else
- output = corrected_env("\\par\\end", "flushright", ownerCode());
+ output = corrected_env("\n\\par\\end", "flushright", ownerCode());
os << from_ascii(output);
- column += output.size();
+ column = adjust_column_count(output, column);
break;
} case LYX_ALIGN_RIGHT: {
string output;
if (getParLanguage(bparams)->babel() != "hebrew")
- output = corrected_env("\\par\\end", "flushright", ownerCode());
+ output = corrected_env("\n\\par\\end", "flushright", ownerCode());
else
- output = corrected_env("\\par\\end", "flushleft", ownerCode());
+ output = corrected_env("\n\\par\\end", "flushleft", ownerCode());
os << from_ascii(output);
- column += output.size();
+ column = adjust_column_count(output, column);
break;
} case LYX_ALIGN_CENTER: {
string output;
- output = corrected_env("\\par\\end", "center", ownerCode());
+ output = corrected_env("\n\\par\\end", "center", ownerCode());
os << from_ascii(output);
- column += output.size();
+ column = adjust_column_count(output, column);
break;
}
}
if (style->pass_thru)
os.put(c);
else
- // FIXME UNICODE
os << sgml::escapeChar(c);
}
font_old = font;
void Paragraph::changeLanguage(BufferParams const & bparams,
Language const * from, Language const * to)
{
- for (pos_type i = 0; i < size(); ++i) {
+ // change language including dummy font change at the end
+ for (pos_type i = 0; i <= size(); ++i) {
LyXFont font = getFontSettings(bparams, i);
if (font.language() == from) {
font.setLanguage(to);
for (pos_type i = beg; i < end; ++i) {
value_type const c = getUChar(buffer.params(), i);
- // FIXME: isPrintable does not work for lyx::char_type
if (isPrintable(c))
os.put(c);
else if (c == META_INSET)
}
+bool Paragraph::isMergedOnEndOfParDeletion(bool trackChanges) const
+{
+ return pimpl_->isMergedOnEndOfParDeletion(trackChanges);
+}
+
+
void Paragraph::setChange(Change const & change)
{
pimpl_->setChange(change);
{
if (!Encodings::is_arabic(c))
if (lyxrc.font_norm_type == LyXRC::ISO_8859_6_8 && isDigit(c))
+ // FIXME UNICODE What does this do?
return c + (0xb0 - '0');
else
return c;