Spec-Zone.ru › Elisp

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

В этом разделе описаны переменные, включённые стандартным значением 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API