Создание кадров
Чтобы создать новый кадр, вызовите функцию 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