- // User defined macros are always assumed to be mathmode macros.
- // Only the global macros defined in lib/symbols may be textmode.
+ // There is no way to guess the mode of user defined macros, so they are
+ // always assumed to be mathmode. Only the global macros defined in
+ // lib/symbols may be textmode.
+ mode_type mode = modeToEnsure();
+ return (mode == UNDECIDED_MODE) ? MATH_MODE : mode;
+}
+
+
+InsetMath::mode_type MathMacro::modeToEnsure() const
+{
+ // User defined macros can be either text mode or math mode for output and
+ // display. There is no way to guess. For global macros defined in
+ // lib/symbols, we ensure textmode if flagged as such, otherwise we ensure
+ // math mode.
+ if (MacroData const * m = macroBackup())
+ if (m->symbol())
+ return (m->symbol()->extra == "textmode") ? TEXT_MODE : MATH_MODE;
+ return UNDECIDED_MODE;
+}
+