+ friend LyXErr & operator<<(LyXErr & os, Cursor const & cur);
+
+ ///
+ bool textUndo();
+ ///
+ bool textRedo();
+
+ /// makes sure the next operation will be stored
+ void finishUndo() const;
+
+ /// open a new group of undo operations. Groups can be nested.
+ void beginUndoGroup() const;
+
+ /// end the current undo group
+ void endUndoGroup() const;
+
+ /// The general case: prepare undo for an arbitrary range.
+ void recordUndo(UndoKind kind, pit_type from, pit_type to) const;
+
+ /// Convenience: prepare undo for the range between 'from' and cursor.
+ void recordUndo(UndoKind kind, pit_type from) const;
+
+ /// Convenience: prepare undo for the single paragraph or cell
+ /// containing the cursor
+ void recordUndo(UndoKind kind = ATOMIC_UNDO) const;
+
+ /// Convenience: prepare undo for the inset containing the cursor
+ void recordUndoInset(UndoKind kind = ATOMIC_UNDO,
+ Inset const * inset = 0) const;
+
+ /// Convenience: prepare undo for the whole buffer
+ void recordUndoFullDocument() const;
+
+ /// Convenience: prepare undo for the selected paragraphs or cells
+ void recordUndoSelection() const;
+
+ ///
+ void checkBufferStructure();
+
+ /// hook for text input to maintain the "new born word"
+ void markNewWordPosition();
+
+ /// The position of the new born word
+ /// As the user is entering a word without leaving it
+ /// the result is not empty. When not in text mode
+ /// and after leaving the word the result is empty.
+ DocIterator newWord() const { return new_word_; }