- //lyxerr << "found inset code " << it->inset->lyxCode() << std::endl;
- if (it->inset->lyxCode() == MATHMACRO_CODE) {
- MathMacroTemplate const & mac
- = static_cast<MathMacroTemplate const &>(*it->inset);
- insertMacro(mac.name(), mac.asMacroData());
+ if (it->inset->lyxCode() != MATHMACRO_CODE)
+ continue;
+
+ // get macro data
+ MathMacroTemplate const & macroTemplate
+ = static_cast<MathMacroTemplate const &>(*it->inset);
+
+ // valid?
+ if (macroTemplate.validMacro()) {
+ MacroData macro = macroTemplate.asMacroData();
+
+ // redefinition?
+ // call hasMacro here instead of directly querying mc to
+ // also take the master document into consideration
+ macro.setRedefinition(hasMacro(macroTemplate.name()));
+
+ // register macro (possibly overwrite the previous one of this paragraph)
+ d->macros[macroTemplate.name()][i] = macro;