size_t n = 0;
idocstringstream is(cmd.argument());
is >> n;
- topaste = cap::selection(n, buffer().params().documentClassPtr());
+ topaste = cap::selection(n, make_pair(buffer().params().documentClassPtr(),
+ buffer().params().authors()));
}
cur.niceInsert(topaste, parseflg, false);
cur.clearSelection(); // bug 393
cur.clearTargetX();
cur.macroModeClose();
if (!cur.inset().idxPrev(cur)) {
- cur.idx() = lastIdx();
+ cur.idx() = cur.lastidx();
cur.pos() = lyxrc.mac_like_cursor_movement ? cur.lastpos() : 0;
}
break;
if (cmd.argument().empty()) {
// do superscript if LyX handles
// deadkeys
- cur.recordUndoSelection();
+ cur.recordUndoInset();
script(cur, true, grabAndEraseSelection(cur));
}
break;
return;
}
+ case LFUN_PHANTOM_INSERT: {
+ docstring const & arg = cmd.argument();
+ docstring newarg;
+ if (arg == "Phantom")
+ newarg = from_ascii("\\phantom");
+ else if (arg == "HPhantom")
+ newarg = from_ascii("\\hphantom");
+ else if (arg == "VPhantom")
+ newarg = from_ascii("\\vphantom");
+ if (newarg.empty())
+ LYXERR0("Unknown phantom type " + newarg);
+ else {
+ FuncRequest const newfunc(LFUN_MATH_INSERT, newarg);
+ lyx::dispatch(newfunc);
+ }
+ break;
+ }
+
default:
InsetMath::doDispatch(cur, cmd);
break;
// but suppress direct insertion of two spaces in a row
// the still allows typing '<space>a<space>' and deleting the 'a', but
// it is better than nothing...
- if (cur.pos() == 0 || cur.prevAtom()->getChar() != ' ') {
+ pos_type const pos = cur.pos();
+ pos_type const lastpos = cur.lastpos();
+ if ((pos == 0 && lastpos == 0)
+ || (pos == 0 && cur.nextAtom()->getChar() != ' ')
+ || (pos == lastpos && cur.prevAtom()->getChar() != ' ')
+ || (pos > 0 && cur.prevAtom()->getChar() != ' '
+ && cur.nextAtom()->getChar() != ' ')) {
cur.insert(c);
// FIXME: we have to enable full redraw here because of the
// visual box corners that define the inset. If we know for
return true;
} else if (currentMode() != InsetMath::TEXT_MODE) {
if (c == '_') {
+ cur.recordUndoInset();
script(cur, false, save_selection);
return true;
}
if (c == '^') {
+ cur.recordUndoInset();
script(cur, true, save_selection);
return true;
}