Переменные, используемые в строке режима
В этом разделе описаны переменные, включённые стандартным значением 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должен быть списком из двух элементов:(minor-mode-variable mode-line-string)
В более общем случае mode-line-string может быть любой конструкцией строки режима. Она отображается в строке режима, если значение minor-mode-variable не равно
nil, и не отображается в противном случае. Эти строки должны начинаться с пробелов, чтобы не сливались друг с другом. Согласно принятому соглашению, переменной minor-mode-variable для конкретного режима присваивается значение, отличное от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))
"-%-")
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-Variables.html