Spec-Zone.ru › Elisp

Дополнительные параметры для отображения буферов

Поведение действий отображения буферов (см. Выбор окна) можно дополнительно изменить с помощью следующих пользовательских параметров.

Пользовательский параметр: pop-up-windows

Если значение этой переменной не равно nil, display-buffer разрешено разделять существующее окно, чтобы создать новое окно для отображения. Это значение по умолчанию.

Эта переменная предоставляется только для обратной совместимости. Она соблюдается display-buffer с помощью специального механизма в display-buffer-fallback-action, который вызывает функцию действия display-buffer-pop-up-window (см. Функции действий отображения буфера), когда значение этого параметра не равно nil. Она не используется display-buffer-pop-up-window напрямую, которое пользователь может указать непосредственно в display-buffer-alist и т. д.

Пользовательский параметр: split-window-preferred-function

Эта переменная задаёт функцию для разделения окна, чтобы создать новое окно для отображения буфера. Она используется функцией действия display-buffer-pop-up-window для фактического разделения окна.

Значение должно быть функцией, которая принимает один аргумент — окно и возвращает либо новое окно (которое будет использоваться для отображения желаемого буфера), либо nil (что означает, что разделение не удалось). Значение по умолчанию — split-window-sensibly, которое описано ниже.

Функция: split-window-sensibly &optional window

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

Эта функция подчиняется обычным правилам, определяющим, когда окно можно разделить (см. Разделение окон). Сначала она пытается разделить, поместив новое окно ниже, с учётом ограничений, наложенных split-height-threshold (см. ниже), в дополнение к любым другим ограничениям. Если это не удаётся, она пытается разделить, поместив новое окно справа, с учётом split-width-threshold (см. ниже). Если и это не удаётся, и окно является единственным окном на своей рамке, эта функция снова пытается разделить и поместить новое окно ниже, игнорируя split-height-threshold. Если и это не удаётся, функция прекращает попытку и возвращает nil.

Пользовательский параметр: split-height-threshold

Эта переменная задаёт, разрешено ли split-window-sensibly разделить окно, разместив новое окно ниже. Если это целое число, это означает разделение только если исходное окно имеет не менее этого количества строк. Если это nil, это означает, что разделение не производится таким образом.

Пользовательский параметр: split-width-threshold

Эта переменная задаёт, разрешено ли split-window-sensibly разделить окно, поместив новое окно справа. Если значение является целым числом, это означает разделение только если исходное окно имеет не менее этого количества столбцов. Если значение является nil, это означает, что разделение не производится таким образом.

Пользовательский параметр: even-window-sizes

Если эта переменная не равна nil, display-buffer выравнивает размеры окон всякий раз, когда повторно использует существующее окно, а это окно прилегает к выбранному.

Если её значение равно width-only, размеры выравниваются только если повторно используемое окно находится слева или справа от выбранного, и выбранное окно шире повторно используемого. Если её значение равно height-only, размеры выравниваются только если повторно используемое окно расположено над или под выбранным, и выбранное окно выше повторно используемого. Любое другое неравное nil значение означает выравнивание размеров в любом из этих случаев, при условии, что выбранное окно больше повторно используемого в смысле их комбинации.

Пользовательский параметр: pop-up-frames

Если значение этой переменной не равно nil, display-buffer может отображать буферы, создавая новые фреймы. По умолчанию это nil.

Неравное nil значение также означает, что когда display-buffer ищет окно, уже отображающее buffer-or-name, оно может искать любой видимый или иконный фрейм, а не только выбранный.

Эта переменная в основном предоставляется для обратной совместимости. Она соблюдается display-buffer с помощью специального механизма в display-buffer-fallback-action, который вызывает функцию действия display-buffer-pop-up-frame (см. Функции действий отображения буфера), если значение не равно nil. (Это выполняется до попытки разделить окно.) Эта переменная не используется display-buffer-pop-up-frame напрямую, которое пользователь может указать непосредственно в display-buffer-alist и т. д.

Пользовательский параметр: pop-up-frame-function

Эта переменная задаёт функцию для создания нового фрейма, чтобы создать новое окно для отображения буфера. Она используется функцией действия display-buffer-pop-up-frame.

Значение должно быть функцией, которая не принимает аргументов и возвращает фрейм или nil, если фрейм создать не удалось. Значение по умолчанию — функция, которая создаёт фрейм с параметрами, указанными в pop-up-frame-alist (см. ниже).

Пользовательский параметр: pop-up-frame-alist

Эта переменная содержит список параметров фрейма (см. Параметры фрейма), который используется функцией, указанной в pop-up-frame-function для создания нового фрейма. Значение по умолчанию — nil.

Этот параметр предоставляется только для обратной совместимости. Обратите внимание, что когда display-buffer-pop-up-frame вызывает функцию, указанную в pop-up-frame-function, она добавляет в начало pop-up-frame-parameters в pop-up-frame-alist, так что значения, указанные в параметре действия, фактически переопределяют соответствующие значения в 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 функции действий, которые следует попробовать, например:

(customize-set-variable
 '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, например, следующим образом:

(customize-set-variable
 'display-buffer-base-action
 '((display-buffer-reuse-window display-buffer-pop-up-frame)
   (reusable-frames . 0)))
same-window-buffer-names
same-window-regexps

Вместо добавления имени буфера или регулярного выражения в один из этих параметров, используйте запись display-buffer-alist для этого буфера, указав функцию действия display-buffer-same-window.

(customize-set-variable
 'display-buffer-alist
 (cons '("\\*foo\\*" (display-buffer-same-window))
        display-buffer-alist))

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

Spec-Zone.ru

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