We only look once for the definition of the same macro, but we have
to always check its arguments when the same macro appears more than
once in a math inset. So, move earlier this check.
This commit is contained in:
Enrico Forestieri 2015-06-20 03:05:50 +02:00
parent 98a5072a58
commit b610c13f67

View File

@ -640,6 +640,9 @@ void InsetMathHull::usedMacros(MathData const & md, DocIterator const & pos,
InsetMathGrid const * gi = md[i].nucleus()->asGridInset(); InsetMathGrid const * gi = md[i].nucleus()->asGridInset();
InsetMathNest const * ni = md[i].nucleus()->asNestInset(); InsetMathNest const * ni = md[i].nucleus()->asNestInset();
if (mi) { if (mi) {
// Look for macros in the arguments of this macro.
for (idx_type idx = 0; idx < mi->nargs(); ++idx)
usedMacros(mi->cell(idx), pos, macros, defs);
// Make sure this is a macro defined in the document // Make sure this is a macro defined in the document
// (as we also spot the macros in the symbols file) // (as we also spot the macros in the symbols file)
// or that we have not already accounted for it. // or that we have not already accounted for it.
@ -647,9 +650,6 @@ void InsetMathHull::usedMacros(MathData const & md, DocIterator const & pos,
if (macros.find(name) == end) if (macros.find(name) == end)
continue; continue;
macros.erase(name); macros.erase(name);
// Look for macros in the arguments of this macro.
for (idx_type idx = 0; idx < mi->nargs(); ++idx)
usedMacros(mi->cell(idx), pos, macros, defs);
// Look for macros in the definition of this macro. // Look for macros in the definition of this macro.
MathData ar(pos.buffer()); MathData ar(pos.buffer());
MacroData const * data = MacroData const * data =