Функциям, отображающим буфер, можно указать не использовать определённые окна, пометив эти окна как выделенные для их буферов.
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.
Эта функция возвращает не nil, если window выделено для своего буфера, и nil в противном случае. Более точно, возвращаемое значение — это значение, присвоенное последним вызовом set-window-dedicated-p для window, или nil, если эта функция никогда не вызывалась с window в качестве аргумента. Значением по умолчанию для window является выбранное окно.
Эта функция помечает window как выделенное для своего буфера, если flag не равен nil, и как невыделенное в противном случае.
В интерактивном режиме вы можете использовать команду C-x w d (toggle-window-dedicated) для того же самого.
В особом случае, если flag равен t, window становится строго выделенным для своего буфера. set-window-buffer выдаёт ошибку, когда окно, над которым она действует, строго выделено для своего буфера и ещё не отображает буфер, который ей предлагается отобразить. Другие функции не обрабатывают t иначе, чем любое другое не nil значение.
Вы также можете указать display-buffer пометить создаваемое окно как выделенное для своего буфера, указав подходящую запись dedicated в alist действий (см. Alists действий для отображения буфера).