Spec-Zone.ru › Elisp

Абстрактный вывод

Пакет Ewoc создает буферный текст, представляющий структуру объектов Lisp, и обновляет текст, чтобы следовать изменениям в этой структуре. Это похоже на компонент «представление» в парадигме проектирования «модель-представление-контроллер». Ewoc означает «Виджет Emacs для коллекций объектов».

ewoc — это структура, которая организует информацию, необходимую для построения буферного текста, представляющего определенные данные Lisp. Буферный текст ewoc состоит из трех частей: сначала фиксированный текст заголовка; затем текстовые описания ряда элементов данных (объектов Lisp, которые вы указываете); и, наконец, фиксированный текст футера. В частности, ewoc содержит информацию о:

  • Буфере, в котором генерируется его текст.
  • Начальной позиции текста в буфере.
  • Строках заголовка и футера.
  • Двойной связанный список узлов, каждый из которых содержит:
    • Элемент данных, единственный объект Lisp.
    • Связи с предыдущим и последующим узлами в списке.
  • Функцию красивого вывода, которая отвечает за вставку текстового представления значения элемента данных в текущий буфер.

Как правило, вы определяете ewoc с помощью ewoc-create, а затем передаете полученную структуру ewoc другим функциям в пакете Ewoc для создания узлов внутри нее и отображения ее в буфере. После отображения в буфере другие функции определяют соответствие между позициями буфера и узлами, перемещают точку от текстового представления одного узла к другому и т. д. См. Функции абстрактного вывода.

Узел инкапсулирует элемент данных так же, как переменная содержит значение. Обычно инкапсуляция происходит как часть добавления узла в ewoc. Вы можете получить значение элемента данных и заменить его новым значением, как показано ниже:

(ewoc-data node)
⇒ value

(ewoc-set-data node new-value)
⇒ new-value

Вы также можете использовать в качестве значения элемента данных объект Lisp (список или вектор), который является контейнером для реального значения, или индекс в некоторую другую структуру. Пример (см. Пример абстрактного вывода) использует последний подход.

При изменении данных вы захотите обновить текст в буфере. Вы можете обновить все узлы, вызвав ewoc-refresh, или только определенные узлы, используя ewoc-invalidate, или все узлы, удовлетворяющие предикату, используя ewoc-map. В качестве альтернативы, вы можете удалить недействительные узлы, используя ewoc-delete или ewoc-filter, и добавить новые узлы на их место. Удаление узла из ewoc также удаляет связанное текстовое описание из буфера.

• Функции абстрактного вывода Функции пакета Ewoc.
• Пример абстрактного вывода Пример использования Ewoc.

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Abstract-Display.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API