Spec-Zone.ru › Elisp

Создание кадров

Чтобы создать новый кадр, вызовите функцию make-frame.

Команда: make-frame &optional parameters

Эта функция создаёт и возвращает новый кадр, отображающий текущий буфер.

Аргумент parameters — это ассоциативный список, задающий параметры нового кадра. См. Параметры кадров. Если в parameters указан параметр terminal, новый кадр создаётся на этом терминале. В противном случае, если в parameters указан параметр кадра window-system, он определяет, следует ли отображать кадр на текстовом или графическом терминале. См. Оконные системы. Если не указан ни один из этих параметров, новый кадр создаётся на том же терминале, что и выбранный кадр.

Для всех параметров, не указанных в parameters, по умолчанию используются значения из ассоциативного списка default-frame-alist (см. Начальные параметры кадра); для параметров, не указанных там, используются значения из ресурсов X или их аналога в вашей операционной системе (см. Ресурсы X в Руководстве GNU Emacs). После создания кадра эта функция применяет к нему все параметры из frame-inherited-parameters (см. ниже), которым ещё не присвоены значения, используя значения из кадра, выбранного в момент вызова make-frame.

Обратите внимание: на дисплеях с несколькими мониторами (см. Несколько терминалов) оконный менеджер может разместить кадр иначе, чем задано позиционными параметрами в parameters (см. Параметры положения). Например, некоторые оконные менеджеры размещают кадр на мониторе, на котором находится наибольшая часть окна (так называемом доминирующем мониторе).

Сама эта функция не делает новый кадр выбранным. См. Фокус ввода. Ранее выбранный кадр остаётся выбранным. Однако на графических терминалах оконная система может выбрать новый кадр по собственным причинам.

По умолчанию эта функция не отображает текущий буфер в новом кадре, если буфер скрыт, то есть если его имя начинается с пробела. В этом случае вместо него будет показан другой буфер — тот, который могла бы вернуть функция other-buffer (см. Список буферов). Однако если переменная expose-hidden-buffer не равна nil, эта функция отобразит текущий буфер, даже если он скрыт.

Переменная: before-make-frame-hook

Обычный хук, выполняемый функцией make-frame перед созданием кадра.

Переменная: after-make-frame-functions

Нестандартный хук, выполняемый функцией make-frame после создания кадра. Каждая функция в after-make-frame-functions получает один аргумент — только что созданный кадр.

В своей функции можно проверять параметры кадра cloned-from и undeleted, чтобы определить, был ли кадр клонирован с помощью clone-frame или восстановлен с помощью undelete-frame. См. Параметры кадров.

Обратите внимание: функции, добавленные в эти хуки из вашего файла инициализации, обычно не выполняются для начального кадра, поскольку Emacs читает файл инициализации только после создания этого кадра. Однако если для начального кадра задан отдельный кадр минибуфера (см. Минибуферы и кадры), функции будут выполнены для обоих кадров — как для кадра без минибуфера, так и для кадра минибуфера. Кроме того, функции можно добавить в эти хуки в «раннем файле инициализации» (см. Файл инициализации); в этом случае они будут действовать и для начального кадра.

Переменная: frame-inherited-parameters

Эта переменная задаёт список параметров кадра, наследуемых вновь созданным кадром от текущего выбранного кадра. Для каждого параметра (символа), присутствующего в этом списке и которому ещё не было присвоено значение при обработке make-frame, функция устанавливает в созданном кадре значение, равное значению этого параметра в выбранном кадре.

Пользовательский параметр: server-after-make-frame-hook

Обычный хук, выполняемый при запуске сервера Emacs с использованием клиентского кадра. При вызове этого хука клиентский кадр является выбранным. Обратите внимание: в зависимости от того, как была вызвана команда emacsclient (см. Вызов emacsclient в Руководстве GNU Emacs), этим клиентским кадром может быть новый кадр, созданный для клиента, либо существующий кадр, повторно использованный сервером для обработки команд клиента. См. Сервер Emacs в Руководстве GNU Emacs.

Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Creating-Frames.html

Spec-Zone.ru

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