Spec-Zone.ru › Elisp

Строки заголовка окна

У окна может быть строка заголовка вверху, так же как внизу у него может быть строка режима. Строка заголовка работает так же, как строка режима, за исключением того, что она управляется с помощью header-line-format:

Переменная: header-line-format

Эта переменная, локальная для каждого буфера, задаёт способ отображения строки заголовка в окнах, показывающих этот буфер. Формат значения такой же, как у mode-line-format (см. Структура данных строки режима). Обычно её значение — nil, поэтому у обычных буферов нет строки заголовка.

Если в буфере включён режим display-line-numbers-mode (см. display-line-numbers-mode в Руководстве GNU Emacs), при отображении текст буфера сдвигается вправо на ширину экранного пространства, необходимого для показа номеров строк. В отличие от него, текст строки заголовка автоматически не сдвигается, поскольку в строке заголовка никогда не отображается номер строки, а её текст не обязательно напрямую связан с расположенным ниже текстом буфера. Если программе на Lisp необходимо выровнять текст строки заголовка по тексту буфера (например, если в буфере отображаются данные в столбцах, как это делает tabulated-list-mode, см. Режим табличных списков), ей следует включить второстепенный режим header-line-indent-mode.

Команда: header-line-indent-mode

Этот локальный для буфера второстепенный режим отслеживает изменения ширины экранной области отображения номеров строк (которая может меняться в зависимости от диапазона номеров строк, видимых в окне) и позволяет программам на Lisp обеспечивать выравнивание текста строки заголовка по тексту буфера при изменении ширины области номеров строк. Такие программы на Lisp должны включать этот режим в буфере и использовать переменные header-line-indent и header-line-indent-width в header-line-format, чтобы отступ всегда соответствовал отступу текста.

Переменная: header-line-indent

Значение этой переменной — строка пробелов, ширина которой поддерживается равной текущей ширине отображаемых номеров строк, если в буфере, показанном в окне, включён режим header-line-indent-mode. Количество пробелов вычисляется исходя из предположения, что для текста строки заголовка используется тот же шрифт, включая размер, что и шрифт кадра по умолчанию; если это предположение неверно, используйте вместо этого header-line-indent-width, описанную ниже. Эта переменная предназначена для простых случаев, когда весь текст строки заголовка нужно сдвинуть, чтобы выровнять его по тексту буфера: достаточно добавить значение этой переменной перед текстом строки заголовка. Например, следующее определение header-line-format:

(setq header-line-format
      `("" header-line-indent ,my-header-line))

где my-header-line — строка формата, создающая фактический текст строки заголовка, гарантирует, что текст строки заголовка всегда будет сдвинут так же, как расположенный под ним текст буфера.

Переменная: header-line-indent-width

Значение этой переменной обновляется, чтобы указывать текущую ширину области отображения номеров строк в единицах канонической ширины символа кадра, если в буфере, показанном в окне, включён режим header-line-indent-mode. Эту переменную можно использовать для выравнивания текста строки заголовка по тексту буфера, если header-line-indent недостаточно гибка. Например, если для строки заголовка используется шрифт с метриками, отличающимися от метрик шрифта лица по умолчанию, программа на Lisp может вычислить ширину области отображения номеров строк в пикселях, умножив значение этой переменной на значение, возвращаемое frame-char-width (см. Шрифт кадра), а затем использовать полученный результат для выравнивания текста строки заголовка с помощью спецификации отображаемого свойства :align-to (см. Заданные пробелы) в пикселях в соответствующих частях header-line-format.

Функция: window-header-line-height &optional window

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

В окне высотой всего в одну строку строка заголовка никогда не отображается. В окне высотой в две строки нельзя одновременно отображать строку режима и строку заголовка; если у него есть строка режима, строка заголовка не отображается.

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/Header-Lines.html

Spec-Zone.ru

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