Spec-Zone.ru › Elisp

Другие спецификации отображения

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

string

Отображает string вместо текста, которому задано это свойство.

Рекурсивные спецификации отображения не поддерживаются: свойства display у string, если они есть, не используются.

(image . image-props)

Этот вид спецификации отображения представляет собой дескриптор изображения (см. Дескрипторы изображений). В качестве спецификации отображения он означает, что вместо текста, которому задана эта спецификация, следует отображать изображение.

(slice x y width height)

Эта спецификация вместе с image задаёт срез (частичную область) изображения для отображения. Точнее, спецификация должна иметь следующий вид:

 ((slice x y width height) image-desc)

где image-desc — описанный выше дескриптор изображения. Элементы x и y задают координаты верхнего левого угла среза внутри изображения; width и height задают ширину и высоту среза. Целые числа обозначают количество пикселей. Число с плавающей запятой в диапазоне 0.0–1.0 задаёт соответствующую долю ширины или высоты всего изображения.

((margin nil) string)

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

(left-fringe bitmap [face])
(right-fringe bitmap [face])

Эта спецификация отображения, заданная любому символу строки текста, приводит к тому, что указанный bitmap отображается в левом или правом поле этой строки вместо символов, которым задана спецификация отображения. Необязательный параметр face указывает гарнитуру, цвета которой используются при отображении растрового изображения. Подробности см. в разделе Растровые изображения полей.

К растровым изображениям полей также можно добавить контекстную справку с помощью механизма show-help-function, используя текстовые свойства left-fringe-help и right-fringe-help (см. Свойства со специальным значением).

(space-width factor)

Эта спецификация отображения влияет на все пробелы в тексте, которому она задана. Она отображает каждый из этих пробелов с шириной, в factor раз превышающей обычную. Элемент factor должен быть целым числом или числом с плавающей запятой. На символы, отличные от пробелов, это никак не влияет; в частности, табуляции остаются без изменений.

(min-width (width))

Эта спецификация отображения гарантирует, что занимаемое текстом пространство будет не меньше width, добавляя в конец текста пробелы, если его ширина меньше width. Текст разбивается на части по идентичности параметра, поэтому параметр представляет собой список с одним элементом. Например:

(insert (propertize "foo" 'display '(min-width (6.0))))

Это добавит отступ после «foo», увеличив общую ширину до ширины шести обычных символов. Обратите внимание, что затронутые символы определяются списком (6.0) в свойстве отображения, в отличие от eq. Элемент width может быть целым числом или числом с плавающей запятой, задающим требуемую минимальную ширину текста (см. Задание ширины пробелов в пикселях).

(height height)

Эта спецификация отображения делает текст выше или ниже. Возможны следующие значения height:

(+ n)

Означает, что следует использовать шрифт на n шагов крупнее. Шаг определяется набором доступных шрифтов — в частности, шрифтами, совпадающими со всеми атрибутами, заданными для этого текста, кроме высоты. Каждый размер, для которого доступен подходящий шрифт, считается отдельным шагом. n должно быть целым числом.

(- n)

Означает, что следует использовать шрифт на n шагов мельче.

число, factor

Число factor означает, что следует использовать шрифт, высота которого в factor раз больше высоты шрифта по умолчанию.

символ, function

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

любое другое значение, form

Если значение height не подходит ни под один из предыдущих вариантов, оно считается формой. Emacs вычисляет её, чтобы получить новую высоту; при этом символ height связан с текущей заданной высотой шрифта.

(raise factor)

Этот вид спецификации отображения сдвигает применённый к нему текст вверх или вниз относительно базовой линии строки. В основном он предназначен для отображения нижних и верхних индексов.

factor должен быть числом, которое интерпретируется как множитель высоты затронутого текста. Положительное значение означает, что символы следует отображать выше. Отрицательное значение означает, что их следует отображать ниже.

Обратите внимание: если тексту также задана спецификация отображения height, причём она указана раньше (то есть левее) raise, последняя повлияет на величину сдвига в пикселях, поскольку она зависит от высоты сдвигаемого текста. Поэтому, если вы хотите отобразить нижний или верхний индекс меньшего размера, чем обычный текст, рассмотрите возможность указать raise перед height.

Любую спецификацию отображения можно сделать условной. Для этого поместите её в другой список вида (when condition . spec). Тогда спецификация spec применяется только в том случае, если вычисление condition даёт значение, отличное от nil. Во время вычисления object связан со строкой или буфером, которому задано условное свойство display. position и buffer-position связаны соответственно с позицией в object и позицией в буфере, где было обнаружено свойство display. Если object — строка, эти позиции могут различаться.

Обратите внимание, что condition вычисляется только тогда, когда перерисовка проверяет текст, в котором находится эта спецификация отображения. Поэтому эта возможность лучше всего подходит для условий, которые относительно стабильны, то есть для каждой конкретной позиции в буфере при каждом вычислении дают один и тот же результат. Если результаты для одного и того же фрагмента текста меняются — например, когда результат зависит от позиции точки, — условная спецификация может работать не так, как вам нужно: перерисовка проверяет только те части текста буфера, для которых есть основания считать, что после последнего цикла отображения что-то изменилось.

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/Other-Display-Specs.html

Spec-Zone.ru

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