int tex_code_break_column = 72; // needs non-zero initialization. set later.
// this is a bad idea, but how can LyXParagraph find its buffer to get
// parameters? (JMarc)
-extern BufferView * current_view;
-extern string bibitemWidest(BufferView *);
+
+extern string bibitemWidest(Buffer const *);
// this is a minibuffer
static char minibuffer_char;
static Inset * minibuffer_inset;
+extern BufferView * current_view;
+
// Initialization of the counter for the paragraph id's,
// declared in lyxparagraph.h
unsigned int LyXParagraph::paragraph_id = 0;
LyXParagraph::LyXParagraph()
{
+#ifndef HAVE_ROPE
text.reserve(500); // is this number too big?
-
+#endif
for (int i = 0; i < 10; ++i) setCounter(i , 0);
appendix = false;
enumdepth = 0;
// This konstruktor inserts the new paragraph in a list.
LyXParagraph::LyXParagraph(LyXParagraph * par)
{
+#ifndef HAVE_ROPE
text.reserve(500);
- par->text.resize(par->text.size());
-
+#endif
+ par->fitToSize();
+
for (int i = 0; i < 10; ++i) setCounter(i, 0);
appendix = false;
enumdepth = 0;
if (bibkey)
bibkey->Write(buf, os);
- LyXFont font1(LyXFont::ALL_INHERIT, params.language_info);
+ LyXFont font1(LyXFont::ALL_INHERIT, params.language);
int column = 0;
for (size_type i = 0; i < size(); ++i) {
font1 = font2;
}
- value_type c = GetChar(i);
+ value_type const c = GetChar(i);
switch (c) {
case META_INSET:
{
features.layout[GetLayout()] = true;
// then the fonts
- Language const * doc_language = params.language_info;
+ Language const * doc_language = params.language;
for (FontList::const_iterator cit = fontlist.begin();
cit != fontlist.end(); ++cit) {
}
Language const * language = (*cit).font.language();
- if (language != doc_language) {
+ if (language->babel() != doc_language->babel()) {
features.UsedLanguages.insert(language);
lyxerr[Debug::LATEX] << "Found language "
- << language->lang() << endl;
+ << language->babel() << endl;
}
}
// First few functions needed for cut and paste and paragraph breaking.
-void LyXParagraph::CopyIntoMinibuffer(BufferParams const & bparams,
+void LyXParagraph::CopyIntoMinibuffer(Buffer const & buffer,
LyXParagraph::size_type pos) const
{
+ BufferParams bparams = buffer.params;
+
minibuffer_char = GetChar(pos);
minibuffer_font = GetFontSettings(bparams, pos);
minibuffer_inset = 0;
if (minibuffer_char == LyXParagraph::META_INSET) {
if (GetInset(pos)) {
- minibuffer_inset = GetInset(pos)->Clone();
+ minibuffer_inset = GetInset(pos)->Clone(buffer);
} else {
minibuffer_inset = 0;
minibuffer_char = ' ';
insetlist.erase(it);
}
}
+#ifndef HAVE_ROPE
text.erase(text.begin() + pos);
-
+#else
+ text.erase(text.mutable_begin() + pos);
+#endif
// Erase entries in the tables.
FontTable search_font(pos, LyXFont());
search_font, matchFT());
if (it != fontlist.end() && (*it).pos == pos &&
(pos == 0 ||
- (it != fontlist.begin() && (*(it-1)).pos == pos - 1))) {
+ (it != fontlist.begin() && (*(it - 1)).pos == pos - 1))) {
// If it is a multi-character font
// entry, we just make it smaller
// (see update below), otherwise we
// should delete it.
- unsigned int i = it - fontlist.begin();
+ unsigned int const i = it - fontlist.begin();
fontlist.erase(fontlist.begin() + i);
it = fontlist.begin() + i;
if (i > 0 && i < fontlist.size() &&
- fontlist[i-1].font == fontlist[i].font) {
- fontlist.erase(fontlist.begin() + i-1);
- it = fontlist.begin() + i-1;
+ fontlist[i - 1].font == fontlist[i].font) {
+ fontlist.erase(fontlist.begin() + i - 1);
+ it = fontlist.begin() + i - 1;
}
}
void LyXParagraph::InsertChar(LyXParagraph::size_type pos,
LyXParagraph::value_type c)
{
- LyXFont f(LyXFont::ALL_INHERIT);
+ LyXFont const f(LyXFont::ALL_INHERIT);
InsertChar(pos, c, f);
}
#else
Assert(pos <= size());
#endif
+#ifndef HAVE_ROPE
text.insert(text.begin() + pos, c);
+#else
+ text.insert(pos, c);
+#endif
// Update the font table.
FontTable search_font(pos, LyXFont());
for (FontList::iterator it = lower_bound(fontlist.begin(),
void LyXParagraph::InsertInset(LyXParagraph::size_type pos,
Inset * inset)
{
- LyXFont f(LyXFont::ALL_INHERIT);
+ LyXFont const f(LyXFont::ALL_INHERIT);
InsertInset(pos, inset, f);
}
"position does not exist. "
<< pos << " (" << static_cast<int>(pos)
<< ")" << endl;
- }
- else if (pos > 0) {
+ } else if (pos > 0) {
return GetFontSettings(bparams, pos - 1);
}
#else
//return LyXFont(LyXFont::ALL_INHERIT);
}
+
// Gets uninstantiated font setting at position 0
LyXFont const LyXParagraph::GetFirstFontSettings() const
{
bool end = !notfound && fontlist[i].pos == pos;
// Is position pos is the end of a font block?
if (begin && end) { // A single char block
- if (i+1 < fontlist.size() &&
- fontlist[i+1].font == font) {
+ if (i + 1 < fontlist.size() &&
+ fontlist[i + 1].font == font) {
// Merge the singleton block with the next block
fontlist.erase(fontlist.begin() + i);
- if (i > 0 && fontlist[i-1].font == font)
+ if (i > 0 && fontlist[i - 1].font == font)
fontlist.erase(fontlist.begin() + i-1);
- } else if (i > 0 && fontlist[i-1].font == font) {
+ } else if (i > 0 && fontlist[i - 1].font == font) {
// Merge the singleton block with the previous block
- fontlist[i-1].pos = pos;
+ fontlist[i - 1].pos = pos;
fontlist.erase(fontlist.begin() + i);
} else
fontlist[i].font = font;
} else if (begin) {
- if (i > 0 && fontlist[i-1].font == font)
- fontlist[i-1].pos = pos;
+ if (i > 0 && fontlist[i - 1].font == font)
+ fontlist[i - 1].pos = pos;
else
fontlist.insert(fontlist.begin() + i,
FontTable(pos, font));
} else if (end) {
fontlist[i].pos = pos - 1;
- if (!(i+1 < fontlist.size() &&
- fontlist[i+1].font == font))
- fontlist.insert(fontlist.begin() + i+1,
+ if (!(i + 1 < fontlist.size() &&
+ fontlist[i + 1].font == font))
+ fontlist.insert(fontlist.begin() + i + 1,
FontTable(pos, font));
} else { // The general case. The block is splitted into 3 blocks
fontlist.insert(fontlist.begin() + i,
FontTable(pos - 1, fontlist[i].font));
- fontlist.insert(fontlist.begin() + i+1, FontTable(pos, font));
+ fontlist.insert(fontlist.begin() + i + 1,
+ FontTable(pos, font));
}
}
if (tmp->InsertFromMinibuffer(j - pos))
++j;
}
- tmp->text.resize(tmp->text.size());
+
+ tmp->fitToSize();
+
for (i = pos_end; i >= pos; --i)
par->Erase(i - pos_first);
- par->text.resize(par->text.size());
+ par->fitToSize();
#else
size_type pos_end = text.size() - 1;
// ale970302
if (bibkey)
- result->bibkey = static_cast<InsetBibKey *>(bibkey->Clone());
+ result->bibkey = static_cast<InsetBibKey *>
+ (bibkey->Clone(*current_view->buffer()));
else
result->bibkey = 0;
result->insetlist = insetlist;
for (InsetList::iterator it = result->insetlist.begin();
it != result->insetlist.end(); ++it)
- (*it).inset = (*it).inset->Clone();
+ (*it).inset = (*it).inset->Clone(*current_view->buffer());
return result;
}
if (tmp->InsertFromMinibuffer(j - pos))
++j;
}
- tmp->text.resize(tmp->text.size());
+
+ tmp->fitToSize();
+
for (size_type i = pos_end; i >= pos; --i)
par->Erase(i - pos_first);
- par->text.resize(par->text.size());
+ par->fitToSize();
}
#else
// create a new paragraph
if (endlabeltype != END_LABEL_NO_LABEL) {
LyXParagraph const * last = this;
#ifndef NEW_INSETS
- if( footnoteflag == NO_FOOTNOTE)
+ if (footnoteflag == NO_FOOTNOTE)
last = LastPhysicalPar();
else if (next->footnoteflag == NO_FOOTNOTE)
return endlabeltype;
}
if ((par->pextra_type == PEXTRA_NONE) &&
npar && (npar->pextra_type != PEXTRA_NONE)) {
- string
- p1 = npar->pextra_width,
- p2 = npar->pextra_widthp;
+ string const p1 = npar->pextra_width;
+ string const p2 = npar->pextra_widthp;
npar->SetPExtraType(bparams, npar->pextra_type,
p1, p2);
}
#endif
}
if (ppar && (ppar->pextra_type != PEXTRA_NONE)) {
- string
- p1 = ppar->pextra_width,
- p2 = ppar->pextra_widthp;
+ string const p1 = ppar->pextra_width;
+ string const p2 = ppar->pextra_widthp;
ppar->SetPExtraType(bparams, ppar->pextra_type,
p1, p2);
}
if ((par->pextra_type == PEXTRA_NONE) &&
npar && (npar->pextra_type != PEXTRA_NONE)) {
- string
- p1 = npar->pextra_width,
- p2 = npar->pextra_widthp;
+ string const p1 = npar->pextra_width;
+ string const p2 = npar->pextra_widthp;
npar->SetPExtraType(bparams, npar->pextra_type,
p1, p2);
}
&& GetChar(i) != LyXParagraph::META_NEWLINE
) {
++i;
- char previous_char = 0, temp = 0;
+ char previous_char = 0;
+ char temp = 0;
if (i < size()
&& (previous_char = GetChar(i)) != LyXParagraph::META_NEWLINE) {
// Yes, this ^ is supposed to be "= " not "=="
// Think about footnotes.
if (footnoteflag == LyXParagraph::NO_FOOTNOTE
&& next && next->footnoteflag == LyXParagraph::CLOSED_FOOTNOTE) {
- int further =
+ int const further =
NextAfterFootnote()->GetPositionOfInset(inset);
if (further != -1)
return text.size() + 1 + further;
}
Language const * language = getParLanguage(bparams);
- Language const * doc_language = bparams.language_info;
+ Language const * doc_language = bparams.language;
Language const * previous_language = previous
? previous->getParLanguage(bparams) : doc_language;
- if (language != doc_language && language != previous_language) {
+ if (language->babel() != doc_language->babel() &&
+ language->babel() != previous_language->babel()) {
os << subst(lyxrc.language_command_begin, "$$lang",
- language->lang())
+ language->babel())
<< endl;
texrow.newline();
}
? GetFontSettings(bparams,
size()-1).isRightToLeft()
: language->RightToLeft();
- if ( (p = NextAfterFootnote()) != 0 &&
+ if ((p = NextAfterFootnote()) != 0 &&
p->size() > 0 &&
p->GetFontSettings(bparams, 0).isRightToLeft() != is_rtl)
is_rtl = getParLanguage(bparams)->RightToLeft();
os << "{\\" << font.latexSize() << " \\par}";
}
- if (language != doc_language &&
+ if (language->babel() != doc_language->babel() &&
(!par
#ifndef NEW_INSETS
|| (footnoteflag != NO_FOOTNOTE && par->footnoteflag != footnoteflag)
#endif
- || par->getParLanguage(bparams) != language)) {
+ || par->getParLanguage(bparams)->babel() != language->babel())) {
os << endl
<< subst(lyxrc.language_command_end, "$$lang",
- doc_language->lang());
+ doc_language->babel());
}
switch (style.latextype) {
break;
default:
// we don't need it for the last paragraph!!!
- if (next
-#ifndef NEW_INSETS
- && !( footnoteflag != LyXParagraph::NO_FOOTNOTE
- && footnotekind != LyXParagraph::FOOTNOTE
- && footnotekind != LyXParagraph::MARGIN)
-#endif
- ) {
- // don't insert this if we would be adding it
- // before or after a table in a float. This
- // little trick is needed in order to allow
- // use of tables in \subfigures or \subtables.
+ if (next) {
os << '\n';
texrow.newline();
}
case LYX_ALIGN_SPECIAL:
break;
case LYX_ALIGN_LEFT:
- if (getParLanguage(bparams)->lang() != "hebrew") {
+ if (getParLanguage(bparams)->babel() != "hebrew") {
os << "\\raggedright ";
column+= 13;
} else {
}
break;
case LYX_ALIGN_RIGHT:
- if (getParLanguage(bparams)->lang() != "hebrew") {
+ if (getParLanguage(bparams)->babel() != "hebrew") {
os << "\\raggedleft ";
column+= 12;
} else {
Inset * inset = GetInset(i);
if (inset) {
bool close = false;
- int len = os.tellp();
+ int const len = os.tellp();
if ((inset->LyxCode() == Inset::GRAPHICS_CODE
|| inset->LyxCode() == Inset::MATH_CODE
|| inset->LyxCode() == Inset::URL_CODE)
}
// Otherwise, we use what LaTeX
// provides us.
- switch(c) {
+ switch (c) {
case '<':
os << "\\textless{}";
column += 10;
texrow.newline();
}
os << "\\begin{minipage}";
- switch(pextra_alignment) {
+ switch (pextra_alignment) {
case MINIPAGE_ALIGN_TOP:
os << "[t]";
break;
} else if (style.labeltype == LABEL_BIBLIO) {
// ale970405
os << "\\begin{" << style.latexname() << "}{"
- << bibitemWidest(current_view)
+ << bibitemWidest(buf)
<< "}\n";
} else if (style.latextype == LATEX_ITEM_ENVIRONMENT) {
#ifdef FANCY_FOOTNOTE_CODE
texrow.newline();
}
os << "\\begin{minipage}";
- switch(par->pextra_alignment) {
+ switch (par->pextra_alignment) {
case MINIPAGE_ALIGN_TOP:
os << "[t]";
break;
"Footnote in a Footnote -- not supported"
<< endl;
}
-//#ifndef HAVE_OSTREAM
-// delete [] dummy.str();
-//#endif
}
switch (footnotekind) {
/// Used by the spellchecker
bool LyXParagraph::IsLetter(LyXParagraph::size_type pos) const
{
- value_type c = GetChar(pos);
+ value_type const c = GetChar(pos);
if (IsLetterChar(c))
return true;
// '\0' is not a letter, allthough every string contains "" (below)
- if( c == '\0')
+ if (c == '\0')
return false;
// We want to pass the ' and escape chars to ispell
- string extra = lyxrc.isp_esc_chars + '\'';
+ string const extra = lyxrc.isp_esc_chars + '\'';
char ch[2] = { c, 0 };
return contains(extra, ch);
}
else
#endif
if (size() > 0) {
+#ifdef DO_USE_DEFAULT_LANGUAGE
Language const * lang = GetFirstFontSettings().language();
- if (lang->lang() == default_language->lang())
- return bparams.language_info;
+ if (lang->lang() == "default")
+ return bparams.language;
return lang;
+#else
+ return GetFirstFontSettings().language();
+#endif
} else if (previous)
return previous->getParLanguage(bparams);
-
- return bparams.language_info;
+ else
+ return bparams.language;
}
void LyXParagraph::ChangeLanguage(BufferParams const & bparams,
Language const * from, Language const * to)
{
- for(size_type i = 0; i < size(); ++i) {
+ for (size_type i = 0; i < size(); ++i) {
LyXFont font = GetFontSettings(bparams, i);
if (font.language() == from) {
font.setLanguage(to);
bool LyXParagraph::isMultiLingual(BufferParams const & bparams)
{
- Language const * doc_language = bparams.language_info;
+ Language const * doc_language = bparams.language;
for (FontList::const_iterator cit = fontlist.begin();
cit != fontlist.end(); ++cit)
if ((*cit).font.language() != doc_language)
if (label && !labelstring.empty())
#endif
s += labelstring + ' ';
- string::size_type len = s.size();
+ string::size_type const len = s.size();
for (LyXParagraph::size_type i = 0; i < size(); ++i) {
value_type c = GetChar(i);
GetInset(i)->LyxCode() == Inset::MATH_CODE) {
std::ostringstream ost;
GetInset(i)->Ascii(buffer, ost);
- s += subst(ost.str(),'\n',' ');
+ s += subst(ost.str().c_str(),'\n',' ');
}
}
else if (c == META_INSET) {
std::ostringstream ost;
GetInset(i)->Ascii(buffer, ost);
- s += ost.str();
+ s += ost.str().c_str();
}
}