Next: Deleting Windows, Previous: Basic Windows, Up: Windows
ここで述べる関数は、ウィンドウを2つに分割するための基本関数です。
上位レベルの2つの関数、pop-to-buffer
とdisplay-buffer
も
ウィンドウを分割しますが、
つねに分割するとは限りません(see Displaying Buffers)。
ここに述べる関数は、引数にはバッファを受け付けません。 分割されたウィンドウの2つの『部分』には、分割前に表示されていたのと 同じバッファが始めは表示されます。
この関数はwindowを2つのウィンドウに分割する。 もとのウィンドウwindowは、選択されているウィンドウであり続けるが、 以前のスクリーン領域の一部を占めるだけである。 残りの部分は新たに作成されたウィンドウが占め、 そのウィンドウがこの関数の値として返される。
horizontalが
nil
以外であると、windowは左右に分かれる。 もとのウィンドウwindowは左端のsizeコラムに留まり、 残りのコラムは新たなウィンドウに与えられる。 さもなければ、ウィンドウは上下に分かれ、 windowは上側のsize行に留まり、 残りの行は新たなウィンドウに与えられる。 したがって、もとのウィンドウは左側か上側にあり、 新たなウィンドウは右側か下側にある。windowを省略したり
nil
であると、 選択されているウィンドウを分割する。 sizeを省略したりnil
であると、 windowを均等に分ける。 (余分な行は新たなウィンドウに与える。)split-window
が対話的に呼び出されると、 すべての引数はnil
である。つぎの例では、50行×80コラムのスクリーン上の1つのウィンドウを分割する。
(setq w (selected-window)) #<window 8 on windows.texi> (window-edges) ; 順に (0 0 80 50) ; 左端--上端--右端--下端 ;; 作成したウィンドウを返す (setq w2 (split-window w 15)) #<window 28 on windows.texi> (window-edges w2) (0 15 80 50) ; 下側のウィンドウの上端は15行目 (window-edges w) (0 0 80 15) ; 上側のウィンドウスクリーンはつぎのようになる。
┌──────┐ │ │ 0行目 │ w │ │ │ ├──────┤ │ │15行目 │ w2 │ │ │ └──────┘ 50行目 コラム0 コラム80つぎに上側のウィンドウを左右に分割する。
(setq w3 (split-window w 35 t)) #<window 32 on windows.texi> (window-edges w3) (35 0 80 15) ; 左端は35コラム目 (window-edges w) (0 0 35 15) ; 右端は35コラム目 (window-edges w2) (0 15 80 50) ; 下側のウィンドウは未変更スクリーンはつぎのようになる。
コラム35 ┌─┬────┐ │ │ │ 0行目 │w│ w3 │ │ │ │ ├─┴────┤ │ │15行目 │ w2 │ │ │ └──────┘ 50行目 コラム0 コラム80通常、Emacsは左右に並んだウィンドウの境界を スクロールバー(see Scroll Bars)か 文字‘|’で表す。 表示テーブルで境界に別の文字を指定できる。 Display Tablesを参照。
この関数は、選択されているウィンドウを上下に2つに分割する。 上側が選択されているウィンドウのままで、size行の大きさになる。 (sizeが負であると、下側のウィンドウが− size行になり、 上側のウィンドウは残りになる。 しかし、それでも上側が選択されているウィンドウである。)
この関数は
split-window
の単なるインターフェイスである。 その完全な関数定義はつぎのとおりである。(defun split-window-vertically (&optional arg) "Split current window into two windows, ..." (interactive "P") (split-window nil (and arg (prefix-numeric-value arg))))
この関数は、選択されているウィンドウを左右に2つに分割し、 選択されているウィンドウにはsizeコラム残す。
この関数は
split-window
の単なるインターフェイスである。split-window-horizontally
の完全な関数定義は (説明文字列を除けば)つぎのとおりである。(defun split-window-horizontally (&optional arg) "Split selected window into two windows, side by side..." (interactive "P") (split-window nil (and arg (prefix-numeric-value arg)) t))
この関数は、ウィンドウがたった1つしかなければ
nil
以外を返す。 引数no-miniがnil
以外であると、 ミニバッファが活性であってもそれを数えないことを意味する。 さもなければ、ミニバッファが活性であればそれも総ウィンドウ個数に数えて 1と比較する。引数all-framesは、どのフレームを対象にするかを指定する。 指定できる値とその意味はつぎのとおりである。
nil
- 選択されているフレームのウィンドウに加えて、 ミニバッファがどこに置かれていようと 当該フレームが使っているミニバッファを数える。
t
- 既存のすべてのフレームのウィンドウを数える。
visible
- すべての可視フレームのすべてのウィンドウを数える。
- 0
- すべての可視フレームやアイコンになっているフレームの すべてのウィンドウを数える。
- その他
- 選択されているフレームだけでウィンドウを正確に数える。