Next: Deleting Windows, Previous: Preserving Window Sizes, Up: Windows [Contents][Index]
このセクションでは既存のウィンドウを分割(splitting)することによりウィンドウを新たに作成する関数を説明します。ここで説明する理由により関数が失敗するという意味において、特別なウィンドウがいくつかあることに注意してください。このようなウィンドウの例としてサイドウィンドウ(Side Windowsを参照)やアトミックウィンドウ(Atomic Windowsを参照)があります。
この関数はウィンドウ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
だけに影響することに注意。