Редакторы часто решают эту проблему с помощью Piece Table .Таблица представляет собой список объектов, которые указывают на диапазоны символов, которые а) являются смежными в памяти и б) имеют общие атрибуты.Порядок частей в таблице используется для отображения адресов символов в документе в память и наоборот.Изменяя порядок таблицы элементов, вы эффективно изменяете порядок документа, ничего не перемещая.Ключевым моментом является то, что сама таблица элементов не зависит от объектов, составляющих содержимое документа.
Так что одним из способов отображения порядка абзацев будет упрощенная версия таблицы peice.Это может быть так же просто, как список параметров в порядке документа.Когда вам нужно что-то изменить, вы извлекаете список, распаковываете его, вносите изменения в список , выбираете и сохраняете.
Другое преимущество таблицы заключается в том, что она значительно упрощает реализацию отмены.,Файл истории представляет собой простой список изменений в таблице, а отмена / повторное выполнение - это изменение или повторное применение определенного редактирования к таблице, сами данные не изменяются.Это должно хорошо сочетаться с любой версией, которую вы хотите сделать.