Окно может иметь строку заголовка вверху, как и может иметь
строку режима внизу. Функция строки заголовка работает точно так же, как и
функция строки режима, за исключением того, что она контролируется
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.
Этот второстепенный режим, локальный для буфера, отслеживает изменения ширины отображения номеров строк на экране (которая может варьироваться в зависимости от диапазона отображаемых номеров строк в окне) и позволяет программам на Lisp располагать текст строки заголовка так, чтобы он всегда был выровнен с текстом буфера, когда изменяется ширина номеров строк. Такие программы на Lisp должны включить этот режим в буфере и использовать переменные header-line-indent и header-line-indent-width в header-line-format, чтобы гарантировать, что он корректируется в любое время.
Значение этой переменной — это строка пробелов, ширина которой поддерживается равной текущей ширине отображаемых номеров строк, при условии, что в буфере, отображаемом в окне, включен 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-mode. Ее можно использовать для выравнивания текста строки заголовка с текстом буфера, когда header-line-indent недостаточно гибок. Например, если строка заголовка использует шрифт, метрики которого отличаются от шрифта по умолчанию для лица, ваша программа на Lisp может вычислить ширину отображения номеров строк в пикселях, умножив значение этой переменной на значение, возвращаемое frame-char-width (см. Шрифт рамки), а затем использовать результат для выравнивания текста строки заголовка с помощью спецификации свойства отображения :align-to (см. Указанные пробелы) в пикселях в соответствующих частях header-line-format.
Эта функция возвращает высоту в пикселях строки заголовка window. window должен быть активным окном и по умолчанию выбирается текущее окно.
Окно высотой всего в одну строку никогда не отображает строку заголовка. Окно высотой в две строки не может одновременно отображать и строку режима, и строку заголовка; если у него есть строка режима, то строка заголовка не отображается.