#include "insets/insetlabel.h"
#include "insets/insetref.h"
#include "insets/inseturl.h"
-#include "insets/insetinfo.h"
+#include "insets/insetnote.h"
#include "insets/insetquotes.h"
#include "insets/insetlatexaccent.h"
#include "insets/insetbib.h"
#include "insets/insetmarginal.h"
#include "insets/insetminipage.h"
#include "insets/insetfloat.h"
-#include "insets/insetlist.h"
#include "insets/insettabular.h"
+#if 0
#include "insets/insettheorem.h"
+#include "insets/insetlist.h"
+#endif
#include "insets/insetcaption.h"
#include "insets/insetfloatlist.h"
+#include "support/textutils.h"
#include "support/filetools.h"
#include "support/path.h"
#include "support/os.h"
string path = OnlyPath(filename);
- if (lyxrc.use_tempdir || (IsDirWriteable(path) < 1))
+ if (lyxrc.use_tempdir || !IsDirWriteable(path))
path = tmppath;
string const fname = AddName(path,
string const bname =
AddName(path, OnlyFilename(
ChangeExtension(filename,
- formats.Extension("literate") + ".out")));
+ formats.extension("literate") + ".out")));
// If no Latex log or Build log is newer, show Build log
string last_inset_read;
+#ifndef NO_COMPABILITY
struct ErtComp
{
ErtComp() : active(false), in_tabular(false) {
std::stack<ErtComp> ert_stack;
ErtComp ert_comp;
-
+#endif
} // anon
-set<string> unknown_layouts;
+#warning And _why_ is this here? (Lgb)
+int unknown_layouts;
// candidate for move to BufferView
// (at least some parts in the beginning of the func)
// Returns false if "\the_end" is not read for formats >= 2.13. (Asger)
bool Buffer::readLyXformat2(LyXLex & lex, Paragraph * par)
{
- unknown_layouts.clear();
-#ifdef NO_LATEX
+ unknown_layouts = 0;
+#ifndef NO_COMPABILITY
ert_comp.contents.erase();
ert_comp.active = false;
ert_comp.in_tabular = false;
#endif
-
int pos = 0;
Paragraph::depth_type depth = 0;
bool the_end_read = false;
markDirty();
// We don't want to adopt the parameters from the
// document we insert, so we skip until the text begins:
- while (lex.IsOK()) {
+ while (lex.isOK()) {
lex.nextToken();
- string const pretoken = lex.GetString();
+ string const pretoken = lex.getString();
if (pretoken == "\\layout") {
lex.pushToken(pretoken);
break;
}
}
- while (lex.IsOK()) {
+ while (lex.isOK()) {
lex.nextToken();
- string const token = lex.GetString();
+ string const token = lex.getString();
if (token.empty()) continue;
paragraph = first_par;
- if (!unknown_layouts.empty()) {
- string list;
- for (set<string>::const_iterator it = unknown_layouts.begin();
- it != unknown_layouts.end(); ++it) {
- if (it != unknown_layouts.begin())
- list += ", ";
- list += *it;
- }
- WriteAlert(_("Textclass Loading Error!"),
- _("The following layouts are undefined:"),
- list+".");
+ if (unknown_layouts > 0) {
+ string s = _("Couldn't set the layout for ");
+ if (unknown_layouts == 1) {
+ s += _("one paragraph");
+ } else {
+ s += tostr(unknown_layouts);
+ s += _(" paragraphs");
+ }
+ WriteAlert(_("Textclass Loading Error!"), s,
+ _("When reading " + fileName()));
}
return the_end_read;
}
+#ifndef NO_COMPABILITY
void Buffer::insertErtContents(Paragraph * par, int & pos,
LyXFont const & font, bool set_inactive)
{
if (!ert_comp.contents.empty()) {
lyxerr[Debug::INSETS] << "ERT contents:\n"
<< ert_comp.contents << endl;
- Inset * inset = new InsetERT(ert_comp.contents);
+ Inset * inset = new InsetERT(ert_comp.contents, true);
par->insertInset(pos++, inset, font);
ert_comp.contents.erase();
}
ert_comp.active = false;
}
}
+#endif
bool
)
{
bool the_end_read = false;
+#ifndef NO_COMPABILITY
#ifndef NO_PEXTRA_REALLY
// This is super temporary but is needed to get the compability
// mode for minipages work correctly together with new tabulars.
static Paragraph * minipar;
static Paragraph * parBeforeMinipage;
#endif
-
+#endif
if (token[0] != '\\') {
-#ifdef NO_LATEX
+#ifndef NO_COMPABILITY
if (ert_comp.active) {
ert_comp.contents += token;
} else {
par->insertChar(pos, (*cit), font);
++pos;
}
- checkminipage = true;
-#ifdef NO_LATEX
+#ifndef NO_COMPABILITY
}
#endif
} else if (token == "\\i") {
par->insertInset(pos, inset, font);
++pos;
} else if (token == "\\layout") {
-#ifdef NO_LATEX
+#ifndef NO_COMPABILITY
ert_comp.in_tabular = false;
// Do the insetert.
insertErtContents(par, pos, font);
#endif
- lex.EatLine();
- string const layoutname = lex.GetString();
+ lex.eatLine();
+ string const layoutname = lex.getString();
pair<bool, LyXTextClass::LayoutList::size_type> pp
= textclasslist.NumberOfLayout(params.textclass,
layoutname);
-#ifdef NO_LATEX
+#ifndef NO_COMPABILITY
if (compare_no_case(layoutname, "latex") == 0) {
ert_comp.active = true;
}
// layout not found
// use default layout "Standard" (0)
par->layout = 0;
- unknown_layouts.insert(layoutname);
+ ++unknown_layouts;
+ string const s = _("Layout had to be changed from\n")
+ + layoutname + _(" to ")
+ + textclasslist.NameOfLayout(params.textclass, par->layout);
+ InsetError * new_inset = new InsetError(s);
+ par->insertInset(0, new_inset);
}
// Test whether the layout is obsolete.
LyXLayout const & layout =
}
#endif
+#ifndef NO_COMPABILITY
} else if (token == "\\begin_float") {
+ insertErtContents(par, pos, font);
+ //insertErtContents(par, pos, font, false);
+ //ert_stack.push(ert_comp);
+ //ert_comp = ErtComp();
+
// This is the compability reader. It can be removed in
// LyX version 1.3.0. (Lgb)
lex.next();
- string const tmptok = lex.GetString();
+ string const tmptok = lex.getString();
//lyxerr << "old float: " << tmptok << endl;
Inset * inset = 0;
}
if (!inset) {
+#ifndef NO_PEXTRA_REALLY
--call_depth;
+#endif
return false; // no end read yet
}
// This _is_ a hack! (Lgb)
while (true) {
lex.next();
- string const tmp = lex.GetString();
+ string const tmp = lex.getString();
if (tmp == "\\end_deeper") {
//lyxerr << "\\end_deeper caught!" << endl;
if (!depth) {
inset->read(this, nylex);
par->insertInset(pos, inset, font);
++pos;
+ insertErtContents(par, pos, font);
+#endif
} else if (token == "\\begin_deeper") {
++depth;
} else if (token == "\\end_deeper") {
} else if (token == "\\begin_preamble") {
params.readPreamble(lex);
} else if (token == "\\textclass") {
- lex.EatLine();
+ lex.eatLine();
pair<bool, LyXTextClassList::size_type> pp =
- textclasslist.NumberOfClass(lex.GetString());
+ textclasslist.NumberOfClass(lex.getString());
if (pp.first) {
params.textclass = pp.second;
} else {
WriteAlert(string(_("Textclass error")),
string(_("The document uses an unknown textclass \"")) +
- lex.GetString() + string("\"."),
+ lex.getString() + string("\"."),
string(_("LyX will not be able to produce output correctly.")));
params.textclass = 0;
}
params.textclass = 0;
}
} else if (token == "\\options") {
- lex.EatLine();
- params.options = lex.GetString();
+ lex.eatLine();
+ params.options = lex.getString();
} else if (token == "\\language") {
params.readLanguage(lex);
} else if (token == "\\fontencoding") {
- lex.EatLine();
+ lex.eatLine();
} else if (token == "\\inputencoding") {
- lex.EatLine();
- params.inputenc = lex.GetString();
+ lex.eatLine();
+ params.inputenc = lex.getString();
} else if (token == "\\graphics") {
params.readGraphicsDriver(lex);
} else if (token == "\\fontscheme") {
- lex.EatLine();
- params.fonts = lex.GetString();
+ lex.eatLine();
+ params.fonts = lex.getString();
} else if (token == "\\noindent") {
par->params().noindent(true);
} else if (token == "\\fill_top") {
} else if (token == "\\start_of_appendix") {
par->params().startOfAppendix(true);
} else if (token == "\\paragraph_separation") {
- int tmpret = lex.FindToken(string_paragraph_separation);
+ int tmpret = lex.findToken(string_paragraph_separation);
if (tmpret == -1) ++tmpret;
if (tmpret != LYX_LAYOUT_DEFAULT)
params.paragraph_separation =
static_cast<BufferParams::PARSEP>(tmpret);
} else if (token == "\\defskip") {
lex.nextToken();
- params.defskip = VSpace(lex.GetString());
+ params.defskip = VSpace(lex.getString());
} else if (token == "\\epsfig") { // obsolete
// Indeed it is obsolete, but we HAVE to be backwards
// compatible until 0.14, because otherwise all figures
// in existing documents are irretrivably lost. (Asger)
params.readGraphicsDriver(lex);
} else if (token == "\\quotes_language") {
- int tmpret = lex.FindToken(string_quotes_language);
+ int tmpret = lex.findToken(string_quotes_language);
if (tmpret == -1) ++tmpret;
if (tmpret != LYX_LAYOUT_DEFAULT) {
InsetQuotes::quote_language tmpl =
}
} else if (token == "\\quotes_times") {
lex.nextToken();
- switch (lex.GetInteger()) {
+ switch (lex.getInteger()) {
case 1:
params.quotes_times = InsetQuotes::SingleQ;
break;
break;
}
} else if (token == "\\papersize") {
- int tmpret = lex.FindToken(string_papersize);
+ int tmpret = lex.findToken(string_papersize);
if (tmpret == -1)
++tmpret;
else
params.papersize2 = tmpret;
} else if (token == "\\paperpackage") {
- int tmpret = lex.FindToken(string_paperpackages);
+ int tmpret = lex.findToken(string_paperpackages);
if (tmpret == -1) {
++tmpret;
params.paperpackage = BufferParams::PACKAGE_NONE;
params.paperpackage = tmpret;
} else if (token == "\\use_geometry") {
lex.nextToken();
- params.use_geometry = lex.GetInteger();
+ params.use_geometry = lex.getInteger();
} else if (token == "\\use_amsmath") {
lex.nextToken();
- params.use_amsmath = lex.GetInteger();
+ params.use_amsmath = lex.getInteger();
+ } else if (token == "\\use_natbib") {
+ lex.nextToken();
+ params.use_natbib = lex.getInteger();
+ } else if (token == "\\use_numerical_citations") {
+ lex.nextToken();
+ params.use_numerical_citations = lex.getInteger();
} else if (token == "\\paperorientation") {
- int tmpret = lex.FindToken(string_orientation);
+ int tmpret = lex.findToken(string_orientation);
if (tmpret == -1) ++tmpret;
if (tmpret != LYX_LAYOUT_DEFAULT)
params.orientation = static_cast<BufferParams::PAPER_ORIENTATION>(tmpret);
} else if (token == "\\paperwidth") {
lex.next();
- params.paperwidth = lex.GetString();
+ params.paperwidth = lex.getString();
} else if (token == "\\paperheight") {
lex.next();
- params.paperheight = lex.GetString();
+ params.paperheight = lex.getString();
} else if (token == "\\leftmargin") {
lex.next();
- params.leftmargin = lex.GetString();
+ params.leftmargin = lex.getString();
} else if (token == "\\topmargin") {
lex.next();
- params.topmargin = lex.GetString();
+ params.topmargin = lex.getString();
} else if (token == "\\rightmargin") {
lex.next();
- params.rightmargin = lex.GetString();
+ params.rightmargin = lex.getString();
} else if (token == "\\bottommargin") {
lex.next();
- params.bottommargin = lex.GetString();
+ params.bottommargin = lex.getString();
} else if (token == "\\headheight") {
lex.next();
- params.headheight = lex.GetString();
+ params.headheight = lex.getString();
} else if (token == "\\headsep") {
lex.next();
- params.headsep = lex.GetString();
+ params.headsep = lex.getString();
} else if (token == "\\footskip") {
lex.next();
- params.footskip = lex.GetString();
+ params.footskip = lex.getString();
} else if (token == "\\paperfontsize") {
lex.nextToken();
- params.fontsize = strip(lex.GetString());
+ params.fontsize = strip(lex.getString());
} else if (token == "\\papercolumns") {
lex.nextToken();
- params.columns = lex.GetInteger();
+ params.columns = lex.getInteger();
} else if (token == "\\papersides") {
lex.nextToken();
- switch (lex.GetInteger()) {
+ switch (lex.getInteger()) {
default:
case 1: params.sides = LyXTextClass::OneSide; break;
case 2: params.sides = LyXTextClass::TwoSides; break;
}
} else if (token == "\\paperpagestyle") {
lex.nextToken();
- params.pagestyle = strip(lex.GetString());
+ params.pagestyle = strip(lex.getString());
} else if (token == "\\bullet") {
lex.nextToken();
- int const index = lex.GetInteger();
+ int const index = lex.getInteger();
lex.nextToken();
- int temp_int = lex.GetInteger();
+ int temp_int = lex.getInteger();
params.user_defined_bullets[index].setFont(temp_int);
params.temp_bullets[index].setFont(temp_int);
lex.nextToken();
- temp_int = lex.GetInteger();
+ temp_int = lex.getInteger();
params.user_defined_bullets[index].setCharacter(temp_int);
params.temp_bullets[index].setCharacter(temp_int);
lex.nextToken();
- temp_int = lex.GetInteger();
+ temp_int = lex.getInteger();
params.user_defined_bullets[index].setSize(temp_int);
params.temp_bullets[index].setSize(temp_int);
lex.nextToken();
- string const temp_str = lex.GetString();
+ string const temp_str = lex.getString();
if (temp_str != "\\end_bullet") {
// this element isn't really necessary for
// parsing but is easier for humans
}
} else if (token == "\\bulletLaTeX") {
lex.nextToken();
- int const index = lex.GetInteger();
+ int const index = lex.getInteger();
lex.next();
- string temp_str = lex.GetString();
+ string temp_str = lex.getString();
string sum_str;
while (temp_str != "\\end_bullet") {
// this loop structure is needed when user
// therefore needs to be read in turn
sum_str += temp_str;
lex.next();
- temp_str = lex.GetString();
+ temp_str = lex.getString();
}
params.user_defined_bullets[index].setText(sum_str);
params.temp_bullets[index].setText(sum_str);
} else if (token == "\\secnumdepth") {
lex.nextToken();
- params.secnumdepth = lex.GetInteger();
+ params.secnumdepth = lex.getInteger();
} else if (token == "\\tocdepth") {
lex.nextToken();
- params.tocdepth = lex.GetInteger();
+ params.tocdepth = lex.getInteger();
} else if (token == "\\spacing") {
lex.next();
- string const tmp = strip(lex.GetString());
+ string const tmp = strip(lex.getString());
Spacing::Space tmp_space = Spacing::Default;
float tmp_val = 0.0;
if (tmp == "single") {
} else if (tmp == "other") {
lex.next();
tmp_space = Spacing::Other;
- tmp_val = lex.GetFloat();
+ tmp_val = lex.getFloat();
} else {
lex.printError("Unknown spacing token: '$$Token'");
}
}
} else if (token == "\\paragraph_spacing") {
lex.next();
- string const tmp = strip(lex.GetString());
+ string const tmp = strip(lex.getString());
if (tmp == "single") {
par->params().spacing(Spacing(Spacing::Single));
} else if (tmp == "onehalf") {
} else if (tmp == "other") {
lex.next();
par->params().spacing(Spacing(Spacing::Other,
- lex.GetFloat()));
+ lex.getFloat()));
} else {
lex.printError("Unknown spacing token: '$$Token'");
}
} else if (token == "\\float_placement") {
lex.nextToken();
- params.float_placement = lex.GetString();
+ params.float_placement = lex.getString();
} else if (token == "\\family") {
lex.next();
- font.setLyXFamily(lex.GetString());
+ font.setLyXFamily(lex.getString());
} else if (token == "\\series") {
lex.next();
- font.setLyXSeries(lex.GetString());
+ font.setLyXSeries(lex.getString());
} else if (token == "\\shape") {
lex.next();
- font.setLyXShape(lex.GetString());
+ font.setLyXShape(lex.getString());
} else if (token == "\\size") {
lex.next();
- font.setLyXSize(lex.GetString());
-#ifndef NO_LATEX
-#ifdef WITH_WARNINGS
-#warning compatability hack needed
-#endif
- } else if (token == "\\latex") {
- lex.next();
- string const tok = lex.GetString();
- // This is dirty, but gone with LyX3. (Asger)
- if (tok == "no_latex")
- font.setLatex(LyXFont::OFF);
- else if (tok == "latex")
- font.setLatex(LyXFont::ON);
- else if (tok == "default")
- font.setLatex(LyXFont::INHERIT);
- else
- lex.printError("Unknown LaTeX font flag "
- "`$$Token'");
-#else
+ font.setLyXSize(lex.getString());
+#ifndef NO_COMPABILITY
} else if (token == "\\latex") {
lex.next();
- string const tok = lex.GetString();
+ string const tok = lex.getString();
if (tok == "no_latex") {
// Do the insetert.
insertErtContents(par, pos, font);
#endif
} else if (token == "\\lang") {
lex.next();
- string const tok = lex.GetString();
+ string const tok = lex.getString();
Language const * lang = languages.getLanguage(tok);
if (lang) {
font.setLanguage(lang);
}
} else if (token == "\\numeric") {
lex.next();
- font.setNumber(font.setLyXMisc(lex.GetString()));
+ font.setNumber(font.setLyXMisc(lex.getString()));
} else if (token == "\\emph") {
lex.next();
- font.setEmph(font.setLyXMisc(lex.GetString()));
+ font.setEmph(font.setLyXMisc(lex.getString()));
} else if (token == "\\bar") {
lex.next();
- string const tok = lex.GetString();
+ string const tok = lex.getString();
// This is dirty, but gone with LyX3. (Asger)
if (tok == "under")
font.setUnderbar(LyXFont::ON);
"`$$Token'");
} else if (token == "\\noun") {
lex.next();
- font.setNoun(font.setLyXMisc(lex.GetString()));
+ font.setNoun(font.setLyXMisc(lex.getString()));
} else if (token == "\\color") {
lex.next();
- font.setLyXColor(lex.GetString());
+ font.setLyXColor(lex.getString());
} else if (token == "\\align") {
- int tmpret = lex.FindToken(string_align);
+ int tmpret = lex.findToken(string_align);
if (tmpret == -1) ++tmpret;
if (tmpret != LYX_LAYOUT_DEFAULT) { // tmpret != 99 ???
int const tmpret2 = int(pow(2.0, tmpret));
}
} else if (token == "\\added_space_top") {
lex.nextToken();
- par->params().spaceTop(VSpace(lex.GetString()));
+ par->params().spaceTop(VSpace(lex.getString()));
} else if (token == "\\added_space_bottom") {
lex.nextToken();
- par->params().spaceBottom(VSpace(lex.GetString()));
+ par->params().spaceBottom(VSpace(lex.getString()));
+#ifndef NO_COMPABILITY
#ifndef NO_PEXTRA_REALLY
} else if (token == "\\pextra_type") {
lex.nextToken();
- par->params().pextraType(lex.GetInteger());
+ par->params().pextraType(lex.getInteger());
} else if (token == "\\pextra_width") {
lex.nextToken();
- par->params().pextraWidth(lex.GetString());
+ par->params().pextraWidth(lex.getString());
} else if (token == "\\pextra_widthp") {
lex.nextToken();
- par->params().pextraWidthp(lex.GetString());
+ par->params().pextraWidthp(lex.getString());
} else if (token == "\\pextra_alignment") {
lex.nextToken();
- par->params().pextraAlignment(lex.GetInteger());
+ par->params().pextraAlignment(lex.getInteger());
} else if (token == "\\pextra_hfill") {
lex.nextToken();
- par->params().pextraHfill(lex.GetInteger());
+ par->params().pextraHfill(lex.getInteger());
} else if (token == "\\pextra_start_minipage") {
lex.nextToken();
- par->params().pextraStartMinipage(lex.GetInteger());
+ par->params().pextraStartMinipage(lex.getInteger());
+#endif
#endif
} else if (token == "\\labelwidthstring") {
- lex.EatLine();
- par->params().labelWidthString(lex.GetString());
+ lex.eatLine();
+ par->params().labelWidthString(lex.getString());
// do not delete this token, it is still needed!
} else if (token == "\\end_inset") {
lyxerr << "Solitary \\end_inset. Missing \\begin_inset?.\n"
// But insets should read it, it is a part of
// the inset isn't it? Lgb.
} else if (token == "\\begin_inset") {
-#ifdef NO_LATEX
+#ifndef NO_COMPABILITY
insertErtContents(par, pos, font, false);
ert_stack.push(ert_comp);
ert_comp = ErtComp();
#endif
readInset(lex, par, pos, font);
-#ifdef NO_LATEX
+#ifndef NO_COMPABILITY
ert_comp = ert_stack.top();
ert_stack.pop();
+ insertErtContents(par, pos, font);
#endif
} else if (token == "\\SpecialChar") {
LyXLayout const & layout =
// Insets don't make sense in a free-spacing context! ---Kayvan
if (layout.free_spacing) {
- if (lex.IsOK()) {
+ if (lex.isOK()) {
lex.next();
- string next_token = lex.GetString();
+ string next_token = lex.getString();
if (next_token == "\\-") {
par->insertChar(pos, '-', font);
} else if (next_token == "\\protected_separator"
}
++pos;
} else if (token == "\\newline") {
-#ifdef NO_LATEX
-
+#ifndef NO_COMPABILITY
if (!ert_comp.in_tabular && ert_comp.active) {
ert_comp.contents += char(Paragraph::META_NEWLINE);
} else {
++pos;
#endif
} else if (token == "\\LyXTable") {
-#ifdef NO_LATEX
+#ifndef NO_COMPABILITY
ert_comp.in_tabular = true;
#endif
Inset * inset = new InsetTabular(*this);
inset->read(this, lex);
par->insertInset(pos, inset, font);
++pos;
- // because of OLD_TABULAR_READ where tabulars have been
- // one paragraph.
- checkminipage = true;
} else if (token == "\\hfill") {
par->insertChar(pos, Paragraph::META_HFILL, font);
++pos;
}
par->bibkey->read(this, lex);
} else if (token == "\\backslash") {
-#ifdef NO_LATEX
+#ifndef NO_COMPABILITY
if (ert_comp.active) {
ert_comp.contents += "\\";
} else {
#endif
par->insertChar(pos, '\\', font);
++pos;
-#ifdef NO_LATEX
+#ifndef NO_COMPABILITY
}
#endif
} else if (token == "\\the_end") {
-#ifdef NO_LATEX
+#ifndef NO_COMPABILITY
// If we still have some ert active here we have to insert
// it so we don't loose it. (Lgb)
insertErtContents(par, pos, font);
#endif
the_end_read = true;
+#ifndef NO_COMPABILITY
+#ifndef NO_PEXTRA_REALLY
minipar = parBeforeMinipage = 0;
+#endif
+#endif
} else {
-#ifdef NO_LATEX
+#ifndef NO_COMPABILITY
if (ert_comp.active) {
ert_comp.contents += token;
} else {
par->insertChar(pos, (*cit), font);
++pos;
}
-#ifdef NO_LATEX
+#ifndef NO_COMPABILITY
}
#endif
}
+
+#ifndef NO_COMPABILITY
#ifndef NO_PEXTRA_REALLY
+ // I wonder if we could use this blanket fix for all the
+ // checkminipage cases...
+ if (par && par->size()) {
+ // It is possible that this will check to often,
+ // but that should not be an correctness issue.
+ // Only a speed issue.
+ checkminipage = true;
+ }
+
// now check if we have a minipage paragraph as at this
// point we already read all the necessary data!
// this cannot be done in layout because there we did
}
}
// End of pextra_minipage compability
-#endif
--call_depth;
+#endif
+#endif
return the_end_read;
}
+// needed to insert the selection
+void Buffer::insertStringAsLines(Paragraph *& par, Paragraph::size_type & pos,
+ LyXFont const & font,
+ string const & str) const
+{
+ LyXLayout const & layout = textclasslist.Style(params.textclass,
+ par->getLayout());
+ // insert the string, don't insert doublespace
+ bool space_inserted = true;
+ for(string::const_iterator cit = str.begin();
+ cit != str.end(); ++cit) {
+ if (*cit == '\n') {
+ if (par->size() || layout.keepempty) {
+ par->breakParagraph(params, pos,
+ layout.isEnvironment());
+ par = par->next();
+ pos = 0;
+ space_inserted = true;
+ } else {
+ continue;
+ }
+ // do not insert consecutive spaces if !free_spacing
+ } else if ((*cit == ' ' || *cit == '\t')
+ && space_inserted && !layout.free_spacing) {
+ continue;
+ } else if (*cit == '\t') {
+ if (!layout.free_spacing) {
+ // tabs are like spaces here
+ par->insertChar(pos, ' ', font);
+ ++pos;
+ space_inserted = true;
+ } else {
+ const Paragraph::value_type nb = 8 - pos % 8;
+ for (Paragraph::size_type a = 0;
+ a < nb ; ++a) {
+ par->insertChar(pos, ' ', font);
+ ++pos;
+ }
+ space_inserted = true;
+ }
+ } else if (!IsPrintable(*cit)) {
+ // Ignore unprintables
+ continue;
+ } else {
+ // just insert the character
+ par->insertChar(pos, *cit, font);
+ ++pos;
+ space_inserted = (*cit == ' ');
+ }
+
+ }
+}
+
void Buffer::readInset(LyXLex & lex, Paragraph *& par,
int & pos, LyXFont & font)
{
// consistency check
- if (lex.GetString() != "\\begin_inset") {
+ if (lex.getString() != "\\begin_inset") {
lyxerr << "Buffer::readInset: Consistency check failed."
<< endl;
}
Inset * inset = 0;
lex.next();
- string const tmptok = lex.GetString();
+ string const tmptok = lex.getString();
last_inset_read = tmptok;
// test the different insets
string const cmdName = inscmd.getCmdName();
- if (cmdName == "cite") {
+ // This strange command allows LyX to recognize "natbib" style
+ // citations: citet, citep, Citet etc.
+ if (compare_no_case(cmdName, "cite", 4) == 0) {
inset = new InsetCitation(inscmd);
} else if (cmdName == "bibitem") {
lex.printError("Wrong place for bibitem");
inset = new InsetParent(inscmd, *this);
}
} else {
+ bool alreadyread = false;
if (tmptok == "Quotes") {
inset = new InsetQuotes;
} else if (tmptok == "External") {
inset = new InsetFormulaMacro;
} else if (tmptok == "Formula") {
inset = new InsetFormula;
- } else if (tmptok == "Figure") {
+ } else if (tmptok == "Figure") { // Backward compatibility
inset = new InsetFig(100, 100, *this);
- } else if (tmptok == "Info") {
- inset = new InsetInfo;
+ //inset = new InsetGraphics;
+ } else if (tmptok == "Graphics") {
+ inset = new InsetGraphics;
+ } else if (tmptok == "Info") {// backwards compatibility
+ inset = new InsetNote(this,
+ lex.getLongString("\\end_inset"),
+ true);
+ alreadyread = true;
+ } else if (tmptok == "Note") {
+ inset = new InsetNote;
} else if (tmptok == "Include") {
InsetCommandParams p( "Include" );
inset = new InsetInclude(p, *this);
inset = new InsetMinipage;
} else if (tmptok == "Float") {
lex.next();
- string tmptok = lex.GetString();
+ string tmptok = lex.getString();
inset = new InsetFloat(tmptok);
+#if 0
} else if (tmptok == "List") {
inset = new InsetList;
} else if (tmptok == "Theorem") {
inset = new InsetList;
+#endif
} else if (tmptok == "Caption") {
inset = new InsetCaption;
- } else if (tmptok == "GRAPHICS") {
- inset = new InsetGraphics;
} else if (tmptok == "FloatList") {
inset = new InsetFloatList;
}
- if (inset) inset->read(this, lex);
+ if (inset && !alreadyread) inset->read(this, lex);
}
if (inset) {
bool Buffer::readFile(LyXLex & lex, Paragraph * par)
{
- if (lex.IsOK()) {
+ if (lex.isOK()) {
lex.next();
- string const token(lex.GetString());
+ string const token(lex.getString());
if (token == "\\lyxformat") { // the first token _must_ be...
- lex.EatLine();
- string tmp_format = lex.GetString();
+ lex.eatLine();
+ string tmp_format = lex.getString();
//lyxerr << "LyX Format: `" << tmp_format << "'" << endl;
// if present remove ".," from string.
string::size_type dot = tmp_format.find_first_of(".,");
lyxerr << "Should this ever happen?" << endl;
}
-#ifndef NO_LATEX
- LyXFont const font1 = LyXFont(LyXFont::ALL_INHERIT, params.language);
-#endif
for (Paragraph::size_type i = 0; i < par->size(); ++i) {
if (!i && !noparbreak) {
if (linelen > 0)
currlinelen += (ltype_depth-depth)*2;
}
}
-#ifndef NO_LATEX
- LyXFont const font2 = par->getFontSettings(params, i);
- if (font1.latex() != font2.latex()) {
- if (font2.latex() == LyXFont::OFF)
- islatex = 0;
- else
- islatex = 1;
- } else {
- islatex = 0;
- }
-#endif
char c = par->getUChar(params, i);
if (islatex)
LyXFont::FONT_SHAPE shape_type = LyXFont::UP_SHAPE;
bool is_em = false;
- stack < PAR_TAG > tag_state;
+ stack<PAR_TAG> tag_state;
// parsing main loop
for (Paragraph::size_type i = 0; i < par->size(); ++i) {
continue;
}
- if (
-#ifndef NO_LATEX
- font.latex() == LyXFont::ON ||
-#endif
- style.latexparam() == "CDATA") {
+ if (style.latexparam() == "CDATA") {
// "TeX"-Mode on == > SGML-Mode on.
if (c != '\0')
os << c;
else
os << tmp_out;
}
-#ifndef NO_LATEX
- } else if (font.latex() == LyXFont::ON) {
- // "TeX"-Mode on ==> SGML-Mode on.
- if (c != '\0')
- os << c;
- ++char_line_count;
-#endif
} else {
string sgml_string;
if (par->linuxDocConvertChar(c, sgml_string)
string path = OnlyPath(filename);
string const org_path = path;
- if (lyxrc.use_tempdir || (IsDirWriteable(path) < 1)) {
+ if (lyxrc.use_tempdir || !IsDirWriteable(path)) {
path = tmppath;
}
// error insets after we ran chktex, this must be run:
if (removedErrorInsets || res){
users->redraw();
- users->fitCursor(users->text);
+ users->fitCursor();
}
users->owner()->allowInput();
textclasslist.TextClass(params.textclass);
// AMS Style is at document level
-
features.amsstyle = (params.use_amsmath ||
tclass.provides(LyXTextClass::amsmath));
void Buffer::redraw()
{
users->redraw();
- users->fitCursor(users->text);
+ users->fitCursor();
}