class Paragraph;
class Text;
class InsetIterator;
+class FontSpan;
DocIterator doc_iterator_begin(Buffer const * buf, Inset const * inset = 0);
DocIterator doc_iterator_end(Buffer const * buf, Inset const * inset = 0);
bool empty() const { return slices_.empty(); }
/// is this the end position?
bool atEnd() const { return slices_.empty(); }
+ /// is this the last possible position?
+ bool atLastPos() const { return pit() == lastpit() && pos() == lastpos(); }
//
// access to slice at tip
Paragraph & innerParagraph() const;
/// return the inner text slice.
CursorSlice const & innerTextSlice() const;
+ /// the first and last positions of a word at top cursor slice
+ /// \warning only works within text!
+ FontSpan locateWord(word_location const loc) const;
///
Text * text() const;
/// the containing inset or the cell, respectively
/// fix DocIterator in circumstances that should never happen.
/// \return true if the DocIterator was fixed.
bool fixIfBroken();
+ /// Repopulate the slices insets from bottom to top. Useful
+ /// for stable iterators or Undo data.
+ void sanitize();
/// find index of CursorSlice with &cell() == &cell (or -1 if not found)
int find(MathData const & cell) const;