Next: Deleting Windows, Previous: Resizing Windows, Up: Windows [Contents][Index]
このセクションでは、既存のウィンドウを分割(split: スプリットすることにより、新たにウィンドウを作成する関数について説明します。
この関数は、ウィンドウwindowの隣に、新たに生きたウィンドウを作成する。windowが省略またはnil
の場合のデフォルトは、選択されたウィンドウである。そのウィンドウは“分割(split)”されて、サイズは縮小される。そのスペースは、リターンされる新たなウィンドウにより吸収される。
オプションの第2引数sizeは、windowおよび/または新たなウィンドウのサイズを決定する。これが省略またはnil
の場合は、両方のウィンドウに同じサイズが割り当てられる。行数が奇数の場合、余りの1行は新たなウィンドウに割り当てられる。sizeが正の数値の場合、windowにsizeの行数(sideの値によっては列数)が与えられる。sizeが負の数値の場合、新たなウィンドウに-sizeの行数(または列数)が与えられる。
sizeがnil
の場合、この関数は変数window-min-height
とwindow-min-width
にしたがう(Window Sizesを参照)。つまり、分割によりこれらの変数の指定より小さいウィンドウが作成されるようなときは、エラーをシグナルする。しかし、sizeにたいして非nil
値を指定すれば、これらの変数は無視される。その場合、許容される最小のウィンドウは、テキストエリアの高さが1行、および/または幅が2列のウィンドウであるとされる。
したがって、sizeが指定された場合、生成されるウィンドウがモードラインやスクロールバー等すべてのエリアを含むのに十分な大きさがあるかどうかチェックするのは、呼び出し側の責任である。これに関して、必要最小限のwindowを決定するために、関数window-min-size
(Window Sizesを参照)を使用できる。新たなウィンドウは通常、モードラインやスクロールバー等のエリアをwindowから“継承”するので、この関数は新たなウィンドウの最小サイズも良好に推定する。呼び出し側は、次回の再表示前にこれに応じて継承されたエリアを削除する場合のみ、より小さなサイズを指定すること。
オプションの第3引数sideは、新たなウィンドウの位置をwindowから相対的に指定する。nil
またはbelow
の場合、新たなウィンドウはwindowの下に、above
の場合はwindowの上に配される。どちらの場合も、sizeはウィンドウのトータル高さを行数で指定する。
sideがt
またはright
の場合、新たなウィンドウはwindowの右に、sideがleft
の場合はwindowの左に配される。どちらの場合も、sizeはウィンドウのトータル幅を列数で指定する。
オプションの第4引数pixelwiseが非nil
の場合は、sizeを行や列ではなくピクセル単位で解釈することを意味する。
windowが生きたウィンドウの場合、新たなウィンドウはマージンやスクロールバーを含む、さまざまなプロパティを継承する。windowが内部ウィンドウ(internal window)の場合、新たなウィンドウはwindowのフレームのプロパティを継承する。
変数ignore-window-parameters
がnil
の場合に限り、この関数の挙動はwindowなパラメーターにより変更されるかもしれない。ウィンドウパラメーターsplit-window
の値がt
の場合、この関数はその他すべてのウィンドウパラメーターを無視する。それ以外では、ウィンドウパラメーターsplit-window
の値が関数の場合は、split-window
の通常アクションのかわりに、引数window、size、sideでその関数が呼び出される。値が関数以外の場合、この関数は(もしあれば)ウィンドウパラメーターwindow-atom
またはwindow-side
にしたがう。Window Parametersを参照のこと。
例として、Windows and Framesで議論したウィンドウ構成(window
configuration)を得るための、一連のsplit-window
呼び出しを以下に挙げます。この例では、生きたウィンドウの分割と、内部ウィンドウの分割も示します。最初はW4で表される、単一のウィンドウ(生きたルートウィンドウ)を含むフレームから開始します。(split-window
W4)
を呼び出すことにより、以下のウィンドウ構成が得られます。
______________________________________ | ____________________________________ | || || || || || || ||_________________W4_________________|| | ____________________________________ | || || || || || || ||_________________W5_________________|| |__________________W3__________________|
split-window
呼び出しにより、W5で示す生きたウィンドウが新たに作成されました。W3で示される内部ウィンドウも新たに作成され、これはルートウィンドウかつW4とW5の親ウィンドウになります。
次は、引数として内部ウィンドウW3を渡して、(split-window W3 nil 'left)
を呼び出します。
______________________________________ | ______ ____________________________ | || || __________________________ || || ||| ||| || ||| ||| || ||| ||| || |||____________W4____________||| || || __________________________ || || ||| ||| || ||| ||| || |||____________W5____________||| ||__W2__||_____________W3_____________ | |__________________W1__________________|
内部ウィンドウW3の左に、生きたウィンドウW2が新たに作成されました。そして、内部ウィンドウW1が新たに作成され、これが新たにルートウィンドウになります。
インタラクティブな使用にたいして、Emacsは選択されたウィンドウを常に分割するコマンドを2つ提供します。これらは内部でsplit-window
を呼び出します。
この関数は、選択されたウィンドウが左となるような、横並びの2つのウィンドウに分割する。sizeが正ならば左のウィンドウがsize列、負ならば右のウィンドウが-size列を与えられる。
この関数は、選択されたウィンドウが上となるような、縦並びの2つのウィンドウに分割する。sizeが正ならば上のウィンドウがsize行、負ならば下のウィンドウが-size行を与えられる。
この変数の値が非nil
(デフォルト)なら、 split-window-below
は上述のように振る舞う。
nil
の場合、split-window-below
は再表示が最小となるように、2つのウィンドウの各ポイントを調節する(これは低速な端末で有用である)。これは何であれ、以前ポイントがあったスクリーン行(screen
line)を含むウィンドウを選択する。これは低レベルsplit-window
関数ではなく、split-window-below
だけに影響することに注意。