Поведение действий по отображению буфера (см. Выбор окна для отображения буфера) может быть дополнительно изменено следующими пользовательскими параметрами.
Если значение этой переменной не равно nil, display-buffer
может разбить существующее окно, чтобы создать новое окно для
отображения в нём. Это значение по умолчанию.
Эта переменная предоставлена только для обратной совместимости. Она
учитывается функцией display-buffer через специальный механизм в
display-buffer-fallback-action, который вызывает функцию действия
display-buffer-pop-up-window (см. Функции действий для отображения буфера), когда значение этого параметра не равно nil. Она
не используется непосредственно самой display-buffer-pop-up-window,
которую пользователь может указать напрямую в display-buffer-alist
и т.д.
Эта переменная задаёт функцию для разбиения окна, чтобы
создать новое окно для отображения буфера. Она используется функцией действия
display-buffer-pop-up-window для фактического разбиения окна.
Значение должно быть функцией, которая принимает один аргумент — окно, и
возвращает либо новое окно (которое будет использоваться для отображения нужного
буфера), либо nil (что означает неудачу разбиения). Значение по умолчанию —
split-window-sensibly, которое описано далее.
Эта функция пытается разбить window и вернуть вновь созданное
окно. Если window невозможно разбить, она возвращает nil. Если
window опущено или равно nil, по умолчанию используется выбранное
окно.
Эта функция подчиняется обычным правилам, определяющим, когда окно может
быть разбито (см. Разбиение окон). Сначала она пытается разбить,
размещая новое окно снизу, с учётом ограничения, налагаемого
split-height-threshold (см. ниже), в дополнение к любым другим
ограничениям. Если это не удаётся, она пытается разбить, размещая новое
окно справа, с учётом split-width-threshold (см.
ниже). Если и это не удаётся, и окно является единственным окном на своём
фрейме, эта функция снова пытается разбить и разместить новое окно
снизу, игнорируя split-height-threshold. Если и это не удаётся,
функция прекращает попытки и возвращает nil.
Эта переменная определяет, разрешено ли split-window-sensibly
разбивать окно, размещая новое окно снизу. Если это целое число, это означает,
что разбиение разрешено, только если исходное окно имеет по крайней мере
столько строк. Если значение равно nil, это означает, что разбиение
таким способом запрещено.
Эта переменная определяет, разрешено ли split-window-sensibly
разбивать окно, размещая новое окно справа. Если значение является целым числом,
это означает, что разбиение разрешено, только если исходное окно имеет по крайней
мере столько столбцов. Если значение равно nil, это означает, что разбиение
таким способом запрещено.
Эта переменная, если не равна nil, заставляет display-buffer
выравнивать размеры окон всякий раз, когда он повторно использует существующее окно,
и это окно является смежным с выбранным.
Если её значение равно width-only, размеры выравниваются только в том случае,
если повторно используемое окно находится слева или справа от выбранного, а выбранное
окно шире повторно используемого. Если её значение равно height-only,
размеры выравниваются только в том случае, если повторно используемое окно находится
над или под выбранным окном, а выбранное окно выше повторно используемого.
Любое другое значение, не равное nil, означает выравнивание размеров в любом
из этих случаев, при условии, что выбранное окно больше повторно используемого в смысле
их комбинации.
Если значение этой переменной не равно nil, это означает, что
display-buffer может отображать буферы, создавая новые фреймы.
Значение по умолчанию — nil.
Значение, не равное nil, также означает, что когда display-buffer
ищет окно, уже отображающее buffer-or-name, он может
искать в любом видимом или свёрнутом фрейме, а не только в выбранном фрейме.
Запись с тем же именем в alist функции display-buffer
имеет приоритет над переменной.
Эта переменная предоставлена в основном для обратной совместимости. Она
учитывается функцией display-buffer через специальный механизм в
display-buffer-fallback-action, который вызывает функцию действия
display-buffer-pop-up-frame (см. Функции действий для отображения буфера), если значение не равно nil. (Это делается перед
попыткой разбить окно.) Эта переменная не используется непосредственно
самой display-buffer-pop-up-frame, которую пользователь может указать
напрямую в display-buffer-alist и т.д.
Эта переменная задаёт функцию для создания нового фрейма, чтобы
создать новое окно для отображения буфера. Она используется функцией действия
display-buffer-pop-up-frame.
Значение должно быть функцией, которая не принимает аргументов и возвращает
фрейм или nil, если фрейм не удалось создать. Значение по умолчанию —
функция, создающая фрейм с использованием параметров, заданных
pop-up-frame-alist (см. ниже).
Эта переменная содержит ассоциативный список параметров фрейма (см. Параметры фрейма), который используется функцией, заданной
pop-up-frame-function, для создания нового фрейма. Значение по умолчанию —
nil.
Этот параметр предоставлен только для обратной совместимости. Обратите внимание,
что когда display-buffer-pop-up-frame вызывает функцию, указанную
pop-up-frame-function, он добавляет в начало pop-up-frame-alist
значения всех записей pop-up-frame-parameters из ассоциативного списка
действий, так что значения, указанные записью ассоциативного списка действий,
фактически переопределяют соответствующие значения pop-up-frame-alist.
Следовательно, пользователям следует настраивать запись pop-up-frame-parameters
в ассоциативном списке действий в display-buffer-alist вместо настройки
pop-up-frame-alist. Только так гарантируется, что значение параметра,
заданное пользователем, переопределит значение этого параметра, заданное
вызывающей стороной display-buffer.
При разработке display-buffer было приложено много усилий для
обеспечения совместимости с кодом, использующим старые параметры, такие как
pop-up-windows, pop-up-frames,
pop-up-frame-alist, same-window-buffer-names и
same-window-regexps. Программы на Lisp и пользователям следует
воздерживаться от использования этих параметров. Выше мы уже предупреждали о настройке
pop-up-frame-alist. Здесь мы описываем, как преобразовать
оставшиеся параметры для использования действий отображения.
pop-up-windows ¶Эта переменная по умолчанию равна t. Вместо её настройки на
nil и, следовательно, указания display-buffer, чего не делать,
гораздо лучше перечислить в display-buffer-base-action функции
действий, которые он должен попробовать вместо этого, например:
(setopt
display-buffer-base-action
'((display-buffer-reuse-window display-buffer-same-window
display-buffer-in-previous-window
display-buffer-use-some-window)))
pop-up-frames ¶Вместо настройки этой переменной на t вы можете настроить
display-buffer-base-action, например, следующим образом:
(setopt display-buffer-base-action '(nil (pop-up-frames . t)))
same-window-buffer-names ¶same-window-regexpsВместо добавления имени буфера или регулярного выражения в один из
этих параметров используйте запись display-buffer-alist для этого
буфера, указывающую функцию действия display-buffer-same-window.
(setopt
display-buffer-alist
(cons '("\\*foo\\*" (display-buffer-same-window))
display-buffer-alist))