Correctly distinguish ERT macros from predefined ones such as \alpha

This commit is contained in:
Enrico Forestieri 2016-09-16 02:15:52 +02:00
parent a26e75cd8a
commit c4aca5705b

View File

@ -1426,9 +1426,9 @@ bool Cursor::macroModeClose()
InsetMathNest * const in = inset().asInsetMath()->asNestInset(); InsetMathNest * const in = inset().asInsetMath()->asNestInset();
if (in && in->interpretString(*this, s)) if (in && in->interpretString(*this, s))
return true; return true;
bool const ert_macro = !buffer()->getMacro(name, *this, false); bool const user_macro = buffer()->getMacro(name, *this, false);
MathAtom atom = ert_macro ? createInsetMath(name, buffer()) MathAtom atom = user_macro ? MathAtom(new MathMacro(buffer(), name))
: MathAtom(new MathMacro(buffer(), name)); : createInsetMath(name, buffer());
// try to put argument into macro, if we just inserted a macro // try to put argument into macro, if we just inserted a macro
bool macroArg = false; bool macroArg = false;
@ -1455,6 +1455,7 @@ bool Cursor::macroModeClose()
bool keep_mathmode = it != words.end() && (it->second.inset == "font" bool keep_mathmode = it != words.end() && (it->second.inset == "font"
|| it->second.inset == "oldfont" || it->second.inset == "oldfont"
|| it->second.inset == "mbox"); || it->second.inset == "mbox");
bool ert_macro = !user_macro && it == words.end();
if (in && in->currentMode() == Inset::TEXT_MODE if (in && in->currentMode() == Inset::TEXT_MODE
&& atom.nucleus()->currentMode() == Inset::MATH_MODE && atom.nucleus()->currentMode() == Inset::MATH_MODE