24.4.4 Переменные, используемые в строке режима

В этом разделе описываются переменные, которые стандартное значение mode-line-format включает в текст строки режима. В этих переменных нет ничего особенного; любые другие переменные могли бы оказывать те же эффекты на строку режима, если изменить значение mode-line-format для их использования. Однако различные части Emacs устанавливают эти переменные в предположении, что они будут управлять частями строки режима; поэтому, практически говоря, необходимо, чтобы строка режима их использовала. См. также Необязательная строка режима в Руководстве по GNU Emacs.

Переменная: mode-line-mule-info

Эта переменная содержит значение конструкции строки режима, которая отображает информацию о языковом окружении, системе кодировки буфера и текущем методе ввода. См. Не-ASCII символы.

Переменная: mode-line-modified

Эта переменная содержит значение конструкции строки режима, которая отображает, изменён ли текущий буфер. Её значение по умолчанию отображает ‘**’, если буфер изменён, ‘--’, если буфер не изменён, ‘%%’, если буфер только для чтения, и ‘%*’, если буфер только для чтения и изменён.

Изменение этой переменной не приводит к принудительному обновлению строки режима.

Переменная: mode-line-frame-identification

Эта переменная идентифицирует текущий фрейм. Её значение по умолчанию отображает " ", если вы используете оконную систему, которая может показывать несколько фреймов, или "-%F " на обычном терминале, который показывает только один фрейм за раз.

Переменная: mode-line-buffer-identification

Эта переменная идентифицирует буфер, отображаемый в окне. Её значение по умолчанию отображает имя буфера, дополненное пробелами как минимум до 12 столбцов.

Переменная: mode-line-position

Эта переменная указывает позицию в буфере. Её значение по умолчанию отображает процентное положение в буфере и, опционально, размер буфера, номер строки и номер столбца.

Пользовательская опция: mode-line-percent-position

Эта опция используется в mode-line-position. Её значение задаёт как отображаемое процентное положение в буфере (одно из nil, "%o", "%p", "%P" или "%q", см. Конструкции % в строке режима), так и ширину для заполнения пробелами или усечения. Рекомендуется устанавливать эту опцию с помощью средства customize-variable.

Переменная: vc-mode

Переменная vc-mode, локальная для каждого буфера, показывает, поддерживается ли посещённый файл буфера системой управления версиями, и если да, то какого типа. Её значение — строка, появляющаяся в строке режима, или nil, если управление версиями не используется.

Переменная: mode-line-modes

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

Переменная: mode-line-remote

Эта переменная используется для указания, является ли default-directory для текущего буфера удалённым.

Переменная: mode-line-client

Эта переменная используется для идентификации фреймов emacsclient.

Переменная: mode-line-format-right-align

Всё, что следует за этим символом в mode-line-format, будет выровнено по правому краю.

Переменная: mode-line-right-align-edge

Эта переменная определяет, относительно какого края mode-line-format-right-align выравнивает содержимое.

Следующие три переменные используются в mode-line-modes:

Переменная: mode-name

Эта локальная для буфера переменная содержит «красивое» имя основного режима текущего буфера. Каждый основной режим должен устанавливать эту переменную так, чтобы имя режима отображалось в строке режима. Значение не обязательно должно быть строкой, но может использовать любые типы данных, допустимые в конструкции строки режима (см. Структура данных строки режима). Для вычисления строки, которая будет идентифицировать имя режима в строке режима, используйте format-mode-line (см. Эмуляция форматирования строки режима).

Переменная: mode-line-process

Эта локальная для буфера переменная содержит информацию строки режима о состоянии процесса в режимах, используемых для взаимодействия с подпроцессами. Она отображается сразу после имени основного режима, без промежуточных пробелов. Например, её значение в буфере *shell* равно (":%s"), что позволяет оболочке отображать свой статус вместе с основным режимом как: ‘(Shell:run)’. Обычно эта переменная равна nil.

Переменная: mode-line-front-space

Эта переменная отображается в начале строки режима. По умолчанию эта конструкция отображается прямо в начале строки режима, за исключением случая, когда присутствует сообщение о нехватке памяти — тогда оно отображается первым.

Переменная: mode-line-end-spaces

Эта переменная отображается в конце строки режима.

Переменная: mode-line-misc-info

Конструкция строки режима для разнообразной информации. По умолчанию она показывает информацию, задаваемую global-mode-string.

Переменная: mode-line-position-line-format

Формат, используемый для отображения номеров строк, когда включён line-number-mode (см. Необязательная строка режима в Руководстве по GNU Emacs). ‘%l’ в этом формате будет заменён на номер строки.

Переменная: mode-line-position-column-format

Формат, используемый для отображения номеров столбцов, когда включён column-number-mode (см. Необязательная строка режима в Руководстве по GNU Emacs). ‘%c’ в этом формате будет заменён на номер столбца с нулевым смещением, а ‘%C’ — на номер столбца с единичным смещением.

Переменная: mode-line-position-column-line-format

Формат, используемый для отображения номеров столбцов, когда включены одновременно line-number-mode и column-number-mode. См. предыдущие две переменные для пояснения спецификаторов формата ‘%l’, ‘%c’ и ‘%C’.

Переменная: minor-mode-alist

Эта переменная содержит ассоциативный список, элементы которого определяют, как строка режима должна указывать на активность дополнительного режима. Каждый элемент minor-mode-alist должен быть списком из двух элементов:

(переменная-дополнительного-режима строка-строки-режима)

В более общем случае строка-строки-режима может быть любой конструкцией строки режима. Она появляется в строке режима, когда значение переменной-дополнительного-режима не равно nil, и не появляется в противном случае. Эти строки должны начинаться с пробелов, чтобы не сливаться друг с другом. По соглашению, переменная-дополнительного-режима для конкретного режима устанавливается в не-nil значение, когда этот дополнительный режим активирован.

minor-mode-alist сам по себе не является локальным для буфера. Каждая переменная, упомянутая в этом ассоциативном списке, должна быть локальной для буфера, если её дополнительный режим может включаться отдельно в каждом буфере.

Переменная: global-mode-string

Эта переменная содержит конструкцию строки режима, которая по умолчанию отображается в строке режима как часть 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))
 "-%-")