Spec-Zone.ru › Elisp

Закрепленные окна

Функциям, отображающим буфер, можно указать не использовать определенные окна, пометив эти окна как закрепленные за своими буферами. display-buffer (см. раздел Выбор окна для отображения буфера) никогда не использует закрепленное окно для отображения в нем другого буфера. get-lru-window и get-largest-window (см. раздел Циклический порядок окон) не рассматривают закрепленные окна как кандидатов, если их аргумент dedicated не равен nil. Поведение set-window-buffer (см. раздел Буферы и окна) в отношении закрепленных окон несколько отличается; см. ниже.

Функции, предназначенные для удаления буфера из окна или окна из фрейма, могут вести себя особым образом, если окно, с которым они работают, закреплено. Различают четыре основных случая: (1) окно не является единственным окном в своем фрейме; (2) окно является единственным окном в своем фрейме, но на том же терминале остаются другие фреймы; (3) окно является единственным окном в единственном фрейме на том же терминале; (4) значение закрепления равно side (см. раздел Отображение буферов в боковых окнах).

В частности, delete-windows-on (см. раздел Удаление окон) обрабатывает случай (2), удаляя соответствующий фрейм, а в случаях (3) и (4) отображает другой буфер в единственном окне этого фрейма. Функция replace-buffer-in-windows (см. раздел Буферы и окна), вызываемая при уничтожении буфера, удаляет окно в случае (1), а в остальных случаях ведет себя как delete-windows-on.

Когда bury-buffer (см. раздел Список буферов) работает с выбранным окном (в котором отображается буфер, который нужно скрыть), в случае (2) она вызывает frame-auto-hide-function (см. раздел Выход из окон), чтобы обработать выбранный фрейм. Два других случая обрабатываются так же, как в replace-buffer-in-windows.

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

Эта функция возвращает значение, отличное от nil, если window закреплено за своим буфером, и nil в противном случае. Точнее, возвращаемое значение — это значение, присвоенное последним вызовом set-window-dedicated-p для window, или nil, если эта функция никогда не вызывалась с аргументом window. По умолчанию window — выбранное окно.

Функция: set-window-dedicated-p window flag

Эта функция закрепляет window за своим буфером, если flag не равен nil, и снимает закрепление в противном случае. В интерактивном режиме для этого можно использовать команду C-x w d (toggle-window-dedicated).

В особом случае, если flag равен t, window становится строго закрепленным за своим буфером. set-window-buffer сигнализирует об ошибке, если окно, с которым она работает, строго закреплено за своим буфером и в нем еще не отображается буфер, который ей предписано отобразить. Другие функции не отличают t от любого другого значения, отличного от nil.

Также можно указать display-buffer закрепить создаваемое им окно за его буфером, предоставив подходящую запись списка ассоциаций dedicated (см. раздел Списки ассоциаций действий для отображения буферов).

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/Dedicated-Windows.html

Spec-Zone.ru

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