Списки действий для отображения буфера
Список действий — это список ассоциаций, сопоставляющий предопределенные символы, распознаваемые функциями действий, со значениями, которые эти функции должны интерпретировать соответственно. При каждом вызове display-buffer строит новый, возможно пустой, список действий и передает весь этот список любой функции действия, которую он вызывает.
По своему назначению, функции действий свободны в своей интерпретации записей списка действий. Фактически, некоторые записи, такие как allow-no-window или previous-window, имеют смысл только для одной или нескольких функций действий и игнорируются остальными. Другие записи, такие как inhibit-same-window или window-parameters, должны учитываться большинством функций действий, включая те, которые предоставляются приложениями и внешними пакетами.
В предыдущем подразделе мы подробно описали, как отдельные функции действий интерпретируют записи списка действий, которые им важны. Здесь мы предоставляем справочный список всех известных записей списка действий по их символам, вместе со значениями и функциями действий (см. Функции действий отображения буфера), которые их распознают. В этом списке термин «буфер» будет относиться к буферу display-buffer, который должен отображаться, а «значение» относится к значению записи.
inhibit-same-window-
Если значение является не-
nil, это сигнализирует о том, что выбранное окно не должно использоваться для отображения буфера. Все функции действий, которые (пере)используют существующее окно, должны учитывать эту запись. previous-window-
Значение должно указать окно, которое, возможно, ранее отображало буфер.
display-buffer-in-previous-windowотдаст предпочтение такому окну, при условии, что оно все еще активно и не выделено для другого буфера. mode-
Значение является либо основным режимом, либо списком основных режимов.
display-buffer-reuse-mode-windowможет повторно использовать окно, когда заданное этим значением основное окно соответствует основному режиму буфера этого окна. Другие функции действий игнорируют такие записи. frame-predicate-
Значение должно быть функцией, принимающей один аргумент (фрейм), которая должна возвращать не-
nil, если этот фрейм является кандидатом для отображения буфера. Эта запись используетсяdisplay-buffer-use-some-frame. reusable-frames-
Значение определяет набор фреймов для поиска окна, которое может быть повторно использовано, так как оно уже отображает буфер. Его можно задать следующим образом:
-
nilозначает учитывать только окна на выбранном фрейме. (Фактически, последний используемый фрейм, который не является фреймом только для мини-буфера.) -
tозначает учитывать окна на всех фреймах. -
visibleозначает учитывать окна на всех видимых фреймах. - 0 означает учитывать окна на всех видимых или минимизированных фреймах.
- Фрейм означает учитывать только окна на этом фрейме.
Обратите внимание, что значение
nilнемного отличается от значения аргумента all-frames дляnext-window(см. Циклический порядок окон).Основным клиентом этого является
display-buffer-reuse-window, но все остальные функции действий, которые пытаются повторно использовать окно, также затронуты.display-buffer-in-previous-windowиспользует его при поиске окна, которое ранее отображало буфер на другом фрейме. -
inhibit-switch-frame-
Не-
nilзначение предотвращает поднятие или выбор другого фрейма, если окно, выбранноеdisplay-buffer, отображается там. В первую очередь это затронетdisplay-buffer-use-some-frameиdisplay-buffer-reuse-window. В идеале,display-buffer-pop-up-frameтакже должен быть затронут, но нет гарантии, что диспетчер окон будет этому следовать. window-parameters-
Значение определяет список параметров окна, которые необходимо передать выбранному окну. Все функции действий, которые выбирают окно, должны обрабатывать эту запись.
window-min-height-
Значение задаёт минимальную высоту используемого окна в строках. Если окно не может или не будет иметь высоту, указанную в этой записи, то окно не рассматривается для использования. В настоящее время единственный клиент этой записи —
display-buffer-below-selected.Обратите внимание, что предоставление такой записи само по себе не гарантирует, что окно будет иметь высоту, указанную в её значении. Для фактического изменения размера существующего окна или создания нового окна с заданной высотой необходимо также предоставить запись
window-heightс указанным значением. Такая записьwindow-height, однако, может задавать совершенно иное значение или просить высоту окна быть соответствующей высоте буфера, в котором случае записьwindow-min-heightобеспечивает гарантированную минимальную высоту используемого окна. window-height-
Значение задаёт, как и нужно ли регулировать высоту выбранного окна и может принимать следующие значения:
-
nilозначает оставить высоту выбранного окна без изменений. - Целое число задаёт желаемую общую высоту выбранного окна в строках.
- Вещественное число задаёт долю желаемой общей высоты выбранного окна относительно общей высоты корневого окна фрейма.
- Если значение определяет функцию, эта функция вызывается с одним аргументом — выбранным окном. Функция должна отрегулировать высоту окна; возвращаемое значение игнорируется. Подходящие функции —
fit-window-to-bufferиshrink-window-if-larger-than-buffer, см. Изменение размеров окон.
По соглашению, высота выбранного окна изменяется только если окно является частью вертикальной комбинации (см. Окна и фреймы), чтобы избежать изменения высоты других, не связанных окон. Также эта запись должна обрабатываться только при определенных условиях, которые указаны непосредственно под этим списком.
-
window-width-
Эта запись похожа на запись
window-height, описанную ранее, но используется для изменения ширины выбранного окна вместо высоты. Значение может быть одним из следующих:-
nilозначает оставить ширину выбранного окна без изменений. - Целое число задаёт желаемую общую ширину выбранного окна в колонках.
- Вещественное число задаёт долю желаемой общей ширины выбранного окна относительно общей ширины корневого окна фрейма.
- Если значение определяет функцию, эта функция вызывается с одним аргументом — выбранным окном. Функция должна отрегулировать ширину окна; возвращаемое значение игнорируется.
По соглашению, ширина выбранного окна изменяется только если окно является частью горизонтальной комбинации (см. Окна и фреймы), чтобы избежать изменения ширины других, не связанных окон. Также эта запись должна обрабатываться только при определенных условиях, которые указаны непосредственно под этим списком.
-
dedicated-
Если не-
nil, такая запись сообщаетdisplay-bufferотметить любое созданное им окно как выделенное для его буфера (см. Выделенные окна). Это делается путем вызоваset-window-dedicated-pс выбранным окном в качестве первого аргумента и значением записи во втором. По умолчанию боковые окна выделяются со значениемside(см. Параметры и функции боковых окон). preserve-size-
Если не-
nil, такая запись сообщает Emacs сохранить размер выбранного окна (см. Сохранение размеров окон). Значение должно быть либо(t . nil)для сохранения ширины окна,(nil . t)для сохранения его высоты или(t . t)для сохранения как ширины, так и высоты. Эта запись должна обрабатываться только при определенных условиях, указанных непосредственно после этого списка. pop-up-frame-parameters-
Значение задаёт родительский фрейм для использования, когда буфер отображается в дочернем фрейме. Эта запись используется только функцией
display-buffer-in-child-frame. parent-frame-
Значение задаёт список параметров фрейма для использования, когда буфер отображается в дочернем фрейме. Эта запись используется только функцией
display-buffer-in-child-frame. side-
Значение обозначает сторону фрейма или окна, где должно быть создано новое окно для отображения буфера. Эта запись используется
display-buffer-in-side-windowдля указания стороны фрейма, где должно быть расположено новое боковое окно (см. Отображение буферов в боковых окнах). Она также используетсяdisplay-buffer-in-atom-windowдля указания стороны существующего окна, где должно быть расположено новое окно (см. Атомные окна). slot-
Если не-
nil, значение задаёт слот бокового окна, который должен отображать буфер. Эта запись используется только функциейdisplay-buffer-in-side-window. direction-
Значение задаёт направление, которое вместе с записью
windowпозволяетdisplay-buffer-in-directionопределить расположение окна для отображения буфера. window-
Значение задаёт окно, которое каким-то образом связано с окном, выбранным
display-buffer. Эта запись в настоящее время используетсяdisplay-buffer-in-atom-windowдля указания окна, по боковой стороне которого должно быть создано новое окно. Она также используетсяdisplay-buffer-in-directionдля указания эталонного окна, по боковой стороне которого должно появиться результирующее окно. allow-no-window-
Если значение не-
nil,display-bufferнеобязательно должен отображать буфер, и вызывающий метод готов принять это. Эта запись не предназначена для пользовательских настроек, так как нет гарантии, что произвольный вызывающий методdisplay-bufferсможет обработать случай, когда окно не будет отображать буфер.display-buffer-no-windowявляется единственной функцией действия, которая обращает внимание на эту запись. body-functionЗначение должно быть функцией, принимающей один аргумент (отображённое окно). Эта функция может быть использована для заполнения тела отображаемого окна некоторым содержимым, которое может зависеть от размеров отображаемого окна. Она вызывается *после* отображения буфера и *перед* применением записей
window-height,window-widthиpreserve-size, которые могут изменить размер окна для подгонки его к вставленному содержимому.
По соглашению, записи window-height, window-width и preserve-size применяются после настройки буфера выбранного окна и только в том случае, если это окно никогда не отображало другой буфер ранее. Более точно, это означает, что окно должно быть либо создано текущим вызовом display-buffer, либо окно было создано ранее вызовом display-buffer для отображения буфера и никогда не использовалось для отображения другого буфера до его повторного использования текущим вызовом display-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/Buffer-Display-Action-Alists.html