+ /// open a new group of undo operations.
+ /**
+ * Groups can be nested. Such a nested group e.g. { {} {} } is undone in
+ * a single step. This means you can add a group whenever you are not sure.
+ */
+ void beginUndoGroup();
+ /// open a new group as above and specify a cursor to set as cur_before
+ /// of the group's undo elements.
+ /**
+ * This cursor takes precedence over what is passed to recordUndo.
+ * In the case of nested groups, only the first cur_before is
+ * taken into account. The cursor is reset at the end of the
+ * top-level group.
+ */
+ void beginUndoGroup(CursorData const & cur_before);