Специализированные окна
Функции для отображения буфера могут быть настроены на отказ от использования определённых окон, помечая эти окна как специализированные для своих буферов. 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