GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Creating-Frames.html ・ emacs-doc.conao3.com

30.1 フレームの作成

新しいフレームを作成するには、関数 make-frame を呼び出します。

コマンド: make-frame &optional parameters

この関数は、現在のバッファを表示する新しいフレームを作成して返します。

parameters 引数は、新しいフレームのフレームパラメータを指定するアリストです。フレームパラメータを参照してください。parameters で terminal パラメータを指定した場合、新しいフレームはその端末上に作成されます。そうでない場合、parameters で window-system フレームパラメータを指定すると、そのフレームをテキスト端末に表示するかグラフィカル端末に表示するかが決まります。ウィンドウシステムを参照してください。どちらも指定しない場合、新しいフレームは選択中のフレームと同じ端末上に作成されます。

parameters に記載されていないパラメータは、alist default-frame-alist の値(初期フレームパラメータ を参照)がデフォルトとなります。そこで指定されていないパラメータは、X リソースまたはお使いのオペレーティングシステムにおける同等の設定がデフォルトとなります(The GNU Emacs Manual の X リソース を参照)。フレームが作成された後、この関数は 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 内の各関数は、作成されたばかりのフレームを1つの引数として受け取る。

関数内でフレームパラメータ cloned-from および undeleted を参照することで、フレームが clone-frame を用いてクローンされたか、あるいは undelete-frame を用いて削除解除されたかを判定できます。フレームパラメータ を参照してください。

なお、初期ファイルでこれらのフックに追加した関数は、通常、初期フレームでは実行されません。これは、Emacsが初期ファイルを読み込むのは、そのフレームを作成した後であるためです。ただし、初期フレームで別のミニバッファフレームを使用するように指定されている場合(ミニバッファとフレームを参照)は、これらの関数はミニバッファなしのフレームとミニバッファフレームの両方で実行されます。あるいは、「早期初期化ファイル」(初期化ファイルを参照)にこれらのフックへの関数を追加することもでき、その場合は初期フレームでも有効になります。

変数: frame-inherited-parameters

この変数は、新しく作成されるフレームが現在選択されているフレームから継承するフレームパラメータのリストを指定します。このリストに含まれ、かつmake-frameの処理時にまだ割り当てられていない各パラメータ(シンボル)について、関数は作成されたフレームにおけるそのパラメータの値を、選択中のフレームにおける値に設定します。

ユーザーオプション: server-after-make-frame-hook

Emacsサーバーがクライアントフレームを使用して起動する際、通常のフックが実行されます。このフックが呼び出されるとき、選択されているのはクライアントフレームです。なお、emacsclientがどのように呼び出されたか(The GNU Emacs ManualのInvoking emacsclientを参照)によって、このクライアントフレームはクライアント用に新しく作成されたフレームである場合もあれば、サーバーがクライアントコマンドの処理に再利用した既存のフレームである場合もあります。The GNU Emacs ManualのEmacs Serverを参照してください。