MathAccentInset rewritten

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@2215 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
André Pönitz 2001-07-10 13:17:43 +00:00
parent 4124b05c9f
commit 88b5d739b5
8 changed files with 126 additions and 317 deletions

View File

@ -1,4 +1,12 @@
2001-07-04 André Pönitz <poenitz@htwm.de>
2001-07-10 André Pönitz <poenitz@htwm.de>
* math_accentinset.[hC]: rewrite
* math_parser.C:
math_cursor.C: subsequent changes
2001-07-10 André Pönitz <poenitz@htwm.de>
* math_grid.C: <Delete> in the first cell of a completely empty row * math_grid.C: <Delete> in the first cell of a completely empty row
deletes that row, <C-Return> places the cursor in the first of the deletes that row, <C-Return> places the cursor in the first of the

View File

@ -39,7 +39,6 @@
#include "font.h" #include "font.h"
#include "math_arrayinset.h" #include "math_arrayinset.h"
#include "math_spaceinset.h" #include "math_spaceinset.h"
#include "math_deliminset.h"
#include "support/lyxlib.h" #include "support/lyxlib.h"
#include "mathed/support.h" #include "mathed/support.h"
#include "undo_funcs.h" #include "undo_funcs.h"
@ -78,6 +77,18 @@ void handleFont(BufferView * bv, MathTextCodes t)
mathcursor->handleFont(t); mathcursor->handleFont(t);
} }
void handleAccent(BufferView * bv, int code)
{
bv->lockedInsetStoreUndo(Undo::EDIT);
mathcursor->handleAccent(code);
}
void handleDelim(BufferView * bv, int l, int r)
{
bv->lockedInsetStoreUndo(Undo::EDIT);
mathcursor->handleDelim(l, r);
}
bool openNewInset(BufferView * bv, UpdatableInset * new_inset) bool openNewInset(BufferView * bv, UpdatableInset * new_inset)
{ {
LyXText * lt = bv->getLyXText(); LyXText * lt = bv->getLyXText();
@ -92,6 +103,7 @@ bool openNewInset(BufferView * bv, UpdatableInset * new_inset)
return true; return true;
} }
} // namespaces } // namespaces
@ -621,16 +633,16 @@ InsetFormulaBase::localDispatch(BufferView * bv, kb_action action,
// --- accented characters ------------------------------ // --- accented characters ------------------------------
case LFUN_UMLAUT: mathcursor->setAccent(LM_ddot); break; case LFUN_UMLAUT: handleAccent(bv, LM_ddot); break;
case LFUN_CIRCUMFLEX: mathcursor->setAccent(LM_hat); break; case LFUN_CIRCUMFLEX: handleAccent(bv, LM_hat); break;
case LFUN_GRAVE: mathcursor->setAccent(LM_grave); break; case LFUN_GRAVE: handleAccent(bv, LM_grave); break;
case LFUN_ACUTE: mathcursor->setAccent(LM_acute); break; case LFUN_ACUTE: handleAccent(bv, LM_acute); break;
case LFUN_TILDE: mathcursor->setAccent(LM_tilde); break; case LFUN_TILDE: handleAccent(bv, LM_tilde); break;
case LFUN_MACRON: mathcursor->setAccent(LM_bar); break; case LFUN_MACRON: handleAccent(bv, LM_bar); break;
case LFUN_DOT: mathcursor->setAccent(LM_dot); break; case LFUN_DOT: handleAccent(bv, LM_dot); break;
case LFUN_CARON: mathcursor->setAccent(LM_check); break; case LFUN_CARON: handleAccent(bv, LM_check); break;
case LFUN_BREVE: mathcursor->setAccent(LM_breve); break; case LFUN_BREVE: handleAccent(bv, LM_breve); break;
case LFUN_VECTOR: mathcursor->setAccent(LM_vec); break; case LFUN_VECTOR: handleAccent(bv, LM_vec); break;
// Greek mode // Greek mode
case LFUN_GREEK: case LFUN_GREEK:
@ -735,16 +747,7 @@ InsetFormulaBase::localDispatch(BufferView * bv, kb_action action,
} else if (vdelim.find(rt[0]) != string::npos) } else if (vdelim.find(rt[0]) != string::npos)
irt = rt[0]; irt = rt[0];
if (mathcursor->selection) { handleDelim(bv, ilt, irt);
MathDelimInset * p = new MathDelimInset(ilt, irt);
MathArray ar;
mathcursor->selArray(ar);
lyxerr << "selarray: " << ar << "\n";
p->cell(0) = ar;
mathcursor->insert(p);
} else {
mathcursor->insert(new MathDelimInset(ilt, irt));
}
updateLocal(bv); updateLocal(bv);
break; break;
} }
@ -843,16 +846,11 @@ InsetFormulaBase::localDispatch(BufferView * bv, kb_action action,
default: default:
if ((action == -1 || action == LFUN_SELFINSERT) && !arg.empty()) { if ((action == -1 || action == LFUN_SELFINSERT) && !arg.empty()) {
unsigned char c = arg[0]; unsigned char c = arg[0];
lyxerr << "char: '" << c << "' int: " << int(c) << endl; //lyxerr << "char: '" << c << "' int: " << int(c) << endl;
//owner_->getIntl()->getTrans().TranslateAndInsert(c, lt); //owner_->getIntl()->getTrans().TranslateAndInsert(c, lt);
lyxerr << "trans: '" << c << "' int: " << int(c) << endl; //lyxerr << "trans: '" << c << "' int: " << int(c) << endl;
bv->lockedInsetStoreUndo(Undo::INSERT); bv->lockedInsetStoreUndo(Undo::INSERT);
if (c == ' ' && mathcursor->getAccent() == LM_hat) {
c = '^';
mathcursor->setAccent(0);
}
if (c == 0) { // Dead key, do nothing if (c == 0) { // Dead key, do nothing
//lyxerr << "deadkey" << endl; //lyxerr << "deadkey" << endl;
break; break;

View File

@ -7,60 +7,24 @@
using std::ostream; using std::ostream;
MathAccentInset::MathAccentInset(byte cx, MathTextCodes f, int cd) MathAccentInset::MathAccentInset(int f)
: MathInset(1), c(cx), fn(f), code(cd), inset(0) : MathInset(1), code(f)
{} {}
MathAccentInset::MathAccentInset(MathInset * ins, int cd)
: MathInset(0), c(0), fn(LM_TC_MIN), code(cd), inset(ins)
{}
MathAccentInset::~MathAccentInset()
{
delete inset;
}
MathInset * MathAccentInset::clone() const MathInset * MathAccentInset::clone() const
{ {
MathAccentInset * p; return new MathAccentInset(*this);
if (inset)
p = new MathAccentInset(inset->clone(), code);
else
p = new MathAccentInset(c, fn, code);
return p;
} }
void MathAccentInset::draw(Painter & pain, int x, int y)
{
int const dw = width() - 2;
if (inset)
inset->draw(pain, x, y);
else
drawChar(pain, fn, size(), x, y, c);
x += (code == LM_not) ? (width() - dw) / 2 : 2;
mathed_draw_deco(pain, x, y - dy, dw, dh, code);
}
void MathAccentInset::Metrics(MathStyles st) void MathAccentInset::Metrics(MathStyles st)
{ {
if (inset) { xcell(0).Metrics(st);
inset->Metrics(st); ascent_ = xcell(0).ascent();
ascent_ = inset->ascent(); descent_ = xcell(0).descent();
descent_ = inset->descent(); width_ = xcell(0).width();
width_ = inset->width(); dh = 5;
dh = ascent_;
} else {
mathed_char_dim(fn, size(), c, ascent_, descent_, width_);
dh = width() / 2 - 1;
}
if (code == LM_not) { if (code == LM_not) {
ascent_ += dh; ascent_ += dh;
descent_ += dh; descent_ += dh;
@ -69,8 +33,14 @@ void MathAccentInset::Metrics(MathStyles st)
ascent_ += dh + 2; ascent_ += dh + 2;
dy = ascent_; dy = ascent_;
// if (MathIsBinary(fn)) }
// width += 2*mathed_char_width(fn, size, ' ');
void MathAccentInset::draw(Painter & pain, int x, int y)
{
int const dw = width() - 2;
xcell(0).draw(pain, x, y);
x += (code == LM_not) ? (width() - dw) / 2 : 2;
mathed_draw_deco(pain, x, y - dy, dw, dh, code);
} }
@ -78,28 +48,14 @@ void MathAccentInset::Write(ostream & os, bool fragile) const
{ {
latexkeys const * l = lm_get_key_by_id(code, LM_TK_ACCENT); latexkeys const * l = lm_get_key_by_id(code, LM_TK_ACCENT);
os << '\\' << l->name; os << '\\' << l->name;
if (code!= LM_not) if (code == LM_not)
os << '{';
else
os << ' '; os << ' ';
else
os << '{';
if (inset) cell(0).Write(os, fragile);
inset->Write(os, fragile);
else {
if (fn>= LM_TC_RM && fn <= LM_TC_TEXTRM)
os << '\\' << math_font_name[fn - LM_TC_RM] << '{';
if (MathIsSymbol(fn)) {
latexkeys const * l = lm_get_key_by_id(c, LM_TK_SYM);
if (l)
os << '\\' << l->name << ' ';
} else
os << char(c);
if (fn>= LM_TC_RM && fn<= LM_TC_TEXTRM) if (code != LM_not)
os << '}';
}
if (code!= LM_not)
os << '}'; os << '}';
} }
@ -109,23 +65,7 @@ void MathAccentInset::WriteNormal(ostream & os) const
latexkeys const * l = lm_get_key_by_id(code, LM_TK_ACCENT); latexkeys const * l = lm_get_key_by_id(code, LM_TK_ACCENT);
os << "[accent " << l->name << " "; os << "[accent " << l->name << " ";
if (inset) cell(0).WriteNormal(os);
inset->WriteNormal(os);
else {
if (fn >= LM_TC_RM && fn <= LM_TC_TEXTRM)
os << "[font " << math_font_name[fn - LM_TC_RM] << "]";
if (MathIsSymbol(fn)) {
latexkeys const * l = lm_get_key_by_id(c, LM_TK_SYM);
if (l)
os << "[symbol " << l->name << "] ";
} else
os << "[char " << char(c) << "] ";
}
os << "] "; os << "] ";
} }
int MathAccentInset::getAccentCode() const
{
return code;
}

View File

@ -10,13 +10,9 @@
class MathAccentInset : public MathInset { class MathAccentInset : public MathInset {
public: public:
/// ///
MathAccentInset(byte, MathTextCodes, int); explicit MathAccentInset(int);
/// ///
MathAccentInset(MathInset *, int); MathInset * clone() const;
///
~MathAccentInset();
///
MathInset * clone() const;
/// ///
void draw(Painter &, int, int); void draw(Painter &, int, int);
/// ///
@ -29,17 +25,13 @@ public:
int getAccentCode() const; int getAccentCode() const;
/// ///
bool isAccentInset() const { return true; } bool isAccentInset() const { return true; }
protected: private:
///
byte c;
///
MathTextCodes fn;
/// ///
int code; int code;
/// ///
MathInset * inset; int dh;
/// ///
int dh, dy; int dy;
}; };
#endif #endif

View File

@ -42,6 +42,7 @@
#include "math_fracinset.h" #include "math_fracinset.h"
#include "math_decorationinset.h" #include "math_decorationinset.h"
#include "math_dotsinset.h" #include "math_dotsinset.h"
#include "math_deliminset.h"
#include "math_accentinset.h" #include "math_accentinset.h"
#include "math_macrotemplate.h" #include "math_macrotemplate.h"
#include "math_sqrtinset.h" #include "math_sqrtinset.h"
@ -79,7 +80,6 @@ bool IsMacro(short tok, int id)
MathCursor::MathCursor(InsetFormulaBase * formula) MathCursor::MathCursor(InsetFormulaBase * formula)
: formula_(formula) : formula_(formula)
{ {
accent = 0;
lastcode = LM_TC_MIN; lastcode = LM_TC_MIN;
macro_mode = false; macro_mode = false;
first(); first();
@ -345,10 +345,9 @@ void MathCursor::End()
} }
void MathCursor::insert(char c, MathTextCodes t) void MathCursor::insert(char c, MathTextCodes t)
{ {
lyxerr << "inserting '" << c << "'\n"; //lyxerr << "inserting '" << c << "'\n";
if (selection) if (selection)
SelDel(); SelDel();
@ -366,15 +365,10 @@ void MathCursor::insert(char c, MathTextCodes t)
} }
} }
if (accent) array().insert(cursor_, c, t);
doAccent(c, t); array().next(cursor_);
else {
array().insert(cursor_, c, t);
array().next(cursor_);
}
lastcode = t; lastcode = t;
return;
} }
@ -389,15 +383,8 @@ void MathCursor::insert(MathInset * p)
SelDel(); SelDel();
} }
if (accent && !p->nargs()) array().insert(cursor_, p);
doAccent(p); array().next(cursor_);
else {
array().insert(cursor_, p);
array().next(cursor_);
}
//if (p->nargs())
// push(p, true);
} }
@ -670,7 +657,7 @@ in_word_set(s) << " \n";
break; break;
case LM_TK_ACCENT: case LM_TK_ACCENT:
setAccent(l->id); p = new MathAccentInset(l->id);
break; break;
case LM_TK_MACRO: case LM_TK_MACRO:
@ -727,9 +714,6 @@ void MathCursor::MacroModeClose()
imacro->SetName(l->name); imacro->SetName(l->name);
} else { } else {
Left(); Left();
if (nextInset()->isAccentInset())
setAccent(
static_cast<MathAccentInset*>(nextInset())->getAccentCode());
array().erase(cursor_); array().erase(cursor_);
if (l || MathMacroTable::hasTemplate(imacro->name())) if (l || MathMacroTable::hasTemplate(imacro->name()))
Interpret(imacro->name()); Interpret(imacro->name());
@ -753,16 +737,6 @@ void MathCursor::SelCopy()
} }
} }
void MathCursor::selArray(MathArray & ar) const
{
int const p1 = min(cursor_, anchor_);
int const p2 = max(cursor_, anchor_);
ar = array();
ar.erase(p2, ar.size());
ar.erase(0, p1);
}
void MathCursor::SelCut() void MathCursor::SelCut()
{ {
seldump("SelCut"); seldump("SelCut");
@ -892,57 +866,6 @@ void MathCursor::SelGetArea(int * xpoint, int * ypoint, int & n)
} }
void MathCursor::setAccent(int ac)
{
if (ac > 0 && accent < 8)
nestaccent[accent++] = ac;
else
accent = 0; // consumed!
}
int MathCursor::getAccent() const
{
return accent > 0 ? nestaccent[accent - 1] : 0;
}
void MathCursor::doAccent(char c, MathTextCodes t)
{
MathInset * ac = 0;
for (int i = accent - 1; i >= 0; --i) {
if (i == accent - 1)
ac = new MathAccentInset(c, t, nestaccent[i]);
else
ac = new MathAccentInset(ac, nestaccent[i]);
}
if (ac)
insert(ac);
accent = 0; // consumed!
}
void MathCursor::doAccent(MathInset * p)
{
MathInset * ac = 0;
for (int i = accent - 1; i >= 0; --i) {
if (i == accent - 1)
ac = new MathAccentInset(p, nestaccent[i]);
else
ac = new MathAccentInset(ac, nestaccent[i]);
}
if (ac)
insert(ac);
accent = 0; // consumed!
}
void MathCursor::handleFont(MathTextCodes t) void MathCursor::handleFont(MathTextCodes t)
{ {
if (selection) { if (selection) {
@ -963,6 +886,27 @@ void MathCursor::handleFont(MathTextCodes t)
} }
void MathCursor::handleAccent(int code)
{
MathAccentInset * p = new MathAccentInset(code);
if (selection) {
SelCut();
p->cell(0) = selarray;
}
insert(p);
}
void MathCursor::handleDelim(int l, int r)
{
MathDelimInset * p = new MathDelimInset(l, r);
if (selection) {
SelCut();
p->cell(0) = selarray;
}
insert(p);
}
void MathCursor::GetPos(int & x, int & y) void MathCursor::GetPos(int & x, int & y)
{ {
x = xarray().xo() + xarray().pos2x(cursor_); x = xarray().xo() + xarray().pos2x(cursor_);

View File

@ -80,10 +80,6 @@ public:
void SetSize(MathStyles); void SetSize(MathStyles);
/// ///
bool toggleLimits(); bool toggleLimits();
/// Set accent: if argument = 0 it's considered consumed
void setAccent(int ac = 0);
/// Returns last accent
int getAccent() const;
/// ///
// Macro mode methods // Macro mode methods
void MacroModeOpen(); void MacroModeOpen();
@ -117,6 +113,10 @@ public:
void setLastCode(MathTextCodes t); void setLastCode(MathTextCodes t);
/// ///
void handleFont(MathTextCodes t); void handleFont(MathTextCodes t);
///
void handleAccent(int code);
///
void handleDelim(int l, int r);
/// Splits cells and shifts right part to the next cell /// Splits cells and shifts right part to the next cell
void splitCell(); void splitCell();
/// Splits line and insert new row of cell /// Splits line and insert new row of cell
@ -138,8 +138,6 @@ public:
/// ///
MathTextCodes prevCode() const; MathTextCodes prevCode() const;
/// ///
void selArray(MathArray &) const;
///
char valign() const; char valign() const;
/// ///
char halign() const; char halign() const;
@ -166,14 +164,6 @@ public:
/// ///
InsetFormulaBase * const formula_; InsetFormulaBase * const formula_;
/// ///
void doAccent(char c, MathTextCodes t);
///
void doAccent(MathInset * p);
///
int accent;
///
int nestaccent[8];
///
MathTextCodes lastcode; MathTextCodes lastcode;
/// ///

View File

@ -94,7 +94,9 @@ void MathMacroTable::builtinMacros()
// This macro doesn't have arguments // This macro doesn't have arguments
{ {
MathMacroTemplate * t = new MathMacroTemplate("notin", 0); MathMacroTemplate * t = new MathMacroTemplate("notin", 0);
t->push_back(new MathAccentInset(LM_in, LM_TC_BOPS, LM_not)); MathAccentInset * p = new MathAccentInset(LM_not);
p->cell(0).push_back(LM_in, LM_TC_BOPS);
t->push_back(p);
insertTemplate(t); insertTemplate(t);
} }
@ -111,7 +113,9 @@ void MathMacroTable::builtinMacros()
{ {
MathMacroTemplate * t = new MathMacroTemplate("emptyset", 0); MathMacroTemplate * t = new MathMacroTemplate("emptyset", 0);
t->push_back(new MathAccentInset('0', LM_TC_RM, LM_not)); MathAccentInset * p = new MathAccentInset(LM_not);
p->cell(0).push_back('0', LM_TC_VAR);
t->push_back(p);
insertTemplate(t); insertTemplate(t);
} }

View File

@ -227,9 +227,12 @@ unsigned char LexGetArg(unsigned char lf, bool accept_spaces = false)
int yylex() int yylex()
{ {
static int init_done; static bool init_done = false;
if (!init_done) LexInitCodes(); if (!init_done) {
LexInitCodes();
init_done = true;
}
while (yyis->good()) { while (yyis->good()) {
unsigned char c = getuchar(yyis); unsigned char c = getuchar(yyis);
@ -330,68 +333,6 @@ int yylex()
} }
// Accent hacks only for 0.12. Stolen from Cursor.
int accent = 0;
int nestaccent[8];
void setAccent(int ac)
{
if (ac > 0 && accent < 8)
nestaccent[accent++] = ac;
else
accent = 0; // consumed!
}
MathInset * doAccent(unsigned char c, MathTextCodes t)
{
MathInset * ac = 0;
for (int i = accent - 1; i >= 0; --i) {
if (i == accent - 1)
ac = new MathAccentInset(c, t, nestaccent[i]);
else
ac = new MathAccentInset(ac, nestaccent[i]);
}
accent = 0; // consumed!
return ac;
}
MathInset * doAccent(MathInset * p)
{
MathInset * ac = 0;
for (int i = accent - 1; i >= 0; --i) {
if (i == accent - 1)
ac = new MathAccentInset(p, nestaccent[i]);
else
ac = new MathAccentInset(ac, nestaccent[i]);
}
accent = 0; // consumed!
return ac;
}
void do_insert(MathArray & dat, MathInset * m)
{
if (accent)
dat.push_back(doAccent(m));
else
dat.push_back(m);
}
void do_insert(MathArray & dat, unsigned char ch, MathTextCodes fcode)
{
if (accent)
dat.push_back(doAccent(ch, fcode));
else
dat.push_back(ch, fcode);
}
void handle_frac(MathArray & dat, string const & name) void handle_frac(MathArray & dat, string const & name)
{ {
MathFracInset * p = new MathFracInset(name); MathFracInset * p = new MathFracInset(name);
@ -548,8 +489,6 @@ void mathed_parse(MathArray & array, unsigned flags)
yyvarcode = LM_TC_VAR; yyvarcode = LM_TC_VAR;
int brace = 0; int brace = 0;
int acc_brace = 0;
int acc_braces[8];
++plevel; ++plevel;
while (t) { while (t) {
@ -569,7 +508,7 @@ void mathed_parse(MathArray & array, unsigned flags)
switch (t) { switch (t) {
case LM_TK_ALPHA: case LM_TK_ALPHA:
do_insert(array, yylval.i, yyvarcode); array.push_back(yylval.i, yyvarcode);
break; break;
case LM_TK_ARGUMENT: case LM_TK_ARGUMENT:
@ -581,15 +520,11 @@ void mathed_parse(MathArray & array, unsigned flags)
break; break;
case LM_TK_STR: case LM_TK_STR:
do_insert(array, yylval.i, LM_TC_CONST); array.push_back(yylval.i, LM_TC_CONST);
break; break;
case LM_TK_OPEN: case LM_TK_OPEN:
++brace; ++brace;
if (accent && tprev == LM_TK_ACCENT) {
acc_braces[acc_brace++] = brace;
break;
}
if (flags & FLAG_BRACE_OPT) { if (flags & FLAG_BRACE_OPT) {
flags &= ~FLAG_BRACE_OPT; flags &= ~FLAG_BRACE_OPT;
flags |= FLAG_BRACE; flags |= FLAG_BRACE;
@ -608,10 +543,6 @@ void mathed_parse(MathArray & array, unsigned flags)
panic = true; panic = true;
break; break;
} }
if (acc_brace && brace == acc_braces[acc_brace - 1] - 1) {
--acc_brace;
break;
}
if (flags & FLAG_BRACE_FONT) { if (flags & FLAG_BRACE_FONT) {
yyvarcode = LM_TC_VAR; yyvarcode = LM_TC_VAR;
flags &= ~FLAG_BRACE_FONT; flags &= ~FLAG_BRACE_FONT;
@ -704,13 +635,13 @@ void mathed_parse(MathArray & array, unsigned flags)
case LM_TK_SYM: case LM_TK_SYM:
if (yylval.l->id < 256) { if (yylval.l->id < 256) {
MathTextCodes tc = MathIsBOPS(yylval.l->id) ? LM_TC_BOPS: LM_TC_SYMB; MathTextCodes tc = MathIsBOPS(yylval.l->id) ? LM_TC_BOPS: LM_TC_SYMB;
do_insert(array, yylval.l->id, tc); array.push_back(yylval.l->id, tc);
} else } else
do_insert(array, new MathFuncInset(yylval.l->name)); array.push_back(new MathFuncInset(yylval.l->name));
break; break;
case LM_TK_BOP: case LM_TK_BOP:
do_insert(array, yylval.i, LM_TC_BOP); array.push_back(yylval.i, LM_TC_BOP);
break; break;
case LM_TK_SPACE: case LM_TK_SPACE:
@ -801,15 +732,19 @@ void mathed_parse(MathArray & array, unsigned flags)
case LM_TK_WIDE: case LM_TK_WIDE:
{ {
MathDecorationInset * sq = new MathDecorationInset(yylval.l->id); MathDecorationInset * p = new MathDecorationInset(yylval.l->id);
mathed_parse(sq->cell(0), FLAG_BRACE | FLAG_BRACE_LAST); mathed_parse(p->cell(0), FLAG_BRACE | FLAG_BRACE_LAST);
array.push_back(sq); array.push_back(p);
break; break;
} }
case LM_TK_ACCENT: case LM_TK_ACCENT:
setAccent(yylval.l->id); {
MathAccentInset * p = new MathAccentInset(yylval.l->id);
mathed_parse(p->cell(0), FLAG_BRACE | FLAG_BRACE_LAST);
array.push_back(p);
break; break;
}
case LM_TK_NONUM: case LM_TK_NONUM:
curr_num = false; curr_num = false;
@ -817,9 +752,9 @@ void mathed_parse(MathArray & array, unsigned flags)
case LM_TK_PMOD: case LM_TK_PMOD:
case LM_TK_FUNC: case LM_TK_FUNC:
if (accent) //if (accent)
array.push_back(t, LM_TC_CONST); // array.push_back(t, LM_TC_CONST);
else //else
array.push_back(new MathFuncInset(yylval.l->name)); array.push_back(new MathFuncInset(yylval.l->name));
break; break;
@ -832,10 +767,10 @@ void mathed_parse(MathArray & array, unsigned flags)
MathMacro * m = MathMacroTable::cloneTemplate(yytext); MathMacro * m = MathMacroTable::cloneTemplate(yytext);
for (int i = 0; i < m->nargs(); ++i) for (int i = 0; i < m->nargs(); ++i)
mathed_parse(m->cell(i), FLAG_BRACE_OPT | FLAG_BRACE_LAST); mathed_parse(m->cell(i), FLAG_BRACE_OPT | FLAG_BRACE_LAST);
do_insert(array, m); array.push_back(m);
m->Metrics(LM_ST_TEXT); m->Metrics(LM_ST_TEXT);
} else } else
do_insert(array, new MathFuncInset(yytext, LM_OT_UNDEF)); array.push_back(new MathFuncInset(yytext, LM_OT_UNDEF));
break; break;
case LM_TK_END: case LM_TK_END:
@ -862,7 +797,7 @@ void mathed_parse(MathArray & array, unsigned flags)
mm->halign(halign); mm->halign(halign);
mathed_parse_lines(mm, halign.size(), latex_mathenv[i].numbered, false); mathed_parse_lines(mm, halign.size(), latex_mathenv[i].numbered, false);
do_insert(array, mm); array.push_back(mm);
//lyxerr << "read matrix " << *mm << "\n"; //lyxerr << "read matrix " << *mm << "\n";
break; break;
} else } else
@ -871,7 +806,7 @@ void mathed_parse(MathArray & array, unsigned flags)
} }
case LM_TK_MACRO: case LM_TK_MACRO:
do_insert(array, MathMacroTable::cloneTemplate(yylval.l->name)); array.push_back(MathMacroTable::cloneTemplate(yylval.l->name));
break; break;
case LM_TK_LABEL: case LM_TK_LABEL:
@ -944,5 +879,3 @@ MathInset * mathed_parse(LyXLex & lex)
return p; return p;
} }