Буферы и окна
В этом разделе описываются функции низкого уровня для проверки и изменения содержимого окон. См. Переключение буферов для функций более высокого уровня отображения определенного буфера в окне.
- Функция: window-buffer &optional window
Эта функция возвращает буфер, отображаемый окном window. Если window опущена или
nil, по умолчанию используется выбранное окно. Если window является внутренним окном, эта функция возвращаетnil.
- Функция: set-window-buffer window buffer-or-name &optional keep-margins
-
Эта функция заставляет окно window отображать buffer-or-name. window должно быть активным окном; если
nil, по умолчанию используется выбранное окно. buffer-or-name должен быть буфером или именем существующего буфера. Эта функция не изменяет выбранное окно, ни напрямую не изменяет текущий буфер (см. Текущий буфер). Значение возврата равноnil.Если окно window строго выделено для буфера, и buffer-or-name не указывает на этот буфер, функция сигнализирует об ошибке. См. Выделенные окна.
По умолчанию, эта функция сбрасывает позицию окна window, поля отображения, ширину обрамления и параметры полосы прокрутки, основанные на локальных переменных в указанном буфере. Однако, если необязательный аргумент keep-margins не
nil, он оставляет поля отображения, обрамление и настройки полосы прокрутки окна window без изменений.При написании приложения, обычно следует использовать
display-buffer(см. Выбор окна) или функции более высокого уровня, описанные в Переключение буферов, вместо вызоваset-window-bufferнапрямую.Это выполняет
window-scroll-functions, за которым следуетwindow-configuration-change-hook. См. Вспомогательные функции для окон.
- Переменная: buffer-display-count
Эта переменная, локальная для буфера, записывает количество раз, когда буфер отображался в окне. Она увеличивается каждый раз, когда
set-window-bufferвызывается для буфера.
- Переменная: buffer-display-time
Эта переменная, локальная для буфера, записывает время, когда буфер в последний раз отображался в окне. Значение равно
nil, если буфер никогда не отображался. Она обновляется каждый раз, когдаset-window-bufferвызывается для буфера, со значением, возвращаемымcurrent-time(см. Время суток).
- Функция: get-buffer-window &optional buffer-or-name all-frames
-
Эта функция возвращает первое окно, отображающее buffer-or-name в циклическом порядке окон, начиная с выбранного окна (см. Циклический порядок окон). Если такого окна не существует, возвращаемое значение равно
nil.buffer-or-name должен быть буфером или именем буфера; если опущено или
nil, по умолчанию используется текущий буфер. Необязательный аргумент all-frames указывает, какие окна следует учитывать:-
tозначает, что следует учитывать окна на всех существующих фреймах. -
visibleозначает, что следует учитывать окна на всех видимых фреймах. - 0 означает учитывать окна на всех видимых или свернутых фреймах.
- Фрейм означает учитывать окна только на этом фрейме.
- Любое другое значение означает учитывать окна на выбранном фрейме.
Обратите внимание, что эти значения немного отличаются от значений аргумента all-frames для
next-window(см. Циклический порядок окон). Эта функция может быть изменена в будущих версиях Emacs, чтобы устранить это расхождение. -
- Функция: get-buffer-window-list &optional buffer-or-name minibuf all-frames
-
Эта функция возвращает список всех окон, в которых в настоящее время отображается buffer-or-name. buffer-or-name должен быть буфером или именем существующего буфера. Если опущено или
nil, по умолчанию используется текущий буфер. Если в текущем выбранном окне отображается buffer-or-name, оно будет первым в списке, возвращаемом этой функцией.Аргументы minibuf и all-frames имеют те же значения, что и в функции
next-window(см. Циклический порядок окон). Обратите внимание, что аргумент all-frames не ведет себя точно так же, как вget-buffer-window.
- Команда: replace-buffer-in-windows &optional buffer-or-name
-
Эта команда заменяет buffer-or-name другим буфером во всех окнах, отображающих его. buffer-or-name должен быть буфером или именем существующего буфера; если опущено или
nil, по умолчанию используется текущий буфер.Заменяющий буфер в каждом окне выбирается с помощью
switch-to-prev-buffer(см. История окон). За исключением боковых окон (см. Боковые окна), любое выделенное окно, отображающее buffer-or-name, удаляется, если возможно (см. Выделенные окна). Если такое окно является единственным окном на своем фрейме, а на том же терминале есть другие фреймы, фрейм удаляется также. Если выделенное окно является единственным окном на единственном фрейме на своем терминале, буфер заменяется в любом случае.
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/Buffers-and-Windows.html