Spec-Zone.ru › Elisp

Основы строки режима

Содержимое каждой строки режима задаётся локальной для буфера переменной mode-line-format (см. Верхний уровень управления строкой режима). Эта переменная содержит конструкцию строки режима: шаблон, который управляет отображением строки режима буфера. Значения header-line-format и tab-line-format задают строку заголовка и строку вкладок буфера аналогичным образом. Все окна одного и того же буфера используют одинаковые mode-line-format, header-line-format и tab-line-format, если только для данного окна не задан параметр mode-line-format, header-line-format или tab-line-format (см. Параметры окон).

Для повышения эффективности Emacs не пересчитывает постоянно строку режима и строку заголовка каждого окна. Это происходит, когда обстоятельства указывают на необходимость такого пересчёта — например, при изменении конфигурации окон, переключении буферов, сужении или расширении буфера, прокрутке или изменении буфера. Если вы изменяете любую из переменных, на которые ссылаются mode-line-format или header-line-format (см. Переменные, используемые в строке режима), либо любые другие структуры данных, влияющие на отображение текста (см. Отображение в Emacs), следует использовать функцию force-mode-line-update для обновления отображения.

Функция: force-mode-line-update &optional all

Эта функция заставляет Emacs обновить строку режима и строку заголовка текущего буфера на основе последних значений всех соответствующих переменных во время следующего цикла перерисовки. Если необязательный аргумент all не-nil, функция обновляет все строки режима и строки заголовка.

Эта функция также обновляет строку меню и заголовок рамки.

Строка режима выбранного окна обычно отображается другим цветом с использованием грани mode-line-active. Строки режима других окон отображаются с гранью mode-line-inactive. См. Грани.

Функция: mode-line-window-selected-p

Если вы хотите добиться более заметных различий между строками режима в выбранных и невыбранных окнах, можно использовать этот предикат в конструкции :eval. Например, если вы хотите отображать имя буфера полужирным шрифтом в выбранных окнах, а в остальных окнах курсивом, можно написать примерно следующее:

(setq-default
 mode-line-buffer-identification
 '(:eval (propertize "%12b"
		     'face (if (mode-line-window-selected-p)
			       'bold
			     'italic))))

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/Mode-Line-Basics.html

Spec-Zone.ru

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