Свойство display
Свойство текста display (или свойство наложения) используется для вставки изображений в текст и управления другими аспектами отображения текста. Спецификации отображения в одном и том же значении свойства display обычно применяются параллельно к охватываемому ими тексту.
Если несколько источников (наложения и/или свойство текста) задают значения свойства display, вступает в силу только одно из них — согласно правилам get-char-property. См. Изучение свойств текста.
Значением свойства display должна быть спецификация отображения либо список или вектор, содержащий несколько спецификаций отображения.
- Функция: get-display-property position spec &optional object properties
-
Эта вспомогательная функция позволяет получить значение конкретной спецификации отображения независимо от того, является ли свойство
displayвектором, списком или отдельной спецификацией отображения. Она работает подобноget-text-property(см. Изучение свойств текста), но только со свойствомdisplay. Для спецификаций с одним значением (например,height) возвращается само значение; для свойств со списком значений (например,slice) возвращается список значений.position — позиция в буфере или строке, которую нужно проверить, а spec — CAR спецификации отображения, которую нужно вернуть. Необязательный аргумент object должен быть строкой или буфером; по умолчанию используется текущий буфер. Если необязательный аргумент properties не равен
nil, он должен быть свойствомdisplay; в этом случае аргументы position и object игнорируются. (Это может быть полезно, например, если вы уже получили свойствоdisplayс помощьюget-char-property(см. Изучение свойств текста).
- Функция: add-display-text-property start end spec value &optional object
-
Добавляет спецификацию отображения
(prop value)к тексту от start до end.Если какой-либо текст в области имеет свойство
display, не равноеnil, эти свойства сохраняются. Например:(add-display-text-property 4 8 'height 2.0) (add-display-text-property 2 12 'raise 0.5)
После этого область от 2 до 4 будет иметь спецификацию отображения
raise, область от 4 до 8 — обе спецификации отображения,raiseиheight, а область от 8 до 12 — только спецификацию отображенияraise.object — строка или буфер, к которому нужно добавить спецификацию. Если аргумент опущен, по умолчанию используется текущий буфер.
- Функция: remove-display-text-property start end spec &optional object
-
Удаляет спецификацию отображения spec из текста от start до end. spec — это CAR спецификации отображения, которую нужно удалить, например
heightили'(margin nil).Если какой-либо текст в области имеет другие свойства
display, они сохраняются. Например:(add-display-text-property 1 8 'raise 0.5) (add-display-text-property 4 8 'height 2.0) (remove-display-text-property 2 6 'raise)
После этого текст будет иметь следующие свойства
display:- Область от 1 до 2 — только
raise - Область от 2 до 4 — без свойств
- Область от 4 до 6 — только
height - Область от 6 до 8 — оба свойства,
raiseиheight
object — строка или буфер, из которого нужно удалить спецификацию. Если аргумент опущен, по умолчанию используется текущий буфер.
- Область от 1 до 2 — только
Некоторые спецификации отображения позволяют включать формы Lisp, которые вычисляются во время отображения. В определённых ситуациях это может быть небезопасно, например, если спецификация отображения была создана внешней программой или агентом. Если заключить спецификацию отображения в список, начинающийся со специального символа disable-eval, как в (disable-eval spec), вычисление любого кода Lisp в spec будет отключено, при этом все остальные возможности свойства отображения сохранятся.
В оставшейся части этого раздела описываются различные виды спецификаций отображения и их значение.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Display-Property.html