commit 1ac2dc208238a28c95275117e2bc90ea651bdf36
Author: Enrico Forestieri <[email protected]>
Date: Mon Nov 21 18:24:29 2022 +0100
Do not allow nesting macro names in macro names
LyX removes a single backslash when it is inserted in a
macro name by the keyboard. However if it is followed by
another character before moving the cursor, it is retained
causing an assertion (bug #12601).
---
src/mathed/InsetMathNest.cpp | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp
index 70ef185..673a62d 100644
--- a/src/mathed/InsetMathNest.cpp
+++ b/src/mathed/InsetMathNest.cpp
@@ -1825,9 +1825,15 @@ bool InsetMathNest::interpretChar(Cursor & cur,
char_type const c)
//lyxerr << "starting with macro" << endl;
bool reduced = cap::reduceSelectionToOneCell(cur);
if (reduced || !cur.selection()) {
+ InsetMath const * im = cur.inset().asInsetMath();
+ InsetMathMacro const * macro = im ? im->asMacro()
+ : nullptr;
+ bool in_macro_name = macro
+ && macro->displayMode() ==
+ InsetMathMacro::DISPLAY_UNFOLDED;
cur.recordUndoInset();
docstring const safe = cap::grabAndEraseSelection(cur);
- if (!cur.inRegexped())
+ if (!cur.inRegexped() && !in_macro_name)
cur.insert(MathAtom(new
InsetMathUnknown(from_ascii("\\"), safe, false)));
else
cur.niceInsert(createInsetMath("backslash",
buf));
--
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs