29.27 Параметры окон

В этом разделе описываются параметры окон, которые можно использовать для связывания дополнительной информации с окнами.

Функция: window-parameter окно параметр

Эта функция возвращает значение параметра для окна. По умолчанию для окна используется выбранное окно. Если окно не имеет значения для параметра, эта функция возвращает nil.

Функция: window-parameters &optional окно

Эта функция возвращает все параметры окна и их значения. По умолчанию для окна используется выбранное окно. Возвращаемое значение — либо nil, либо ассоциативный список, элементы которого имеют вид (параметр . значение).

Функция: set-window-parameter окно параметр значение

Эта функция устанавливает значение параметра для окна равным значению и возвращает значение. По умолчанию для окна используется выбранное окно.

По умолчанию функции, которые сохраняют и восстанавливают конфигурации окон или состояния окон (см. Конфигурации окон), не учитывают параметры окон. Это означает, что когда вы изменяете значение параметра внутри тела save-window-excursion, предыдущее значение не восстанавливается при выходе из этого макроса. Это также означает, что когда вы восстанавливаете с помощью window-state-put состояние окна, сохранённое ранее window-state-get, все клонированные окна получают параметры, сброшенные в nil. Следующая переменная позволяет вам переопределить стандартное поведение:

Переменная: window-persistent-parameters

Эта переменная является ассоциативным списком, определяющим, какие параметры сохраняются функциями current-window-configuration и window-state-get и затем восстанавливаются функциями set-window-configuration и window-state-put. См. Конфигурации окон.

CAR каждого элемента этого ассоциативного списка — это символ, указывающий параметр. CDR должно быть одним из следующих значений:

nil

Это значение означает, что параметр не сохраняется ни window-state-get, ни current-window-configuration.

t

Это значение указывает, что параметр сохраняется функцией current-window-configuration и (при условии, что её аргумент writable равен nil) функцией window-state-get.

writable

Это означает, что параметр сохраняется безусловно как current-window-configuration, так и window-state-get. Это значение не следует использовать для параметров, значения которых не имеют синтаксиса для чтения. В противном случае вызов window-state-put в другом сеансе может завершиться ошибкой invalid-read-syntax.

Некоторые функции (в частности, delete-window, delete-other-windows и split-window) могут вести себя особым образом, если окно, указанное их аргументом window, имеет параметр, имя которого совпадает с именем функции. Вы можете переопределить такое особое поведение, привязав следующую переменную к значению, отличному от nil:

Переменная: ignore-window-parameters

Если эта переменная не равна nil, некоторые стандартные функции не обрабатывают параметры окон. Функции, на которые это влияет в настоящее время: split-window, delete-window, delete-other-windows и other-window.

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

Следующие параметры в настоящее время используются кодом управления окнами:

delete-window

Этот параметр влияет на выполнение delete-window (см. Удаление окон).

delete-other-windows

Этот параметр влияет на выполнение delete-other-windows (см. Удаление окон).

no-delete-other-windows

Этот параметр помечает окно как не удаляемое функцией delete-other-windows (см. Удаление окон).

split-window

Этот параметр влияет на выполнение split-window (см. Разделение окон).

other-window

Этот параметр влияет на выполнение other-window (см. Циклическое упорядочение окон).

no-other-window

Этот параметр помечает окно как не выбираемое функцией other-window (см. Циклическое упорядочение окон).

clone-of

Этот параметр указывает окно, из которого было клонировано данное. Он устанавливается функцией window-state-get (см. Конфигурации окон).

window-preserved-size

Этот параметр определяет буфер, направление (где nil означает вертикальное, а t горизонтальное) и размер в пикселях. Если это окно отображает указанный буфер и его размер в указанном направлении равен размеру, заданному этим параметром, то Emacs попытается сохранить размер этого окна в указанном направлении. Этот параметр устанавливается и обновляется функцией window-preserve-size (см. Сохранение размеров окон).

quit-restore

Этот параметр устанавливается функциями отображения буфера (см. Выбор окна для отображения буфера) и используется функцией quit-restore-window (см. Закрытие окон). Это список из четырёх элементов, см. описание quit-restore-window в Закрытие окон для подробностей.

window-side
window-slot

Эти параметры используются внутренне для реализации боковых окон (см. Боковые окна).

window-atom

Этот параметр используется внутренне для реализации атомарных окон, см. Атомарные окна.

mode-line-format

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

header-line-format

Этот параметр заменяет значение локальной для буфера переменной header-line-format (см. Основы строки режима) этого буфера окна всякий раз, когда это окно отображается. Символ none означает подавление отображения верхней строки для этого окна. Отображение и содержимое верхней строки в других окнах, показывающих этот буфер, не затрагиваются.

tab-line-format

Этот параметр заменяет значение локальной для буфера переменной tab-line-format (см. Основы строки режима) этого буфера окна всякий раз, когда это окно отображается. Символ none означает подавление отображения строки вкладок для этого окна. Отображение и содержимое строки вкладок в других окнах, показывающих этот буфер, не затрагиваются.

min-margins

Значением этого параметра является ячейка cons, CAR и CDR которой, если не равны nil, задают минимальные значения (в столбцах) для левого и правого полей этого окна (см. Отображение в полях). Если они присутствуют, Emacs будет использовать эти значения вместо фактической ширины полей для определения того, можно ли окно разделить или сузить по горизонтали.

Emacs никогда не автоматически корректирует поля какого-либо окна после разделения или изменения его размера. Исключительной ответственностью любого приложения, устанавливающего этот параметр, является корректировка полей этого окна, а также полей любого нового окна, которое наследует поля этого окна в результате разделения. Оба хука window-configuration-change-hook и window-size-change-functions (см. Хуки для прокрутки окон и изменений) должны использоваться для этой цели.

Этот параметр был добавлен в Emacs версии 25.1 для поддержки приложений, которые используют большие поля для центрирования текста буфера в окне, и должен использоваться с должной осторожностью исключительно этими приложениями. В будущих версиях Emacs он может быть заменён на улучшенное решение.