Дополнительные параметры для отображения буферов
Поведение действий отображения буферов (см. Выбор окна) можно дополнительно изменить с помощью следующих пользовательских параметров.
- Пользовательский параметр: 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-namessame-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