垂直方向の分数スクロールとは、ウィンドウ内のテキストを、1行の指定した倍数または分数だけ上下に移動させることを指します。Emacsでは、例えばウィンドウよりも高さがある画像や画面行などでこの機能を利用します。各ウィンドウには垂直スクロール位置があり、これは0以上の数値で指定されます。この値は、ウィンドウの内容を表示する際に、どれだけ上に移動させるかを規定します。ウィンドウの内容を上に移動させると、一般的に一部の行の全部または一部が上から消え、別の行の全部または一部が下に表示されます。通常の値は0です。
垂直スクロール位置は、デフォルトフォントの高さである「通常行高さ」単位で測定されます。したがって、値が0.5の場合、ウィンドウの内容は通常の行高さの半分だけ上にスクロールされます。値が3.3の場合、ウィンドウの内容は通常の行高さの3倍強だけ上にスクロールされます。
垂直スクロールが1行のどの程度の割合をカバーするか、あるいは何行分になるかは、行の内容によって異なります。0.5という値であれば、高さが非常に短い行を画面外までスクロールさせる可能性がありますが、3.3という値であれば、背の高い行や画像の一部だけをスクロールさせることになります。
この関数は、window の現在の垂直スクロール位置を返します。window のデフォルトは選択中のウィンドウです。pixels-p
が nil 以外の場合、戻り値は通常行の高さ単位ではなく、ピクセル単位で計測されます。
(window-vscroll)
⇒ 0
この関数は、windowの垂直スクロール位置をlinesに設定します。windowがnilの場合、選択中のウィンドウが使用されます。引数linesは0または正の値である必要があり、そうでない場合は0として扱われます。
実際の垂直スクロール位置は常に整数ピクセルである必要があるため、指定した値は適宜丸められます。
戻り値はこの丸め処理の結果です。
(set-window-vscroll (selected-window) 1.2)
⇒ 1.13
pixels-p が nil 以外の場合、lines はピクセル数を指定します。この場合、戻り値は lines
となります。
通常、ミニウィンドウのサイズ変更時、vscrollはminibuffer-scroll-windowまたは選択中のウィンドウ以外のウィンドウには適用されません(ミニバッファウィンドウを参照)。この「フリーズ」動作は、preserve-vscroll-pパラメータがnil以外である場合に無効となり、これにより通常通りvscrollが設定されます。
この変数が nil 以外の場合、line-move、scroll-up、および scroll-down
関数が自動的に垂直スクロール位置を調整し、例えば大きな画像がある場合など、ウィンドウの高さよりも高い表示行をスクロールできるようにします。