Spec-Zone.ru › Elisp

История окон

Каждое окно запоминает в списке буферы, которые оно ранее отображало, и порядок, в котором эти буферы были из него удалены. Эта история используется, например, функцией replace-buffer-in-windows (см. Буферы и окна), а также при закрытии окон (см. Закрытие окон). Список автоматически поддерживается Emacs, но вы можете использовать следующие функции для явного просмотра или изменения его:

Функция: window-prev-buffers &optional window

Эта функция возвращает список, определяющий предыдущее содержимое окна window. Необязательный аргумент window должен быть активным окном и по умолчанию равен выбранному.

Каждый элемент списка имеет вид (buffer window-start window-pos), где buffer — буфер, ранее отображавшийся в окне, window-start — позиция начала окна (см. Начало и конец окна) в момент последнего отображения этого буфера, а window-pos — позиция курсора (см. Позиция курсора в окне) в момент последнего отображения этого буфера в окне window.

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

Функция: set-window-prev-buffers window prev-buffers

Эта функция устанавливает предыдущие буферы окна window в значение prev-buffers. Аргумент window должен быть активным окном и по умолчанию равен выбранному. Аргумент prev-buffers должен быть списком той же формы, что и возвращаемый window-prev-buffers.

Кроме того, каждое окно поддерживает список следующих буферов, который представляет собой список буферов, повторно отображаемых функцией switch-to-prev-buffer (см. ниже). Этот список в основном используется функциями switch-to-prev-buffer и switch-to-next-buffer для выбора буферов для переключения.

Функция: window-next-buffers &optional window

Эта функция возвращает список буферов, недавно повторно отображённых в окне window посредством switch-to-prev-buffer. Аргумент window должен обозначать активное окно или nil (то есть выбранное окно).

Функция: set-window-next-buffers window next-buffers

Эта функция устанавливает список следующих буферов окна window в next-buffers. Аргумент window должен быть активным окном или nil (то есть выбранное окно). Аргумент next-buffers должен быть списком буферов.

Следующие команды могут использоваться для циклического перехода по глобальному списку буферов, подобно bury-buffer и unbury-buffer. Однако они циклически переходят по списку истории указанного окна, а не по глобальному списку буферов. Кроме того, они восстанавливают специфичные для окна позиции начала и курсора в окне и могут отображать буфер, даже если он уже отображен в другом окне. Команда switch-to-prev-buffer, в частности, используется функциями replace-buffer-in-windows, bury-buffer и quit-window для поиска заменяющего буфера для окна.

Команда: switch-to-prev-buffer &optional window bury-or-kill

Эта команда отображает предыдущий буфер в окне window. Аргумент window должен быть активным окном или nil (то есть выбранное окно). Если необязательный аргумент bury-or-kill отличен от nil, это означает, что буфер, который сейчас отображается в окне window, собираются закрыть или уничтожить, и поэтому его не следует переключать в будущих вызовах этой команды.

Предыдущий буфер обычно является буфером, показанным перед буфером, который в данный момент показан в окне window. Однако буфер, который был закрыт или уничтожен, или который был уже показан в недавнем вызове switch-to-prev-buffer, не считается предыдущим буфером.

Если многократные вызовы этой команды уже показали все буферы, ранее показанные в окне window, дальнейшие вызовы покажут буферы из списка буферов фрейма, на котором расположено окно window (см. Список буферов).

Нижеописанная опция switch-to-prev-buffer-skip может быть использована для запрета переключения на определённые буферы, например, на те, которые уже отображены в другом окне. Кроме того, если фрейм окна window имеет параметр buffer-predicate (см. Параметры буфера), это условие может запретить переключение на определённые буферы.

Команда: switch-to-next-buffer &optional window

Эта команда переключается на следующий буфер в окне window, тем самым отменяя действие последней команды switch-to-prev-buffer в окне window. Аргумент window должен быть активным окном и по умолчанию равен выбранному.

Если нет недавнего вызова switch-to-prev-buffer, который можно отменить, эта функция пытается отобразить буфер из списка буферов фрейма, на котором расположено окно window (см. Список буферов).

Опция switch-to-prev-buffer-skip и параметр buffer-predicate (см. Параметры буфера) фрейма окна window влияют на эту команду так же, как и на команду switch-to-prev-buffer.

По умолчанию switch-to-prev-buffer и switch-to-next-buffer могут переключаться на буфер, который уже отображается в другом окне. Следующая опция может быть использована для переопределения этого поведения.

Пользовательская опция: switch-to-prev-buffer-skip

Если эта переменная имеет значение nil, switch-to-prev-buffer может переключаться на любой буфер, включая те, которые уже отображены в других окнах.

Если эта переменная имеет значение, отличное от nil, switch-to-prev-buffer откажется от переключения на определённые буферы. Следующие значения могут быть использованы:

  • this означает, что не следует переключаться на буфер, отображённый на фрейме, на котором находится окно, на которое действует switch-to-prev-buffer.
  • visible означает, что не следует переключаться на буфер, отображённый на любом видимом фрейме.
  • 0 (число ноль) означает, что не следует переключаться на буфер, отображённый на любом видимом или свёрнутом фрейме.
  • t означает, что не следует переключаться на буфер, отображённый на любом активном фрейме.
  • Функция, которая принимает три аргумента — аргумент window команды switch-to-prev-buffer, буфер, на который switch-to-prev-buffer намеревается переключиться, и аргумент bury-or-kill команды switch-to-prev-buffer. Если эта функция возвращает значение, отличное от nil, switch-to-prev-buffer откажется от переключения на указанный во втором аргументе буфер.

Команда switch-to-next-buffer подчиняется этой опции аналогичным образом. Если эта опция задаёт функцию, switch-to-next-buffer вызовет эту функцию с третьим аргументом, всегда равным nil.

Обратите внимание, что поскольку switch-to-prev-buffer вызывается функциями bury-buffer, replace-buffer-in-windows и quit-restore-window, настройка этой опции может также повлиять на поведение Emacs при закрытии окна или закрытии/скрытии буфера.

Обратите также внимание, что в некоторых ситуациях функции switch-to-prev-buffer и switch-to-next-buffer могут игнорировать эту опцию, например, когда остаётся только один буфер, на который эти функции могут переключиться.

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/Window-History.html

Spec-Zone.ru

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