Переменной, которая в целом управляет строкой состояния, является
mode-line-format.
Значение этой переменной представляет собой конструктор строки состояния, который контролирует содержимое строки состояния. Она всегда локальна для буфера во всех буферах.
Если вы устанавливаете эту переменную в nil в буфере, то в этом буфере
нет строки состояния. (Окно высотой всего в одну строку также не отображает строку состояния.)
Значение по умолчанию для mode-line-format разработано таким образом, чтобы использовать
значения других переменных, таких как mode-line-position и
mode-line-modes (которые, в свою очередь, включают значения переменных
mode-name и minor-mode-alist). Очень мало режимов
нуждаются в изменении самой mode-line-format. В большинстве случаев
достаточно изменить некоторые из переменных, на которые mode-line-format
напрямую или косвенно ссылается.
Если вы все же изменяете саму mode-line-format, новое значение должно
использовать те же переменные, которые присутствуют в значении по умолчанию (см. Переменные, используемые в строке состояния), а не дублировать их содержимое или отображать
информацию иным образом. Таким образом, настройки, сделанные пользователем или Lisp-программами (например, display-time и основные режимы) посредством изменения этих переменных, остаются в силе.
Вот гипотетический пример mode-line-format, который может быть полезен для Shell-режима (на самом деле, Shell-режим не устанавливает
mode-line-format):
(setq mode-line-format (list "-" 'mode-line-mule-info 'mode-line-modified 'mode-line-frame-identification "%b--"
;; Обратите внимание, что это вычисляется при создании списка. ;; Это создает конструктор строки состояния, который является просто строкой. (getenv "HOST")
":"
'default-directory
" "
'global-mode-string
" %[("
'(:eval (format-time-string "%F"))
'mode-line-process
'minor-mode-alist
"%n"
")%]--"
'(which-function-mode ("" which-func-format "--"))
'(line-number-mode "L%l--")
'(column-number-mode "C%c--")
'(-3 "%p")))
(Переменные line-number-mode, column-number-mode и
which-function-mode включают определенные второстепенные режимы; как обычно,
эти имена переменных также являются именами команд второстепенных режимов.)