テキスト的なスクロール(textual
scrolling)とは、ウィンドウ内のテキストを上や下に移動することを意味します。これはそのウィンドウのdisplay-startを変更することにより機能します。これはポイントを画面上に維持するためにwindow-point
の値も変更するかもしれません(ウィンドウとポイントを参照)。
テキスト的なスクロールの基本的な関数は、(前方にスクロールする) scroll-up
、および(後方にスクロールする)
scroll-down
です。これらの関数の名前の“up”と“down”は、バッファーテキストのそのウィンドウにたいする相対的な移動方向を示しています。そのテキストが長いロール紙に記述されていて、スクロールコマンドはその上を上下に移動すると想像してみてください。つまりバッファーの中央に注目している場合には、繰り返してscroll-down
を呼び出すと最終的にはバッファーの先頭を目にすることになるでしょう。
これは残念なことに時折混乱を招きます。なぜならある人はこれを逆の慣習にもとづいて考える傾向があるからです。彼らはテキストがその場所に留まりウィンドウが移動して、“down”コマンドによりバッファー終端に移動するだろうと想像します。この慣習はそのようなコマンドが現代風のキーボード上のPageDownという名前のキーにバインドされているという事実と一致しています。
選択されたウィンドウ内で表示されているバッファーがカレントバッファーでなければ、(scroll-other-window
以外の)テキスト的スクロール関数の結果は予測できません。カレントバッファーを参照してください。
(たとえば大きなイメージがある等で)ウィンドウにウィンドウの高さより高い行が含まれる場合には、スクロール関数は部分的に可視な行をスクロールするためにそのウィンドウの垂直スクロール位置を調整します。Lisp呼び出し側は変数auto-window-vscroll
をnil
にバインドすることにより、この機能を無効にできます(割り合いによる垂直スクロールを参照)。
この関数は選択されたウィンドウ内でcount行前方にスクロールする。
countが負ならかわりに後方へスクロールする。countがnil
(または省略)ならスクロールされる距離は、そのウィンドウのボディーの高さより小さいnext-screen-context-lines
となる。
この関数は選択されたウィンドウがそれ以上スクロールできなければエラーをシグナルして、それ以外はnil
をリターンする。
この関数は選択されたウィンドウ内でcount行後方にスクロールする。
countが負ならかわりに前方へスクロールする。それ以外の点ではこれはscroll-up
と同様に振る舞う。
これはscroll-up
と同様に振る舞うが選択されたウィンドウがそれ以上スクロールできず、かつ変数scroll-error-top-bottom
の値がt
なら、かわりにそのバッファーの終端への移動を試みる。ポイントがすでに終端にあればエラーをシグナルする。
これはscroll-down
と同様に振る舞うが選択されたウィンドウがそれ以上スクロールできず、かつ変数scroll-error-top-bottom
の値がt
なら、かわりにそのバッファーの先頭への移動を試みる。ポイントがすでに先頭にあればエラーをシグナルする。
この関数は他のウィンドウ内のテキストを上方にcount行スクロールする。countが負かnil
ならscroll-up
のように処理される。
変数other-window-scroll-buffer
にバッファーをセットすることにより、どのバッファーをスクロールするかを指定できる。そのバッファーが表示されていなければ、scroll-other-window
はそれを何らかのウィンドウにそれを表示する。
選択されたウィンドウがミニバッファーのとき、次ウィンドウは通常はそのウィンドウの直上最左のウィンドウである。変数minibuffer-scroll-window
をセットすることにより、スクロールする別のウィンドウを指定できる。この変数はミニバッファー以外のウィンドウが選択されているときは効果がない。これが非nil
、かつミニバッファーが選択されているときにはother-window-scroll-buffer
より優先される。Definition of minibuffer-scroll-windowを参照のこと。
この関数は他のウィンドウ内のテキストを下方にcount行スクロールする。countが負かnil
ならscroll-down
のように処理される。それ以外の点においてはscroll-other-window
と同様の方法で振る舞う。
この変数が非nil
なら、それはscroll-other-window
がどのバッファーのウィンドウをスクロールするかを指定する。
このオプションはスクロールマージン(ポイントとウィンドウの上端/下端との最小行数)のサイズを指定する。ポイントがウィンドウの上端/下端からその行数になったとき、(可能なら)再表示はポイントをそのマージン外のウィンドウ中央付近に移動するためにテキストを自動的にスクロールする。
この変数はscroll-margin
の実効値をカレントウィンドウの行高さの割合に制限する。たとえばカレントウィンドウが20行でmaximum-scroll-margin
が0.1なら、scroll-margin
がどれほど大きくてもスクロールマージンが2より大きくなることはない。
maximum-scroll-margin
自体は最大値として0.5という値をもち、これはウィンドウの中央行(ウィンドウが偶数行なら中央の2行)までカーソルを維持するためにマージンを大きくセットすることを可能にする。大きな値(または0.0から0.5までの浮動小数点数以外の値)をセットするとデフォルト値0.25がかわりに使用される。
この変数はポイントがスクリーン外(またはスクロールマージン内)に移動したときに自動的にスクロールを行う方法を指定する。値が正の整数nなら再表示はそれが正しい表示範囲内にポイントを戻すなら、いずれかの方向にn行以下のテキストをスクロールする。この振る舞いは保守的なスクロール(conservative
scrolling)と呼ばれる。それ以外ならスクロールはscroll-up-aggressively
やscroll-down-aggressively
のような他の変数の制御の下に通常の方法で発生する。
デフォルトの値は0でこれは保守的スクロールが発生し得ないことを意味する。
この変数の値はnil
、または0から1までの小数点数fであること。小数点数ならスクリーン上でポイントが置かれたとき下にスクロールする場所を指定する。より正確にはポイントがウィンドウstartより上という理由でウィンドウが下にスクロールされるときには、新たなstart位置がウィンドウ上端からウィンドウ高さのfの箇所にポイントが置かれるように選択される。より大きなfなら、よりaggressive(積極的)にスクロールする。
その効果はポイントを中央に配置することであり、値nil
は.5と等価である。どのような方法によりセットされたときでも、この変数は自動的にバッファーローカルになる。
scroll-up-aggressively
の場合と同様。値fはポイントがウィンドウ下端からどれほどの位置に置かれるべきかを指定する。つまり、scroll-up-aggressively
と同様に大きな値ではよりaggressive(積極的)になる。
この変数はscroll-conservatively
の古い変種である。違いは値がnならn以下の値ではなく、正確にnだけのスクロールを許容することである。この機能はscroll-margin
とは共に機能しない。デフォルトは0。
このオプションがt
なら、スクロールによりポイントがウィンドウ外に移動したとき、Emacsは常にポイントがポイントの上下端ではなくカーソルがそのウィンドウ内の元の垂直位置に保たれるようポイントの調整を試みる。
値が非nil
かつ非t
なら、たとえスクロールコマンドによりポイントがウィンドウ外に移動していなくとも、Emacsはカーソルが同じ垂直位置に保たれるようにポイントを調整する。
このオプションはシンボルプロパティscroll-command
が非nil
であるような、すべてのスクロールコマンドに影響する。
この変数の値は全画面スクロールされたときに継続して残される行数を指定する。たとえば引数がnil
のscroll-up
はウィンドウ上端ではなく下端に残される行数でスクロールする。デフォルト値は2
。
このオプションがnil
(デフォルト)なら、それ以上のスクロールが不可能な際にscroll-up-command
とscroll-down-command
は単にエラーをシグナルする。
値がt
なら、これらのコマンドはかわりにポイントをバッファーの先頭か終端(スクロール方向に依存する)に移動する。ポイントがすでにその位置にある場合のみエラーをシグナルする。
この関数は選択されたウィンドウ内の指定された垂直位置にポイントを表示するようにウィンドウ内のテキストをスクロールする。これはテキストに応じたポイント移動を行わない。
countが非負の数なら、そのウィンドウ上端からcount行下にポイントを含む行を配置する。countが負ならウィンドウ下端から上に数えるので、−1はそのウィンドウ内で最後の利用可能な行となる。
countがnil
(または非nil
のリスト)なら、recenter
はポイントを含む行をウィンドウの中央に配置する。countとredisplayが非nil
なら、この関数はrecenter-redisplay
の値に応じてフレームを再描画するかもしれない。recenter-redisplay
が非nil
の場合の効果を打ち消すために、したがって2つ目の引数の省略を使用できる。インタラクティブな呼び出しではredisplayに非nil
が渡される。
recenter
がインタラクティブに呼び出されたときはrawプレフィックス引数がcountとなる。したがってプレフィックスとしてC-uをタイプするとcountに非nil
、C-u
4ではcountに4がセットされte、後者ではカレント行を上端から4行目にセットする。
引数0ではrecenter
はカレント行をウィンドウ上端に配置する。コマンドrecenter-top-bottom
はこれを達成するためにより簡便な方法を提供する。
この関数はrecenter
と同様だが、選択されたウィンドウがウィンドウグループ(Window Groupを参照)の一部の際には、recenter-window-group
がグループ全体をスクロールする点が異なる。この条件はバッファーローカル変数recenter-window-group-function
が関数にセットされている際に保持される。この場合にはrecenter-window-group
はその関数を引数countで呼び出して結果をリターンする。引数countはrecenter
の場合と同様の意味をもつが、ウィンドウグループ全体に作用する。
この変数が非nil
なら引数redisplayをnil
、引数countを非nil
でrecenter
を呼び出すことによりフレームを再描画する。デフォルト値はtty
で、これはフレームがttyフレームのときだけフレームを再描画することを意味する。
デフォルトではC-lにバインドされているこのコマンドは、recenter
と同様に動作するが引数なしで呼び出されたときの動作が異なる。この場合には連続して呼び出すことにより変数recenter-positions
で定義されるサイクル順に応じてポイントを配置する。
これはrecenter-top-bottom
を引数なしで呼び出したときの挙動を制御する。デフォルト値は(middle top
bottom)
で、これは引数なしでrecenter-top-bottom
を連続して呼び出すとポイントをウィンドウの中央、上端、下端と巡回して配置することを意味する。