次: Vertical Scrolling, 前: Window Point, 上: Windows
各ウィンドウには、バッファのどの箇所から表示を始めるかを指定する バッファ内位置を追跡するために使うマーカがあります。 この位置をウィンドウの表示開始(display-start)位置 (あるいは単に開始(start)位置)と呼びます。 この位置の直後にある文字が、ウィンドウの左上隅に現れます。 この位置は、通常、テキスト行の先頭にありますが、必須ではありません。
この関数は、ウィンドウwindowの表示開始位置を返す。 windowが
nil
であると、 選択されているウィンドウを使う。 たとえばつぎのとおりである。(window-start) => 7058新たにウィンドウを作成したり異なるバッファをウィンドウに表示すると、 表示開始位置は、当該バッファの最近に使われた表示開始位置になるか、 バッファに表示開始位置がなければ1になる。
再表示するとウィンドウ開始位置は (それ以前の再表示で明示的に位置を指定していなければ)、 ポイントがスクリーンに現れるように更新される。 再表示以外には、ウィンドウ開始位置を自動的に変更しない。 ポイントを移動しても、つぎの再表示までは、 連動してウィンドウ開始位置が変更されると期待しないこと。
window-start
を使った実際的な例は、 Text Linesのcount-lines
の記述を参照。
この関数は、ウィンドウwindowの表示の末尾の位置を返す。 windowが
nil
であると、選択されているウィンドウを使う。バッファのテキストを変更したりポイントを移動しただけでは、
window-end
が返す値は更新されない。 この値は、Emacsが再表示を実行し途中で止めることなく 最後まで終了した場合にのみ更新される。windowの最後の再表示が途中で止められて完了していないと、 当該ウィンドウの表示の末尾の位置はEmacsにはわからない。
updateが
nil
以外であると、window-end
はウィンドウの末尾の更新値をつねに返す。 保存しておいた値が正しければwindow-end
はそれを返す。 さもなければ、バッファのテキストを走査して正しい値を計算する。
この関数は、windowの表示開始位置を windowのバッファ内の位置positionとする。 これはpositionを返す。
表示ルーティンは、バッファを表示するときには ポイント位置が可視であることを強要する。 通常、表示ルーティンは、ポイントを可視にするために必要なときには 表示開始位置を(つまりウィンドウをスクロールして)変更する。 しかし、noforceに
nil
を指定してこの関数で開始位置を指定すると、 ポイント位置がスクリーンからはみ出したとしても、 表示開始位置をpositionとすることを意味する。 ポイントがスクリーンからはみ出す場合には、 表示ルーティンはウィンドウの中央行の左端にポイントを移動する。たとえば、ポイントが1にあるときに ウィンドウの開始位置を2にしたとすると、 ポイントはウィンドウの上端より『上』になる。 表示ルーティンは、再表示時にポイントが1のままであると 自動的にポイントを移動する。 以下に例を示す。
;; 式set-window-start
を実行するまえの ;; `foo'の見え方 ---------- Buffer: foo ---------- -!-This is the contents of buffer foo. 2 3 4 5 6 ---------- Buffer: foo ---------- (set-window-start (selected-window) (1+ (window-start))) => 2 ;; 式set-window-start
を実行したあとの ;; `foo'の見え方 ---------- Buffer: foo ---------- his is the contents of buffer foo. 2 3 -!-4 5 6 ---------- Buffer: foo ----------noforceが
nil
以外であって positionにするとつぎの再表示時にポイントがスクリーンからはみ出す 場合には、再表示ではポイントが収まるように新たなウィンドウ開始位置を 計算し、positionを使わない。
この関数は、window内のpositionがスクリーン上で 現在可視なテキストの範囲内にあれば
t
を返す。 positionがスクリーンの上下端からはみ出す場合にはnil
を返す。 引数positionのデフォルトはポイントの現在位置であり、 windowのデフォルトは選択されているウィンドウである。 例を示す。(or (pos-visible-in-window-p (point) (selected-window)) (recenter 0))関数
pos-visible-in-window-p
は、垂直方向のスクロールだけを考慮する。 windowを水平方向にスクロールしたために positionがはみ出している場合には、pos-visible-in-window-p
はt
を返す。 see Horizontal Scrolling。