Spec-Zone.ru › Elisp

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

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

Функция: window-parameter window parameter

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

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

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

Функция: set-window-parameter window parameter value

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

По умолчанию функции сохранения и восстановления конфигураций окон или состояний окон (см. Конфигурации окон) не учитывают параметры окон. Это означает, что при изменении значения параметра в теле 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 (см. Циклический порядок окон). По умолчанию он равен t для окон подсказок (см. Основные понятия об окнах Emacs). Используйте window-no-other-p (см. Циклический порядок окон), чтобы проверить, применим ли он к определённому окну.

clone-of

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

window-preserved-size

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

quit-restore
quit-restore-prev

Эти параметры устанавливаются функциями отображения буферов (см. Выбор окна для отображения буфера) и учитываются функцией 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

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

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

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

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/Window-Parameters.html

Spec-Zone.ru

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