Вы можете использовать функцию format-mode-line для вычисления текста,
который появится в строке режима или заголовке на основе определенной
конструкции строки режима.
Эта функция форматирует строку текста в соответствии с 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) возвращает тот же текст, причем каждый символ несет лицо, которое
он будет иметь в самой строке заголовка, и также перерисовывает строку заголовка.