В этом разделе описываются переменные, которые стандартное значение
mode-line-format включает в текст строки режима. В этих
переменных нет ничего особенного; любые другие переменные могли бы
оказывать те же эффекты на строку режима, если изменить значение
mode-line-format для их использования. Однако различные части
Emacs устанавливают эти переменные в предположении, что они будут
управлять частями строки режима; поэтому, практически говоря,
необходимо, чтобы строка режима их использовала. См. также
Необязательная строка режима в Руководстве по GNU Emacs.
Эта переменная содержит значение конструкции строки режима, которая отображает информацию о языковом окружении, системе кодировки буфера и текущем методе ввода. См. Не-ASCII символы.
Эта переменная содержит значение конструкции строки режима, которая отображает, изменён ли текущий буфер. Её значение по умолчанию отображает ‘**’, если буфер изменён, ‘--’, если буфер не изменён, ‘%%’, если буфер только для чтения, и ‘%*’, если буфер только для чтения и изменён.
Изменение этой переменной не приводит к принудительному обновлению строки режима.
Эта переменная идентифицирует текущий фрейм. Её значение по умолчанию
отображает " ", если вы используете оконную систему, которая
может показывать несколько фреймов, или "-%F " на обычном
терминале, который показывает только один фрейм за раз.
Эта переменная идентифицирует буфер, отображаемый в окне. Её значение по умолчанию отображает имя буфера, дополненное пробелами как минимум до 12 столбцов.
Эта переменная указывает позицию в буфере. Её значение по умолчанию отображает процентное положение в буфере и, опционально, размер буфера, номер строки и номер столбца.
Эта опция используется в mode-line-position. Её значение задаёт
как отображаемое процентное положение в буфере (одно из nil, "%o",
"%p", "%P" или "%q", см. Конструкции % в строке режима), так и
ширину для заполнения пробелами или усечения. Рекомендуется устанавливать
эту опцию с помощью средства customize-variable.
Переменная vc-mode, локальная для каждого буфера, показывает,
поддерживается ли посещённый файл буфера системой управления версиями,
и если да, то какого типа. Её значение — строка, появляющаяся в строке
режима, или nil, если управление версиями не используется.
Эта переменная отображает основные и дополнительные режимы буфера. Её значение по умолчанию также отображает уровень рекурсивного редактирования, информацию о состоянии процесса и о том, действует ли сужение.
Эта переменная используется для указания, является ли default-directory
для текущего буфера удалённым.
Эта переменная используется для идентификации фреймов emacsclient.
Всё, что следует за этим символом в mode-line-format, будет
выровнено по правому краю.
Эта переменная определяет, относительно какого края mode-line-format-right-align
выравнивает содержимое.
Следующие три переменные используются в mode-line-modes:
Эта локальная для буфера переменная содержит «красивое» имя основного
режима текущего буфера. Каждый основной режим должен устанавливать эту
переменную так, чтобы имя режима отображалось в строке режима. Значение
не обязательно должно быть строкой, но может использовать любые типы
данных, допустимые в конструкции строки режима (см. Структура данных строки режима). Для вычисления строки, которая будет идентифицировать имя режима
в строке режима, используйте format-mode-line
(см. Эмуляция форматирования строки режима).
Эта локальная для буфера переменная содержит информацию строки режима
о состоянии процесса в режимах, используемых для взаимодействия с
подпроцессами. Она отображается сразу после имени основного режима,
без промежуточных пробелов. Например, её значение в буфере *shell*
равно (":%s"), что позволяет оболочке отображать свой статус
вместе с основным режимом как: ‘(Shell:run)’. Обычно эта переменная
равна nil.
Эта переменная отображается в начале строки режима. По умолчанию эта конструкция отображается прямо в начале строки режима, за исключением случая, когда присутствует сообщение о нехватке памяти — тогда оно отображается первым.
Эта переменная отображается в конце строки режима.
Конструкция строки режима для разнообразной информации. По умолчанию
она показывает информацию, задаваемую global-mode-string.
Формат, используемый для отображения номеров строк, когда включён
line-number-mode (см. Необязательная строка режима в Руководстве по GNU Emacs).
‘%l’ в этом формате будет заменён на номер строки.
Формат, используемый для отображения номеров столбцов, когда включён
column-number-mode (см. Необязательная строка режима в Руководстве по GNU Emacs).
‘%c’ в этом формате будет заменён на номер столбца с нулевым
смещением, а ‘%C’ — на номер столбца с единичным смещением.
Формат, используемый для отображения номеров столбцов, когда включены
одновременно line-number-mode и column-number-mode.
См. предыдущие две переменные для пояснения спецификаторов формата
‘%l’, ‘%c’ и ‘%C’.
Эта переменная содержит ассоциативный список, элементы которого
определяют, как строка режима должна указывать на активность
дополнительного режима. Каждый элемент minor-mode-alist должен
быть списком из двух элементов:
(переменная-дополнительного-режима строка-строки-режима)
В более общем случае строка-строки-режима может быть любой
конструкцией строки режима. Она появляется в строке режима, когда
значение переменной-дополнительного-режима не равно nil,
и не появляется в противном случае. Эти строки должны начинаться с
пробелов, чтобы не сливаться друг с другом. По соглашению,
переменная-дополнительного-режима для конкретного режима
устанавливается в не-nil значение, когда этот дополнительный
режим активирован.
minor-mode-alist сам по себе не является локальным для буфера.
Каждая переменная, упомянутая в этом ассоциативном списке, должна быть
локальной для буфера, если её дополнительный режим может включаться
отдельно в каждом буфере.
Эта переменная содержит конструкцию строки режима, которая по умолчанию
отображается в строке режима как часть mode-line-misc-info, сразу
после информации which-function-mode, если этот дополнительный
режим включён, в противном случае — после mode-line-modes.
Элементы, добавляемые в эту конструкцию, обычно должны заканчиваться
пробелом (чтобы обеспечить корректное отображение соседних элементов
global-mode-string). Например, команда display-time
устанавливает global-mode-string так, чтобы она ссылалась на
переменную display-time-string, которая содержит строку с
информацией о времени и загрузке системы.
Конструкция ‘%M’ подставляет значение
global-mode-string. Эта конструкция не используется в строке
режима по умолчанию, поскольку сама переменная используется в
mode-line-misc-info.
Ниже приведена упрощённая версия значения по умолчанию
mode-line-format. В реальном значении по умолчанию также
задаётся добавление текстовых свойств.
("-"
mode-line-mule-info
mode-line-modified
mode-line-frame-identification
mode-line-buffer-identification
" " mode-line-position (vc-mode vc-mode) " "
mode-line-modes
(which-function-mode ("" which-func-format "--"))
(global-mode-string ("--" global-mode-string))
"-%-")