Основы строки режима
Содержимое каждой строки режима задаётся локальной для буфера переменной 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