Spec-Zone.ru › Elisp

Буферы и окна

В этом разделе описываются функции низкого уровня для проверки и изменения содержимого окон. См. Переключение буферов для функций более высокого уровня отображения определенного буфера в окне.

Функция: 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

Spec-Zone.ru

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