Spec-Zone.ru › Elisp

Циклический порядок окон

При использовании команды C-x o (other-window) для выбора другого окна, оно перемещается через активные окна в определенном порядке. Для любой данной конфигурации окон этот порядок никогда не меняется. Он называется циклическим порядком окон.

Порядок определяется обходом в глубину дерева окон каждого фрейма, извлекая активные окна, которые являются листовыми узлами дерева (см. Окна и фреймы). Если минибуфер активен, то окно минибуфера также включается. Порядок циклический, поэтому за последним окном в последовательности следует первое.

Функция: next-window &optional window minibuf all-frames

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

Необязательный аргумент minibuf указывает, следует ли включать окна минибуфера в циклический порядок. Обычно, когда minibuf nil, окно минибуфера включается только в том случае, если оно в данный момент активно; это соответствует поведению C-x o. (Обратите внимание, что окно минибуфера активно до тех пор, пока его минибуфер используется; см. Минибуферы).

Если minibuf t, циклический порядок включает все окна минибуфера. Если minibuf ни t ни nil, окна минибуфера не включаются, даже если они активны.

Необязательный аргумент all-frames определяет, какие фреймы следует учитывать:

  • nil означает, что следует учитывать окна в фрейме window. Если окно минибуфера учитывается (как указано аргументом minibuf), то учитываются также фреймы, разделяющие окно минибуфера.
  • t означает, что следует учитывать окна во всех существующих фреймах.
  • visible означает, что следует учитывать окна во всех видимых фреймах.
  • 0 означает, что следует учитывать окна во всех видимых или иконных фреймах.
  • Фрейм означает, что следует учитывать окна в этом конкретном фрейме.
  • Все остальное означает, что следует учитывать окна во фрейме window и ни в каких других.

Если учитывается более одного фрейма, циклический порядок получается путем присоединения порядков для этих фреймов в том же порядке, что и в списке всех активных фреймов (см. Поиск всех фреймов).

Функция: previous-window &optional window minibuf all-frames

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

Команда: other-window count &optional all-frames

Эта функция выбирает активное окно, расположенное на count позиций от выбранного окна в циклическом порядке окон. Если count положительное число, оно пропускает вперед count окон; если count отрицательное, оно пропускает назад -count окон; если count равно нулю, это просто повторно выбирает выбранное окно. При вызове интерактивно, count является числовым префиксом аргумента.

Необязательный аргумент all-frames имеет то же значение, что и в next-window, как и у nil аргумента minibuf к next-window.

Эта функция не выбирает окно, у которого параметр non-nil no-other-window (см. Параметры окон), при условии, что ignore-window-parameters является nil.

Если параметр other-window выбранного окна является функцией, и ignore-window-parameters есть nil, эта функция будет вызвана с аргументами count и all-frames вместо обычной работы этой функции.

Функция: walk-windows fun &optional minibuf all-frames

Эта функция вызывает функцию fun один раз для каждого активного окна, передавая окно как аргумент.

Она следует циклическому порядку окон. Необязательные аргументы minibuf и all-frames определяют набор включаемых окон; эти аргументы имеют те же значения, что и в next-window. Если all-frames указывает на фрейм, первое пройденное окно является первым окном в этом фрейме (то, которое возвращается frame-first-window), а не обязательно выбранным окном.

Если fun изменяет конфигурацию окна путем разделения или удаления окон, это не изменяет набор пройденных окон, который определяется до первого вызова fun.

Функция: one-window-p &optional no-mini all-frames

Эта функция возвращает t, если выбранное окно является единственным активным окном, и nil в противном случае.

Если окно минибуфера активно, оно обычно учитывается (так что эта функция возвращает nil). Однако, если необязательный аргумент no-mini является не-nil, окно минибуфера игнорируется, даже если оно активно. Необязательный аргумент all-frames имеет то же значение, что и для next-window.

Следующие функции возвращают окно, которое удовлетворяет некоторому критерию, не выбирая его:

Функция: get-lru-window &optional all-frames dedicated not-selected no-other

Эта функция возвращает активное окно, которое по критерию является наименее недавно используемым. Наименее недавно используемое окно — это наименее недавно выбранное окно — окно, время использования которого меньше времени использования всех других активных окон (см. Выбор окон). Необязательный аргумент all-frames имеет то же значение, что и в next-window.

Если присутствуют окна с полной шириной, учитываются только эти окна. Окно минибуфера никогда не является кандидатом. Окно выделения (см. Окна выделения) никогда не является кандидатом, если необязательный аргумент dedicated не-nil. Выбранное окно никогда не возвращается, если оно не единственный кандидат. Однако, если необязательный аргумент not-selected не-nil, эта функция возвращает nil в этом случае. Необязательный аргумент no-other, если не-nil, означает, что никогда не возвращается окно, у которого параметр no-other-window является не-nil.

Функция: get-mru-window &optional all-frames dedicated not-selected no-other

Эта функция похожа на get-lru-window, но возвращает наиболее недавно используемое окно вместо этого. Наиболее недавно используемое окно — это наиболее недавно выбранное окно — окно, время использования которого превышает время использования всех других активных окон (см. Выбор окон). Значение аргументов такое же, как и для get-lru-window.

Поскольку на практике наиболее недавно используемое окно всегда является выбранным, обычно имеет смысл вызывать эту функцию с аргументом not-selected, отличным от nil.

Функция: get-largest-window &optional all-frames dedicated not-selected no-other

Эта функция возвращает окно с наибольшей площадью (высота умноженная на ширину). Если есть два кандидата одинакового размера, она отдает предпочтение тому, который находится первым в циклическом порядке окон, начиная с выбранного окна. Значение аргументов такое же, как и для get-lru-window.

Функция: get-window-with-predicate predicate &optional minibuf all-frames default

Эта функция вызывает функцию predicate для каждого из окон в циклическом порядке окон по очереди, передавая ей окно в качестве аргумента. Если предикат возвращает не-nil для любого окна, эта функция останавливается и возвращает это окно. Если такое окно не найдено, возвращаемое значение является default (которое по умолчанию nil).

Необязательные аргументы minibuf и all-frames определяют окна для поиска, и имеют те же значения, что и в next-window.

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

Spec-Zone.ru

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