/// top and bottom level information sometimes needs to be sync'ed. In particular,
/// top_id is determined when a bookmark is restored from session; and
/// bottom_pit and bottom_pos are determined from top_id when a bookmark
- /// is save to session. (What a mess! :-)
+ /// is saved to session. (What a mess! :-)
///
/// TODO: bottom level pit and pos will be replaced by StableDocIterator
class Bookmark {
typedef std::vector<Bookmark> BookmarkList;
public:
- /// constructor, set max_bookmarks
- /// allow 9 regular bookmarks, bookmark 0 is temporary
- BookmarksSection() : bookmarks(10), max_bookmarks(9) {}
+ ///
+ BookmarksSection() : bookmarks(max_bookmarks + 1) {}
/// Save the current position as bookmark
void save(support::FileName const & fname, pit_type bottom_pit, pos_type bottom_pos,
bool hasValid() const;
///
- unsigned int size() const { return max_bookmarks; }
+ unsigned int size() const { return bookmarks.size(); }
/// clear all bookmarks
void clear();
*/
BookmarkList & load() { return bookmarks; }
+ ///
+ typedef std::vector<std::pair<unsigned int, pos_type>> BookmarkPosList;
+
+ /// return a list of bookmarks and position for this paragraph
+ BookmarkPosList bookmarksInPar(support::FileName const & fn, int par_id) const;
+
+ /* An insertion/deletion in paragraph \c par_id of buffer \c fn
+ * lead to an offset \c offset after position \c pos. Update
+ * bookmarks accordingly.
+ */
+ void adjustPosAfterPos(support::FileName const & fn,
+ int const par_id, pos_type pos, int offset);
+
private:
+ /// allow 9 regular bookmarks, bookmark 0 is temporary
+ unsigned int const max_bookmarks = 9;
+
/// a list of bookmarks
BookmarkList bookmarks;
- ///
- unsigned int const max_bookmarks;
};
{
public:
///
- explicit ShellEscapeSection() {};
+ explicit ShellEscapeSection() {}
///
void read(std::istream & is) override;