cur.clearTargetX();
cur.macroModeClose();
if (!cur.inset().idxNext(cur)) {
- cur.idx() = firstIdx();
- cur.pos() = 0;
+ if (cur.lastidx() == 0)
+ cur.popForward();
+ else {
+ cur.idx() = firstIdx();
+ cur.pos() = 0;
+ }
}
break;
cur.clearTargetX();
cur.macroModeClose();
if (!cur.inset().idxPrev(cur)) {
- cur.idx() = cur.lastidx();
- cur.pos() = lyxrc.mac_like_cursor_movement ? cur.lastpos() : 0;
+ if (cur.lastidx() == 0)
+ cur.popBackward();
+ else {
+ cur.idx() = cur.lastidx();
+ cur.pos() = lyxrc.mac_like_cursor_movement ? cur.lastpos() : 0;
+ }
}
break;
return true;
}
if (currentMode() == InsetMath::MATH_MODE && Encodings::isUnicodeTextOnly(c)) {
- MathAtom at = createInsetMath("text", buf);
- at.nucleus()->cell(0).push_back(MathAtom(new InsetMathChar(c)));
- cur.insert(at);
- cur.posForward();
+ MathAtom const atom(new InsetMathChar(c));
+ if (cur.prevInset() && cur.prevInset()->asInsetMath()->name() == "text") {
+ // reuse existing \text inset
+ cur.prevInset()->asInsetMath()->cell(0).push_back(atom);
+ } else {
+ MathAtom at = createInsetMath("text", buf);
+ at.nucleus()->cell(0).push_back(atom);
+ cur.insert(at);
+ cur.posForward();
+ }
return true;
}
} else {