Отображение в полях
В буфере могут быть пустые области слева и справа, называемые полями отображения. Обычный текст никогда не появляется в этих областях, но в поля отображения можно помещать содержимое с помощью свойства 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