Spec-Zone.ru › Elisp

Отображение в полях

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

Чтобы отобразить что-либо в полях, укажите это в спецификации отображения в поле свойства display некоторого текста. Это замещающая спецификация отображения: текст, к которому она применяется, не отображается; появляется содержимое поля, а сам текст — нет.

Спецификация отображения в поле имеет вид ((margin right-margin) spec) или ((margin left-margin) spec). Здесь spec — другая спецификация отображения, которая указывает, что отображать в поле. Обычно это строка текста или дескриптор изображения.

Чтобы отобразить что-либо в поле вместе с определённым текстом буфера, не изменяя отображение этого текста и не предотвращая его, поместите на этот текст оверлей со свойством before-string и задайте спецификацию отображения в поле для содержимого строки перед текстом.

Обратите внимание: если строка, отображаемая в поле, не задаёт все параметры начертания, незаданные атрибуты наследуются от начертания margin (см. Основные начертания). Если строка в поле должна иметь определённый вид независимо от начертания margin, убедитесь, что для строки заданы все необходимые атрибуты начертания.

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

Переменная: left-margin-width

Эта переменная задаёт ширину левого поля в единицах знакомест (также называемых «столбцами»). Она является локальной для буфера во всех буферах. Значение nil означает отсутствие левого поля.

Переменная: right-margin-width

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

Изменение этих переменных не влияет на окно немедленно. Проверка этих переменных выполняется при отображении в окне нового буфера. Поэтому изменения можно применить, вызвав set-window-buffer. Не используйте эти переменные для определения текущей ширины левого или правого поля. Вместо этого используйте функцию window-margins.

Ширину полей также можно задать немедленно.

Функция: set-window-margins window left &optional right

Эта функция задаёт ширину полей окна window в единицах знакомест. Аргумент left управляет левым полем, а right — правым (по умолчанию 0).

Если окно window недостаточно велико для полей заданной ширины, ширина его полей не изменяется.

Указанные здесь значения впоследствии могут быть переопределены вызовом set-window-buffer (см. Буферы и окна) для окна window, если аргумент keep-margins равен nil или опущен.

Функция: window-margins &optional window

Эта функция возвращает ширину левого и правого полей окна window в виде пары (cons cell) формы (left . right). Если одна из двух областей поля отсутствует, её ширина возвращается как nil; если отсутствуют оба поля, функция возвращает (nil). Если window равен nil, используется выбранное окно.

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-Margins.html

Spec-Zone.ru

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