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, и как не-специализированное в противном случае.

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

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

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

Spec-Zone.ru

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