X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fparagraph.C;h=c0c53c3e524220eed2aefacf3aef80680facef39;hb=35204f8f33d7400a5fefeffea533fb4cb4097211;hp=fa45cbd99b40269ebd950c46d0187e7b96dd29d4;hpb=c908d743a5749880f7b97d368d1d029ccf3ca1bf;p=lyx.git diff --git a/src/paragraph.C b/src/paragraph.C index fa45cbd99b..c0c53c3e52 100644 --- a/src/paragraph.C +++ b/src/paragraph.C @@ -46,7 +46,6 @@ #include "support/convert.h" #include "support/unicode.h" -#include #include #include @@ -154,13 +153,12 @@ void Paragraph::write(Buffer const & buf, ostream & os, LyXFont font1(LyXFont::ALL_INHERIT, bparams.language); Change running_change = Change(Change::UNCHANGED); - time_type const curtime = current_time(); int column = 0; for (pos_type i = 0; i <= size(); ++i) { Change change = pimpl_->lookupChange(i); - Changes::lyxMarkChange(os, column, curtime, running_change, change); + Changes::lyxMarkChange(os, column, running_change, change); running_change = change; if (i == size()) @@ -236,19 +234,19 @@ void Paragraph::validate(LaTeXFeatures & features) const } -bool Paragraph::erase(pos_type pos, bool trackChanges) +bool Paragraph::eraseChar(pos_type pos, bool trackChanges) { - return pimpl_->erase(pos, trackChanges); + return pimpl_->eraseChar(pos, trackChanges); } -int Paragraph::erase(pos_type start, pos_type end, bool trackChanges) +int Paragraph::eraseChars(pos_type start, pos_type end, bool trackChanges) { - return pimpl_->erase(start, end, trackChanges); + return pimpl_->eraseChars(start, end, trackChanges); } -void Paragraph::insert(pos_type start, string const & str, +void Paragraph::insert(pos_type start, docstring const & str, LyXFont const & font, Change const & change) { for (size_t i = 0, n = str.size(); i != n ; ++i) @@ -569,8 +567,8 @@ int Paragraph::stripLeadingSpaces() int i = 0; while (!empty() && (isNewline(0) || isLineSeparator(0)) - && (lookupChange(0).type != Change::DELETED)) { - erase(0, false); // no change tracking here + && !isDeleted(0)) { + eraseChar(0, false); // no change tracking here ++i; } @@ -656,8 +654,8 @@ void Paragraph::setBeginOfBody() pos_type end = size(); if (i < end && !isNewline(i)) { ++i; - char previous_char = 0; - char temp = 0; + char_type previous_char = 0; + char_type temp = 0; if (i < end) { previous_char = text_[i]; if (!isNewline(i)) { @@ -922,7 +920,7 @@ bool Paragraph::simpleTeXOnePar(Buffer const & buf, // Do we have an open font change? bool open_font = false; - Change::Type running_change = Change::UNCHANGED; + Change::Type runningChangeType = Change::UNCHANGED; texrow.start(id(), 0); @@ -1010,15 +1008,15 @@ bool Paragraph::simpleTeXOnePar(Buffer const & buf, open_font = true; } - Change::Type change = pimpl_->lookupChange(i).type; + Change::Type changeType = pimpl_->lookupChange(i).type; - column += Changes::latexMarkChange(os, running_change, - change, output); - running_change = change; + column += Changes::latexMarkChange(os, runningChangeType, + changeType, output); + runningChangeType = changeType; // do not output text which is marked deleted // if change tracking output is not desired - if (output || running_change != Change::DELETED) { + if (output || runningChangeType != Change::DELETED) { OutputParams rp = runparams; rp.free_spacing = style->free_spacing; rp.local_font = &font; @@ -1027,13 +1025,13 @@ bool Paragraph::simpleTeXOnePar(Buffer const & buf, os, texrow, rp, font, running_font, basefont, outerfont, open_font, - running_change, + runningChangeType, *style, i, column, c); } } column += Changes::latexMarkChange(os, - running_change, Change::UNCHANGED, output); + runningChangeType, Change::UNCHANGED, output); // If we have an open font definition, we have to close it if (open_font) { @@ -1159,7 +1157,7 @@ string Paragraph::getID(Buffer const & buf, OutputParams const & runparams) cons InsetBase::Code lyx_code = inset->lyxCode(); if (lyx_code == InsetBase::LABEL_CODE) { string const id = static_cast(inset)->getContents(); - return "id=\"" + sgml::cleanID(buf, runparams, id) + "\""; + return "id='" + to_utf8(sgml::cleanID(buf, runparams, from_utf8(id))) + "'"; } } @@ -1179,14 +1177,8 @@ pos_type Paragraph::getFirstWord(Buffer const & buf, odocstream & os, OutputPara value_type c = getChar(i); if (c == ' ') break; - bool ws; - string str; - // FIXME UNICODE - // sgml::escapeChar takes a char, not lyx::char_type - boost::tie(ws, str) = sgml::escapeChar(c); - // FIXME UNICODE - os << from_ascii(str); - } + os << sgml::escapeChar(c); + } } return i; } @@ -1244,17 +1236,11 @@ void Paragraph::simpleDocBookOnePar(Buffer const & buf, inset->docbook(buf, os, runparams); } else { value_type c = getChar(i); - bool ws; - string str; - // FIXME UNICODE - // sgml::escapeChar takes a char, not lyx::char_type - boost::tie(ws, str) = sgml::escapeChar(c); if (style->pass_thru) os.put(c); else - // FIXME UNICODE - os << from_ascii(str); + os << sgml::escapeChar(c); } font_old = font; } @@ -1321,7 +1307,8 @@ bool Paragraph::isRightToLeftPar(BufferParams const & bparams) const 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); @@ -1405,7 +1392,6 @@ docstring const Paragraph::asString(Buffer const & buffer, 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) @@ -1422,12 +1408,6 @@ void Paragraph::setInsetOwner(InsetBase * inset) } -void Paragraph::setContentsFromPar(Paragraph const & par) -{ - pimpl_->setContentsFromPar(par); -} - - Change const Paragraph::lookupChange(pos_type pos) const { BOOST_ASSERT(pos <= size()); @@ -1453,15 +1433,15 @@ void Paragraph::setChange(pos_type pos, Change const & change) } -void Paragraph::acceptChange(pos_type start, pos_type end) +void Paragraph::acceptChanges(pos_type start, pos_type end) { - return pimpl_->acceptChange(start, end); + return pimpl_->acceptChanges(start, end); } -void Paragraph::rejectChange(pos_type start, pos_type end) +void Paragraph::rejectChanges(pos_type start, pos_type end) { - return pimpl_->rejectChange(start, end); + return pimpl_->rejectChanges(start, end); } @@ -1589,6 +1569,7 @@ char_type Paragraph::transformChar(char_type c, pos_type pos) const { 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;