Основы строки режима
Содержимое каждой строки режима задается локальной для буфера переменной mode-line-format (см. Верхняя строка режима). Эта переменная содержит конструирование строки режима: шаблон, который управляет отображением строки режима буфера. Значение header-line-format аналогичным образом задает строку заголовка буфера. Все окна для одного и того же буфера используют одну и ту же mode-line-format и header-line-format, если для данного окна не задан параметр mode-line-format или header-line-format (см. Параметры окна).
Для повышения эффективности Emacs не постоянно пересчитывает строку режима и строку заголовка каждого окна. Он делает это, когда обстоятельства указывают на необходимость — например, если вы меняете конфигурацию окна, переключаетесь между буферами, сужаете или расширяете буфер, прокручиваете или изменяете буфер. Если вы изменяете какие-либо переменные, на которые ссылаются mode-line-format или header-line-format (см. Переменные строки режима), или любые другие структуры данных, влияющие на отображение текста (см. Отображение), вы должны использовать функцию force-mode-line-update для обновления отображения.
- Функция: force-mode-line-update &optional all
-
Эта функция заставляет Emacs обновить строку режима и строку заголовка текущего буфера, основываясь на последних значениях всех соответствующих переменных, во время следующего цикла перерисовки. Если необязательный аргумент all имеет ненулевое значение, он заставляет обновить все строки режима и строки заголовков.
Эта функция также заставляет обновить строку меню и заголовок фрейма.
Строка режима выбранного окна обычно отображается в другом цвете, используя вид mode-line. Строки режима других окон отображаются с помощью вида mode-line-inactive вместо этого. См. Типы отображения.
Некоторые режимы помещают большое количество данных в строку режима, сдвигая элементы в конце строки режима вправо. Emacs может «сжать» строку режима, если переменная mode-line-compact имеет ненулевое значение, превращая серии пробелов в один пробел. Если эта переменная имеет нулевое значение, это выполняется только тогда, когда строка режима шире, чем текущее выбранное окно. (Этот расчет приблизительный, основанный на количестве символов, а не на их отображаемой ширине.) Эта переменная может быть локальной для буфера, чтобы сжимать строки режима только в определенных буферах.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Mode-Line-Basics.html