24.4.9 Форматирование эмулируемой строки режима

Вы можете использовать функцию format-mode-line для вычисления текста, который появится в строке режима или заголовке на основе определенной конструкции строки режима.

Функция: format-mode-line format &optional face window buffer

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

Значение строки обычно имеет текстовые свойства, соответствующие лицам (faces), картам клавиш (keymaps) и т. д., которые были бы в строке режима. Любой символ, для которого не указано свойство face в format, получает значение по умолчанию, определяемое face. Если face равно t, это означает либо mode-line, если window выбран, в противном случае mode-line-inactive. Если face равно nil или опущено, это означает лицо по умолчанию. Если face является целым числом, возвращаемое этой функцией значение не будет иметь текстовых свойств.

Вы также можете указать другие допустимые лица в качестве значения face. Если указано, это лицо предоставляет свойство face для символов, для которых свойство лица не указано в format.

Обратите внимание, что использование mode-line, mode-line-inactive или header-line в качестве face фактически повторно отобразит строку режима или заголовок, соответственно, используя текущие определения соответствующего лица, в дополнение к возврату отформатированной строки. (Другие лица не вызывают повторного отображения.)

Например, (format-mode-line header-line-format) возвращает текст, который появился бы в строке заголовка выбранного окна ("" если у него нет строки заголовка). (format-mode-line header-line-format 'header-line) возвращает тот же текст, причем каждый символ несет лицо, которое он будет иметь в самой строке заголовка, и также перерисовывает строку заголовка.