Чтобы создать новый фрейм, вызовите функцию make-frame.
Эта функция создает и возвращает новый фрейм, отображая текущий буфер.
Аргумент parameters — это alist, который указывает параметры фрейма
для нового фрейма. См. Параметры фрейма. Если вы
укажете параметр terminal в parameters, новый фрейм
будет создан в этом терминале. В противном случае, если вы укажете параметр фрейма
window-system в parameters, это определяет, должен ли
фрейм отображаться в текстовом терминале или в графическом терминале. См. Системы окон. Если ни один из них не указан, новый фрейм
создается в том же терминале, что и выбранный фрейм.
Любые параметры, не упомянутые в parameters, по умолчанию принимают
значения из alist default-frame-alist (см. Начальные
параметры фрейма); параметры, не указанные там, по умолчанию берутся из ресурсов X
или их эквивалента в вашей операционной системе (см. Ресурсы X в Руководство GNU Emacs). После
создания фрейма эта функция применяет любые параметры, указанные в
frame-inherited-parameters (см. ниже), которые еще не были назначены,
принимая значения из фрейма, который был выбран при вызове make-frame.
Обратите внимание, что на дисплеях с несколькими мониторами (см. Несколько терминалов) менеджер окон может расположить фрейм иначе, чем указано в позиционных параметрах в parameters (см. Позиционные параметры). Например, некоторые менеджеры окон имеют политику отображения фрейма на мониторе, содержащем наибольшую часть окна (также называемый доминирующим монитором dominating).
Сама эта функция не делает новый фрейм выбранным фреймом. См. Фокус ввода. Предыдущий выбранный фрейм остается выбранным. Однако в графических терминалах система окон может выбрать новый фрейм по собственным причинам.
Обычий хук, выполняемый make-frame перед созданием фрейма.
Аномальный хук, выполняемый make-frame после создания фрейма. Каждая функция в
after-make-frame-functions принимает один аргумент — только что созданный фрейм.
Обратите внимание, что любые функции, добавленные в эти хуки в вашем начальном файле, обычно не выполняются для начального фрейма, поскольку Emacs считывает начальный файл только после создания этого фрейма. Однако, если начальный фрейм указан для использования отдельного фрейма minibuffer (см. Minibuffers и Фреймы), функции будут выполнены для обоих: для фрейма без minibuffer и для фрейма minibuffer. В качестве альтернативы, вы можете добавить функции в эти хуки в своем «раннем инициализационном файле» (см. Инициализационный файл), в таком случае они будут действовать и для начального фрейма.
Эта переменная указывает список параметров фрейма, которые новый созданный фрейм
наследует от текущего выбранного фрейма. Для каждого параметра (символа), который является
элементом этого списка и не был назначен ранее при обработке make-frame,
функция устанавливает значение этого параметра в созданном фрейме равным его значению в
выбранном фрейме.
Обычий хук, выполняемый, когда сервер Emacs начинает работать с клиентским фреймом.
Когда этот хук вызывается, клиентский фрейм является выбранным. Обратите внимание, что, в
зависимости от того, как был вызван emacsclient (см. Вызов emacsclient в Руководство GNU Emacs),
этот клиентский фрейм может быть новым фреймом, созданным для клиента, или это может быть
существующий фрейм, который сервер повторно использовал для обработки команд клиента. См.
Сервер Emacs в Руководство GNU Emacs.