Spec-Zone.ru › Elisp

Спецификация пикселей для интервалов

Значением свойств :width, :align-to, :height и :ascent может быть особый вид выражения, вычисляемого при перерисовке. Результат вычисления используется как абсолютное число пикселей.

Поддерживаются следующие выражения:

  expr ::= num | (num) | unit | elem | pos | image | xwidget | form
  num  ::= integer | float | symbol
  unit ::= in | mm | cm | width | height
  elem ::= left-fringe | right-fringe | left-margin | right-margin
        |  scroll-bar | text
  pos  ::= left | center | right
  form ::= (num . expr) | (op expr ...)
  op   ::= + | -

Форма num задаёт долю высоты или ширины шрифта кадра по умолчанию. Форма (num) задаёт абсолютное число пикселей. Если num — символ, symbol, используется его привязка буферной переменной; эта привязка может быть числом или конс-ячейкой одной из приведённых выше форм (включая ещё одну конс-ячейку, чей car является символом, имеющим привязку буферной переменной).

Единицы in, mm и cm задают число пикселей на дюйм, миллиметр и сантиметр соответственно. Единицы width и height соответствуют ширине и высоте текущего начертания по умолчанию. Спецификация изображения вида (image . props) (см. Дескрипторы изображений) соответствует ширине или высоте указанного изображения. Аналогично, спецификация xwidget вида (xwidget . props) обозначает ширину или высоту указанного xwidget. См. Встроенные нативные виджеты.

Элементы left-fringe, right-fringe, left-margin, right-margin, scroll-bar и text задают ширину соответствующей области окна. Когда в окне отображаются номера строк (см. Размер отображаемого текста), ширина области text уменьшается на экранное пространство, занимаемое отображением номеров строк.

Позиции left, center и right можно использовать с :align-to, чтобы задать позицию относительно левого края, центра или правого края текстовой области. Когда в окне отображаются номера строк, а :align-to используется в свойствах отображения текста буфера (а не строки заголовка; см. ниже), позиции left и center смещаются с учётом экранного пространства, занимаемого отображением номеров строк.

Любой из перечисленных выше элементов окна (кроме text) также можно использовать с :align-to, чтобы указать, что позиция отсчитывается от левого края заданной области. После установки базового смещения для относительной позиции (при первом появлении одного из этих символов) все дальнейшие появления этих символов интерпретируются как ширина указанной области. Например, чтобы выровнять текст по центру левого поля, используйте

:align-to (+ left-margin (0.5 . left-margin))

Если для выравнивания не задано конкретное базовое смещение, оно всегда отсчитывается от левого края текстовой области. Например, «:align-to 0» выравнивает текст по первому столбцу текстовой области. Когда в окне отображаются номера строк, считается, что текст начинается там, где заканчивается область, отведённая для отображения номеров строк.

Значение вида (num . expr) обозначает произведение значений num и expr. Например, (2 . in) задаёт ширину в 2 дюйма, а (0.5 . image) — половину ширины (или высоты) указанного image (которое следует задавать его спецификацией изображения).

Форма (+ expr ...) складывает значения выражений. Форма (- expr ...) меняет знак значения выражений или вычитает их значения.

Текст в строке заголовка, использующий спецификации отображения :align-to, не выравнивается автоматически заново при включении и выключении display-line-numbers-mode или при изменении ширины отображаемых номеров строк. Чтобы обновлять выравнивание текста строки заголовка и поддерживать его выравнивание с текстом буфера, включите header-line-indent-mode в буфере и используйте в спецификации отображения две его переменные: header-line-indent и header-line-indent-width. См. Строки заголовка окна. Вот простой пример:

(setq header-line-format
      (concat (propertize " "
                          'display
                          '(space :align-to
                                  (+ header-line-indent-width 10)))
              "Column"))

Это позволит сохранять выравнивание текста «Column» в строке заголовка по столбцу 10 текста буфера независимо от того, включён или выключен display-line-numbers-mode, а также при изменении ширины отображения номеров строк.

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/Pixel-Specification.html

Spec-Zone.ru

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