В этом подразделе ewoc и node обозначают структуры, описанные выше (см. Абстрактное отображение), а data обозначает произвольный объект Lisp, используемый как элемент данных.
Эта функция создаёт и возвращает новый ewoc без узлов (и, следовательно, без
элементов данных). pretty-printer должна быть функцией, которая принимает один
аргумент — элемент данных того типа, который вы планируете использовать в этом ewoc, —
и вставляет его текстовое описание в точке с помощью insert (и никогда
insert-before-markers, поскольку это помешало бы внутренним механизмам
пакета Ewoc).
Обычно после заголовка, нижнего колонтитула и текстового описания каждого узла
автоматически вставляется новая строка. Если nosep не равен nil,
новая строка не вставляется. Это может быть полезно, например, для отображения
всего ewoc в одной строке или для того, чтобы сделать узлы невидимыми, организовав
так, чтобы pretty-printer ничего не делала для этих узлов.
Ewoc поддерживает свой текст в буфере, который является текущим на момент
его создания, поэтому переключитесь на нужный буфер перед вызовом
ewoc-create.
Эта функция возвращает буфер, в котором ewoc поддерживает свой текст.
Эта функция возвращает ячейку cons (header . footer),
составленную из заголовка и нижнего колонтитула ewoc.
Эта функция устанавливает заголовок и нижний колонтитул ewoc в строки header и footer соответственно.
Эти функции добавляют новый узел, инкапсулирующий data, помещая его соответственно в начало или в конец цепочки узлов ewoc.
Эти функции добавляют новый узел, инкапсулирующий data, в ewoc соответственно перед или после node.
Эти функции возвращают соответственно предыдущий и следующий узел относительно node в ewoc.
Эта функция возвращает узел в ewoc, находящийся по индексу n,
начиная с нуля. Отрицательное n означает отсчёт с конца. ewoc-nth возвращает
nil, если n вне допустимого диапазона.
Эта функция извлекает данные, инкапсулированные в node, и возвращает их.
Эта функция устанавливает данные, инкапсулированные в node, в значение data.
Эта функция определяет узел в ewoc, который содержит точку (или
pos, если он указан), и возвращает этот узел. Если в ewoc нет
узлов, она возвращает nil. Если pos находится перед первым узлом,
она возвращает первый узел; если pos находится после последнего узла, она возвращает
последний узел. Необязательный третий аргумент guess
должен быть узлом, который, вероятно, находится рядом с pos; это не
изменяет результат, но ускоряет выполнение функции.
Эта функция возвращает начальную позицию node.
Эти функции перемещают точку соответственно на arg-й узел назад или вперёд
в ewoc. ewoc-goto-prev не перемещает точку, если она уже находится на
первом узле или если ewoc пуст, тогда как ewoc-goto-next
перемещает точку за последний узел, возвращая nil. За исключением этого особого
случая, эти функции возвращают узел, на который переместилась точка.
Эта функция перемещает точку в начало node в ewoc.
Эта функция заново генерирует текст ewoc. Она работает путём удаления текста между заголовком и нижним колонтитулом, т. е. всех представлений элементов данных, а затем последовательного вызова функции pretty-printer для каждого узла по порядку.
Эта функция аналогична ewoc-refresh, за исключением того, что обновляются
только nodes в ewoc, а не весь набор.
Эта функция удаляет каждый узел из nodes в ewoc.
Эта функция вызывает predicate для каждого элемента данных в ewoc и
удаляет те узлы, для которых predicate возвращает nil.
Любые args передаются в predicate.
Эта функция вызывает predicate для каждого элемента данных в ewoc
и возвращает список тех элементов, для которых predicate
возвращает не nil. Элементы в списке упорядочены
так же, как в буфере. Любые args передаются в predicate.
Эта функция вызывает map-function для каждого элемента данных в ewoc и
обновляет те узлы, для которых map-function возвращает не nil.
Любые args передаются в map-function.