42.16 Свойство display

Текстовое свойство display (или свойство наложения) используется для вставки изображений в текст и для управления другими аспектами отображения текста. Спецификации отображения в значении того же свойства display обычно применяются параллельно к тексту, который они покрывают.

Если несколько источников (наложения и/или текстовое свойство) указывают значения для свойства display, вступает в силу только одно из значений, в соответствии с правилами get-char-property. См. Просмотр текстовых свойств.

Значение свойства display должно быть спецификацией отображения или списком или вектором, содержащим несколько спецификаций отображения.

Функция: get-display-property position prop &optional object properties

Эту удобную функцию можно использовать для получения определенного свойства отображения, независимо от того, является ли свойство display вектором, списком или простым свойством. Это похоже на get-text-property (см. Просмотр текстовых свойств), но работает только со свойством display.

position — это позиция в буфере или строке, которую необходимо проверить, а prop — это свойство display, которое необходимо вернуть. Необязательный аргумент object должен быть строкой или буфером и по умолчанию — текущим буфером. Если необязательный аргумент properties не равен nil, он должен быть свойством display, и в этом случае position и object игнорируются. (Это может быть полезно, если вы уже получили свойство display с помощью get-char-property (см. Просмотр текстовых свойств)).

Функция: add-display-text-property start end prop value &optional object

Добавить свойство display prop со value к тексту от start до end.

Если какой-либо текст в этом регионе имеет не-nil свойство display, эти свойства сохраняются. Например:

(add-display-text-property 4 8 'height 2.0)
(add-display-text-property 2 12 'raise 0.5)

После этого регион от 2 до 4 будет иметь свойство raise display, регион от 4 до 8 будет иметь свойства raise и height display, а наконец, регион от 8 до 12 будет иметь только свойство raise display.

Если object не равен nil, он должен быть строкой или буфером. Если nil, по умолчанию используется текущий буфер.

Некоторые спецификации отображения позволяют включать формы Lisp, которые вычисляются во время отображения. Это может быть небезопасно в определенных ситуациях, например, когда спецификация отображения была сгенерирована какой-либо внешней программой/агентом. Оборачивание спецификации отображения в список, начинающийся со специального символа disable-eval, как в (disable-eval spec), отключит вычисление любого Lisp в spec, при этом поддерживая все остальные функции свойств отображения.

Остальная часть этого раздела описывает несколько видов спецификаций отображения и их значение.