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